我有一个netCDF文件,其中包含可追溯到1948年的全球月平均温度。对于作业,我必须选择任何一个提供的数据点,提取其12月,1月,2月和3月的平均温度值,然后显示它。
我已经解压缩了数据,并将其收集在字典列表中,如下所示:
12月:
decemberMeans = [
{'year': 1948, 'temp': 271.24}, {'year': 1949, 'temp': 271.28},
{'year': 1950, 'temp': 268.52}, {'year': 1951, 'temp': 269.63},
...,
{'year': 2015, 'temp': 277.23}, {'year': 2016, 'temp': 271.25}
]
对应于1月,2月和3月的数据以相同的方式构建。
我的下一步是绘制它。我必须在同一图表上为每组数据绘制一条线,我正在使用列表推导来完成它。现在我的绘图代码如下所示:
import matplotlib.pyplot as plt
plt.figure(1)
plt.hold(True)
plt.plot([data['years'] for data in decemberMeans], \
[data['temp'] for data in decemberMeans], 'k-')
plt.plot([data['years'] for data in januaryMeans], \
[data['temp'] for data in januaryMeans], 'r-')
plt.plot([data['years'] for data in februaryMeans], \
[data['temp'] for data in februaryMeans], 'b-')
plt.plot([data['years'] for data in marchMeans], \
[data['temp'] for data in marchMeans], 'y-')
plt.grid(True)
plt.show()
plt.close()
它描绘得很好,但我可以看到我的所有列表理解都是多余的。有没有办法可以在一个家禽中解压缩字典值,这样我就不必为每一组写data['...'] for data in list
两次?
P.S。 - 当我写这篇文章时,我开始意识到我可以编写一个函数来进行绘图(这可能比写这篇文章花费的时间更少),但我仍然很想知道。提前全部感谢!
答案 0 :(得分:1)
您可以使用pandas
:
import matplotlib.pyplot as plt
import pandas as pd
decemberMeans = [
{'year': 1948, 'temp': 271.24}, {'year': 1949, 'temp': 271.28},
{'year': 1950, 'temp': 268.52}, {'year': 1951, 'temp': 269.63},
{'year': 2015, 'temp': 277.23}, {'year': 2016, 'temp': 271.25}
]
df = pd.DataFrame(decemberMeans)
plt.figure(1)
plt.plot(df['year'], df['temp'], 'k-')