基于Pandas与Matplotlib处理CSV降水数据并绘制可视化图表
哥伦布降水数据可视化任务解决方案
我来帮你搞定这两个降水数据可视化任务,先修正你现有代码里的小问题,再给出完整的实现方案:
第一步:修正DataFrame的索引处理
你的原始数据中日期列是Unnamed: 0,不是date,所以之前的df.set_index("date")会报错。我们需要先把这个列转换为datetime类型,再设置为索引:
%matplotlib inline import pandas as pd import numpy as np import matplotlib.pyplot as plt plt.style.use('seaborn-whitegrid') plt.rcParams['figure.figsize'] = (10.0, 4.0) # 读取数据并处理索引 df = pd.read_csv("ColumbusPrecipData.csv") # 将Unnamed: 0列转为datetime类型 df['datetime'] = pd.to_datetime(df['Unnamed: 0']) # 设置datetime为索引 df.set_index('datetime', inplace=True) # 删除冗余的Unnamed: 0列 df.drop('Unnamed: 0', axis=1, inplace=True)
任务1:季度降水总量汇总与可视化
我们用resample('Q')按季度对降水数据进行求和,然后绘制柱状图展示14年的季度降水总量:
# 按季度汇总降水总量('Q'代表季度,label='right'让刻度显示季度末日期) quarterly_total = df['Precip'].resample('Q').sum() # 绘制季度降水总量图 plt.figure(figsize=(12, 5)) quarterly_total.plot(kind='bar', color='steelblue', edgecolor='black') plt.title('2000-2013年哥伦布季度降水总量') plt.ylabel('降水总量') plt.xlabel('季度') plt.xticks(rotation=45) plt.tight_layout() # 自动调整布局,避免X轴标签被截断 plt.show()
任务2:月度平均降水量与标准差可视化
我们用resample('M')按月份聚合,同时计算平均降水量和标准差,然后在同一坐标轴上用折线图展示两者的变化趋势:
# 按月份聚合,计算平均降水量和标准差 monthly_stats = df['Precip'].resample('M').agg(['mean', 'std']) # 在同一坐标轴绘制双折线图 plt.figure(figsize=(12, 5)) # 绘制月度平均降水量折线 monthly_stats['mean'].plot(kind='line', marker='o', color='darkorange', linewidth=2, label='月度平均降水量') # 绘制月度降水量标准差折线 monthly_stats['std'].plot(kind='line', marker='s', color='forestgreen', linewidth=2, label='月度降水量标准差') plt.title('2000-2013年哥伦布月度平均降水量及标准差') plt.ylabel('降水量') plt.xlabel('月份') plt.xticks(rotation=45) plt.legend(loc='upper right') plt.tight_layout() plt.show()
如果更想用柱状图+误差棒的形式展示均值和标准差,可以用下面的代码:
plt.figure(figsize=(12, 5)) plt.bar(monthly_stats.index, monthly_stats['mean'], yerr=monthly_stats['std'], capsize=5, color='lightblue', alpha=0.7, edgecolor='black') plt.title('2000-2013年哥伦布月度平均降水量(带标准差误差棒)') plt.ylabel('平均降水量') plt.xlabel('月份') plt.xticks(rotation=45) plt.tight_layout() plt.show()
关键说明
resample()是Pandas中时间序列聚合的核心函数,'Q'代表季度,'M'代表月度;agg(['mean', 'std'])可以一次性对聚合后的数据计算多个统计量;tight_layout()能自动调整图表元素位置,避免标签被截断。
内容的提问来源于stack exchange,提问作者programmernoob
相关产品推荐
相关产品推荐

