區區幾行Python程式碼,就能實現全面自動探索性資料分析

數據分析那些事
10 min readSep 13, 2022

--

文章來於:數據STUDIO

探索性資料分析是資料科學模型開發和資料集研究的重要組成部分之一。在拿到一個新資料集時首先就需要花費大量時間進行EDA來研究資料集中內在的資訊。自動化的EDA Python包可以用幾行Python程式碼執行EDA。在本文中整理了10個可以自動執行EDA並生成有關資料的見解的Python包,看看他們都有什麼功能,能在多大程度上幫我們自動化解決EDA的需求。
  1. DTale
  2. Pandas-profiling
  3. sweetviz
  4. autoviz
  5. dataprep
  6. KLib
  7. dabl
  8. speedML
  9. datatile
  10. edaviz

1、D-Tale

D-Tale使用Flask作為後端、React前端並且可以與ipython notebook和終端無縫整合。D-Tale可以支援Pandas的DataFrame, Series, MultiIndex, DatetimeIndex和RangeIndex。

import dtale
import pandas as pd
dtale.show(pd.read_csv("titanic.csv"))

D-Tale庫用一行程式碼就可以生成一個報告,其中包含資料集、相關性、圖表和熱圖的總體總結,並突出顯示缺失的值等。D-Tale還可以為報告中的每個圖表進行分析,上面截圖中我們可以看到圖表是可以進行互動操作的。

2、Pandas-Profiling

Pandas-Profiling可以生成Pandas DataFrame的概要報告。panda-profiling擴充套件了pandas DataFrame df.profile_report(),並且在大型資料集上工作得非常好,它可以在幾秒鐘內建立報告。

#Install the below libaries before importing
import pandas as pd
from pandas_profiling import ProfileReport

#EDA using pandas-profiling
profile = ProfileReport(pd.read_csv('titanic.csv'), explorative=True)

#Saving results to a HTML file
profile.to_file("output.html")

3、Sweetviz

Sweetviz是一個開源的Python庫,只需要兩行Python程式碼就可以生成漂亮的視覺化圖,將EDA(探索性資料分析)作為一個HTML應用程式啟動。Sweetviz包是圍繞快速視覺化目標值和比較資料集構建的。

import pandas as pd
import sweetviz as sv

#EDA using Autoviz
sweet_report = sv.analyze(pd.read_csv("titanic.csv"))

#Saving results to HTML file
sweet_report.show_html('sweet_report.html')

Sweetviz庫生成的報告包含資料集、相關性、分類和數字特徵關聯等的總體總結。

4、AutoViz

Autoviz包可以用一行程式碼自動視覺化任何大小的資料集,並自動生成HTML、bokeh等報告。使用者可以與AutoViz包生成的HTML報告進行互動。

import pandas as pd
from autoviz.AutoViz_Class import AutoViz_Class

#EDA using Autoviz
autoviz = AutoViz_Class().AutoViz('train.csv')

5、Dataprep

Dataprep是一個用於分析、準備和處理資料的開源Python包。DataPrep構建在Pandas和Dask DataFrame之上,可以很容易地與其他Python庫整合。

DataPrep的執行速度這10個包中最快的,他在幾秒鐘內就可以為Pandas/Dask DataFrame生成報告。

from dataprep.datasets import load_dataset
from dataprep.eda import create_report

df = load_dataset("titanic.csv")
create_report(df).show_browser()

6、Klib

klib是一個用於匯入、清理、分析和預處理資料的Python庫。

import klib
import pandas as pd

df = pd.read_csv('DATASET.csv')
klib.missingval_plot(df)
klib.corr_plot(df_cleaned, annot=False)
klib.dist_plot(df_cleaned['Win_Prob'])
klib.cat_plot(df, figsize=(50,15))

klibe雖然提供了很多的分析函式,但是對於每一個分析需要我們手動的編寫程式碼,所以只能說是半自動化的操作,但是如果我們需要更定製化的分析,他是非常方便的。

7、Dabl

Dabl不太關注單個列的統計度量,而是更多地關注透過視覺化提供快速概述,以及方便的機器學習預處理和模型搜尋。

dabl中的Plot()函式可以透過繪製各種圖來實現視覺化,包括:

  • 目標分佈圖
  • 散點圖
  • 綫性判別分析
import pandas as pd
import dabl

df = pd.read_csv("titanic.csv")
dabl.plot(df, target_col="Survived")

8、Speedml

SpeedML是用於快速啟動機器學習管道的Python包。SpeedML整合了一些常用的ML包,包括 Pandas,Numpy,Sklearn,Xgboost 和 Matplotlib,所以說其實SpeedML不僅僅包含自動化EDA的功能。

SpeedML官方說,使用它可以基於迭代進行開發,將編碼時間縮短了70%。

from speedml import Speedml

sml = Speedml('../input/train.csv', '../input/test.csv',
target = 'Survived', uid = 'PassengerId')
sml.train.head()
sml.plot.correlate()
sml.plot.distribute()
sml.plot.ordinal('Parch')
sml.plot.ordinal('SibSp')
sml.plot.continuous('Age')

9、DataTile

DataTile(以前稱為Pandas-Summary)是一個開源的Python軟體包,負責管理,彙總和視覺化資料。DataTile基本上是PANDAS DataFrame describe()函式的擴充套件。

import pandas as pd
from datatile.summary.df import DataFrameSummary

df = pd.read_csv('titanic.csv')
dfs = DataFrameSummary(df)
dfs.summary()

10、edaviz

edaviz是一個可以在Jupyter Notebook和Jupyter Lab中進行資料探索和視覺化的python庫,他本來是非常好用的,但是後來被磚廠(Databricks)收購併且整合到bamboolib 中,所以這裡就簡單的給個演示。

總結

在本文中,我們介紹了10個自動探索性資料分析Python軟體包,這些軟體包可以在幾行Python程式碼中生成資料摘要並進行視覺化。透過自動化的工作可以節省我們的很多時間。

Dataprep是我最常用的EDA包,AutoViz和D-table也是不錯的選擇,如果你需要定製化分析可以使用Klib,SpeedML整合的東西比較多,單獨使用它啊進行EDA分析不是特別的適用,其他的包可以根據個人喜好選擇,其實都還是很好用的,最後edaviz就不要考慮了,因為已經不開源了。

原文連接:https://mp.weixin.qq.com/s/yBtgNEEVOeGF9d1L1wmdfQ

※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

我是「數據分析那些事」。常年分享數據分析乾貨,不定期分享好用的職場技能工具。各位也可以關注我的Facebook,按讚我的臉書並私訊「10」,送你十週入門數據分析電子書唷!期待你與我互動起來~

文章推薦

餅圖變形記,肝了3000字,收藏就是學會!

MySQL必須掌握4種語言!

太實用了!4種方法教你輕鬆製作互動式儀表板!

跟資料打交道的人都得會的這8種資料模型,滿足工作中95%的需求

妙呀!一行Python程式碼

--

--

數據分析那些事
數據分析那些事

Written by 數據分析那些事

這是一個專注於數據分析職場的內容部落格,聚焦一批數據分析愛好者,在這裡,我會分享數據分析相關知識點推送、(工具/書籍)等推薦、職場心得、熱點資訊剖析以及資源大盤點,希望同樣熱愛數據的我們一同進步! 臉書會有更多互動喔:https://www.facebook.com/shujvfenxi/

No responses yet