0


为时间序列分析准备数据的一些简单的技巧

每个时间序列(TS)数据都装载有信息;时间序列分析(TSA)是解开所有这些的过程。然而,要释放这种潜力,需要在将数据放入分析管道之前对其进行适当的准备和格式化。

TS可能看起来像一个简单的数据对象,易于处理,但事实是,对于新手来说,在真正有趣的事情开始之前,仅仅准备数据集就可能是一项艰巨的任务。

因此,在本文中,我们将讨论一些简单的技巧和技巧,以获得准备好分析的数据,从而潜在地节省大量工作时间。

找到数据

如果您正在使用自己的数据集进行分析,那么您已经拥有了它。但是对于那些刚刚学习TSA的人来说,找到正确的数据集可能是一项繁重的任务。

实际上有相当多的数据源。一些随机器学习库而来的数据集——它们被称为玩具数据——已经存在很长时间了。这些“玩具”数据非常适合玩,尤其是初学者。但这是一种瘾,每个人都需要尽快摆脱它,投入到现实世界中去。

下面是一些在不同领域的主题范围内查找数据的来源——有些是经过策划的,有些需要清理。你一定要从这个列表中找到你最喜欢的。

我建议您从现成可用数据集开始,这样您就不必绞尽脑汁去解决数据问题,也不会对真正有趣的东西失去兴趣。但一旦你掌握了基本原理,发现数据越乱越好,它就会迫使你完成整个分析过程。

好了,这里有一些玩具数据集-清洁,策划和分析-准备好-在机器学习教程中经常使用:

  1. air passengers :1949年至1960年,每月报告的航空旅客人数
  2. electric energy consumption :美国某些州客户的小时电能消耗
  3. Stock market data :股票市场的数据随着开盘价、最高价、最低价和收盘价以及不同公司的交易量而变化
  4. shampoo sales:一个关于洗发水销售的超级小数据集
  5. Daily minimum temperature:1981年至1990年的每日最低气温数据(我不知道代表哪个国家/城市,但这无关紧要)
  6. air quality data :每天记录印度不同城市的空气质量数据(CO, SO2, O3等)

对于真实世界的数据集,有一些非常棒的数据。但是你不需要超越这些库去学习高级的TS分析和建模。

  1. 美国人口普查局拥有大量关于美国商业活动的时间序列数据 Census Bureau
  2. 美联储经济数据(FRED)是美国经济指标的重要数据来源 Federal Reserve Economic Data (FRED)
  3. 《世界发展指标》是世界银行关于世界各国社会、经济和环境问题的大型数据库。World Development Indicators (WDI)

数据准备

对于初学者来说,总是有把时间序列当作其他数据集的诱惑。然后操之过急。但是TS观测结果与我们熟悉的横断面观测结果不同。

时间序列数据已经存在很长一段时间了,许多人将他们的生命奉献给了其他人的生活变得更简单。

有相当多的库是专门为处理TS数据而设计的。通过转换数据,可以让库将其识别为一个特殊的TS对象。

假设您已经完成了所需的预处理—例如重命名列、处理丢失的值等—以下是您如何在几个步骤中准备数据的方法。

在这个练习中,我使用了一个在机器学习中过度使用的玩具数据—航空乘客数据集—并使用Python执行代码。

# import a couple of libraries
import pandas as pd
import numpy as np# import data
df = pd.read_csv("../DataFolder/file.csv")# look at the head
df.head()

从前几行我们可以看到,数据集有两列,第一列表示“yyyy - mm”格式的日期列和具有实际观测值的值列。

记住,我们还不知道它是否是一个时间序列对象,我们只知道它是一个具有两列的dataframe。

df.info()

这个摘要确认了它是一个包含两列的panda dataframe。第一列是一个对象,第二列是一个整数。

它不显示任何时间维度,这是因为Month列存储为字符串。因此,我们需要将其转换为datetime格式。

df_air["Month"] = pd.to_datetime(df_air["Month"])

接下来,让它成为索引。这样做的好处是您可以以任何方式过滤/切片数据:按年、月、日、工作日、周末、特定的日/月/年范围等等。

df_air = df_air.set_index("Month")
df_air.head()

最后一个好的实践是从datetime索引中提取年份、月份和工作日,并将它们存储在单独的列中。这给了一些额外的灵活性,“分组”数据根据年/月等,如果需要。

df_air['year'] = df_air.index.year
df_air['month'] = df_air.index.month
df_air['weekday'] = df_air.index.weekday_name

这就是最终的数据集。比较一下与原始数据的差异。此外,正如下面用突出显示的,它现在确认它不是任何数据流,而是一个时间序列对象。

df.head()

总之,我们已经做了一些事情来将我们的数据转换成一个时间序列对象:

1)将Month列从字符串转换为datetime;

2)将转换后的datetime列设置为索引;

3)从索引中提取年、月、日,并存储在新列中

现在已经有了可以分析的数据,下一步是什么?

现在,可以通过本文获得您想要的所有有趣的分析,我将在以后的文章中介绍。

DeepHub

微信号 : deephub-imba

每日大数据和人工智能的重磅干货

大厂职位内推信息

长按识别二维码关注 ->

好看就点在看!********** **********

标签:

“为时间序列分析准备数据的一些简单的技巧”的评论:

还没有评论