? 作者:韩信子@ShowMeAI ? 数据分析◉技能提升系列:https://www.showmeai.tech/tutorials/33 ? 数据分析实战系列:https://www.showmeai.tech/tutorials/40 ? 本文地址:https://www.showmeai.tech/article-detail/284 ? 声明:版权所有,转载请联系平台与作者并注明出处 ? 收藏ShowMeAI查看更多精彩内容
实际工作中,我们往往依托于业务数据分析制定业务策略。这个过程需要频繁地进行数据分析和挖掘,发现模式规律。对于算法工程师而言,一个有效的 AI 算法系统落地,不仅仅是模型这么简单——数据才是最底层的驱动。
典型的『机器学习工作流程』包含 6 个关键步骤,其中『探索性数据分析(Exploratory Data Analysis, EDA) 』是至关重要的一步。
- 定义问题
- 数据采集和 ETL
- 探索性数据分析
- 数据准备
- 建模(模型训练和选择)
- 部署和监控
Wiki: In statistics, exploratory data analysis is an approach of analyzing data sets to summarize their main characteristics, often using statistical graphics and other data visualization methods. A statistical model can be used or not, but primarily EDA is for seeing what the data can tell us beyond the formal modeling and thereby contrasts traditional hypothesis testing.
探索性数据分析,通常使用统计图形等数据可视化方法,探索数据的结构和规律,总结数据主要特征的方法。这一过程通常包含细碎的处理步骤和分析操作。
探索性数据分析 EDA 的常用工具
优秀的工具可以简化上述过程!甚至可以一键生成分析报告。本篇 ShowMeAI 给大家总结了截至 2022年 最受欢迎的探索式数据分析工具库,快一起试起来吧!
通常,我们有以下 3 种方式进行 EDA:
- 方式1:在 Python/R 中使用库/框架手动分析
- 方式2:在 Python/R 中使用自动化 EDA 库
- 方式3:使用 Microsoft Power BI 或 Tableau 等工具
3种方式对应的最佳工具库我们梳理到下文中了,对自动化数据分析感兴趣的同学可以直接跳至『自动化EDA工具库』板块。
方式1:手动分析工具库
? Matplotlib
Matplotlib 是一个 Python 进行绘图与交互式可视化的工具。 大家在Python中用到的绝大多数工具包扩展都是构建在 Matplotlib 之上的(包括 Seaborn、HoloViews、ggplot 以及后续提到部分自动化 EDA 工具等)。
基于 Matplotlib 可以借助简单的代码实现:散点图、直方图、条形图、误差图和箱线图,辅助我们理解数据和进行后续工作。
大家可以从官方 ? 用户指南、? 教程 和 ? 代码示例 中学习,或前往B站观看 ? 视频教程 也推荐下载收藏 ShowMeAI 的 ? Matplotlib速查表,以便快速查找所需功能。
? Seaborn
另一个流行的 Python 数据可视化框架是 Seaborn,它相比 Matplotlib 更为简洁,也拓展了很多分析功能和呈现形式。
大家同样可以通过 Seaborn 的 ? 用户指南和教程 对其进行学习,或前往观看 ? 视频教程。也欢迎阅读 ShowMeAI 总结的 ? Seaborn速查表,以及 Seaborn 可视化教程 Seaborn工具与数据可视化。
? Plotly
Plotly 是另外一个用于创建交互式数据可视化的 Python 开源工具库。 Plotly 构建在 Plotly JavaScript 库(plotly.js
) 之上,可用于创建基于 Web 的数据可视化,这些可视化可以显示在 Jupyter 笔记本或使用 Dash 的 Web 应用程序中,或保存为单独的 HTML 文件。
它提供了多达40 种图表类型,包括散点图、直方图、折线图、条形图、饼图、误差线、箱线图、多轴、迷你图、树状图和 3-D 图表(甚至包括等高线图,这在其他数据可视化库中并不常见)。大家可以通过 ? 官方用户指南 进行学习和使用。
? Bokeh
Bokeh 是一个 Python 库,用于为现代 Web 浏览器创建交互式可视化。 它可以构建精美的图形,从简单的绘图到带有流数据集的复杂仪表板。 使用 Bokeh,可以创建基于 JavaScript 的可视化,而无需自己编写任何 JavaScript。
大家可以通过 Bokeh 的 ? 官方网站 和 ? 示例库 了解它的一系列用法。也推荐大家下载收藏 ShowMeAI 的 ? Bokeh速查表,快速查找所需功能。
? Altair
Altair 是 Python 的声明性统计可视化库,基于 Vega 和 Vega-Lite。 Altair 的 API 简单、友好,可以用最少的代码产生漂亮而有效的可视化效果。大家可以通过官方的 ? Altair Notebook Examples 学习Altair工具库的使用。
方式2:自动化EDA工具库
? pandas-profiling
很多做过 Python 数据分析的同学都很熟悉 Pandas 的 describe 函数,pandas-profiling 通过其低代码接口扩展了对应的功能,将信息以报告的形式呈现。 pandas-profiling 库自动从 pandas DataFrame 生成配置文件报告,整个过程甚至只需要两三行代码。
pandas-profiling 会对单字段和关联字段进行分析。对于数据集的每一列(字段),它会分析如下的内容并呈现在交互式 HTML 报告中:
- 类型推断:字段列的类型
- 要点:类型、唯一值、缺失值
- 分位数统计:包括最小值、Q1、中位数、Q3、最大值、范围、四分位间距
- 描述性统计:包括均值、众数、标准差、总和、中值绝对差、变异系数、峰度、偏度等
- 直方图:分类和数字
- 相关性:Spearman、Pearson 和 Kendall 矩阵
- 缺失值:矩阵、计数、热图和缺失值的树状图
- 文本分析:了解文本数据的类别(大写、空格)、脚本(拉丁文、西里尔文)和块(ASCII)
- 文件和图像分析:提取文件大小、创建日期和尺寸,并扫描截断的图像或包含 EXIF 信息的图像
大家可以在 pandas-profiling 的项目 ? GitHub 页面获取详细使用方法,简单的数据分析与报告生成过程可以只通过如下1行命令生成(在命令行运行)。
代码语言:python代码运行次数:0复制pandas_profiling --title "Example Profiling Report" --config_file default.yaml data.csv report.html
或者在Python中通过如下几行代码完成:
代码语言:python代码运行次数:0复制# 读取数据
df = pd.read_csv(file_name)
# 数据分析
profile = ProfileReport(df, title="Data Report", explorative=True)
# html分析报告生成
profile.to_file(Path("data_report.html"))
? Sweetviz
Sweetviz 的功能与 pandas-profiling 很相似。 它是一个开源 Python 库,可生成精美的高信息量结果报告,只需两行代码即可启动探索性数据分析过程。 输出是一个完全独立的 HTML 报告(而且可以完整交互式操作)。
Sweetviz的特征:
- 类型推断
- 摘要信息
- 目标字段分析
- 显示目标列与其他特征的关联分析
- 可视化和对比
SweetViz的官方代码可以在 ? GitHub 找到。分析与报告生成只需要如下 2 行代码:
代码语言:python代码运行次数:0复制# 数据分析
my_report = sv.analyze(data)
# 报告生成
my_report.show_html()
下图为使用 Sweetviz 生成的报告。
? AutoViz
AutoViz 是另外 1 个自动化 EDA 框架。 它在功能方面与 Sweetviz 和 pandas-profiling 也比较类似。 AutoViz 只需一行代码即可对任何数据集进行自动可视化,它还可以完成自动字段选择,找到最重要的特征字段进行分析可视化,运行速度也非常快。
AutoViz可以结合Bokeh做交互式数据探索分析,详细教程大家可以在官方 ? AutoViz 示例 Notebook 找到。核心代码如下:
代码语言:python代码运行次数:0复制AV = AutoViz_Class()
_ = AV . AutoViz(filename)
下图所示为使用 AutoViz 生成的报告。
方式3:数据分析工具软件
? Microsoft Power BI
Power BI 是由 Microsoft 开发的交互式数据可视化软件,主要关注商业智能。 它是 Microsoft Power Platform 的一部分。 Power BI 是软件服务、应用程序和连接器的集合,它们协同工作,将不相关的数据源转变为连贯、视觉沉浸式和交互式见解。 可以通过直接从数据库、网页或电子表格、CSV、XML 和 JSON 等结构化文件中读取数据来输入数据。
不过,Power BI 不是开源的,它是一款付费企业工具,提供免费桌面版本。 大家可以从 ? 官方学习指南 学习 Power BI。
? Tableau
Tableau 是用于数据分析和商业智能的领先数据可视化工具。 Gartner 的魔力象限将 Tableau 列为分析和商业智能领域的领导者。Tableau 是一种工具,它正在改变我们使用数据解决问题的方式——使人们和组织能够充分利用他们的数据。
下图所示为使用 Tableau 生成的报告。大家前往B站观看 ? 1小时速学视频教程。
参考资料
- ? Matplotlib 官方教程: https://matplotlib.org/stable/tutorials/index.html
- ? Matplotlib 知识速查表: https://www.showmeai.tech/article-detail/103
- ? Seaborn 数据可视化教程: https://www.showmeai.tech/article-detail/151
- ? Seaborn 知识速查表: https://www.showmeai.tech/article-detail/105
- ? Plotly 官方教程: https://plotly.com/python/getting-started/
- ? Bokeh 官方教程: http://docs.bokeh.org/en/latest/
- ? Bokeh 知识速查表: https://www.showmeai.tech/article-detail/104
- ? Altair Notebook Examples: https://github.com/altair-viz/altair_notebooks
- ? pandas-profilling 详细教程: https://github.com/ydataai/pandas-profiling
- ? SweetViz 官方代码: https://github.com/fbdesignpro/sweetviz
- ? AutoViz 示例: https://github.com/AutoViML/AutoViz/tree/master/Examples
- ? Power BI 官方学习指南: https://powerbi.microsoft.com/en-ca/learning/
<a href="https://www.showmeai.tech/"><img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e9190f41b8de4af38c8a1a0c96f0513b~tplv-k3u1fbpfcp-zoom-1.image" width="100%" referrerpolicy="no-referrer"></a>