专栏首页数据派THU独家 | 用pandas-profiling做出更好的探索性数据分析(附代码)

独家 | 用pandas-profiling做出更好的探索性数据分析(附代码)

作者:Thomas Gey

翻译:廖倩颖

校对:和中华

本文约2300字,建议阅读5分钟。

探索性数据分析已失势,Pandas-profiling万岁!用更省力的办法完美呈现你的数据。

标签:机器学习 Pandas-profiling

一个充满坏数据的世界

在大部分数据科学领域中,我们获得的数据并不如网上专门为机器学习模型的应用而设计和准备的数据干净和完整。大部分情况下,外部来源的数据不是结构性差就是不完整,这时候就需要你来把这些数据变得更可用!

虽然数据科学家注意到了数据质量的重要性,但这对于商业领导者来说并不是个事。他们更关注如何尽早使用技术来维持竞争优势,而很少理解技术的实际应用。这意味着人们会在“量大出奇迹”的借口下,利用数据集里的一切信息并希望获得最好的结果。

由于思维方式的差异,在建模前一个数据科学家一般花费80%时间准备数据集。

为什么是80%时间?因为有缺失值,不平衡的数据,没有任何意义的字段,删除重复数据后的数据,过时数据和其他原因。人们最近才意识到数据的重要性。但是,即使趋势逆转,数据也很难轻易访问和结构良好。

一个坏数据集的后果很简单也很符合逻辑:用这些数据集建立的预测模型将会有低准确率和低效率。用不正确的数据训练模型会产生偏差,你的结果将与现实相去甚远。一个糟糕的模型无法被部署,所以对于公司来说开发这样的模型是净损失。

一个用锈铁制造的汽车不能正常驾驶,甚至在最糟糕的情况下,根本不能驾驶…没有人愿意使用或购买一辆生锈的汽车。

所以,数据集对于你的项目至关重要。项目在技术和经济层面上的成功取决于你所选择数据的质量。在机器学习项目中,跳过数据评估步骤可能会浪费大量时间,你将不得不从头开始项目。所以现在看来,数据科学家们花那么多时间调查和准备数据集是合乎逻辑的!

低质量数据只会导致低质量结果

神创造了探索性数据分析

概念性的方法

为了确保我们的数据集是有用的,一个好的实践操作是EDA,即探索性数据分析

EDA是一种熟悉数据集的方法。通过这个反思性工作,可以保证处理的是有趣,连贯和干净的数据。这一步是可视化的而且是基于摘要统计和图形表达。

通过EDA,数据科学家可以发现哪一个特征重要或者特征之间的相关性。此外,EDA可以让你发现错误或者缺失值,检测异常值或者驳回一个假设。特征变量的选择之后会被用于机器学习。

一般来说,在探索性数据分析之后的步骤是特征工程/数据增强,在这一过程中,你需要把原始数据进行处理,赋予他们额外价值。

一个EDA基本例子:

对于这个例子,我使用了一个非常适合EDA的数据集,即FIFA 19完整的球员数据集。它包含多种数据类型,缺失值,并且有许多适用的指标。对这个数据集的几个完整的分析可以在这里找到。我使用JupyterLab作为IDE,因为它的灵活性和用户友好的界面。

让我们使用pandas库从CSV文件中导入数据:

import pandas as pd
%time data = pd.read_csv("fifa.csv", delimiter=',', index_col=0)

加载速度很快。现在介绍一下data.sample(5),这是一个随机选择行的方法。如果不知道数据是如何排序的,最好使用.sample()而不是.head()。

data.sample(5)

让我们用.describe()来做一些描述性统计。该方法“总结了数据集分布的集中趋势、分散和形状,不包括NaN值”。

data.describe()

现在我们有了描述性统计数据,我们将会检查缺失数据。我们将会仅仅按顺序列出10个有超10%缺失值的特征:

total = data.isnull().sum().sort_values(ascending=False) 
 percent = (data.isnull().sum()/data.isnull().count()).sort_values(ascending=False) 
 missing_data = pd.concat([total, percent], axis=1, keys=['Total', 'Missing Percent']) 
 missing_data['Missing Percent'] = missing_data['Missing Percent'].apply(lambda x: x * 100) 
 missing_data.loc[missing_data['Missing Percent'] > 10][:10]

正如你看到的,对于数据科学家来说在notebook上做探索性数据分析是非常方便和高效的。但是,视觉效果仍然很有总结性。让我们一起看看如何用pandas-profiling来更省力地动态展现数据。

只有通过观察,我们才能学习。

Pandas-profiling,我们的救世主!

概念

Github描述:”从pandas Dataframe生成概况报告(profile)“

Pandas-profiling将所有东西打包形成一个完整的EDA:最常见值、缺失值、相关性、分位数和描述性统计、数据长度等等。有了这些指标,您将很快看到数据的分布和差异。这些信息至关重要,帮你判断数据将来是否有用。

度量指标在互动性HTML报告中呈现。

pandas-profiling在HTML报告中以结构化的方式展现了不同指标。得益于它的交互性,我们能够很容易地从一个特征转换到另外一个并且访问其指标。

gif图片可以打开一下地址查看:

https://miro.medium.com/max/1400/1*48uRp4eMwtQgb4raZRRAtA.gif

一起来看看如何用它:

pip install pandas-profiling

使用我们的FIFA数据集:

import pandas as pd
import pandas_profiling
data_fifa = pd.read_csv('fifa.csv')
profile = data_fifa.profile_report(title='Pandas Profiling Report')
profile.to_file(output_file="fifa_pandas_profiling.html")

在以上的代码中,我们仅仅导入了pandas和pandas-profiling,读取我们的CSV文件并调用profile_report()方法,因为pandas_profiling使用data_fifa.profile_report()来扩展pandas DataFrame。然后,使用.to_file()将ProfileReport对象导出为HTML文件。

大功告成!至此,我们的HTML文件位于该文件夹的根目录:

上图展现了报告的“概述”部分。这部分简略描述了变量的类型,缺失值或者是数据集的大小。

Pandas-profiling使用matplotlib作为图形库和jinja2作为其接口的模板引擎。

作为一个自由职业者,当我必须为客户处理一个新的数据集时,我总是先生成一个pandas profiling,它帮助我吸收数据集的信息。这种做法允许我量化数据集的处理时间。多少特征看起来是正确的?多少包含缺失值?缺失值的百分比是多少?哪些变量互相依赖?

另外,此外,该报告还可以作为展示界面,向客户介绍数据健康度的全局情况。无需在你的Jupyter notebook上展示你的分析,当中还夹杂着代码和图表,该报告按照特征整合了各种度量指标,并且有更友好的界面。我的客户喜欢对委派给我的任务有一个完整的跟踪,也希望定期了解我的进展。通常我使用该报告提供数据的健康状态。这一步之后是更深入的数据分析和可视化。

结论

大数据的潜力还在不断增长。充分利用这一优势意味着公司必须把分析和预测系统并入战略视野中,并且用此来做出更好更快的决策。通常来说我们拿到的数据含有错误和缺失值。为了使工作变得有效率,这些数据必须被分析和处理。这就是数据科学家要做的工作。数据科学家用pandas-profiling可以更省力地产出快速的探索性数据分析报告。这份报告清晰且容易使用, 还可以被任何有点统计基础的人看懂。

有了对数据的全局理解,您就会有一些思路去进一步分析、处理数据或寻找外部数据源以提高数据质量。

我希望您喜欢这个关于pandas-profiling的小介绍!这是我在medium上写的第一篇文章,欢迎评论和改进建议!

原文标题:

A better EDA with Pandas-profiling

原文链接:

https://towardsdatascience.com/a-better-eda-with-pandas-profiling-e842a00e1136

编辑:于腾凯

校对:林亦霖

译者简介

廖倩颖,马里兰大学公园分校市场分析专业硕士毕业,本科毕业于上海海洋大学包装工程专业。喜欢音乐、电影和看书,我对于数据科学和数据可视化比较有兴趣,最近在学习CV和机器学习算法基础,希望能与各位大佬交流切磋长姿势。

转载须知

如需转载,请在开篇显著位置注明作者和出处(转自:数据派ID:DatapiTHU),并在文章结尾放置数据派醒目二维码。

本文分享自微信公众号 - 数据派THU(DatapiTHU),作者:Thomas Gey

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-06-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 不忘初心,砥砺前行——写在数据院成立四周年之际

    数据派THU
  • 大数据战略:从数据大国到数据强国

    [ 导读 ]海量数据空前集聚和计算力指数级增长释放了深度学习算法的生产力,推动人工智能应用大发展。大数据技术和大数据产业蓬勃发展为线上互联网和线下实体经济带来了...

    数据派THU
  • 【干货】郭朝晖:工业大数据的特征、方法与价值创造

    本文长度为11700字,建议阅读25分钟 本讲座选自宝钢中央研究院首席研究员郭朝晖于2015年12月30日在清华大数据“技术·前沿”讲座上所做的题为《工业大数据...

    数据派THU
  • 干货 | 物联网数据泛滥 企业该如何应对

    导读:物联网时代的到来给人类生活带来天翻地覆的改变,预计2015-2020年间物联网市场规模将达千亿量级。许多企业都在奋力应对由此带来的挑战,虽说大数据分析是推...

    钱塘数据
  • 五种物联网大数据数据类型

    大数据,又称海量资料,是我们这个时代最伟大的经济机遇之一,但它的概念非常模糊。在一些谈话中,不同的参与者用大数据所表示的意思,可能有以下三种:大量的数据、超出传...

    GPUS Lady
  • 西门子收购数据公司加强精准医疗,华为企业云斥资10亿建云数据中心 | 大数据24小时

    数据猿导读 用数据驱动互联网办公租赁落地,好租获元生资本领投的亿元融资;医疗+大数据成大势所趋,云南着力打造省“健康医疗云”框架;中国移动物联网服务商“甲骨文”...

    数据猿
  • 多图技术贴 | 深入浅出解析大数据平台架构

    参加活动赢取话费和一个月免费会员 点击底部阅读原文,参加PPV课玩转可视化图表,赢取话费和PPV课一个月免费会员,精品课程免费看! 目录: 什么是大数据 Had...

    小莹莹
  • 数据驱动型文化是大数据成功的关键

    大数据文摘
  • 阿里起诉售假网店将“打假”进行到底,天源迪科投资8亿元布局金融大数据 | 大数据周周看

    数据猿导读 天源迪科拟7.98亿元收购银行IT服务商维恩贝特,布局金融大数据领域;SaaS 服务提供商 Freshdesk宣布收购数据集成公司Pipemonk;...

    数据猿
  • 谈谈当前商业数据分析师现状

    众所周知,数据分析师有两个发展方向,一个是商业数据分析师,一个就是数据挖掘工程师。

    用户2769421

扫码关注云+社区

领取腾讯云代金券