数据分析-Pandas序列滑动窗口配置参数

数据分析-Pandas序列滑动窗口配置参数

数据分析和处理中,难免会遇到各种数据,那么数据呈现怎样的规律呢?不管金融数据,风控数据,营销数据等等,莫不如此。如何通过图示展示数据的规律?

数据表,时间序列数据在数据分析建模中很常见,例如天气预报,空气状态监测,股票交易等金融场景。数据分析过程中重新调整,重塑数据表是很重要的技巧,此处选择Titanic数据,以及巴黎、伦敦欧洲城市空气质量监测 N O 2 NO_2 NO2数据作为样例。

数据分析

数据分析-Pandas如何转换产生新列

数据分析-Pandas如何统计数据概况

数据分析-Pandas如何轻松处理时间序列数据

数据分析-Pandas如何选择数据子集

数据分析-Pandas如何重塑数据表-CSDN博客

本文用到的样例数据:

Titanic数据

空气质量监测 N O 2 NO_2 NO2数据

样例代码:

源代码参考 Pandas如何重塑数据表

源代码参考 python数据分析-数据表读写到pandas

导入关键模块

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

plt.close("all")

时间序列,有时候需要观察一个窗口下的数据统计,比如,股市中的移动平均曲线,气象监测数据的移动平均。滑动窗口可以过滤掉不必要的高频信号。

窗口居中

通用滑动窗口,默认情况下,标签设置在窗口的右边缘,但可以使用关键字,以便可以在中心设置标签。center

times = ['2020-01-01', '2020-01-02', '2020-01-03', '2020-01-04', '2020-01-05', '2020-01-06', '2020-01-07', '2020-01-08', '2020-01-09', '2020-01-10']

s = pd.Series(range(10), index=pd.DatetimeIndex(times))
print(s)

ma = s.rolling(window=5).mean()
print (ma)

ma_c = s.rolling(window=5, center=True).mean()
print (ma_c)

为了方便理解,采用连续整数数值作为序列。可以看出,数值序列的值是不变的,改变的是输出数值的位置,index

# s 
2020-01-01    0
2020-01-02    1
2020-01-03    2
2020-01-04    3
2020-01-05    4
2020-01-06    5
2020-01-07    6
2020-01-08    7
2020-01-09    8
2020-01-10    9
dtype: int64

# ma
2020-01-01    NaN
2020-01-02    NaN
2020-01-03    NaN
2020-01-04    NaN
2020-01-05    2.0 # 第一个数值位置
2020-01-06    3.0
2020-01-07    4.0
2020-01-08    5.0
2020-01-09    6.0
2020-01-10    7.0 # 最后一个数值位置

# ma_c
2020-01-01    NaN
2020-01-02    NaN
2020-01-03    2.0 # 第一个数值位置
2020-01-04    3.0
2020-01-05    4.0
2020-01-06    5.0
2020-01-07    6.0
2020-01-08    7.0 # 最后一个数值位置
2020-01-09    NaN
2020-01-10    NaN

窗口端点的闭合

可以使用以下参数指定在滚动窗口计算中包含间隔端点:closed

含义
'right'右端点闭合
'left'左端点闭合
'both'两个端点闭合
'neither'两个端点不闭合
times = ['2020-01-01', '2020-01-02', '2020-01-03', '2020-01-04', '2020-01-05', '2020-01-06', '2020-01-07', '2020-01-08', '2020-01-09', '2020-01-10']

df = pd.Dataframe(
	{"x" : range(10)}, index=pd.DatetimeIndex(times))
print(df)

df["right"] = df.rolling(3, closed="right").x.sum()  # default

df["both"] = df.rolling(3, closed="both").x.sum()

df["left"] = df.rolling(3, closed="left").x.sum()

df["neither"] = df.rolling(3, closed="neither").x.sum()

以时间为移动窗口的操作结果如下,可以看出在边缘值计算方式:

            x  right  both  left  neither
2020-01-01  0    0.0   0.0   NaN      NaN
2020-01-02  1    1.0   1.0   0.0      0.0
2020-01-03  2    3.0   3.0   1.0      1.0
2020-01-04  3    6.0   6.0   3.0      3.0
2020-01-05  4    9.0  10.0   6.0      5.0
2020-01-06  5   12.0  14.0   9.0      7.0
2020-01-07  6   15.0  18.0  12.0      9.0
2020-01-08  7   18.0  22.0  15.0     11.0
2020-01-09  8   21.0  26.0  18.0     13.0
2020-01-10  9   24.0  30.0  21.0     15.0

为了更好理解该参数的作用,以上述的序列x为例,当3D滑动窗口时,截断如下子序列:

[1, 2, 3, 4 ]

closed right : 2 + 3 + 4 = 9 ( 也就是左开,右闭,其中1 不纳入计算)

closed left : 1 + 2 + 3 = 6 (也就是左闭,右开,其中 4 不纳入计算)

closed both : 1 + 2 + 3 + 4 = 10 (也就是左闭,右闭,1,4 都纳入计算)

closed neither : 2 + 3 = 5 (也就是左开,右开,1, 4都不纳入计算)

在这里插入图片描述

以上代码只是一个简单示例,示例代码中的表达式可以根据实际问题进行修改。

后面介绍下其他的展示形式。

觉得有用 收藏 收藏 收藏

点个赞 点个赞 点个赞

End

GPT专栏文章:

GPT实战系列-ChatGLM3本地部署CUDA11+1080Ti+显卡24G实战方案

GPT实战系列-LangChain + ChatGLM3构建天气查询助手

大模型查询工具助手之股票免费查询接口

GPT实战系列-简单聊聊LangChain

GPT实战系列-大模型为我所用之借用ChatGLM3构建查询助手

GPT实战系列-P-Tuning本地化训练ChatGLM2等LLM模型,到底做了什么?(二)

GPT实战系列-P-Tuning本地化训练ChatGLM2等LLM模型,到底做了什么?(一)

GPT实战系列-ChatGLM2模型的微调训练参数解读

GPT实战系列-如何用自己数据微调ChatGLM2模型训练

GPT实战系列-ChatGLM2部署Ubuntu+Cuda11+显存24G实战方案

GPT实战系列-Baichuan2本地化部署实战方案

GPT实战系列-Baichuan2等大模型的计算精度与量化

GPT实战系列-GPT训练的Pretraining,SFT,Reward Modeling,RLHF

GPT实战系列-探究GPT等大模型的文本生成-CSDN博客

  • 34
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Alex_StarSky

你的鼓励是创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值