Pandas 庫功能非常強大,特別有助于數(shù)據(jù)分析與處理,并為幾乎所有操作提供了完整的解決方案。一種常見的Pandas函數(shù)是pandas describe
。它向用戶提供數(shù)據(jù)集所有特征的描述性統(tǒng)計摘要,盡管其比較常用,但它仍然沒有提供足夠詳細的功能。
Pandas profiling
可以彌補pandas describe
沒有詳細數(shù)據(jù)報告生成的不足。它為數(shù)據(jù)集提供報告生成,并為生成的報告提供許多功能和自定義。在本文中,我們將探索這個庫,查看提供的所有功能,以及一些高級用例和集成,這些用例和集成可以對從數(shù)據(jù)框創(chuàng)建令人驚嘆的報告!
安裝
與其他所有 python 包一樣,可以通過 pip 包管理器輕松安裝 Pandas 分析:
pipinstallpandas-profiling
它也可以通過 Conda 包管理器安裝:
condaenvcreate-npandas-profiling
condaactivatepandas-profiling
condainstall-cconda-forgepandas-profiling
數(shù)據(jù)集和設置
看下如何啟動pandas_profiling
庫并從數(shù)據(jù)框中生成報告了。首先導入一個將為其生成報告的數(shù)據(jù)集。該數(shù)據(jù)集包含State_name、District_name、Crop_year、Season、Crop、Area 和 Production
的農業(yè)數(shù)據(jù)集。
數(shù)據(jù)集獲取:
https://www.kaggle.com/divyosmi2009/crop-production-in-india-statevise?select=crop_production.csv
importpandasaspd
df=pd.read_csv("crop_production.csv")
在討論pandas_profiling
之前,先看看數(shù)據(jù)幀的Pandas describe
函數(shù)輸出:
df.describe(include='all')
注意我使用了
describe
函數(shù)的include
參數(shù)設置為"all"
,強制 pandas 包含要包含在摘要中的數(shù)據(jù)集的所有數(shù)據(jù)類型。字符串類型值伴隨有諸如unique、top 和 freq
等選項。
導入 pandas_profiling
frompandas_profilingimportProfileReport
分析DataFrame有兩種方法:
-
可以在 Pandas DataFrame上調用
'.profile_report()'
函數(shù)。此函數(shù)不是 Pandas API 的一部分,但只要導入profiling庫,它就會將此函數(shù)添加到DataFrame對象中。 - 可以將DataFrame對象傳遞給profiling函數(shù),然后調用創(chuàng)建的函數(shù)對象以開始生成分析文件。
無論采用哪種方式,都將獲得相同的輸出報告。我正在使用第二種方法為導入的農業(yè)數(shù)據(jù)集生成報告。
profile=ProfileReport(df)
profile
報告部分
現(xiàn)在我們一起一一探索生產(chǎn)報告的所有部分。
1. 概述 Overview
此部分包含 3 個選項卡:Overview, Warnings, 和 Reproduction。
該Overview包括總體統(tǒng)計的。這包括變量數(shù)(數(shù)據(jù)框的特征或列)、觀察數(shù)(數(shù)據(jù)框的行)、缺失單元格、缺失單元格百分比、重復行、重復行百分比和內存中的總大小。
該Warnings選項卡由任何類型的相關基數(shù),相關性與其他變量,缺失值零,偏態(tài)變量,以及其他Warnings。
我們將在本文的高級用例部分討論配置文件。
2. 變量
報告的這一部分詳細分析了數(shù)據(jù)集的所有變量/列/特征。顯示的信息因變量的數(shù)據(jù)類型而異。
數(shù)值變量
對于數(shù)值數(shù)據(jù)類型特征,可以獲得有關不同值、缺失值、最小值-最大值、平均值和負值計數(shù)的信息。還可以獲得直方圖形式的小表示值。
切換按鈕來展開的Statistics, Histogram, Common values, Extreme values選項卡。
統(tǒng)計選項卡包括:
- 分位數(shù)統(tǒng)計:Min-Max、百分位數(shù)、中位數(shù)、范圍和 IQR(四分位間距)。
- 描述性統(tǒng)計:標準偏差、方差系數(shù)、峰度、均值、偏度、方差和單調性。
直方圖選項卡顯示變量的頻率或數(shù)值數(shù)據(jù)的分布。通用值選項卡基本上是變量的value_counts
,同時顯示為計數(shù)和百分比頻率。
字符串變量
對于字符串類型變量,您將獲得不同(唯一)值、不同百分比、缺失、缺失百分比、內存大小以及所有具有計數(shù)表示的唯一值的水平條表示。
它還會報告與變量相關的任何警告,而不管其數(shù)據(jù)類型如何
切換按鈕擴展到Overview, Categories, Words, and Characters選項卡。
字符串類型值的概覽選項卡顯示最大-最小中值平均長度、總字符、不同字符、不同類別、唯一和來自數(shù)據(jù)集的樣本。
類別選項卡顯示直方圖,有時顯示特征值計數(shù)的餅圖。該表包含值、計數(shù)和百分比頻率。
在以表格和直方圖格式呈現(xiàn)數(shù)據(jù)的方式方面,單詞和字符選項卡與類別選項卡的作用相同,但它可以更深入地處理小寫、大寫、標點符號,特殊字符類別也很重要!
3. 相關性
相關性用于描述兩個變量相互協(xié)調移動的程度。在熊貓分析報告中,可以訪問 5 種類型的相關系數(shù):Pearson's r、Spearman's ρ、Kendall's τ、Phik (φk) 和 Cramér's V (φc)
。
還可以單擊切換按鈕以獲取有關各種相關系數(shù)的詳細信息。
4. 缺失值
生成的報告還包含數(shù)據(jù)集中缺失值的可視化。您將獲得 3 種類型的圖:計數(shù)、矩陣和樹狀圖。計數(shù)圖是一個基本的條形圖,以 x 軸作為列名,條形的長度代表存在的值的數(shù)量(沒有空值)。類似的還有矩陣和樹狀圖。
5. 樣本
此部分顯示數(shù)據(jù)集的前 10 行和最后 10 行。
如何保存報告?
到目前為止,我們已經(jīng)了解了如何僅使用一行代碼或函數(shù)生成DataFrame報告,以及報告包含的所有功能。我們可能有興趣將此分析導出到外部文件,以便可以將其與其他應用程序集成或將其發(fā)布到 Web 上。
可以將此報告保存在
- HTML格式
- JSON 格式
任何格式的保存功能都保持不變,只需在保存時更改文件擴展名。要保存報告,請在配置文件對象上調用 **.to_file()
**函數(shù):
profile.to_file("Analysis.html")
profile.to_file("Analysis.json")
高級用法
Pandas profiling
生成的報告是一個完整的分析,除了 DataFrame 對象之外,沒有用戶的任何輸入。報告的所有元素都是自動選擇的,默認值是首選。
報告中可能有一些您不想包含的元素,或者您需要為最終報告添加自己的元數(shù)據(jù)。這個庫的高級用法來了。您可以通過更改默認配置來控制報告的各個方面。
我們可以自定義報告的一些方法。
添加元數(shù)據(jù)
您可以添加“title”, “description”, “creator”, “author”, “URL”, “copyright_year”, and “copyright_holder”
等信息。此信息將出現(xiàn)在數(shù)據(jù)集概述部分。對于此元數(shù)據(jù),將創(chuàng)建一個名為“dataset”的新選項卡。要將此數(shù)據(jù)添加到報告中,請在 ProfileReport 函數(shù)中使用 dataset 參數(shù)并將此數(shù)據(jù)作為字典傳遞:
profile=ProfileReport(df,
title="AgricultureData",
dataset={
"description":"Thisprofilingreportwasgeneratedfor數(shù)據(jù)STUDIO",
"copyright_holder":"數(shù)據(jù)STUDIO",
"copyright_year":"2021",
"url":"https://t.1yb.co/HqGX",
},)
profile
我們還可以使用 variables 參數(shù)添加有關數(shù)據(jù)集中使用的變量的信息。這將具有描述的字典作為鍵和值作為另一個具有鍵值對的字典,其中鍵是變量名稱,值作為變量的描述。
variables={
"descriptions":{
"State_Name":"州名",
"District_Name":"區(qū)名",
"Crop_Year":"播種的年份",
"Season":"作物年",
"Crop":"播種的是哪種作物?",
"Area":"作物分配了多少面積?",
"Production":"產(chǎn)量多少",
}
}
當您將其添加到ProfileReport
函數(shù)時,將在概覽部分下創(chuàng)建一個名為“variables”
的單獨選項卡:
報表的控制參數(shù)
假設你不想顯示所有類型的相關系數(shù)。你可以通過使用相關性配置來簡單地禁用其他系數(shù)。這也是一個字典對象,可以傳遞給ProfileReport
函數(shù):
profile=ProfileReport(df,
title="AgricultureData",
correlations={
"pearson":{"calculate":True},
"spearman":{"calculate":False},
"kendall":{"calculate":False},
"phi_k":{"calculate":False},
})
同樣,您可以自定義報告的每個部分、HTML 格式、圖表等等。
集成
在通過配置報告的各個方面使您的報告令人驚嘆后,你可能希望以任何方式發(fā)布它。或許,你可以將其導出為 HTML 格式并上傳到網(wǎng)絡。但是還有一些其他方法可以使你的報告脫穎而出。
Jupyter 筆記本中的小部件
在你的 Jupyter 筆記本中運行panda profiling
時,你將僅在代碼單元格中呈現(xiàn) HTML。這干擾了用戶的體驗。你可以讓它像一個小部件一樣易于訪問并提供緊湊的視圖。為此,只需在你的配置文件對象上調用**.to_widgets()
**:
Streamlit app
我們也可以將此報告作為Streamlit app
的一部分。Streamlit 是一個功能強大的軟件包,可以用最少的代碼構建GUI Web app
。這些應用程序是交互式的,幾乎與所有設備兼容。您可以按照以下代碼將你的報告作為streamlit app
的一部分:
第 1 步:安裝 streamlit_pandas_profiling
pipinstallstreamlit-pandas-profiling
第 2 步:創(chuàng)建一個 Python 文件并以此格式編寫代碼
importpandasaspd
importpandas_profiling
importstreamlitasst
fromstreamlit_pandas_profilingimportst_profile_report
frompandas_profilingimportProfileReport
df=pd.read_csv("cropsdata.csv",na_values=['='])
profile=ProfileReport(df,
title="AgricultureData",
dataset={
"description":"Thisprofilingreportwasgeneratedfor數(shù)據(jù)STUDIO",
"copyright_holder":"數(shù)據(jù)STUDIO",
"copyright_year":"2021",
"url":"https://t.1yb.co/HqGX",
},
variables={
"descriptions":{
"State_Name":"州名",
"District_Name":"區(qū)名",
"Crop_Year":"播種的年份",
"Season":"作物年",
"Crop":"播種的是哪種作物?",
"Area":"作物分配了多少面積?",
"Production":"產(chǎn)量多少",
}}
)
st.title("PandasProfilinginStreamlit!")
st.write(df)
st_profile_report(profile)
第 3 步:運行 Streamlit 應用程序
在終端中,輸入:
streamlitrun.py
寫在最后
在本文中,我們一起了解了一個新工具“Pandas Profiling”
——從 Pandas DataFrame 生成報告的一站式解決方案。我們探索了此工具的所有功能、不同部分及其內容。然后我們繼續(xù)保存生成的報告,稍后,我們查看了該庫的一些高級用例,最后集成了Streamlit
應用程序,使報告更具前景和互動性。
參考審核編輯:郭婷
-
數(shù)據(jù)庫
+關注
關注
7文章
3842瀏覽量
64574 -
函數(shù)
+關注
關注
3文章
4344瀏覽量
62861
原文標題:Pandas profiling 生成報告并部署的一站式解決方案
文章出處:【微信號:DBDevs,微信公眾號:數(shù)據(jù)分析與開發(fā)】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論