欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Python探索性數據分析,這樣才容易掌握

系統 1726 0
原文鏈接: https://www.tinymind.cn/competitions/48

Python探索性數據分析,這樣才容易掌握_第1張圖片

作者 |?Riti Dass

譯者?|?LJY

整理?|?Lemonbit

譯文來源 | Python數據之道(ID:PythonDataLab)

導語: 理解你的數據的最佳方法是花時間去研究它。

Python探索性數據分析教程

介紹

每個數據科學家都必須掌握的最重要的技能之一是正確研究數據的能力。徹底的探索性數據分析 (EDA, Exploratory Data Analysis) 是必要的,這是為了確保收集數據和執行分析的完整性。

本教程使用的示例是對歷史上 SAT 和 ACT 數據的探索性分析,以比較不同州 SAT 和 ACT 考試的參與度和表現。在本教程的最后,我們將獲得關于美國標準化測試的潛在問題的數據驅動洞察力。本教程的重點是演示探索性數據分析過程,并為希望練習使用數據的 Python 程序員提供一個示例。

為了這個分析,我在 Jupyter 中檢查和操作了包含 2017 年和 2018 年 SAT 和 ACT 數據的 CSV 數據文件。通過構造良好的可視化和描述性統計來研究數據,是了解你正在處理的數據并根據你的觀察制定假設的絕佳方法。

探索性數據分析(EDA)目標

1)快速描述一份數據集:行/列數、數據丟失情況、數據的類型、數據預覽。

2)清除臟數據:處理丟失的數據、無效的數據類型和不正確的值。

3)可視化數據分布:條形圖,直方圖,箱型圖等。

4)計算并可視化展示變量之間的相關性(關系):熱圖 (heatmap)。


數據驅動方法的好處

標準化測試程序多年來一直是一個有爭議的話題, 已經為眾人所知。通過初步研究,我很快發現了 SAT 和 ACT 考試中一些明顯的問題。

例如,有些州只要求學生參加 SAT,有些州只要求學生參加 ACT,有些州要求學生兩種考試都要參加,還有些州要求選擇性標準化考試,或者每個學生都必須參加他們選擇的一種標準化考試。

每個州制定的標準化考試預期之間的這種差異,應該被視為州與州之間考試記錄存在偏差的一個重要來源,比如參與率和平均成績。研究可能是重要的,但采取數據驅動的方法來支持基于定性研究的主張(假設)是必要的。采用數據驅動的方法可以驗證以前提出的斷言/假設,并基于對數據的徹底檢查和操作開發新的見解。

入門

請從 GitHub 鏈接:

https://github.com/cbratkovics/satactanalysis

下載代碼或數據,以方便跟隨教程:

使用 Python 研究數據的第一步是確保導入了正確的庫。

在本文中,我們需要的庫是 NumPy,Pandass,Matplotlib 和 Seaborn。導入庫時,可以為其分配別名,以減少使用每個庫屬性所需的鍵入量。下面的代碼顯示了必要的 import 語句:

Python探索性數據分析,這樣才容易掌握_第2張圖片

使用 Pandas 庫,你可以將數據文件加載到容器對象(稱為數據幀, dataframe)中。顧名思義,這種類型的容器是一個框架,它使用 Pandas 方法 pd.read_csv()?讀入的數據,該方法是特定于 CSV 文件的。將每個 CSV 文件轉換為 Pandas 數據幀對象如下圖所示:

640?wx_fmt=png

檢查數據 & 清理臟數據

在進行探索性分析時,了解您所研究的數據是很重要的。幸運的是,數據幀對象有許多有用的屬性,這使得這很容易。當基于多個數據集之間比較數據時,標準做法是使用(.shape)屬性檢查每個數據幀中的行數和列數。如圖所示:

Python探索性數據分析,這樣才容易掌握_第3張圖片

注意:左邊是行數,右邊是列數;(行、列)。

我們這份數據的第一個問題是 ACT 2017 和 ACT 2018 數據集的維度不一致。讓我們使用( .head()?)來更好地查看數據,通過 Pandas 庫展示了每一列的前五行,前五個標簽值。我將以 2018 年 ACT 數據為例:

Python探索性數據分析,這樣才容易掌握_第4張圖片

在預覽了其他數據的前五行之后,我們推斷可能存在一個問題,即各個州的數據集是如何存入的。由于美國有 51 個州,ACT 2017 和 ACT 2018 的“州”欄中很可能有錯誤或重復的值。然而,在處理數據時,我們不能確定這種推斷。我們需要檢查有關的數據來確定確切的問題。

首先,讓我們使用?.value_counts()?方法檢查 ACT 2018 數據中 “State” 列的值,該方法按降序顯示數據幀中每個特定值出現的次數:

Python探索性數據分析,這樣才容易掌握_第5張圖片

請注意:“Maine” 在 2018 年 ACT 數據中出現了兩次。下一步是確定這些值是重復的還是數據輸入不正確引起的。我們將使用一種脫敏技術來實現這一點,它允許我們檢查滿足指定條件的數據幀中的行。例如,讓我們脫敏來查看 2018 ACT 數據中所有 “State” 值為 “Maine” 的行:

Python探索性數據分析,這樣才容易掌握_第6張圖片

現在,已將亂碼確認為重復條目。因此,我們可以使用 .drop()?方法,簡單地刪除值,使用 .reset_index()*?重置數據幀索引,來解決這個問題:

Python探索性數據分析,這樣才容易掌握_第7張圖片

現在我們已經解決了 ACT 數據幀之間行數不一致的問題,然而 SAT 和 ACT 數據幀之間仍然存在行數不一致的問題( ACT 52 行,SAT 51 行)。為了比較州與州之間 SAT 和 ACT 數據,我們需要確保每個州在每個數據幀中都被平等地表示。這是一次創新的機會來考慮如何在數據幀之間檢索 “State” 列值、比較這些值并顯示結果。我的方法如下圖展示:

Python探索性數據分析,這樣才容易掌握_第8張圖片

函數 compare_values()?從兩個不同的數據幀中獲取一列,臨時存儲這些值,并顯示僅出現在其中一個數據集中的任何值。讓我們來看看在比較 2017 年和 2018 年 SAT/ACT “State” 列值時,它是如何工作的:

Python探索性數據分析,這樣才容易掌握_第9張圖片

好吧!現在我們知道,需要刪除 ACT 數據集中 “State” 列中的 “National” 值。這可以使用與我們在 2018 年 ACT 數據集 定位和刪除重復的 ‘Maine’ 值相同的代碼來完成:

Python探索性數據分析,這樣才容易掌握_第10張圖片

然而,在 2018 年 SAT 和 ACT 數據中仍存在關于 ‘Washington, D.C.’ 和 ‘District of Columbia’ 另一種爭議。我們需要從四個數據集中確定能代表華盛頓特區/哥倫比亞特區的一貫值。你所做的選擇在這兩個選項中都不重要,但是最好選擇在數據集中出現率最高的名稱。由于 2017 年 SAT 和 2017 年 ACT “州”數據的唯一區別在于“國家”值,我們可以假設'華盛頓特區'和'哥倫比亞特區'在兩個數據中的'州'列中是一致的。讓我們使用脫敏技術來檢查 ‘Washington, D.C.’ 和 ‘District of Columbia’ 哪些值出現在 ACT 2017 的‘State’ 一列中:

Python探索性數據分析,這樣才容易掌握_第11張圖片

現在我們有理由詳細在 ACT 2018 數據集中使用 ‘District of Columbia’ 取代 ‘Washington, D.C.’ 是正確的,通過使用 Pandas 庫中的 .replace()?函數,我們就可以做到這一點。然后,我們可以使用 compare_values 函數確認我們的更改是否成功:

Python探索性數據分析,這樣才容易掌握_第12張圖片

成功了!各個州的值現在在每個數據集是一致的。現在,我們可以解決 ACT 數據集中各個列不一致的問題。讓我們使用 .columns 屬性比較每個數據幀之間的列名:

Python探索性數據分析,這樣才容易掌握_第13張圖片

請注意,在顯示 print()的輸出后,添加 “\ n” 表達式會打印一個新行。

由于這次分析的目的是比較 SAT 和 ACT 數據,我們越能相似地表示每個數據集的值,我們的分析就越有幫助。

因此,我將在每個數據幀中保留的唯一列是 “State”、“Participation”、“Total” (僅SAT) 和 “Composite” (僅ACT)。

請注意,如果你的分析目標是不同的,比如比較 2017 年和 2018 年 SAT 的績效,那么根據每個表現類別 (e.g. Math) 保存特定的數據將是至關重要的。為了與當前的任務保持一致,我們可以使用 .drop()?方法刪除多余的列,如下所示:

Python探索性數據分析,這樣才容易掌握_第14張圖片

現在所有的數據都具有相同的維度! 不幸的是,仍有許多工作要做。讓我們看看是否有數據丟失,并查看所有數據的數據類型:

Python探索性數據分析,這樣才容易掌握_第15張圖片

使用?.isnull().sum()?檢查丟失的數據

Python探索性數據分析,這樣才容易掌握_第16張圖片

用?.dtypes?檢查數據類型

好消息是數據中不存在不存在的值。壞消息是存在數據類型的錯誤,特別是每個數據幀中的“參與”列都是對象類型,這意味著它被認為是一個字符串。這是有問題的,因為在研究數據時要觀察許多有用的可視化,需要數字類型變量才能發揮作用,比如熱力圖、箱形圖和直方圖。

同樣的問題也出現在兩個 ACT 數據集的 ‘Composite’ 列中。讓我們來看看 2018 年 SAT 和 ACT 數據的前五行:

Python探索性數據分析,這樣才容易掌握_第17張圖片

2018 年 SAT 數據的前 5 行

Python探索性數據分析,這樣才容易掌握_第18張圖片

2018 ACT 前 5 行數據

你可以看到 “Composite” 和 “Participation” 應該是 float 類型。好的做法是保持要比較的數值數據類型的一致性,因此將 “Total” 轉換為 float 類型也是可以接受的,而不會損害數據的完整性(integer = 1166, float = 1166.0)。

這種類型轉換的第一步是從每個 ’Participation’ 列中刪除 “%” 字符,以便將它們轉換為浮點數。下一步將把除每個數據幀中的 “State” 列之外的所有數據轉換為浮點數。這可能是乏味的,這給了我們另一個創建函數來節省時間的好機會!我的解決方案如下函數所示:

Python探索性數據分析,這樣才容易掌握_第19張圖片

是時候讓這些功能發揮作用了。首先讓我們使用 fix_participation()?函數:

640?wx_fmt=png

現在我們可以使用?convert_to_float()?函數轉換所有列的數據類型:

Python探索性數據分析,這樣才容易掌握_第20張圖片

但是等等!運行 convert_to_float()?函數應該會拋出一個錯誤。錯誤消息是否有用取決于你使用的 IDE。在 Jupyter Notebook 中,錯誤將清楚地指引你到 ACT 2017 數據集中的 “Composite” 列。要更仔細地查看這些值,可以使用 .value_counts()?函數:

Python探索性數據分析,這樣才容易掌握_第21張圖片

看起來我們的罪魁禍首是數據中的一個 “x” 字符,很可能是在將數據輸入到原始文件時輸入錯誤造成的。要刪除它,可以在 .apply()?方法中使用 .strip()?方法,如下所示:

640?wx_fmt=png

太棒了!現在再試著運行這段代碼,所有的數據都是正確的類型:

Python探索性數據分析,這樣才容易掌握_第22張圖片

在開始可視化數據之前的最后一步是將數據合并到單個數據中。為了實現這一點,我們需要重命名每個數據中的列,以描述它們各自代表的內容。

例如,2018 年 SAT ‘Participation’ 一欄的一個好名字應該是 “satparticipation17”。當數據合并時,這個名稱更具描述性。

另一個注意事項是下劃線表示法,以消除訪問值時繁瑣的間距錯誤,以及用于加速鍵入的小寫約定。數據的命名約定由開發人員決定,但是許多人認為這是一種很好的實踐。你可以這樣重命名列:

Python探索性數據分析,這樣才容易掌握_第23張圖片

為了合并數據而沒有錯誤,我們需要對齊 “state” 列的索引,以便在數據幀之間保持一致。我們通過對每個數據集中的 “state” 列進行排序,然后從 0 開始重置索引值:

Python探索性數據分析,這樣才容易掌握_第24張圖片

最后,我們可以合并數據。我沒有一次合并所有四個數據幀,而是按年一次合并兩個數據幀,并確認每次合并都沒有出現錯誤。下面是每次合并的代碼:

Python探索性數據分析,這樣才容易掌握_第25張圖片

2017 SAT 與 ACT 合并的數據集

Python探索性數據分析,這樣才容易掌握_第26張圖片

2018 年 SAT 和 ACT 合并數據框架。

640?wx_fmt=png

最終合并數據集。

一旦你清理了你的數據,保存它是一個好主意,這樣你就不用再去整理它了。使用 Pandas 中的 pd.to_csv()?方法:

640?wx_fmt=png

設置 index = False 保存沒有索引值的數據。

是時候可視化呈現數據了!現在,我們可以使用 Matplotlib 和 Seaborn 更仔細地查看我們已經清洗和組合的數據。在研究直方圖和箱形圖時,我將著重于可視化參與率的分布。在研究熱圖時,將考慮所有數據之間的關系。

可視化數據分布- Seaborn 直方圖

Python探索性數據分析,這樣才容易掌握_第27張圖片

直方圖表示數值數據值出現在數據集中指定范圍內的頻率(例如,數據中有多少值出現在 40%-50% 的范圍內)。從直方圖中我們可以看出,2017 年和 2018 年,ACT 的參與率在 90%-100% 之間的州更多。相反,2017 年和 2018 年 SAT 考試的參與率為 0 -10% 的州更多。我們可以推斷,90%-100% ACT 參與率的州出現頻率較高,可能是由于需要采取 ACT 的某些規定引起的。

可視化數據分布- Matplotlib 框圖

Python探索性數據分析,這樣才容易掌握_第28張圖片

箱形圖表示數據的擴展,包括最小、最大和四分位數范圍(IQR)。四分位數范圍由第一分位數、中位數和第三分位數組成。從上面的方框圖可以看出,2017 年到 2018 年 SAT 的整體參與率有所上升。

我們可以注意到的另一件事是 2017 年到 2018 年 ACT 參與率的一致性。這就提出了一個問題,為什么 SAT 的參與率總體上有所上升,盡管 ACT 的參與率并沒有顯著變化。

計算并可視化相關性-Seaborn Heat Map

Python探索性數據分析,這樣才容易掌握_第29張圖片

更強的關系由熱圖中的值表示,更接近于負值或正值。較弱的關系由接近于零的值表示。正相關變量,即零和正相關的值,表示一個變量隨著另一個變量的增加而增加。負相關變量,負1和0之間的相關性值表示一個變量隨著另一個變量的增加而減少。

需要進一步研究的關系較強的變量包括 2017 年 SAT 參與情況和 2018 年 SAT 參與情況、2017 年 ACT 綜合得分和 2017 年 ACT 參與情況、2018 年 ACT 參與情況和 2018 年 SAT 參與情況。還有很多關系需要進一步研究,但這些都是很好的起點,可以指導研究為什么這些關系會存在。

總結

徹底的探索性數據分析可確保你的數據清晰,可用,一致且直觀可視化。請記住,沒有所謂的干凈數據,因此在開始使用數據之前探索數據是在數據分析過程中添加完整性和價值的好方法。通過對數據的深入研究來指導外部研究,你將能夠有效地獲得可證明的見解。

文章來源:

https://towardsdatascience.com/exploratory-data-analysis-tutorial-in-python-15602b417445

(*本文為Python大本營轉載文章,轉載請聯系原作者)

精彩推薦

由易觀攜手CSDN聯合主辦的第三屆易觀算法大賽正在火熱進行中!冠軍獎3萬元,每人最多邀請5位用戶組隊參賽。 本次比賽主要預測訪問平臺的相關事件的PV,UV流量 (包括Web端,移動端等),大賽將會提供相應事件的流量數據,以及對應時間段內的所有事件明細表和用戶屬性表等數據,進行模型訓練,并用訓練好的模型預測規定日期范圍內的事件流量。

Python探索性數據分析,這樣才容易掌握_第30張圖片

推薦閱讀

  • Python內存分配時的小秘密

  • 吐血整理! 140種Python標準庫、第三方庫和外部工具都有了

  • 如何用爬蟲技術幫助孩子秒到心儀的幼兒園(基礎篇)

  • Python傳奇:30年崛起之路

  • 干貨 | Python后臺開發的高并發場景優化解決方案

  • 2019年最新華為、BAT、美團、頭條、滴滴面試題目及答案匯總

  • 阿里巴巴楊群:高并發場景下Python的性能挑戰

640?wx_fmt=png

你點的每個“在看”,我都認真當成了喜歡


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 欧美一级网址 | 超碰一区 | 亚洲一区二区三区在线免费观看 | 手机成人免费视频 | 亚洲午夜成激人情在线影院 | 日日骚 | 日韩一区二区三区在线播放 | 久久精品欧美一区二区三区不卡 | 三级色视频| 在线色网站 | 欧美日韩视频 | 久久综合影院 | 日韩av电影免费看 | 久久精品国产一区二区三区不卡 | 欧美一区不卡 | 国产扩阴视频 | 久久999 | 日本精品久久久久护士 | 99精品视频在线观看re | 亚洲经典激情春色另类 | 久久久久国产成人精品亚洲午夜 | 4hu网站| 久久国产精品一区二区三区 | 色综合久久天天综合网 | 欧美 亚洲 另类 热图 | 午夜神器18以下不能进免费观看 | 国产超级乱淫视频播放 | 欧美二区三区 | 国产成人福利在线视老湿机 | 国产精品资源在线观看网站 | 日韩欧美片 | 那里有毛片看 | 国产精品美女久久久久aⅴ国产馆 | 一级毛片免费在线播放 | 亚洲欧洲av在线 | 无码又黄又爽又舒服的A片 综合久久网 | 九九久久精品这里久久网 | 日韩乱轮 | 唐人社电亚洲一区二区三区 | 亚洲成人午夜在线 | 亚洲精品久久久一区二区三区 |