使用Python分析时序数据集中的缺失数据

news2024/11/16 9:51:17

大家好,时间序列数据几乎每秒都会从多种来源收集,因此经常会出现一些数据质量问题,其中之一是缺失数据。

在序列数据的背景下,缺失信息可能由多种原因引起,包括采集系统的错误(例如传感器故障)、传输过程中的错误(例如网络连接的故障)或者数据收集过程中的错误(例如数据记录过程中的人为错误)。这些情况经常会在数据集中产生零散和明确的缺失值,对应于采集数据流中的小缺口。

此外,缺失信息也可能由于领域本身的特性而自然产生,从而在数据中形成较大的缺口。例如,某个特征在一段时间内停止采集,从而产生非显性的缺失数据。无论底层原因如何,时间序列中存在缺失数据会对预测和预测模型产生严重的不利影响,并且可能对个人(例如误导的风险评估)和业务结果(例如偏差的业务决策、收入和机会的损失)造成严重后果。

因此,在为建模方法准备数据时,一个重要的步骤是能够识别这些未知信息的模式,因为它们将帮助我们决定处理数据的最佳方法,以提高数据的一致性和效率,可以通过某种形式的对齐校正、数据插值、数据填补,或者在某些情况下,进行逐案删除(即,在特定分析中对具有缺失值的特征省略案例)。进行全面的探索性数据分析和数据剖析是不可或缺的,这不仅有助于理解数据特征,还能就如何为分析准备最佳数据做出明智决策。

在这个实践教程中,我们将探索如何使用新版本ydata-profiling最近推出的功能来解决这些相关问题。本文将使用Kaggle上提供的美国污染数据集(许可证DbCL v1.0),该数据集详细记录了美国各州的NO2、O3、SO2和CO污染物的信息。

ydata-profiling】:https://github.com/ydataai/ydata-profiling

【Kaggle上提供的美国污染数据集】:https://www.kaggle.com/datasets/sogun3/uspollution?resource=download

实践教程:对美国污染数据集进行剖析

为了开始我们的教程,首先需要安装最新版本的ydata-profiling

pip install ydata-profiling==4.5.1

然后就可以加载数据,删除不必要的特征,并专注于我们要研究的内容。为了本例的目的,我们将重点研究亚利桑那州马里科帕县斯科茨代尔站测量的空气污染物的特定行为:

import pandas as pd
 
data = pd.read_csv("data/pollution_us_2000_2016.csv")
data = data.drop('Unnamed: 0', axis = 1) # 删除不必要的索引
 
# 从亚利桑那州,马里科帕县,斯科茨代尔站(站点编号:3003)选择数据
data_scottsdale = data[data['Site Num'] == 3003].reset_index(drop=True)

现在开始对数据集进行剖析,在使用时间序列剖析时,我们需要传递参数tsmode=True,以便ydata-profiling可以识别与时间相关的特征:

# 将'Date Local'改为日期时间格式
data_scottsdale['Date Local'] = pd.to_datetime(data_scottsdale['Date Local'])
 
# 创建概述报告
profile_scottsdale = ProfileReport(data_scottsdale, tsmode=True, sortby="Date Local")
profile_scottsdale.to_file('profile_scottsdale.html')

时间序列概述

输出报告将与我们已经知道的内容一样熟悉,但在体验上有所改进,并新增了时间序列数据的汇总统计:

图片

从概述中可以通过查看所提供的汇总统计数据,从而对该数据集有一个整体的了解:

  • 它包含14个不同的时间序列,每个时间序列有8674个记录值;

  • 该数据集报告了2000年1月至2010年12月的10年数据;

  • 时间序列的平均时间间隔为11小时零7分钟左右。这意味着平均而言每11小时就进行一次测量。

还可以获取数据中所有序列的概览图,可以选择以原始值或缩放值显示:可以很容易地把握序列的总体变化情况,以及正在测量的组分(二氧化氮、臭氧、二氧化硫、一氧化碳)和特征(平均值、第一最大值、第一最大小时、空气质量指数)。

检查缺失数据

在对数据有一个总体了解之后,我们可以关注每个时间序列的具体情况。

在最新版本的ydata-profiling中,分析报告在针对时间序列数据方面进行了大幅改进,即针对“时间序列”和“间隙分析”指标进行报告。这些新功能极大地方便了趋势和缺失模式的识别,现在还提供了具体的汇总统计数据和详细的可视化。

所有时间序列都会呈现不稳定模式,其中在连续测量之间似乎存在某种“跳跃”。这表明存在缺失数据(缺失信息的“间隙”),应该对其进行更仔细的研究,本文以S02 Mean为例来研究。

图片

图片

在研究间隙分析所提供的细节时,可以获得对于已识别间隙特征的信息描述。总体而言,时间序列中有25个间隙,最短间隔为4天,最长为32周,平均为10周。

从所呈现的可视化效果中,可以注意到较为“随机”的细条纹代表的是较小的间隙,而较大的间隙似乎遵循着一种重复的模式。这表明我们的数据集中存在两种不同的缺失数据模式。

较小的间隙对应于产生缺失数据的零星事件,很可能是由于采集过程中的错误而发生的,通常可以很容易地对数据进行插值或从数据集中删除。反之,较大的间隙则更为复杂,需要进行更详细的分析,因为它们可能揭示了需要更彻底解决的潜在模式。

在本文的例子中,如果我们调查较大的间隙,实际上会发现它们反映了一个季节性模式:

df = data_scottsdale.copy()
for year in df["Date Local"].dt.year.unique():
    for month in range(1,13):
        if ((df["Date Local"].dt.year == year) & (df["Date Local"].dt.month ==month)).sum() == 0:
            print(f'Year {year} is missing month {month}.')
# Year 2000 is missing month 4.
# Year 2000 is missing month 5.
# Year 2000 is missing month 6.
# Year 2000 is missing month 7.
# Year 2000 is missing month 8.
# (...)
# Year 2007 is missing month 5.
# Year 2007 is missing month 6.
# Year 2007 is missing month 7.
# Year 2007 is missing month 8.
# (...)
# Year 2010 is missing month 5.
# Year 2010 is missing month 6.
# Year 2010 is missing month 7.
# Year 2010 is missing month 8.

正如我们所猜测的那样,时间序列中呈现出一些较大的信息间隙,它们似乎具有重复性,甚至是季节性的:在大多数年份中,从5月到8月(第5至8个月)之间未收集数据。出现这种情况可能是由于不可预测的原因,或者与业务决策有关,例如与削减成本有关的决定,或者仅仅是与天气模式、温度、湿度和大气条件相关的污染物的季节性变化有关。

根据这些发现,我们可以进一步调查为什么会发生这种情况,是否应该采取措施防止今后出现这种情况,以及如何处理我们目前拥有的数据。

思考

本文已经了解到理解时间序列中缺失数据模式的重要性,以及有效的分析方法如何揭示缺失信息的奥秘。无论是电信、医疗、能源还是金融等所有收集时间序列数据的行业,都会在某个时候面临缺失数据的问题,并需要决定处理和从中提取所有可能知识的最佳方法。

通过全面的数据分析,我们可以根据手里拥有的数据特征做出明智而高效的决策:

  • 信息间隙可能是由于采集、传输和收集过程中的零星事件导致的。我们可以通过修复问题以防止其再次发生,并根据间隙的长度进行插值或填补缺失数据。

  • 信息间隙也可能表示季节性或重复性模式。我们可以选择重构我们的流程,开始收集缺失的信息,或者用来自其他分布式系统的外部信息替代缺失的间隙。我们还可以确定检索过程是否失败(也许是在数据工程方面输入错误的查询)。

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

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

相关文章

ROS基础知识复习

【置顶】感谢参考:https://zhuanlan.zhihu.com/p/662074088 0.背景 工作一年多没有做 ROS 相关的开发了,最近找工作想做回这一块来,根据参考内容,抽时间给这边的基础知识敲一遍复习一下 1.环境检查 打开了之前的笔记本&#x…

AOMedia发布免版税沉浸音频规范IAMF

11月10日,开放媒体联盟(AOMedia)发布了旗下首个沉浸式音频规范IAMF(https://aomediacodec.github.io/iamf/),IAMF是一种编解码器无关的容器规范,可以携带回放时间渲染算法和音频混音的信息&…

git分支与tag标签的介绍与使用)

git分支与tag标签的介绍与使用 一.什么是分支与标签1.2.开发环境分层 二git分支介绍2.1分支操作2.2.IDEA中操作分支 三、Git标签的讲解3.1.GitBashHere操作标签3.2. IDEA中操作标签 一.什么是分支与标签 分支(Branches): 功能开发&#xff…

html菜单的基本制作

前面写过一点网页菜单的博文&#xff1b;下面再复习一些技术要点&#xff1b; <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http://www.w3.…

GetSimple CMS忘记密码

GetSimple CMS是一个超简单的 CMS&#xff0c;适合建立个人网站等只需要极少数页面的网站。在站上百科上&#xff0c;是这么说的&#xff1a; GetSimple是一款基于XML存储数据的开源内容管理系统&#xff0c;且易于安装和定制&#xff0c;无需MySQL支持。提供撤销保护和备份功能…

RK3399平台开发系列讲解(应用篇)文件属性 stat 函数

🚀返回专栏总目录 文章目录 一、struct stat 结构体二、st_mode 变量三、struct timespec 结构体沉淀、分享、成长,让自己和他人都能有所收获!😄 📢Linux 下可以使用 stat 命令查看文件的属性,其实这个命令内部就是通过调用 stat()函数来获取文件属性的,stat 函数是 …

详解Java:抽象类和接口

前言&#xff1a;在前文中我们学习认知到了多态的使用和相关知识&#xff0c;算是打开了Java世界的大门&#xff0c;而本次要分享的抽象类和接口则是我们在面向对象编程中最常用的编程结构之一 目录 一.抽象类 abstract 抽象类特性 二.接口 语法规则 接口使用 接口特…

[笔记]深入解析Windows操作系统《番外》windows关键进程解释

文章目录 前言一、Linux起源与发展二、什么是shell1.什么是Shell 总结 前言 一、Linux起源与发展 二、什么是shell 1.什么是Shell 总结 以上就是今天要讲的内容&#xff0c;本文仅仅简单介绍了linux命令行的使用。 参考&#xff1a; shells 概念 centOS7中的几个Ctrl组合…

原型模式 rust和java的实现

文章目录 原型模式介绍优点缺点使用场景 实现java 实现rust 实现 rust代码仓库 原型模式 原型模式&#xff08;Prototype Pattern&#xff09;是用于创建重复的对象&#xff0c;同时又能保证性能。 这种模式是实现了一个原型接口&#xff0c;该接口用于创建当前对象的克隆。当…

Spring-ProxyFactory

ProxyFactory选择cglib或jdk动态代理原理 ProxyFactory在生成代理对象之前需要决定是使用JDK动态代理还是CGLIB技术&#xff1a; public class DefaultAopProxyFactory implements AopProxyFactory, Serializable {Overridepublic AopProxy createAopProxy(AdvisedSupport co…

59基于matlab的爬行动物搜索算法(Reptile search algorithm, RSA)

基于matlab的爬行动物搜索算法&#xff08;Reptile search algorithm, RSA&#xff09;一种新型智能优化算法。该算法主要模拟鳄鱼的捕食行为&#xff0c;来实现寻优求解&#xff0c;具有收敛速度快&#xff0c;寻优能力强的特点。程序已调通&#xff0c;可直接运行。 59matlab…

案例续集留言板

前端没有保存数据的功能,后端把数据保存下来(内存,数据库等等......) 前端代码如下 : <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initia…

Centos, RockyLinux 常用软件安装汇总

一、基本指令&#xff1a; 命令作用clear清屏pwd显示当前路径cat / more显示文本文档uname -a查看当前版本hostnamectl查看当前版本cat /etc/redhat-release查看当前版本free查看剩余内存df -h[查看磁盘剩余空间]du -sh 查看文件夹名"dir"占用的空间lsof -i:8080查看…

未来的拥塞控制与 Linux EEVDF 调度器

有破要有立。 前面提到 经典端到端拥塞控制将越来越失效&#xff0c;未来该如何&#xff0c;谈谈我的看法。 端到端拥塞控制的难点根本上是要解决公平性问题&#xff0c;顺带着提高资源利用率。我们很容易理解&#xff0c;在共享资源场景下&#xff0c;不公平一定是低效的&am…

在AutoDL云环境上训练Stable Diffusion Lora模型

AutoDL官网&#xff1a; AutoDL算力云 | 弹性、好用、省钱。租GPU就上AutoDLAutoDL为您提供专业的GPU租用服务&#xff0c;秒级计费、稳定好用&#xff0c;高规格机房&#xff0c;7x24小时服务。更有算法复现社区&#xff0c;一键复现算法。https://www.autodl.com/ 新建实例…

优酷网页截图黑屏及了解浏览器图形服务API-meethigher

一、背景 周六跟同事逛了上海的豫园、城隍庙、静安寺、静安公园。豫园门票40&#xff0c;相传是明代私人园林&#xff0c;园主人为当年的四川布政使&#xff0c;是江南风格古典园林&#xff0c;风景还不错。 周日天气降温&#xff0c;直接睡了一天&#xff0c;想起同事推荐的《…

springboot项目使用Swagger3

一、Swagger介绍 号称世界上最流行的Api框架&#xff1b;Restful Api 文档在线自动生成工具>Api文档与API定义同步更新直接运行&#xff0c;可以在在线测试API 接口支持多种语言&#xff1a;&#xff08;java&#xff0c;Php…&#xff09; 二、Swagger3 准备工作 1、在p…

【文件IO】

文章目录 File常见方法和属性属性构造方法方法 InputStream方法FileInputStream OutputStream利用 OutputStreamWriter 进行字符写入 总结按字节读取数据按字节写入数据按字符读取数据按字符写入数据 File常见方法和属性 属性 修饰符及类型属性说明static StringpathSeparato…

JavaScript从入门到精通系列第三十五篇:JavaScript中的DOM简介

文章目录 前言 1&#xff1a;对象分类 2&#xff1a;宿主对象 一&#xff1a;DOM 1&#xff1a;dom简介 2&#xff1a;Dom概念图示 二&#xff1a;节点 1&#xff1a;节点概述 2&#xff1a;常用节点分类 3&#xff1a;节点模型示意图 4&#xff1a;节点属性 5&…