使用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库的季节性分解技术,包括趋势、季节性和残差等组成部分。

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

 

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/147020.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ControlNet原理及应用

《Adding Conditional Control to Text-to-Image Diffusion Models》 目录 1.背景介绍 2.原理详解 2.1 Controlnet 2.2 用于Stable Diffusion的ControlNet 2.3 训练 2.4 推理 3.实验结果 3.1 定性结果 3.2 消融实验 3.3 和之前结果比较 3.4 数据集大小的影响 4.结…

Vite 启动默认只能访问localhost解决方法

事情的经过是因为我需要测试本地项目的接口,然后因为burp默认不抓取localhost,127.0.0.1 .而且我也不想去修改burp. 所以我通过本地IP地址访问项目, 发现项目无法访问。 默认启动 所以特此记录一下。 在本地项目的package.json 中需要运行的脚本后 添加 --host即可。 具体如下…

rabbitMQ的扇出模式(fanout发布订阅)的生产者与消费者使用案例

扇出模式 fanout 发布订阅模式 生产者 生产者发送消息到交换机(logs),控制台输入消息作为生产者的消息发送 package com.esint.rabbitmq.work03;import com.esint.rabbitmq.RabbitMQUtils; import com.rabbitmq.client.Channel;import java.util.Scanne…

使用FP8加速PyTorch训练

现代的人工智能硬件架构(例如,Nvidia Hopper, Nvidia Ada Lovelace和Habana Gaudi2)中,FP8张量内核能够显著提高每秒浮点运算(FLOPS),以及为人工智能训练和推理工作负载提供内存优化和节能的机会。 在这篇文章中,我们将介绍如何修…

Arduino驱动LM35线性温度传感器(温湿度传感器)

目录 1、传感器特性 2、控制器和传感器连线图 3、驱动程序 LM35半导体的温度传感器,可以用来对环境温度进行定性的检测。LM35半导体温度传感器是美国国家半导体公司生产的线性温度传感器。其测温范围是-40℃到150℃,灵敏度为10mV/℃,输出电压与温度成正比。

<C++> 反向迭代器

我们知道正向迭代器的设计:begin迭代器指向第一个数据,end迭代器指向最后一个数据的下一个位置 。移向下一个数据,解引用得到数据的值,并根据容器储存方式的不同,容器有不同类型的迭代器。 注意:rbegin迭代…

c语言:模拟实现qsort函数

qsort函数的功能: qsort相较于冒泡排序法,不仅效率更快,而且能够比较不同类型的元素,如:浮点数,结构体等等。这里我们来模拟下qsort是如何实现这一功能的,方便我们对指针数组有一个更深层次的理…

龙芯 操作系统选择和安装

龙芯3a5000及之后的cpu底层架构已经从mips64el改为了loongarch64 所以这里分了2种来说明,分别对应3a4000之前的和3a5000之后的 龙芯的系统安装难点在于操作系统的选取和引导 一、烧录工具 制作安装盘使用常规的烧录工具是不行滴,会提示没有\boot\initrd…

产品经理必备技能:如何快速锁定种子用户群体?

大家好,我是小米,一名热爱技术、热衷分享的90后小青年。今天我们要探讨的话题是一个在产品经理面试中经常被问到的问题:“产品上线后的种子用户该如何获取?”作为一个热爱挑战、乐于探讨的小伙伴,我将和大家分享一些我…

第七部分:Maven(项目管理工具)

目录 Maven简介 7.1:为什么学习Maven? 7.1.1、Maven是一个依赖管理工具 7.1.2:Maven是一个构建工具 7.1.3:结论 7.2:Maven介绍 7.3:Maven的优点 Maven安装和配置 7.4:安装教程及环境配置 …

最大似然估计的介绍

最大似然估计(Maximum Likelihood Estimation,简称MLE)是一种用于估计概率分布中参数的方法。该方法的核心思想是选择使得观察到的数据在给定模型下出现的概率最大的参数值作为估计值。 最大似然估计具有很好的性质,包括渐进正态性…

SystemVerilog学习 (9)——随机化

目录 一、概述 二、随机化 2.1、如何简单地产生一个随机数 2.1.1 利用系统函数产生随机数 2.1.2 urandom() 2.2、什么需要随机化 2.3、随机约束 2.3.1 rand 和 randc 2.3.2 随机约束的使用 2.3.3 约束块 三、总结 一、概述 随着设计变得越来越大,要产生一个完整的激…

面试资料快速复习 Git常用命令(简单实用)

Git-command Git常用命令、面试复习、简单实用命令 ​ 一、概念理解 (一)工作区、暂存区、本地仓库、远程仓库 workspace:工作区staging area:暂存区/缓存区local repository:本地仓库remote repository&#xff…

Apache Airflow (九) :Airflow Operators及案例之BashOperator及调度Shell命令及脚本

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹…

C#单例模式懒汉式与饿汉式

单例模式一般分为懒汉模式和饿汉模式,懒汉式单例在第一次引用时创建实例,不是在类加载时;饿汉式单例模式是一种在类加载时就创建实例的方式,因此也称为静态初始化。 单例模式实现的技巧时构造私有,向外提供静态实例。…

12-2- DCGAN -简单网络-卷积网络

功能 随机噪声→生成器→MINIST图像。 训练方法 0 损失函数:gan的优化目标是一个对抗损失,是二分类问题,用BCELoss 1 判别器的训练,首先固定生成器参数不变,其次判别器应当将真实图像判别为1,生成图像判别为0 loss=loss(real_out, 1)+loss(fake_out, 0) 2 生成器的…

react-router-dom 版本6.18.0中NavLink的api和属性介绍

React Router 是一个基于 React 的路由库,它可以帮助我们在 React 应用中实现页面的切换和路由的管理。而 NavLink 则是 React Router 中的一个组件,它可以帮助我们实现导航栏的样式设置和路由跳转。 在 React Router 版本6.18.0 中,NavLink…

Matalab插值详解和源码

转载:Matalab插值详解和源码 - 知乎 (zhihu.com) 插值法 插值法又称“内插法”,是利用函数f (x)在某区间中已知的若干点的函数值,作出适当的特定函数,在区间的其他点上用这特定函数的值作为函数f (x)的近似值,这种方…

windows快捷方式图标变成空白

今天突然有客户说应用程序快捷方式图标变成了空白,就研究了一下,网上找了一下很多都说是什么图标缓存有问题,试过之后发现并不能解决问题。 然后发现用户的文件上都一把黄色的小锁的标志,查了一下说是文件属性里面设置加密之后就会…

高防CDN:构筑网络安全的钢铁长城

在当今数字化的世界里,网络安全问题日益突显,而高防CDN(高防御内容分发网络)正如一座坚不可摧的钢铁长城,成为互联网安全的不可或缺之物。本文将深入剖析高防CDN在网络安全环境中的关键作用,探讨其如何构筑…