【问题标题】:get Highest value for each year python获得每年python的最高值
【发布时间】:2020-05-03 04:05:09
【问题描述】:

我在使用 python 从大型数据集中获取每年的最高值时遇到问题。

with open('GlobalLandTemperaturesByCity.csv') as csvfile:
data = pd.read_csv(csvfile)

changedata = data[data['City'].str.match('Pokhara') & data['Country'].str.match('Nepal')]
changedata = changedata.set_index(changedata['dt'])
#changedata = changedata['dt'].to_datetime()
usedata = changedata[changedata['dt']> '1970-1-1 01:00:00']
print(usedata)

这会产生

                    dt  AverageTemperature  AverageTemperatureUncertainty  \
dt                                                                          
1970-10-01  1970-10-01              16.388                          0.395   
1970-11-01  1970-11-01              10.569                          1.017   
1970-12-01  1970-12-01               7.455                          0.194   
1971-01-01  1971-01-01               5.508                          0.435   
1971-02-01  1971-02-01               7.458                          0.413   
...                ...                 ...                            ...   
2013-05-01  2013-05-01              20.069                          0.719   
2013-06-01  2013-06-01              21.168                          0.407   
2013-07-01  2013-07-01              21.503                          0.316   
2013-08-01  2013-08-01              21.541                          0.478   
2013-09-01  2013-09-01                 NaN                            NaN   

           City Country Latitude Longitude  
dt                                              
1970-10-01  Pokhara   Nepal   28.13N    84.55E  
1970-11-01  Pokhara   Nepal   28.13N    84.55E  
1970-12-01  Pokhara   Nepal   28.13N    84.55E  
1971-01-01  Pokhara   Nepal   28.13N    84.55E  
1971-02-01  Pokhara   Nepal   28.13N    84.55E  
...             ...     ...      ...       ...  
2013-05-01  Pokhara   Nepal   28.13N    84.55E  
2013-06-01  Pokhara   Nepal   28.13N    84.55E  
2013-07-01  Pokhara   Nepal   28.13N    84.55E  
2013-08-01  Pokhara   Nepal   28.13N    84.55E  
2013-09-01  Pokhara   Nepal   28.13N    84.55E 

我需要一种方法来获取每个月的数据,而只是获取每年的最高或最低数据? 任何帮助将不胜感激!

【问题讨论】:

  • 我在这里没有看到任何问题。您打印 1970 年之后的所有数据。现在您计算年平均值,这就是您的结果。
  • 你尝试了什么?也许使用group_by()min()max() 可以提供帮助。

标签: python pandas matplotlib data-science


【解决方案1】:

如果您的索引是真正的日期时间索引:

# Optional fix for datetime-like str index:
# df.index = pd.to_datetime(df.index)

df \
    .resample('1y') \
    .AverageTemperature \
    .agg([min, max])

示例

dr = pd.date_range('2010-01-01', '2020-01-01')
df = pd.DataFrame(range(len(dr)), index=dr, columns=['AverageTemperature'])

df.resample('1y').AverageTemperature.agg([min, max])

结果

             min   max
2010-12-31     0   364
2011-12-31   365   729
2012-12-31   730  1095
2013-12-31  1096  1460
2014-12-31  1461  1825
2015-12-31  1826  2190
2016-12-31  2191  2556
2017-12-31  2557  2921
2018-12-31  2922  3286
2019-12-31  3287  3651
2020-12-31  3652  3652

绘图

要绘制这个,你可以简单地调用

df \
    .resample('1y') \
    .AverageTemperature \
    .agg([min, max]) \
    .plot()

【讨论】:

  • 如果该示例进行了 1 年的重采样,可能会更具说明性,但它仍然得到了我的投票
  • 我得到的数据是日期和索引,如下 2000-01-01 0 2000-01-02 1 2000-01-03 2 2000-01-04 3 2000-01- 05 4 我需要返回温度和日期,以便绘制它们.. 我需要更改什么?
  • 查看绘图和列选择的更新答案,我忘了添加:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-22
相关资源
最近更新 更多