我有一个包含四列的文本文件:年、月、日和雪深。这是 1979 年至 2009 年 30 年期间的每日数据。
我想使用 pandas 计算 360 个(30 年 X 12 个月)个人月平均值(即隔离 1979 年 1 月、1979 年 2 月、...2009 年 12 月的所有值并计算每个值的平均值)。谁能帮我提供一些示例代码吗?
1979 1 1 3
1979 1 2 3
1979 1 3 3
1979 1 4 3
1979 1 5 3
1979 1 6 3
1979 1 7 4
1979 1 8 5
1979 1 9 7
1979 1 10 8
1979 1 11 16
1979 1 12 16
1979 1 13 16
1979 1 14 18
1979 1 15 18
1979 1 16 18
1979 1 17 18
1979 1 18 20
1979 1 19 20
1979 1 20 20
1979 1 21 20
1979 1 22 20
1979 1 23 18
1979 1 24 18
1979 1 25 18
1979 1 26 18
1979 1 27 18
1979 1 28 18
1979 1 29 18
1979 1 30 18
1979 1 31 19
1979 2 1 19
1979 2 2 19
1979 2 3 19
1979 2 4 19
1979 2 5 19
1979 2 6 22
1979 2 7 24
1979 2 8 27
1979 2 9 29
1979 2 10 32
1979 2 11 32
1979 2 12 32
1979 2 13 32
1979 2 14 33
1979 2 15 33
1979 2 16 33
1979 2 17 34
1979 2 18 36
1979 2 19 36
1979 2 20 36
1979 2 21 36
1979 2 22 36
1979 2 23 36
1979 2 24 31
1979 2 25 29
1979 2 26 27
1979 2 27 27
1979 2 28 27
您需要按年份和月份对数据进行分组,然后计算每组的平均值。伪代码:
import numpy as np
import pandas as pd
# Read in your file as a pandas.DataFrame
# using 'any number of whitespace' as the seperator
df = pd.read_csv("snow.txt", sep='\s*', names=["year", "month", "day", "snow_depth"])
# Show the first 5 rows of the DataFrame
print df.head()
# Group data first by year, then by month
g = df.groupby(["year", "month"])
# For each group, calculate the average of only the snow_depth column
monthly_averages = g.aggregate({"snow_depth":np.mean})
有关 Pandas 中的拆分-应用-组合方法的更多信息,请阅读here http://pandas.pydata.org/pandas-docs/stable/groupby.html.
A 数据框 http://pandas.pydata.org/pandas-docs/dev/generated/pandas.DataFrame.html is a:
“带有标记轴(行和列)的二维大小可变、可能异构的表格数据结构。”
出于您的目的,numpy 之间的区别ndarray
and a DataFrame
并不是太重要,但是 DataFrame 有很多功能可以让您的生活更轻松,所以我建议您阅读一下它们。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)