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

基于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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:33:51