我有一个巨大的csv数据文件,它看起来像这样:
STAID, SOUID, DATE, TX, Q_TX
162,100522,19010101, -31, 0
162,100522,19010102, -13, 0
TX是温度,数据会持续几千行来给你一个想法。
对于每年,我想绘制温度高于25度的天数。
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_csv("klimaat.csv")
zomers = data.index[data["TX"] > 250].tolist()
x_values = []
y_values = []
plt.xlabel("Years")
plt.ylabel("Amount of days with TX > 250")
plt.title("Zomerse Dagen Per Jaar")
plt.plot(x_values, y_values)
# save plot
plt.savefig("zomerse_dagen.png")
X轴应该是1900-2010年的年份,y轴应该是当年温度高于250的天数。
我该如何解决这个问题? > _<我无法掌握如何从数据中提取天数......并在情节中使用它。
答案 0 :(得分:1)
您可以单独创建数据点,使其更容易理解。然后使用pandas.pivot_table进行聚合。这是一个可以让你前进的工作示例。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_csv("klimaat.csv", parse_dates=["DATE"])
data.sort_values("DATE", inplace=True)
data["above_250"] = data.TX > 250
data["year"] = data.apply(lambda x: x["DATE"].year, axis=1).astype("category")
plot_df = pd.pivot_table(data, index="year", values="above_250", aggfunc="sum")
years = plot_df.index
y_pos = np.arange(len(years))
values = plot_df.above_250
plt.bar(y_pos, values, align='center', alpha=0.5)
plt.xticks(y_pos, years)
plt.ylabel("Amount of days with TX > 250")
plt.xlabel("Year")
plt.title("Zomerse Dagen Per Jaar")
plt.show()
答案 1 :(得分:0)
您可以使用python标准库中的datetime
模块来解析日期,特别是查看strptime
函数。然后,您可以使用datetime.year
属性来汇总数据。
在分别将OrderedDict.keys()
和OrdredDict.values()
分配给x_values
和y_values
之前,您还可以使用OrderedDict
来跟踪汇总。