如何使用pandas_profiling完成探索性數(shù)據(jù)分析,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
創(chuàng)新互聯(lián)是創(chuàng)新、創(chuàng)意、研發(fā)型一體的綜合型網(wǎng)站建設(shè)公司,自成立以來公司不斷探索創(chuàng)新,始終堅持為客戶提供滿意周到的服務,在本地打下了良好的口碑,在過去的十余年時間我們累計服務了上千家以及全國政企客戶,如三維植被網(wǎng)等企業(yè)單位,完善的項目管理流程,嚴格把控項目進度與質(zhì)量監(jiān)控加上過硬的技術(shù)實力獲得客戶的一致表揚。
筆者最近發(fā)現(xiàn)一款將pandas數(shù)據(jù)框快速轉(zhuǎn)化為描述性數(shù)據(jù)分析報告的package——pandas_profiling。一行代碼即可生成內(nèi)容豐富的EDA內(nèi)容,兩行代碼即可將報告以.html格式保存。筆者當初也是從數(shù)據(jù)分析做起的,所以深知這個工具對于數(shù)據(jù)分析的朋友而言極為方便,在此特地分享給大家。
我們以uci機器學習庫中的人口調(diào)查數(shù)據(jù)集adult.data為例進行說明。
數(shù)據(jù)集地址:
https://archive.ics.uci.edu/ml/machine-learning-databases/adult/adult.data
常規(guī)情況下我們拿到數(shù)據(jù)做EDA的時候這幾種函數(shù)是必用的:
看一下數(shù)據(jù)長啥樣:
import numpy as npimport pandas as pdadult = pd.read_csv('../adult.data')adult.head()
對數(shù)據(jù)進行統(tǒng)計描述:
adult.describe()
查看變量信息和缺失情況:
adult.info()
這是最簡單最快速了解一個數(shù)據(jù)集的方法。當然,更深層次的EDA一定是要借助統(tǒng)計圖形來展示的?;趕cipy、matplotlib和seaborn等工具的展示這里權(quán)且略過。
現(xiàn)在我們有了pandas_profiling。上述過程以及各種統(tǒng)計相關(guān)性計算、統(tǒng)計繪圖全部由pandas_profiling打包搞定了。pandas_profiling安裝,包括pip、conda和源碼三種安裝方式。
pip:
pip install pandas-profilingpip install https://github.com/pandas-profiling/pandas-profiling/archive/master.zip
conda:
conda install -c conda-forge pandas-profiling
source:
先下載源碼文件,然后解壓到setup.py所在的文件目錄下:
python setup.py install
再來看pandas_profiling基本用法,用pandas將數(shù)據(jù)讀入之后,對數(shù)據(jù)框直接調(diào)用profile_report方法生成EDA分析報告,然后使用to_file方法另存為.html文件。
profile = df.profile_report(title="Census Dataset")profile.to_file(output_file=Path("./census_report.html"))
看看報告效果如何。pandas-profiling EDA報告包括數(shù)據(jù)整體概覽、變量探索、相關(guān)性計算、缺失值情況和抽樣展示等5個方面。
數(shù)據(jù)整體概覽:
變量探索:
相關(guān)性計算:
這里為大家提供5種相關(guān)性系數(shù)。
缺失值情況:
pandas-profiling為我們提供了四種缺失值展現(xiàn)形式。
數(shù)據(jù)樣本展示:
就是pandas里面的df.head()和df.tail()兩個函數(shù)。
上述示例參考代碼:
from pathlib import Path
import pandas as pd
import numpy as np
import requests
import pandas_profiling
if __name__ == "__main__":
file_name = Path("census_train.csv")
if not file_name.exists():
data = requests.get(
"https://archive.ics.uci.edu/ml/machine-learning-databases/adult/adult.data"
)
file_name.write_bytes(data.content)
# Names based on https://archive.ics.uci.edu/ml/machine-learning-databases/adult/adult.names
df = pd.read_csv(
file_name,
header=None,
index_col=False,
names=[
"age",
"workclass",
"fnlwgt",
"education",
"education-num",
"marital-status",
"occupation",
"relationship",
"race",
"sex",
"capital-gain",
"capital-loss",
"hours-per-week",
"native-country",
],
)
# Prepare missing values
df = df.replace("\\?", np.nan, regex=True)
profile = df.profile_report(title="Census Dataset")
profile.to_file(output_file=Path("./census_report.html"))
除此之外,pandas_profiling還提供了pycharm配置方法:
配置完成后在pycharm左邊項目欄目直接右鍵external_tool下的pandas_profiling即可直接生成EDA報告。更多內(nèi)容大家可以到該項目GitHub地址查看:
關(guān)于如何使用pandas_profiling完成探索性數(shù)據(jù)分析問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。