如何在Pandas DataFrame中绘制2016-2017年日期出现频率
解决2016-2017年日期出现频率绘制的问题
没问题,我来帮你搞定这个需求!你已经掌握了全时段年份频率的绘制方法,现在只需要先筛选出目标区间的数据,再根据需要的时间粒度统计频率即可,具体步骤如下:
1. 筛选2016-2017年的数据
首先从原DataFrame中提取出last_payout在2016年1月1日到2017年12月31日之间的记录,这里有两种常用方式:
方式一:精确区间筛选(推荐)
这种方式能严格限定时间范围,避免意外包含其他年份的数据:
# 创建筛选掩码 mask = (df['last_payout'] >= '2016-01-01') & (df['last_payout'] <= '2017-12-31') # 提取目标列的筛选结果 filtered_dates = df.loc[mask, 'last_payout']
方式二:按年份筛选
如果只需要匹配年份,也可以直接用dt.year来筛选:
filtered_dates = df[df['last_payout'].dt.year.isin([2016, 2017])]['last_payout']
2. 统计并绘制日期出现频率
根据你想要的时间粒度(按天/按月),选择对应的分组方式:
情况一:按天统计频率
如果需要查看每天的日期出现次数,可以直接按日期本身分组:
# 按天分组计数 daily_freq = filtered_dates.groupby(filtered_dates).count() # 绘制折线图(天数较多时,折线图比柱状图更清晰) daily_freq.plot(kind='line', figsize=(12, 6), title='2016-2017年每日日期出现频率')
情况二:按月统计频率
如果需要更宏观的月度趋势,建议按月分组(两年共24个月份,柱状图展示更直观):
# 按月分组(用to_period('M')将日期转换为月度周期) monthly_freq = filtered_dates.groupby(filtered_dates.dt.to_period('M')).count() # 绘制柱状图 monthly_freq.plot(kind='bar', figsize=(10, 5), title='2016-2017年月度日期出现频率')
补充说明
- 如果你之前的全时段统计是按年份,现在筛选后可以根据需求调整分组粒度,确保图表展示的信息符合你的分析目标;
- 注意如果按天统计的话,数据量可能较大,建议设置合适的图表尺寸(
figsize参数)来提升可读性。
内容的提问来源于stack exchange,提问作者user40
相关产品推荐
相关产品推荐

