Python 我需要帮助限制groupby返回特定范围内的值,并在折线图上绘制每年的平均值

Python 我需要帮助限制groupby返回特定范围内的值,并在折线图上绘制每年的平均值,python,pandas,matplotlib,pandas-groupby,Python,Pandas,Matplotlib,Pandas Groupby,我试图将2005年至2014年期间每年的平均最大值和最小值绘制到一个折线图上。我正在读取的数据库有165085行,其中记录了许多气象站的温度 为了解决这个问题,我将日期列转换为时间戳格式,然后使用groupby函数返回按元素列分组的数据值(有两个元素TMAX和TMIN),然后将这两个元素(TMAX和TMIN)绘制到折线图上 有两个问题: 1.)折线图显示了数据框中每一行的数据点——我认为显示每年的平均最高和最低温度更有意义 2.)我想显示2005年和2014年之间的平均最低温度和最高温度(我的图

我试图将2005年至2014年期间每年的平均最大值和最小值绘制到一个折线图上。我正在读取的数据库有165085行,其中记录了许多气象站的温度

为了解决这个问题,我将日期列转换为时间戳格式,然后使用groupby函数返回按元素列分组的数据值(有两个元素TMAX和TMIN),然后将这两个元素(TMAX和TMIN)绘制到折线图上

有两个问题: 1.)折线图显示了数据框中每一行的数据点——我认为显示每年的平均最高和最低温度更有意义 2.)我想显示2005年和2014年之间的平均最低温度和最高温度(我的图表显示了2005年和2015年之间的最低温度和混合温度)

这是我当前的输出:

表格样本:

    ID  Element Data_Value
Date            
2014-11-12  USW00094889 TMAX    22
2009-04-29  USC00208972 TMIN    56
2008-05-26  USC00200032 TMAX    278
2005-11-11  USC00205563 TMAX    139
2014-02-27  USC00200230 TMAX    -106
2010-10-01  USW00014833 TMAX    194
2010-06-29  USC00207308 TMIN    144
2005-10-04  USC00203712 TMAX    289
2007-12-14  USW00004848 TMIN    -16
2011-04-21  USC00200220 TMAX    72
2013-01-16  USC00205822 TMAX    11
2008-05-29  USC00205822 TMIN    28

从您的表格样本开始


>>>df=df.pivot(columns='Element',values='Data\u Value')
>>>df.index=pd.to_datetime(df.index)
>>>df=df.resample('YS').mean()
>>>df
元素TMAX TMIN
日期
2005-01-01 214.0南
2006-01-01楠楠
2007-01-01南-16.0
2008-01-01  278.0   28.0
2009-01-01南56.0
2010-01-01  194.0   144.0
2011-01-01 72.0南
2012-01-01楠楠
2013-01-01 11.0南
2014-01-01-42.0南
在这里,使用
df.plot()

df.plot(marker='o',lw=0) 输出

有两个独立的、不相关的问题(一个是关于修复输出,另一个是关于绘制输出)。你能把你的文章限制在每篇文章一个问题吗?@coldspeed也许我不明白你的意思,但这些似乎是相关的问题——I.)查看平均最小值和最大值,ii.)在2005年和2014年之间,并将其绘制成折线图。绘图部分不是问题所在,代码无法运行(请参阅),图片已损坏。因此,人们几乎看不到问题的存在。@importantanceofbeingernest添加了我的输出图片和我正在读取的数据库样本,希望这有帮助吗?我会尝试类似于
.resample('Y',how='mean')
    ID  Element Data_Value
Date            
2014-11-12  USW00094889 TMAX    22
2009-04-29  USC00208972 TMIN    56
2008-05-26  USC00200032 TMAX    278
2005-11-11  USC00205563 TMAX    139
2014-02-27  USC00200230 TMAX    -106
2010-10-01  USW00014833 TMAX    194
2010-06-29  USC00207308 TMIN    144
2005-10-04  USC00203712 TMAX    289
2007-12-14  USW00004848 TMIN    -16
2011-04-21  USC00200220 TMAX    72
2013-01-16  USC00205822 TMAX    11
2008-05-29  USC00205822 TMIN    28