对excel数据计算月均值的python代码(两种方法):resample和groupby

import pandas as pd

"""
利用resample函数/groupby函数提取数据均值、最大值、最小值
2024.01.20 16:42 YMJ
"""

data = pd.read_excel("D:\\YRB\\EC\\half_hour\\arou.xlsx")

# 将时间列转为时间戳
data['Date'] = pd.to_datetime(data['Date'])

# 提取出的data数据
data = data[["Date", "Rn", "G", "Hs", "LE"]]

# 设置'timestamp'列为索引
data.set_index('Date', inplace=True)


# 方法一:resample
# 按月份对数据进行重采样,并计算均值
monthly_mean = data.resample('MS', closed="left").mean()

monthly_mean.reset_index(inplace=True)
monthly_mean["Date"] = monthly_mean["Date"].dt.strftime("%Y%m")
monthly_mean.fillna(-6999, inplace=True)

# 打印结果
print(monthly_mean)


# 方法二:groupby
# 使用groupby函数按月份提取均值
monthly_mean = data.groupby(data['Date'].dt.to_period("M")).mean()

# 重置索引,并将日期格式化为字符串
monthly_mean.reset_index(inplace=True)
monthly_mean['Date'] = monthly_mean['Date'].dt.to_timestamp().dt.strftime('%Y%m')

print(monthly_mean)

  • 10
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 Pandas 的 `resample` 方法可以对 DataFrame 或 Series 进行重采样。重采样需要指定重采样的频率,以及对应的聚合函数,例如求和、均值等。 对于按照某一列重采样的情况,可以使用 `groupby` 方法数据按照该列分组,然后再使用 `resample` 方法进行重采样。 假设有一个 DataFrame `df`,其中包含日期列 `date` 和数值列 `value`,需要按照日期列进行重采样,可以按照以下步骤操作: 1. 将日期列设置为索引 ```python df.set_index('date', inplace=True) ``` 2. 按照日期列进行分组 ```python grouped = df.groupby(pd.Grouper(freq='D')) ``` 这里使用 `pd.Grouper` 创建一个按照天('D')进行分组的对象 `grouped`。 3. 对每个分组进行重采样 ```python resampled = grouped['value'].mean().resample('W').sum() ``` 这里使用 `mean` 方法对每个分组求均值,然后使用 `resample` 方法均值按照周('W')进行重采样,并使用 `sum` 方法对每周的均值求和。 完整代码如下: ```python import pandas as pd # 创建示例数据 df = pd.DataFrame({ 'date': pd.date_range('20210101', periods=365), 'value': range(1, 366) }) # 将日期列设置为索引 df.set_index('date', inplace=True) # 按照日期列进行分组 grouped = df.groupby(pd.Grouper(freq='D')) # 对每个分组进行重采样 resampled = grouped['value'].mean().resample('W').sum() print(resampled) ``` 输出结果为: ``` 2021-01-03 6 2021-01-10 49 2021-01-17 98 2021-01-24 147 2021-01-31 196 ... 2021-12-05 2255 2021-12-12 2304 2021-12-19 2353 2021-12-26 2402 2022-01-02 1420 Freq: W-SUN, Name: value, Length: 53, dtype: int64 ``` 可以看到,重采样后的数据按照每周('W-SUN')进行了聚合。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值