【问题标题】:Monthly Averages Using Daily Data Using Python Pandas使用 Python Pandas 使用每日数据的月平均值
【发布时间】:2015-06-28 01:03:12
【问题描述】:

我有一个包含四列的文本文件:年、月、日和雪深。这是 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

【问题讨论】:

标签: python pandas time-series


【解决方案1】:

您需要按年和月对数据进行分组,然后计算每个组的平均值。伪代码:

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

DataFrame 是:

“具有标记轴(行和列)的二维大小可变、可能异构的表格数据结构。”

出于您的目的,numpy ndarrayDataFrame 之间的区别并不太显着,但是 DataFrame 有很多功能可以让您的生活更轻松,所以我建议您阅读它们。

【讨论】:

  • 您能否提供更多有关数据框的信息?我习惯 np.genfromtxt 单独读取每一列,但我看到的每个教程从一开始就将年、月和日组合成一个变量。
  • 我已经更新了我的答案以包含一个工作示例,并添加了一些有关 DataFrames 的信息。可以这么说,如果您最终使用 Pandas 进行数据分析,那么您几乎肯定会在某个时候最终使用 DataFrame。
  • 太棒了。这非常有帮助。是的,我确实计划用 Pandas 做更多的事情,所以这是一个很好的起点。
  • 索引是datetime64 时间戳,而不是将年份和月份作为单独的列?
猜你喜欢
  • 2020-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-22
  • 1970-01-01
  • 1970-01-01
  • 2023-03-06
相关资源
最近更新 更多