如何用Pandas按日期统计文本值数量并生成时间序列折线图
解决方案:Excel 操作流程
- 步骤1:规范日期格式
选中列A,右键选择「设置单元格格式」,切换到「日期」选项卡,选择可识别的年/月格式(如yyyy-mm),确保Excel能正确解析日期。 - 步骤2:用数据透视表统计频次
- 选中整个数据集,点击「插入」→「数据透视表」,指定透视表放置位置。
- 字段配置:
- 将列A的日期拖至「行」区域,右键行标签→「组合」,选择按「年」或「月」分组。
- 将列B的文本值拖至「列」区域。
- 再次将列B的文本值拖至「值」区域,右键值字段→「值字段设置」,选择「计数」。
- 步骤3:生成折线图
选中透视表的统计结果(含行标签、列标签和数值区域),点击「插入」→「折线图」,选择合适的样式即可。
解决方案:Python 代码实现
使用pandas处理数据,matplotlib/seaborn绘制折线图:
- 步骤1:安装依赖(未安装时执行)
pip install pandas matplotlib seaborn
- 步骤2:核心代码
import pandas as pd import matplotlib.pyplot as plt import seaborn as sns # 读取数据集(csv格式示例,可替换为pd.read_excel读取Excel文件) df = pd.read_csv('your_data.csv') # 转换日期格式并提取分组维度(年/月) df['date'] = pd.to_datetime(df['列A']) # 替换为实际日期列名 # 按年分组则用df['year'] = df['date'].dt.year df['month'] = df['date'].dt.to_period('M') # 分组统计各文本值的出现次数 count_result = df.groupby(['month', '列B']).size().unstack(fill_value=0) # 绘制折线图 plt.figure(figsize=(12, 6)) sns.lineplot(data=count_result, marker='o') plt.title('各文本值按月出现次数趋势') plt.xlabel('月份') plt.ylabel('出现次数') plt.xticks(rotation=45) plt.legend(title='文本类型') plt.tight_layout() plt.show()
- 代码说明
- 替换
your_data.csv为你的数据集路径,列A、列B为实际列名。 - 若需按年统计,将代码中
month相关逻辑替换为year即可。
- 替换
内容的提问来源于stack exchange,提问作者Alan
相关产品推荐
相关产品推荐

