当前位置: 首页 > news >正文

数据分析-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 pltplt.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()  # defaultdf["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博客

相关文章:

  • #Linux(权限管理)
  • 【QT入门】 Qt实现自定义信号
  • 实验7-2-10 简易连连看(PTA)
  • 【Docker】在 Ubuntu 上安装 Docker 的步骤
  • 心脏滴血漏洞详解(CVE-2014-0160)
  • ubuntu 如何使用阿里云盘
  • 基于华为ensp的企业网络规划(新版)
  • mosquitto - 笔记
  • 在Ubuntu20.04(原为cuda12.0, gcc9.几版本和g++9.几版本)下先安装cuda9.0后再配置gcc-5环境
  • Linux 常用命令 chattr
  • 素数问题 python
  • 就业班 第二阶段 2401--3.19 day4 主从复制
  • 初级爬虫实战——哥伦比亚大学新闻
  • 开源的OCR工具基本使用:PaddleOCR/Tesseract/CnOCR
  • JavaScript 权威指南第七版(GPT 重译)(二)
  • 2018一半小结一波
  • Create React App 使用
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • javascript 总结(常用工具类的封装)
  • Linux各目录及每个目录的详细介绍
  • mac修复ab及siege安装
  • Netty源码解析1-Buffer
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • 记录一下第一次使用npm
  • 将回调地狱按在地上摩擦的Promise
  • 力扣(LeetCode)965
  • 删除表内多余的重复数据
  • 树莓派 - 使用须知
  • 我看到的前端
  • 怎么将电脑中的声音录制成WAV格式
  • 正则表达式小结
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • 数据库巡检项
  • #includecmath
  • #pragma once与条件编译
  • #Spring-boot高级
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (52)只出现一次的数字III
  • (LeetCode C++)盛最多水的容器
  • (libusb) usb口自动刷新
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • ./configure,make,make install的作用(转)
  • .bat文件调用java类的main方法
  • .gitignore文件—git忽略文件
  • .gitignore文件设置了忽略但不生效
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .net core 源码_ASP.NET Core之Identity源码学习
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)...
  • .net知识和学习方法系列(二十一)CLR-枚举
  • .NET中的Exception处理(C#)
  • .pings勒索病毒的威胁:如何应对.pings勒索病毒的突袭?