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

使用Pandas进行时间重采样,充分挖掘数据价值

大家好,时间序列数据蕴含着很大价值,通过重采样技术可以提升原始数据的表现形式。本文将介绍数据重采样方法和工具,提升数据可视化技巧。

在进行时间数据可视化时,数据重采样是至关重要且非常有用的,它支持控制数据的粒度,以挖掘数据价值,并创建具有吸引力的图片。用户可以根据需求,对时间序列数据的频率进行上采样或下采样。

数据重采样主要有以下两个目的:

  • 调整粒度:通过数据采集可以修改收数据点的时间间隔,只获取关键信息,剔除噪音数据,提升数据可视化效果。

  • 对齐:重采样还有助于将来自不同时间间隔的多个数据源进行对齐,确保在创建可视化或进行分析时保持一致性。

例如,对于某家公司的每日证券数据进行可视化,挖掘长期趋势,并剔除噪音数据点。为此,可以通过取每月的平均收盘价,将每日数据重采样为每月频率,从而降低用于可视化的数据量,提升数据可视化的效果。

import pandas as pd# 每日股票价格数据样本
data = {
'Date': pd.date_range(start='2023-01-01', periods=365, freq='D'),
'StockPrice': [100 + i + 10 * (i % 7) for i in range(365)]
}
df = pd.DataFrame(data)# 按月频率重采样
monthly_data = df.resample('M', on='Date').mean()
print(monthly_data.head())

这个例子通过将每日数据重采样为每月数据,并计算出每月的平均收盘价,从而得到了更平滑、噪声更小的数据,从而更容易识别长期趋势和规律,以便做出决策。

1.选择正确的重采样频率

处理时间序列数据时,重采样的主要参数是频率,必须正确选择频率,才能获得具有洞察力和实用的可视化效果。不过,粒度和清晰度之间存在着权衡,粒度表示数据的详细程度,而清晰度则表示数据规律的展现程度。

例如,对于一年内每分钟记录的温度数据,对年度温度趋势进行可视化,但使用分钟级数据将导致图形过于密集和混乱。另外,如果将数据聚合为年度平均值,可能会丢失有价值的信息。

# 采集分钟级温度数据
data = {'Timestamp': pd.date_range(start='2023-01-01', periods=525600, freq='T'),'Temperature': [20 + 10 * (i % 1440) / 1440 for i in range(525600)]
}df = pd.DataFrame(data)# 按不同频率重采样
daily_avg = df.resample('D', on='Timestamp').mean()
monthly_avg = df.resample('M', on='Timestamp').mean()
yearly_avg = df.resample('Y', on='Timestamp').mean()print(daily_avg.head())
print(monthly_avg.head())
print(yearly_avg.head())

此示例将分钟级温度数据重采样为日平均值、月平均值和年平均值。根据分析或可视化目标,可以选择最适合的详频率。每日平均值揭示了每日的温度规律,而每年平均值展示了年度趋势。

通过选择最佳的重采样频率,可以在数据细节和可视化清晰度之间取得平衡,进而传达数据中的规律和价值。

2.聚合方法

在处理时间数据时,了解各种聚合方法非常重要。通过这些方法,可以有效地总结和分析数据,揭示时间相关信息的不同方面。标准的聚合方法包括计算总和与平均值,或应用自定义函数。

图片

例如,对于包含一年内零售店每日销售数据的数据集,对其进行年度收入趋势分析,为此可以使用聚合方法计算每月和每年的总销售额。

# 每日销售数据样本
data = {
'Date': pd.date_range(start='2023-01-01', periods=365, freq='D'),
'Sales': [1000 + i * 10 + 5 * (i % 30) for i in range(365)]
}
df = pd.DataFrame(data)# 使用聚合方法计算每月和每年的销售额
monthly_totals = df.resample('M', on='Date').sum()
yearly_totals = df.resample('Y', on='Date').sum()print(monthly_totals.head())
print(yearly_totals.head())

此示例使用sum()聚合方法将每日销售数据重采样为每月和每年的总销售额,通过该方法,可以分析在不同粒度级别上的销售趋势。月度总计揭示了季节变化,而年度总计则展示了年度业绩。

根据具体的分析需求,还可以使用其他聚合方法,如计算平均值和中位数,或根据数据集分布情况应用自定义函数,这对问题的解决很有意义。通过这些方法,可以用符合自己的分析或可视化目标的方式对数据进行总结,从时间数据中提取更多价值。

3.处理缺失数据

处理缺失数据是时间序列中的关键点,可确保数据中存在间隙时,可视化和分析仍能保持准确性和信息量。

例如,对于历史温度数据集,但由于设备故障或数据收集错误,某些日期的温度读数缺失。此时就必须处理这些缺失值,以创建有意义的可视化并保持数据的完整性。

# 带有缺失值的温度数据样本
data = {'Date': pd.date_range(start='2023-01-01', periods=365, freq='D'),'Temperature': [25 + np.random.randn() * 5 if np.random.rand() > 0.2 else np.nan for _ in range(365)]
}
df = pd.DataFrame(data)# 前向填充缺失值(用前一天的温度填充)
df['Temperature'].fillna(method='ffill', inplace=True)# 可视化温度数据
import matplotlib.pyplot as plt
plt.figure(figsize=(12, 6))
plt.plot(df['Date'], df['Temperature'], label='Temperature', color='blue')
plt.title('Daily Temperature Over Time')
plt.xlabel('Date')
plt.ylabel('Temperature (°C)')
plt.grid(True)
plt.show()

输出图形如下所示:

图片

这个示例模拟了缺失的温度值(约占数据的20%),然后使用前向填充(ffill)方法填充了缺失的部分,即缺失值被前一天的温度替代。

处理缺失数据可确保可视化效果准确地反映时间序列中的基本趋势和规律,防止空缺数据影响整体数据。根据数据的性质和具体问题,可以采用插值或向后填充等其他策略。

4.可视化趋势和规律

在Pandas中进行数据重采样,有助于可视化连续或离散时间数据中的趋势和规律,进一步挖掘数据价值,突出显示不同的组成部分,包括趋势、季节性和不规则问题(可能是数据中的噪音)。

例如,对于包含过去几年每日网站流量数据的数据集,目标是可视化展示随后几年的整体流量趋势,识别任何季节性规律,并发现流量中不规则的峰值或谷值。

# 网站每日流量数据样本
data = {
'Date': pd.date_range(start='2019-01-01', periods=1095, freq='D'),
'Visitors': [500 + 10 * ((i % 365) - 180) + 50 * (i % 30) for i in range(1095)]
}
df = pd.DataFrame(data)# 创建折线图,展示趋势
plt.figure(figsize=(12, 6))
plt.plot(df['Date'], df['Visitors'], label='Daily Visitors', color='blue')
plt.title('Website Traffic Over Time')
plt.xlabel('Date')
plt.ylabel('Visitors')
plt.grid(True)# 添加季节性分解图
from statsmodels.tsa.seasonal import seasonal_decompose
result = seasonal_decompose(df['Visitors'], model='additive', freq=365)
result.plot()
plt.show()

输出如下所示:

图片

该示例创建了折线图,展示了随时间变化的每日网站流量趋势。该图描述了数据集中的整体增长和不规则规律。此外,为了将数据分解为不同的组成部分,本文使用了statsmodels库的季节性分解技术,包括趋势、季节性和残差等组成部分。

通过这种方式,可以展示网站流量的趋势、季节性和异常情况,从时间数据挖掘价值,进而将其转化为数据驱动的决策。

 

综上可知,重采样是一种强大的方法,可用于转换和汇总时间序列数据,以挖掘数据价值。使用聚合方法(如求和、平均值和自定义函数等)有助于揭示时间数据的不同方面,而可视化方法有助于识别趋势、季节性和不规则问题,从而清晰地展示数据中的规律。

相关文章:

使用Pandas进行时间重采样,充分挖掘数据价值

大家好,时间序列数据蕴含着很大价值,通过重采样技术可以提升原始数据的表现形式。本文将介绍数据重采样方法和工具,提升数据可视化技巧。 在进行时间数据可视化时,数据重采样是至关重要且非常有用的,它支持控制数据的…...

Django(九、choices参数的使用、多对多表的三种创建方式、Ajax技术)

文章目录 一、choices参数choices参数的用法choices 参数用法总结 二、MVC与MTV模式1.MVC2.MTV 三、多对多的三种创建方式1.全自动创建2.纯手动创建半自动创建 四、Django与Ajax1.什么是Ajax常见的场景Ajax案例 一、choices参数 在没有用到choices参数之前,我们在D…...

德语B级SampleAcademy

德语B级 一, 反身代词(1)A 主语和宾语一致(2)D 双宾语,主语与直接宾语不一致(3), 补充单词(4)真反身代词(5)假反身代词(6)真假反身代词(7)相互反身(8)非反身#反身#相互反身 二,Nomen…...

vue3自定义hooks

获取dom的id属性 index.ts import { onMounted } from "vue" type option {el: string }export default function(option:option):Promise<{name: string}> {return new Promise((resolve)>{onMounted(()>{const dom:HTMLElement document.querySele…...

Consistency Models 阅读笔记

简介 Diffusion models需要多步迭代采样才能生成一张图片&#xff0c;这导致生成速度很慢。一致性模型&#xff08;Consistency models&#xff09;的提出是为了加速生成过程。 Consistency models可以直接一步采样就生成图片&#xff0c;但是也允许进行多步采样来提高生成的质…...

杭电oj 2034 人见人爱A-B C语言

此处的c和a指向同一块内存空间&#xff0c;改变c就是改变a&#xff0c;反之亦然&#xff0c;此处是为了方便看这么写的&#xff0c;如果不想c和a指向同一空间请分别开辟空间&#xff08;即不如此写camalloc&#xff09; #include<stdio.h> #include<stdlib.h>int …...

springboot(ssm大学生成绩管理系统 成绩管理平台Java(codeLW)

springboot(ssm大学生成绩管理系统 成绩管理平台Java(code&LW) 开发语言&#xff1a;Java 框架&#xff1a;ssm/springboot vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xff09; 服务器&#xff1a;tomcat 数据库&#xff1a;mysql 5.7&#xff08;或8.0&…...

SOME/IP 协议介绍(五)指南

指南&#xff08;信息性&#xff09; 选择传输协议 SOME/IP直接支持互联网上使用最广泛的两种传输协议&#xff1a;用户数据报协议&#xff08;UDP&#xff09;和传输控制协议&#xff08;TCP&#xff09;。UDP是一种非常简洁的传输协议&#xff0c;仅支持最重要的功能&#…...

Python调用企微机器人: 发送常用格式汇总

企微接口文档 发送应用消息 - 接口文档 - 企业微信开发者中心 发送格式 应用支持推送文本、图片、视频、文件、图文等类型。 ~~~以下列举常用格式 示例~~~ 1.发送文本 代码如下&#xff1a; def sendtxt_robotmsg(self):# 正式keywx_key "xx"wx_webhookurl htt…...

论文阅读——DiffusionDet

在目标检测上使用扩散模型 前向过程&#xff1a;真实框-->随机框 后向过程&#xff1a;随机框-->真实框 前向过程&#xff1a; 一般一张图片真实框的数目不同&#xff0c;填补到同一的N个框&#xff0c;填补方法可以是重复真实框&#xff0c;填补和图片大小一样的框&a…...

elmenetui表格二次封装包含查询框和分页

<!--dataList: 表格数据columnList: 表头字段 宽度minWidth使用slotName字段: 需要对列数据进行处理&#xff0c;不写prop字段&#xff0c;使用slotName字段btnText<String>: 按钮字段btnIcon<String>: 按钮的iconbtnEvent: 按钮事件btnType: 按钮类型getHeigh…...

【机器学习Python实战】线性回归

&#x1f680;个人主页&#xff1a;为梦而生~ 关注我一起学习吧&#xff01; &#x1f4a1;专栏&#xff1a;机器学习python实战 欢迎订阅&#xff01;后面的内容会越来越有意思~ ⭐内容说明&#xff1a;本专栏主要针对机器学习专栏的基础内容进行python的实现&#xff0c;部分…...

做外贸这么久,为什么一直做不好?

很多外贸业务员在开发客户过程中&#xff0c;总感觉自己做了很多事情&#xff0c;聊了很多客户&#xff0c;但却总是拿不到单子。 其实&#xff0c;这是由于缺乏对采购商心理的认识程度&#xff0c;没有换位思考&#xff0c;该做的事没做&#xff0c;不该做的事却忙得忘乎所以&…...

IPv4数据报格式

IPv4是IP协议的第四个版本(版本1-3和版本5都未曾使用过)IP地址不能反映任何有关主机位置的地理信息以前还有个逆地址解析协议RAPR(Reverse APR)&#xff0c;它的作用是使只知道自己MAC地址的主机能通过RAPR找到其IP地址&#xff0c;而现在的DHCP(Dynamic Host Configuration Pr…...

搭建网关服务器实现DHCP自动分配、HTTP服务和免密登录

目录 一. 实验要求 二. 实验准备 三. 实验过程 1. 网关服务器新建网卡并改为仅主机模式 2. 修改新建网卡IP配置文件并重启服务 3. 搭建网关服务器的dhcp服务 4. 修改server2网卡配置文件重启服务并效验 5. 设置主机1的网络连接为仅主机模式 6. 给server2和网关服务器之…...

【18年扬大真题】给定有m个整数的递增有序数组a和有n个整数的递减有序数组b,将a数组和b数组归并为递增有序的数组c

【18年扬大真题】 给定有m个整数的递增有序数组a和有n个整数的递减有序数组b&#xff0c; 将a数组和b数组归并为递增有序的数组c。 void Merge(int arr[],int m ,int brr[],int n,int crr[]) {int i 0;int j n-1;int k 0;while(i < m&&j > 0) {if (arr[i] &l…...

图片叠加_图片压缩

图片叠加 try {/* 1 读取第一张图片*/File fileOne new File("1.png");BufferedImage imageFirst ImageIO.read(fileOne);/* 2读取第二张图片 */File fileTwo new File("2.png");BufferedImage imageSecond ImageIO.read(fileTwo);//创建一个最底层画…...

Mybatis-Plus《学习笔记 22版尚硅谷 》——感谢【尚硅谷】官方文档

Mybatis-Plus《学习笔记 22版尚硅谷 》 一、MyBatis-Plus1.简介2.特性3.支持数据库4.框架结构5.官方地址 二、入门案例1.开发环境2.建库建表3.创建工程4.配置编码5.测试查询 三、增删改查1.BaseMapper<T>2.调用Mapper层实现CRUD2.1 插入2.2 删除a、根据ID删除数据b、根据…...

git安装后报git: ‘remote-https‘ is not a git command. See ‘git --help‘.

1. 问题说明 使用的是linux系统&#xff0c;采用编译安装的方式进行安装&#xff0c;安装完成clone项目后提示“git: ‘remote-https’ is not a git command. See ‘git --help’.” 2. 问题解决 需要安装1个额外的库&#xff1a;libcurl4-openssl-de sudo apt-get install …...

场景交互与场景漫游-交运算与对象选取(8-1)

交运算与对象选取 在面对大规模的场景管理时&#xff0c;场景图形的交运算和图形对象的拾取变成了一项基本工作。OSG作为一个场景管理系统&#xff0c;自然也实现了场景图形的交运算&#xff0c;交运算主要封装在osgUtil 工具中在OSG中&#xff0c;osgUtil是一个非常强有力的工…...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端&#xff0c;它允许HTTP与Elasticsearch 集群通信&#xff0c;而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

基于FPGA的PID算法学习———实现PID比例控制算法

基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容&#xff1a;参考网站&#xff1a; PID算法控制 PID即&#xff1a;Proportional&#xff08;比例&#xff09;、Integral&#xff08;积分&…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

FFmpeg 低延迟同屏方案

引言 在实时互动需求激增的当下&#xff0c;无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作&#xff0c;还是游戏直播的画面实时传输&#xff0c;低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架&#xff0c;凭借其灵活的编解码、数据…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

python执行测试用例,allure报乱码且未成功生成报告

allure执行测试用例时显示乱码&#xff1a;‘allure’ &#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;ڲ&#xfffd;&#xfffd;&#xfffd;&#xfffd;ⲿ&#xfffd;&#xfffd;&#xfffd;Ҳ&#xfffd;&#xfffd;&#xfffd;ǿ&#xfffd;&am…...

短视频矩阵系统文案创作功能开发实践,定制化开发

在短视频行业迅猛发展的当下&#xff0c;企业和个人创作者为了扩大影响力、提升传播效果&#xff0c;纷纷采用短视频矩阵运营策略&#xff0c;同时管理多个平台、多个账号的内容发布。然而&#xff0c;频繁的文案创作需求让运营者疲于应对&#xff0c;如何高效产出高质量文案成…...

现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?

现有的 Redis 分布式锁库&#xff08;如 Redisson&#xff09;相比于开发者自己基于 Redis 命令&#xff08;如 SETNX, EXPIRE, DEL&#xff09;手动实现分布式锁&#xff0c;提供了巨大的便利性和健壮性。主要体现在以下几个方面&#xff1a; 原子性保证 (Atomicity)&#xff…...

莫兰迪高级灰总结计划简约商务通用PPT模版

莫兰迪高级灰总结计划简约商务通用PPT模版&#xff0c;莫兰迪调色板清新简约工作汇报PPT模版&#xff0c;莫兰迪时尚风极简设计PPT模版&#xff0c;大学生毕业论文答辩PPT模版&#xff0c;莫兰迪配色总结计划简约商务通用PPT模版&#xff0c;莫兰迪商务汇报PPT模版&#xff0c;…...

JavaScript 数据类型详解

JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型&#xff08;Primitive&#xff09; 和 对象类型&#xff08;Object&#xff09; 两大类&#xff0c;共 8 种&#xff08;ES11&#xff09;&#xff1a; 一、原始类型&#xff08;7种&#xff09; 1. undefined 定…...