Python数据科学实战
上QQ阅读APP看书,第一时间看更新

1.3 数据处理流程

在本节中,我们将从概念上了解数据处理(也称为数据处理流程)涉及的步骤。通常的数据处理流程包含如下步骤。

(1)数据获取。

(2)数据清洗。

(3)数据变换。

(4)数据分析。

(5)数据存储。

这些步骤并不总是完全泾渭分明的。在某些应用中,你可以将多个步骤合并为一个步骤;而在某些应用中,你也可以省略某些步骤。

1.3.1 数据获取

在处理数据之前,需要先获取数据。这就是为什么数据获取是任何数据处理流程的第一步。在常见的数据源类型中,一些数据源只允许你根据请求加载所需的部分数据。

例如,对Yahoo Finance API的请求要求你指定公司的股票代码以及检索该公司股票价格的时间段。类似地,允许你检索新闻文章的News API可以使用多个参数以缩小所请求文章的列表,包括来源和发布日期。尽管有这些参数,但是检索到的列表可能仍需要进一步过滤。也就是说,数据可能需要清洗。

1.3.2 数据清洗

数据清洗是检测和纠正错误的或不准确的数据或删除不必要数据的过程。在某些情况下,这一步是不需要的,所获得的数据可以立即用于分析。例如,yfinance库(Yahoo Finance API的Python包装器)将股票数据作为易于使用的pandas库的数据框对象返回。这通常允许你跳过数据清洗和数据变换步骤,直接进行数据分析。

但是,如果使用网页抓取获取数据,通常HTML标签可能会包含在数据中,那么一定要进行数据清洗,如下所示。

6.\tThe development shall comply with the requirements of DCCa\x80\x99s Drainage Division as
follows\r\n\r\n

清理后,此文本片段如下所示。

6. The development shall comply with the requirements of DCC's Drainage Division as follows

除HTML标签外,抓取的文本可能还包括其他不需要的文本。在以下示例中,短语A View full text是超链接文本。你可能需要打开此链接才能访问其中的文本。

Permission for proposed amendments to planning permission received on the 30th A View full text

你还可以使用数据清洗步骤过滤特定的实体。例如,从News API请求一组文章后,你可能只需要选择指定时间段内标题包含金钱或百分比短语的文章。此过滤器可被视为数据清洗器,因为其目标是删除不必要的数据,并为数据变换和数据分析做好准备。

1.3.3 数据变换

数据变换通过改变数据的格式或结构,为数据分析做好准备。例如,要从GoodComp的非结构化文本数据中提取信息,你可以将其拆分为单个单词或标记,以便命名实体识别(Named Entity Recognition, NER)工具可以查找所需的信息。在信息提取中,一个命名实体通常代表现实世界中的一个对象,如一个人、一个组织或一个产品,这个对象可以用专有名词标识。另外,还有代表日期、百分比、财务条款等的命名实体。

许多NLP工具可以自动处理这些变换。经过变换后,分解的GoodComp数据如下所示。

['GoodComp', 'shares', 'soared', 'as', 'much', 'as', '8.2%', 'on',
 '2021-01-07', 'after', 'the', 'company', 'announced', 'positive',
'early-stage', 'trial', 'results', 'for', 'its', 'vaccine']

其他形式的数据变换可能更深入,例如,文本数据被转换成数字数据。例如,如果我们收集了一组新闻文章,我们可以通过执行情绪分析变换它们。情绪分析是一种文本处理技术,可以生成一个数字,这个数字代表文本表达的情绪。

情感分析可以使用诸如SentimentAnalyzer(在包nltk.sentiment中)之类的工具来实现,其输出可能如下所示。

Sentiment URL
--------- ----------------------------------------------------------------
0.9313    /uk/shopping/amazon-face-mask-store-july-28/
0.9387    /save-those-crustacean-shells-to
-make-a-sauce-base-1844520024

现在,数据集中的每个条目都包含一个数字,如0.9313,代表相应文章表达的情绪。通过数字形式表达每篇文章的情绪,我们可以计算整个数据集的平均情绪,从而确定对某个感兴趣的对象(如某个公司或产品)的总体情绪。

1.3.4 数据分析

数据分析是数据处理流程中的关键步骤。在这里,你可以解释原始数据,从而得出某些原本不明显的结论。

继续情绪分析示例,你可能希望研究特定时段内人们对公司的情绪与公司股价之间的关系。或者,你可以将股市指数(如标准普尔500指数)与同期大量新闻表达的情绪进行比较。下面的数据片段展示了标准普尔500指数与当天新闻的总体情绪。

Date         News_sentiment   S&P_500
--------------------------------------
2021-04-16   0.281074         4185.47
2021-04-19   0.284052         4163.26
2021-04-20   0.262421         4134.94

由于情绪数据和股票数据均用数字表示,因此你可以在同一个图上绘制两条对应的曲线以进行可视化分析,如图1-1所示。

图1-1 可视化数据分析的一个示例

可视化分析是解释数据最常用、最有效的方法之一。第8章将更详细地讨论可视化分析。

1.3.5 数据存储

在大多数情况下,你需要存储数据分析过程中生成的结果,以便以后使用。存储形式通常包括文件和数据库。如果数据可能会频繁使用,数据库可能是更好的选择。