Pandas新手求助:无需预处理CSV直接生成日期频率统计图
直接用Pandas+Matplotlib从单日期列CSV生成频率图表
完全不用手动预处理,用Pandas就能完成频次统计,再结合Matplotlib生成图表,步骤如下:
读取原始CSV文件:由于你的CSV只有一列且无表头,读取时需指定
header=None并自定义列名:import pandas as pd import matplotlib.pyplot as plt # 读取无表头的单日期列CSV df = pd.read_csv('your_file.csv', header=None, names=['date'])转换为日期类型:将读取到的字符串转为Pandas日期格式,确保后续统计和排序的准确性:
df['date'] = pd.to_datetime(df['date'])统计日期出现频次:用
value_counts()直接统计每个日期的出现次数,再用sort_index()按日期顺序排序(避免频次高的日期乱序排列):date_frequency = df['date'].value_counts().sort_index()生成频率图表:可以用Pandas内置绘图方法(底层基于Matplotlib)快速生成,也可以用Matplotlib手动定制:
# Pandas快速绘图 date_frequency.plot(kind='bar', figsize=(8, 5), xlabel='日期', ylabel='出现次数', title='日期出现频率变化') plt.show() # Matplotlib手动定制绘图 plt.figure(figsize=(8, 5)) plt.bar(date_frequency.index.strftime('%Y-%m-%d'), date_frequency.values) plt.xlabel('日期') plt.ylabel('出现次数') plt.title('日期出现频率变化') plt.xticks(rotation=45) plt.tight_layout() plt.show()
补充说明
如果你的日期是连续时间序列(需要补全缺失日期并统计为0),可以用resample方法:
# 设置date列为索引,按天重采样并统计数量,缺失日期补0 df.set_index('date', inplace=True) date_frequency = df.resample('D').size().fillna(0)
内容的提问来源于stack exchange,提问作者Vincent
相关产品推荐
相关产品推荐

