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

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

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

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

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

在这个实践教程中,我们将探索如何使用新版本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 pddata = 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.mzph.cn/news/140470.shtml

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

相关文章

Intel® DevCloud for oneAPI SYCL编程项目实践

问题陈述 实验所用的硬件环境和软件环境 本次实验使用oneAPI中支持SYCL编程模型的C编译器,使用英特尔oneAPI Developer Cloud服务,可以免安装额外环境,利用CPU作为主机(Host),同时利用GPU作为设备&#xf…

LCA

定义 最近公共祖先简称 LCA(Lowest Common Ancestor)。两个节点的最近公共祖先,就是这两个点的公共祖先里面,离根最远的那个。 性质 如果 不为 的祖先并且 不为 的祖先,那么 分别处于 的两棵不同子树中&#…

【机试题】LazyIterator迭代器懒加载问题

将下面这个未完成的Java工具类补充完成,实现懒加载的功能,该类需要实现Iterable接口,能够遍历所有数据。具体要求如下: 工具类提供了一个ValueLoader接口,用于获取数据,其中ValueLoader的接口定义为&#x…

修改django开发环境runserver命令默认的端口

runserver默认8000端口 虽然python manage.py runserver 8080 可以指定端口,但不想每次runserver都添加8080这个参数 可以通过修改manage.py进行修改,只需要加三行: from django.core.management.commands.runserver import Command as Ru…

二十四、W5100S/W5500+RP2040树莓派Pico<PHY的状态模式控制>

文章目录 1. 前言2. 相关简介2.1 简述2.2 原理2.3 优点&应用 3. WIZnet以太网芯片4. PHY模式配置测试4.1 程序流程图4.2 测试准备4.3 连接方式4.4 相关代码4.5 测试现象 5. 注意事项6. 相关链接 1. 前言 W5100S/W5500不仅支持自动PHY自动协商,而且支持用户自定义…

自动生成Form表单提交在苹果浏览器中的注意事项

以下是本人在公司旧系统中看到的该段代码 function Post(URL, PARAMTERS) {//创建form表单var temp_form document.createElement("form");temp_form.action URL;//如需打开新窗口,form的target属性要设置为_blanktemp_form.target "_blank"…

[EFI]技嘉 Z490 VISION G i5-10500 电脑 Hackintosh 黑苹果引导文件

硬件配置 硬件型号驱动情况主板技嘉 Z490 VISION G CLPC controller Z490芯片组)处理器英特尔 Core i5-10500 3.10GHz 六核已驱动内存16GB( 威到DDR42655MHz8GBx 2〕已驱动硬盘SSDSC2BB150G7R (150 GB/ 国态硬盘)已驱动显卡AMD Radeon RX 58…

[论文阅读] CLRerNet: Improving Confidence of Lane Detection with LaneIoU

Abstract 车道标记检测是自动驾驶和驾驶辅助系统的重要组成部分。采用基于行的车道表示的现代深度车道检测方法在车道检测基准测试中表现出色。通过初步的Oracle实验,我们首先拆分了车道表示组件,以确定我们方法的方向。我们的研究表明,现有…

Python之字符串、正则表达式练习

目录 1、输出随机字符串2、货币的转换(字符串 crr107)3、凯撒加密(book 实验 19)4、字符替换5、检测字母或数字6、纠正字母7、输出英文中所有长度为3个字母的单词 1、输出随机字符串 编写程序,输出由英文字母大小写或…

ESP32 BLE特征值示例

键盘特征值初始化示例 void BleKeyboard::begin(void) {BLEDevice::init(deviceName);BLEServer* pServer BLEDevice::createServer();pServer->setCallbacks(this);hid new BLEHIDDevice(pServer);inputKeyboard hid->inputReport(KEYBOARD_ID); // <-- input R…

大洋钻探系列之二IODP 342航次是干什么的?(上)

本文简单介绍一下大洋钻探IODP 342航次&#xff0c;从中&#xff0c;我们一窥大洋钻探航次的风采。 IODP342的航次报告在网络上可以下载&#xff0c;英文名字叫《Integrated Ocean Drilling ProgramExpedition 342 Preliminary Report》&#xff0c;航次研究的主要内容是纽芬兰…

【Linux】第十五站:环境变量

文章目录 一、进程相关的一些概念1.一些常见的概念2.对于并发3.**进程切换** 二、环境变量1.PATH环境变量2.HOME环境变量3.SHELL环境变量4.env5.系统调用接口与环境变量6.什么是环境变量&#xff1f;7.命令行参数8.main函数的第三个命令行参数9.如何验证环境变量是可以被继承的…

前端面试之事件循环

什么是事件循环 首先&#xff0c; JavaScript是一门单线程的语言&#xff0c;意味着同一时间内只能做一件事&#xff0c;这并不意味着单线程就是阻塞&#xff0c;而是实现单线程非阻塞的方法就是事件循环 在JavaScript中&#xff0c;所欲任务都可以分为&#xff1a; 同步任务…

【RPC】前传

前传 本地程序用的go语言&#xff0c;想把main.go程序当中一些计算工作放到服务器上进行&#xff0c;而只需要把结果给我即可。由于平台上暂时不能运行Go代码&#xff0c;所以写的是python文件。 1、主要是使用ssh依赖进行连接&#xff0c;但是大概率是需要手动添加的&#xf…

带头+双向+循环链表

前言&#xff1a; 前面我们已经学习了单链表的结构及其功能特点&#xff0c;也了解了单链表在实现一些功能时出现的一些缺点&#xff0c;比如在删除某个节点前面一个节点时就需要再开一个变量来存放前面一个节点的信息&#xff0c;这样就显得不灵活&#xff0c;为了使链表实现功…

网络编程学习笔记

参考&#xff1a; 套接字通信部分 《TCP/IP 网络编程》以及《TCP/IP网络编程》学习笔记 socket 编程 1. 字节序 字节序&#xff0c;顾名思义字节的顺序&#xff0c;就是大于一个字节类型的数据在内存中的存放顺序&#xff0c;也就是说对于单字符来说是没有字节序问题的&…

蓝桥杯国一,非ACMer选手保姆级经验分享

目录 一、前言二、蓝桥杯简介三、0基础计算机新手小白&#xff0c;赛前如何准备提高自己的获奖率&#xff1f;3.1 每两周参加一次【蓝桥算法双周赛】3.2 多练真题3.3 参加每一场官方校内模拟赛 四、结语 一、前言 hello&#xff0c;大家好&#xff0c;我是大赛哥(弟)&#xff…

1000道精心打磨的计算机考研题,408小伙伴不可错过

提示&#xff1a;408考研人看过来&#xff0c;超精选计算机考研1000题&#xff01; 文章目录 前言1. 为什么是1000题&#xff1f;2. 有什么优势&#xff1f;【练学结合&#xff0c;助力强化】【难度适中&#xff0c;但不刁钻】【题目新颖&#xff0c;独具匠心】【考题预测&…

Minio

Minio学习 MinioMinio介绍安装window安装1.下载服务端和客户端文件[地址](https://min.io/download#/windows)2.创建minio相关目录3.启动minio服务方式一方式二4.查看minio版本5.访问minio控制台 linux安装docker安装 Minio Minio介绍 MinIO 是在 Apache License v2.0 下发布…

云课五分钟的一些想法

起源 自中学起&#xff0c;就积极学习和掌握互联网相关知识&#xff0c;到如今已经快30年了。 个人也全程经历了从信息时代的互联网&#xff08;硬&#xff09;到智能时代的大模型&#xff08;软&#xff09;。 整体信息到智能的基础设施&#xff0c;由硬到软&#xff0c;机…