【问题标题】:Python plot amount of x values in dataPython绘制数据中x值的数量
【发布时间】:2017-12-13 21:46:13
【问题描述】:

我有一个巨大的 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 的天数。

我该怎么做? >_

【问题讨论】:

    标签: python python-3.x pandas matplotlib


    【解决方案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()
    

    【讨论】:

      【解决方案2】:

      您可以使用 python 标准库中的datetime 模块来解析日期,特别是查看strptime 函数。然后您可以使用datetime.year 属性来聚合您的数据。

      在将OrderedDict.keys()OrdredDict.values() 分别分配给x_valuesy_values 之前,您还可以使用OrderedDict 来跟踪您的聚合。

      【讨论】:

        猜你喜欢
        • 2020-10-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-09
        • 1970-01-01
        • 1970-01-01
        • 2017-07-18
        相关资源
        最近更新 更多