python计算滑动平均的学习整理

本文介绍了如何在Python中计算'臭氧8小时'滑动平均值,通过groupby按天分组并利用分组后的数据计算滑动平均。文章引用并改进了一位码哥的代码,解决了头尾缺失数据的对齐问题,并分享了使用glob模块遍历文件及使用pd.rename修改列名的技巧。
摘要由CSDN通过智能技术生成

臭氧8小时定义

“臭氧8小时”是一个滑动平均值,是将0-23小时中从0-7开始每8小时计算一个均值作为7时的值,1-8计算的均值作为8时的值,以此类推滑动计算。

总结

  1. 做到了使用groupby按天分组,计算每天数据的滑动平均。如下,主要利用了分组后的df有2个元素:
gpb1 = df1.groupby(groupbylist)['O3']
        for g_name, g_data in gpb1:
  1. 学习并使用了这位码哥的代码来计算滑动平均:
    https://blog.csdn.net/maverick_7/article/details/79102130
    改进了函数,可以处理:头和尾缺失数据的情况下算出的值不是按0-7开始对齐的问题。
  2. 用glob比os.walk简单好用,只需要一个循环,而且还能直接遍历想要的文件类型,而不是全都遍历。
  3. 可以用pd.rename修改列名。并要立即生效,如下:
    pi_O3_max.rename(columns={‘O3滑动平均’:‘O3滑动平均最大’},inplace=True)

代码

# -*- coding: utf-8 -*-
'''
@Description: 批量读取txt文件,计算指定字段的均值,臭氧8小时滑动平均值
小时值 :维度(年、月、日、时),四个指标,几个站的平均
日值:维度(站、年、月、日),四个指标,0-23时的平均(NO、NO2、NOX、O3),8小时滑动平均(O3),日最大8小时滑动平均(O3)
'''
import pandas as pd
import numpy as np
import glob

# another one,速度更快
# 输出结果 不与原始数据等长,假设原数据为m,平滑步长为t,则输出数据为m-t+1
'''
def movingaverage(data, window_size):
    cumsum_vec = np.cumsum(np.insert(data, 0, 0))
    ma_vec = (cumsum_vec[window_size:] - cumsum_vec[:-window_size]) / window_size
    return ma_vec
'''
#修改为: 传入序列index和数据data,以及窗口大小window_size,以便计算出对应序列的滑动平均值。
#这是为了应对有些数据丢失的情况,序列不是从0开始的情况。
#输出按窗口大小偏移后的序列值及其对应的滑动平均值
def movingaverage(index, data, window_size):
    cumsum_vec = np.cumsum(np.insert(data, 0, 0))
    ma_vec = (cumsum_vec[window_size:] - cumsum_vec[:-window_size]) / window_size
    result = []
    for i in range(len(ma_vec)):
        index1 = index
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值