Python 数据分析:计算并绘制三个指数的年平均时间序列图
本代码示例演示如何使用 Python 读取数据文件,计算三个指数的年平均值,并绘制其年平均时间序列变化图。图中正(负)位项分别用红色(蓝色)填充,对于 Nino3.4 指数 >1 (红色),<-1 (蓝色)。
代码示例:
import pandas as pd
import matplotlib.pyplot as plt
# 1. 读取数据文件
data = pd.read_csv('data.csv') # 替换为您的数据文件路径
# 2. 计算三个指数的年平均值
annual_mean = data.groupby(data['年份'])['指数1', '指数2', '指数3'].mean()
# 3. 绘制年平均时间序列变化图
plt.figure(figsize=(12, 6))
# 指数 1
plt.subplot(3, 1, 1)
plt.plot(annual_mean['指数1'], color='black')
plt.fill_between(annual_mean.index, annual_mean['指数1'], where=(annual_mean['指数1'] > 0), color='red', alpha=0.5)
plt.fill_between(annual_mean.index, annual_mean['指数1'], where=(annual_mean['指数1'] < 0), color='blue', alpha=0.5)
plt.title('指数 1 年平均时间序列图')
plt.xlabel('年份')
plt.ylabel('指数 1 值')
plt.xticks(range(1850, 2021, 10))
# 指数 2
plt.subplot(3, 1, 2)
plt.plot(annual_mean['指数2'], color='black')
plt.fill_between(annual_mean.index, annual_mean['指数2'], where=(annual_mean['指数2'] > 0), color='red', alpha=0.5)
plt.fill_between(annual_mean.index, annual_mean['指数2'], where=(annual_mean['指数2'] < 0), color='blue', alpha=0.5)
plt.title('指数 2 年平均时间序列图')
plt.xlabel('年份')
plt.ylabel('指数 2 值')
plt.xticks(range(1850, 2021, 10))
# 指数 3
plt.subplot(3, 1, 3)
plt.plot(annual_mean['指数3'], color='black')
plt.fill_between(annual_mean.index, annual_mean['指数3'], where=(annual_mean['指数3'] > 1), color='red', alpha=0.5)
plt.fill_between(annual_mean.index, annual_mean['指数3'], where=(annual_mean['指数3'] < -1), color='blue', alpha=0.5)
plt.title('指数 3 年平均时间序列图')
plt.xlabel('年份')
plt.ylabel('指数 3 值')
plt.xticks(range(1850, 2021, 10))
plt.tight_layout()
plt.show()
解释:
- 导入库:导入 Pandas 和 Matplotlib 库用于数据处理和绘图。
- 读取数据文件:使用
pd.read_csv()读取您的数据文件,确保替换'data.csv'为您的实际文件路径。 - 计算年平均值:使用
groupby()按年份分组数据,并使用mean()计算每个指数的年平均值。 - 绘制时间序列图:
- 使用
plt.figure()创建一个图形。 - 使用
plt.subplot()创建三个子图,分别用于绘制三个指数的年平均时间序列。 - 使用
plt.plot()绘制时间序列线。 - 使用
plt.fill_between()填充正(负)位项,分别使用红色(蓝色)。 - 设置图标题、坐标轴标签和刻度。
- 使用
plt.tight_layout()调整子图间距。 - 使用
plt.show()显示图形。
- 使用
注意:
- 请确保您的数据文件格式正确,并且包含年份和三个指数列。
- 您可能需要根据您的数据调整代码中的列名和条件。
- 您可以根据需要自定义图形的样式和设置。
示例数据文件(data.csv):
年份,指数1,指数2,指数3
1850,0.5,1.2,-0.8
1851,0.8,-0.3,1.5
...
2020,1.2,-0.9,0.2
运行结果:
该代码将生成三个子图,分别显示三个指数的年平均时间序列变化。正(负)位项将分别用红色(蓝色)填充,对于 Nino3.4 指数 >1 (红色),<-1 (蓝色)。
原文地址: https://www.cveoy.top/t/topic/nF1F 著作权归作者所有。请勿转载和采集!