You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Matplotlib绘制日期维度的动作频次统计图表?

解决方法

你的问题出在直接将日期列表传入plt.plot(),这只会按索引顺序绘制每个日期的数值,完全没有统计重复日期的出现频次。要生成频次统计图表,需要先统计每个日期的出现次数,再绘图:

方法一:使用Pandas(推荐,处理时间序列更便捷)

import pandas as pd
import matplotlib.pyplot as plt
from datetime import datetime

# 提取你的日期列表
date_list = data['Data Analyst']['DE']

# 转换为Series并统计频次,按日期排序
date_series = pd.Series(date_list)
frequency = date_series.value_counts().sort_index()

# 绘制频次图(可选柱状图或折线图)
plt.figure(figsize=(12, 6))
frequency.plot(kind='bar')  # 离散日期用柱状图,连续时间用kind='line'
plt.xlabel('动作发生时间')
plt.ylabel('发生频次')
plt.title('各时间点动作频次统计')
plt.xticks(rotation=45)  # 旋转x轴标签避免重叠
plt.tight_layout()  # 自动调整布局
plt.savefig('action_frequency.png')

方法二:使用标准库(无需额外安装依赖)

from collections import Counter
import matplotlib.pyplot as plt
from datetime import datetime

# 提取你的日期列表
date_list = data['Data Analyst']['DE']

# 统计每个日期的出现次数,并按日期排序
count_result = Counter(date_list)
sorted_dates = sorted(count_result.keys())
sorted_counts = [count_result[dt] for dt in sorted_dates]

# 绘制折线图(或替换为plt.bar用柱状图)
plt.figure(figsize=(12, 6))
plt.plot(sorted_dates, sorted_counts, marker='o', linestyle='-')
plt.xlabel('动作发生时间')
plt.ylabel('发生频次')
plt.title('各时间点动作频次统计')
plt.xticks(rotation=45)
plt.tight_layout()
plt.savefig('action_frequency.png')

关键说明

  • 两种方法核心都是先统计重复日期的出现次数,再用统计后的结果绘图
  • 如果你的日期精度很高(比如精确到秒),建议先按小时/天聚合数据,避免x轴标签过于拥挤,示例:
    # Pandas按天聚合
    date_series = pd.Series(date_list).dt.floor('D')
    

内容的提问来源于stack exchange,提问作者octaneal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 12:02:44