多CSV文件产品销售排名对比:计算日度排名变动需求
嘿,我来帮你搞定这个自动化的需求!手动处理几个CSV确实麻烦,用Python或者Excel Power Query都能高效解决,下面给你详细的方案:
方案1:Python脚本自动化(推荐,灵活性强)
这个方案适合需要批量处理、自定义输出的场景,用pandas库就能轻松实现数据读取、合并和排名计算。
准备工作
- 确保你的CSV文件命名规则统一(比如
Sale_YYYY_MM_DD.csv),方便脚本自动识别日期顺序 - 安装依赖库:打开终端执行
pip install pandas
完整脚本示例
import pandas as pd import glob from datetime import datetime # 1. 批量读取所有Sale开头的CSV文件,并按日期排序 csv_files = glob.glob("Sale_*.csv") # 从文件名中提取日期,按时间先后排序文件 csv_files_sorted = sorted( csv_files, key=lambda x: datetime.strptime("_".join(x.split('_')[1:4]), "%Y_%m_%d") ) # 2. 取最后两个文件(默认对比最新的两天,如需指定日期可手动替换文件名) prev_day_file = csv_files_sorted[-2] current_day_file = csv_files_sorted[-1] # 3. 读取两天的销售数据,只保留需要的列 prev_df = pd.read_csv(prev_day_file, usecols=["position", "Products"]) current_df = pd.read_csv(current_day_file, usecols=["position", "Products"]) # 4. 合并数据并计算排名变动 prev_df = prev_df.rename(columns={"position": "prev_position"}) # 按产品名称合并,只保留当天在榜的产品 merged_df = pd.merge(current_df, prev_df, on="Products", how="left") # 计算变动:前一天排名 - 当天排名,正数表示上升,负数表示下降,NaN标记为新上榜 merged_df["rank_change"] = merged_df["prev_position"] - merged_df["position"] merged_df["rank_change"] = merged_df["rank_change"].apply( lambda x: f"+{int(x)}" if x > 0 else (str(int(x)) if x < 0 else "New") ) # 5. 输出结果并保存为新文件 print(f"=== {current_day_file} 内容及排名变动 ===") print(merged_df.to_string(index=False)) # 保存带变动的结果到新CSV output_filename = f"Rank_Report_{current_day_file.split('_')[1]}_{current_day_file.split('_')[2]}_{current_day_file.split('_')[3]}" merged_df.to_csv(output_filename, index=False)
脚本扩展说明
- 如果需要对比指定日期的文件,直接替换
prev_day_file和current_day_file的路径即可,比如prev_day_file = "Sale_2018_04_10.csv" - 若要批量处理所有相邻日期的文件,可以添加循环遍历
csv_files_sorted,逐一对比每一对前后日期 - 如果需要展示掉榜的产品,将
merge的how参数改为outer,并添加逻辑标记掉榜状态
方案2:Excel Power Query(适合不熟悉代码的用户)
如果不想写代码,Excel的Power Query也能实现半自动化,每次新增CSV文件只需刷新数据即可:
- 打开Excel,点击「数据」选项卡 → 「获取数据」→「从文件」→「从文件夹」,选择CSV所在的文件夹
- 在Power Query编辑器中,添加自定义列提取文件名中的日期(拆分
Sale_YYYY_MM_DD.csv的日期部分),按日期排序 - 通过「分组依据」和「合并查询」功能,将当天数据与前一天数据关联,计算排名变动
- 加载数据到Excel工作表,后续新增CSV文件后,点击「数据」→「全部刷新」即可更新报告
内容的提问来源于stack exchange,提问作者Fatima TT
相关产品推荐
相关产品推荐

