偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

一行Python命令搞定前期數(shù)據(jù)探索性分析

開發(fā) 后端
每當我們手上出現(xiàn)一份新的數(shù)據(jù)時,我們都需要事先通過人為地觀察、字段釋義等方式預先對數(shù)據(jù)進行熟悉與理解。在清洗、處理完數(shù)據(jù)之后才會開始真正的 EDA 過程。

 [[338350]]

對于每個從事和數(shù)據(jù)科學有關(guān)的人來說,前期的數(shù)據(jù)清洗和探索一定是個花費時間的工作。毫不夸張的說,80%的時間我們都花在了前期的數(shù)據(jù)工作中,包括清洗、處理、EDA(Exploratory Data Analysis,探索性數(shù)據(jù)分析)等。前期的工作不僅關(guān)乎數(shù)據(jù)的質(zhì)量,也關(guān)乎最終模型預測效果的好壞。

每當我們手上出現(xiàn)一份新的數(shù)據(jù)時,我們都需要事先通過人為地觀察、字段釋義等方式預先對數(shù)據(jù)進行熟悉與理解。在清洗、處理完數(shù)據(jù)之后才會開始真正的 EDA 過程。

這個過程最通用的操作無非就是對現(xiàn)有的數(shù)據(jù)做基本性的統(tǒng)計、描述,包括平均值、方差、最大值與最小值、頻數(shù)、分位數(shù)、分布等。實際上往往都是比較固定且機械的。

在 R 語言中 skimr 包提供了豐富的數(shù)據(jù)探索性統(tǒng)計信息,比 Pandas 中的 describe() 基本統(tǒng)計信息更為豐富一些。

01-skmir

但在 Python 社區(qū)中,我們同樣也可以實現(xiàn) skmir 的功能,甚至比 skmir 有過之而無不及。那就是使用 pandas-profiling 庫來幫助我們搞定前期的數(shù)據(jù)探索工作。

快速使用

通過 pip install pandas-profiling 之后我們就可以直接導入并使用了。我們只需要通過其一行核心代碼 ProfileReport(df, **kwargs) 即可實現(xiàn): 

  1. import pandas as pd  
  2. import seaborn as sns  
  3. from pandas_profiling import ProfileReport  
  4. titanic = sns.load_dataset("Titanic")  
  5. ProfileReport(titanic, title = "The EDA of Titanic Dataset"

如果我們是在 Jupyter Notebook 中使用,則會在 Jupyter Notebook 中渲染最后直接輸出到單元格中。

02-profile

pandas-profiling 庫也擴展了 DataFrame 對象方法,這意味著我們也可以通過像調(diào)用方法一樣使用 DataFrame.profile_report() 來實現(xiàn)和上述一樣的效果。

無論使用哪種方式,最后都是生成一個 ProfileReport 對象;如果要進一步貼合 Jupyter Notebook,可以直接調(diào)用 to_widgets() 和 to_notebook_iframe() 來分別生成掛架或?qū)?yīng)的組件,在展示效果上會更加美觀,而不是在輸出欄進行展示。

03-widgets

如果不在 Jupyter Notebook 中直接使用,而是使用其他 IDE,那么我們可以通過 to_file() 方法來直接將報告輸出,需要注意的是最后保存的文件名需要加上擴展名 .html。

另外,Pandas-profiling 還和多個框架、云上平臺等進行了集成,能夠讓我們方便的進行調(diào)用,詳情見官網(wǎng)(https://pandas-profiling.github.io/pandas-profiling/docs/master/rtd/pages/integrations.html)。

進一步定制報告信息

雖然生成的探索性報告基本上已經(jīng)能滿足我們了解數(shù)據(jù)的簡單需求,但是當中輸出的信息也有些不足或是冗余。好在 pandas-profiling 也給我們提供了自己定制的可能。這些定制的配置最終會寫入到 yaml 文件中。

在官方文檔中列出了幾個我們能夠進一步調(diào)整的部分,分別對應(yīng)了報告 Tab 欄的各部分標簽:

  •  vars:主要用于調(diào)整數(shù)據(jù)中字段或變量在報告中的呈現(xiàn)的統(tǒng)計指標
  •  missing_diagrams:主要涉及到關(guān)于缺失值字段的可視化展示
  •  correlations:顧名思義即調(diào)整有關(guān)各字段或變量之間相關(guān)關(guān)系的部分,包括是否計算相關(guān)系數(shù)、以及相關(guān)的閾值等
  •  interactions:主要涉及兩兩字段或變量之前的相關(guān)關(guān)系圖呈現(xiàn)
  •  samples:分別對應(yīng)了 Pandas 中 head() 和 tail() 方法,即預覽前后多少條數(shù)據(jù)

這些部分還有許多可以指定的參數(shù),感興趣的朋友可以直接參考官方文檔(https://pandas-profiling.github.io/pandas-profiling/docs/master/rtd/pages/advanced_usage.html),本文就不多加贅述了。

于是我們可以直接在代碼中手動寫入并進行調(diào)整,就像這樣: 

  1. profile_config = {  
  2.     "progress_bar": False,   
  3.     "sort": "ascending",  
  4.     "vars": {  
  5.         "num": {"chi_squared_threshold": 0.95},  
  6.         "cat": {"n_obs": 10}  
  7.     },   
  8.     "missing_diagrams": {  
  9.         'heatmap': False,  
  10.         'dendrogram': False,  
  11.     }  
  12.  
  13. profile = titanic.profile_report(**profile_config)  
  14. profile.to_file("titanic-EDA-report.html") 

將所有配置的信息寫在一個字典變量中,再通過 **variable 的形式將鍵值對進行解包使其能夠根據(jù)鍵來對應(yīng)到相應(yīng)的參數(shù)中。

除了代碼中的配置寫法外,如果你稍微了解一點 yaml 配置文件的寫法,那么我們也無需在代碼中逐個寫入,而是可以通過在 yaml 文件中修改。修改的不僅官方文檔中所列出的配置選項,還能修改未列出的參數(shù)。由于配置文件過長,這里我只放出基于官方默認配置文件 config_default.yaml 自己做出修改的部分: 

  1. # profile_config.yml  
  2. vars:  
  3.     num:  
  4.         quantiles:  
  5.               - 0.25  
  6.               - 0.5  
  7.               - 0.75  
  8.         skewness_threshold: 10  
  9.         low_categorical_threshold: 5  
  10.         chi_squared_threshold: 0.95  
  11.     cat:  
  12.         length: True  
  13.         unicode: True  
  14.         cardinality_threshold: 50  
  15.         n_obs: 5  
  16.         chi_squared_threshold: 0.95  
  17.         coerce_str_to_date: False  
  18.     bool:  
  19.         n_obs: 3 
  20.      file:  
  21.         active: False  
  22.     image:  
  23.         active: False  
  24.         exif: True  
  25.         hash: True  
  26. sort: "desceding" 

修改完 yaml 文件之后,我們只需在生成報告時通過 config_file 參數(shù)指定配置文件所在的路徑即可,就像這樣: 

  1. df.profile_report(config_file = "你的文件路徑.yml"

通過將配置文件與核心代碼相分離,以提高我們代碼的簡潔性與可讀性。

最后

pandas-profiling 庫為我們提供了一種方便、快捷的數(shù)據(jù)探索方式,提供了比基本統(tǒng)計信息更為豐富的一些信息(如缺失值相關(guān)圖、相關(guān)關(guān)系圖等),能夠為我們前期的數(shù)據(jù)探索工作節(jié)省出大量的時間。

不過由于 pandas-profiling 生成的報告維度相對來說比較固定和模板化,所以對于想讓報告更加豐富的朋友來說你可能需要自己再去做一些額外的工作了;同時,需要注意的是,pandas-profiling 比較適合在中小數(shù)據(jù)集中使用。隨著數(shù)據(jù)量的增加,報告渲染的速度會大幅度變慢且生成報告會耗時更多。

如果你仍有對大數(shù)據(jù)集進行 EDA 的需要,那么像官方文檔說的那樣你最好是通過抽樣或者采樣的方式來在不影響數(shù)據(jù)分布的情況下減少樣本量。官方也有表示會在以后的版本中使用 modin、spark 和 dask 等高性能的庫或框架作為可擴展的后端,到那時也許生成大數(shù)據(jù)集的 EDA 報告時可能就不是問題了。 

 

責任編輯:龐桂玉 來源: Python中文社區(qū)
相關(guān)推薦

2020-05-13 11:32:28

數(shù)據(jù)分析數(shù)值分析

2020-10-28 18:28:12

Pandas數(shù)據(jù)分析GUI

2022-11-11 11:35:14

2012-09-04 09:20:26

測試軟件測試探索測試

2024-07-30 12:10:22

2024-06-12 11:57:51

2023-12-22 09:14:48

EDA數(shù)據(jù)分析探索性數(shù)據(jù)分析

2024-05-21 13:33:49

2016-10-11 15:32:26

探索性大數(shù)據(jù)

2022-02-24 10:40:14

Python代碼

2023-05-11 13:39:39

EDA數(shù)據(jù)分析

2023-11-30 07:23:53

數(shù)據(jù)分析EDA

2017-04-25 18:35:47

硅谷數(shù)據(jù)科學家數(shù)據(jù)分析

2021-04-28 16:00:55

數(shù)據(jù)分析人工智能機器學習

2024-10-23 09:00:00

數(shù)據(jù)分析Pandas

2023-11-10 09:41:44

Python代碼

2016-08-27 16:16:40

大數(shù)據(jù)

2022-07-12 09:02:36

探索性測試測試

2022-05-13 09:36:06

Python水印命令

2019-01-28 17:42:33

Python數(shù)據(jù)預處理數(shù)據(jù)標準化
點贊
收藏

51CTO技術(shù)棧公眾號