如何使用Pandas在Python中取得多年平均值
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何使用Pandas在Python中取得多年平均值,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1977字,纯文字阅读大概需要3分钟。
内容图文
![如何使用Pandas在Python中取得多年平均值](/upload/InfoBanner/zyjiaocheng/681/cd3e5a9eafba4ff6a03cfa0913a07e65.jpg)
我有一个庞大的数据集,其中包含来自80年来多个位置(经纬度)的数据.我正在尝试计算整个时间范围内每个站点的a列和b列的10年平均值.以下是数据表的示例.
Lat Long Year Month Day a b
46.90625 -115.46875 1950 01 01 0.0000 1.1335
46.90625 -115.46875 1950 01 02 0.0000 1.1276
46.90625 -115.46875 1950 01 03 0.0000 1.1213
这是我尝试过的示例,但不断迷失方向.
fname = output1
df = pandas.read_table(output1)
lat_long_group = df.groupby(['Lat','Long','Year']).agg(['mean','count'])
monthly_average = lat_long_group.aggregate({'a':numpy.mean,
'b': numpy.mean})
解决方法:
首先,根据熊猫时间戳记创建一列:
df = df.dropna()
df['date'] = df.apply(lambda x: pd.Timestamp('{year}-{month}-{day}'
.format(year=int(x.Year),
month=int(x.Month),
day=int(x.Day))),
axis=1)
接下来,根据纬度和经度的元组对设置位置.
df['Location'] = zip(df.Lat, df.Long)
现在,删除冗余数据.
df.drop(['Year', 'Month', 'Day', 'Lat', 'Long'], axis=1, inplace=True)
现在,我们可以按日期和位置旋转数据.现在,新的DataFrame会在以下日期建立索引:
df2 = df.pivot(index='date', columns='Location')
交换新列的级别(使位置位于值的顶部).
df2.columns = df2.columns.swaplevel('Location', None)
最后,使用resample来获取十年期间数据的平均值:
>>> df2.resample('10A', how='mean') # 'A'=Annual, '10A'=TenYears
Location (46.90625, -115.46875)
a b
date
1950-12-31 0 1.127484
1960-12-31 0 1.127467
1970-12-31 0 1.127467
1980-12-31 0 1.127467
1990-12-31 0 1.127467
2000-12-31 0 1.127467
2010-12-31 0 1.127467
2020-12-31 0 1.127467
2030-12-31 0 1.127467
2040-12-31 0 1.127452
我对3万行使用了相同的数据(当然,除了日期以外),但是您可以看到该过程如何工作.
请注意,数据被分成甚至十年的块,因此您的数据两端可能都有存根(例如,如果您的数据始于1947年,则第一个周期只有3-4年.
内容总结
以上是互联网集市为您收集整理的如何使用Pandas在Python中取得多年平均值全部内容,希望文章能够帮你解决如何使用Pandas在Python中取得多年平均值所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。