如何为value_counts()补全缺失日期的0值并绘制图表?
解决方案
步骤1:确保日期列是datetime类型
先把日期列转为pandas的datetime类型,这是后续日期操作的基础:
import pandas as pd # 转换日期列为datetime格式 df_log_mel['Elecmetal Date'] = pd.to_datetime(df_log_mel['Elecmetal Date'])
步骤2:精准筛选目标月份数据
别用切片[2340:2378]筛选7月数据,这种方式容易因数据变动出错,直接通过日期筛选更可靠:
# 筛选2022年7月的所有数据 july_data = df_log_mel[df_log_mel['Elecmetal Date'].dt.to_period('M') == '2022-07']
步骤3:生成完整日期序列并补0
先生成7月的所有日期,再用reindex把统计结果对齐到完整日期,缺失日期自动填充0:
# 生成2022年7月的完整日期范围 full_july_dates = pd.date_range(start='2022-07-01', end='2022-07-31', freq='D') # 统计日期出现次数,补全缺失日期为0 july_log_mel = july_data['Elecmetal Date'].value_counts(sort=False).reindex(full_july_dates, fill_value=0)
执行后,像2022-07-05这类无记录的日期会显示为0。
步骤4:可视化绘图
用matplotlib绘制柱状图展示统计结果:
import matplotlib.pyplot as plt # 设置画布大小 plt.figure(figsize=(12, 6)) # 绘制柱状图 july_log_mel.plot(kind='bar') # 设置图表样式 plt.title('2022年7月卡车调度次数统计') plt.xlabel('日期') plt.ylabel('卡车数量') plt.xticks(rotation=45) # 旋转日期标签避免重叠 # 自动调整布局 plt.tight_layout() plt.show()
最终效果
处理后的july_log_mel会包含7月的每一天,无记录日期的数值为0,可视化图表能完整展示整个月份的调度情况。
内容的提问来源于stack exchange,提问作者Lucas Pereyra
相关产品推荐
相关产品推荐

