乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Python探索性數(shù)據(jù)分析,這樣才容易掌握

       風(fēng)聲之家 2019-09-06
      作者 | Riti Dass

      譯者 | LJY
      整理 | Lemonbit
      譯文來源 | Python數(shù)據(jù)之道(ID:PythonDataLab)

      導(dǎo)語:理解你的數(shù)據(jù)的最佳方法是花時(shí)間去研究它。

      Python探索性數(shù)據(jù)分析教程


      介紹

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

      本教程使用的示例是對(duì)歷史上 SAT 和 ACT 數(shù)據(jù)的探索性分析,以比較不同州 SAT 和 ACT 考試的參與度和表現(xiàn)。在本教程的最后,我們將獲得關(guān)于美國(guó)標(biāo)準(zhǔn)化測(cè)試的潛在問題的數(shù)據(jù)驅(qū)動(dòng)洞察力。本教程的重點(diǎn)是演示探索性數(shù)據(jù)分析過程,并為希望練習(xí)使用數(shù)據(jù)的 Python 程序員提供一個(gè)示例。

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

      探索性數(shù)據(jù)分析(EDA)目標(biāo)

      1)快速描述一份數(shù)據(jù)集:行/列數(shù)、數(shù)據(jù)丟失情況、數(shù)據(jù)的類型、數(shù)據(jù)預(yù)覽。
      2)清除臟數(shù)據(jù):處理丟失的數(shù)據(jù)、無效的數(shù)據(jù)類型和不正確的值。
      3)可視化數(shù)據(jù)分布:條形圖,直方圖,箱型圖等。
      4)計(jì)算并可視化展示變量之間的相關(guān)性(關(guān)系):熱圖 (heatmap)。


      數(shù)據(jù)驅(qū)動(dòng)方法的好處

      標(biāo)準(zhǔn)化測(cè)試程序多年來一直是一個(gè)有爭(zhēng)議的話題, 已經(jīng)為眾人所知。通過初步研究,我很快發(fā)現(xiàn)了 SAT 和 ACT 考試中一些明顯的問題。

      例如,有些州只要求學(xué)生參加 SAT,有些州只要求學(xué)生參加 ACT,有些州要求學(xué)生兩種考試都要參加,還有些州要求選擇性標(biāo)準(zhǔn)化考試,或者每個(gè)學(xué)生都必須參加他們選擇的一種標(biāo)準(zhǔn)化考試。

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

      入門

      請(qǐng)從 GitHub 鏈接:
      https://github.com/cbratkovics/satactanalysis

      下載代碼或數(shù)據(jù),以方便跟隨教程:
      使用 Python 研究數(shù)據(jù)的第一步是確保導(dǎo)入了正確的庫(kù)。

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

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

      檢查數(shù)據(jù) & 清理臟數(shù)據(jù)

      在進(jìn)行探索性分析時(shí),了解您所研究的數(shù)據(jù)是很重要的。幸運(yùn)的是,數(shù)據(jù)幀對(duì)象有許多有用的屬性,這使得這很容易。當(dāng)基于多個(gè)數(shù)據(jù)集之間比較數(shù)據(jù)時(shí),標(biāo)準(zhǔn)做法是使用(.shape)屬性檢查每個(gè)數(shù)據(jù)幀中的行數(shù)和列數(shù)。如圖所示:

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

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

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

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

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

      現(xiàn)在,已將亂碼確認(rèn)為重復(fù)條目。因此,我們可以使用 .drop() 方法,簡(jiǎn)單地刪除值,使用 .reset_index()* 重置數(shù)據(jù)幀索引,來解決這個(gè)問題:

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

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

      好吧!現(xiàn)在我們知道,需要?jiǎng)h除 ACT 數(shù)據(jù)集中 “State” 列中的 “National” 值。這可以使用與我們?cè)?2018 年 ACT 數(shù)據(jù)集 定位和刪除重復(fù)的 ‘Maine’ 值相同的代碼來完成:

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

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

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

      請(qǐng)注意,在顯示 print()的輸出后,添加 “\ n” 表達(dá)式會(huì)打印一個(gè)新行。

      由于這次分析的目的是比較 SAT 和 ACT 數(shù)據(jù),我們?cè)侥芟嗨频乇硎久總€(gè)數(shù)據(jù)集的值,我們的分析就越有幫助。

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

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

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

      使用 .isnull().sum() 檢查丟失的數(shù)據(jù)

      用 .dtypes 檢查數(shù)據(jù)類型

      好消息是數(shù)據(jù)中不存在不存在的值。壞消息是存在數(shù)據(jù)類型的錯(cuò)誤,特別是每個(gè)數(shù)據(jù)幀中的“參與”列都是對(duì)象類型,這意味著它被認(rèn)為是一個(gè)字符串。這是有問題的,因?yàn)樵谘芯繑?shù)據(jù)時(shí)要觀察許多有用的可視化,需要數(shù)字類型變量才能發(fā)揮作用,比如熱力圖、箱形圖和直方圖。

      同樣的問題也出現(xiàn)在兩個(gè) ACT 數(shù)據(jù)集的 ‘Composite’ 列中。讓我們來看看 2018 年 SAT 和 ACT 數(shù)據(jù)的前五行:

      2018 年 SAT 數(shù)據(jù)的前 5 行

      2018 ACT 前 5 行數(shù)據(jù)

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

      這種類型轉(zhuǎn)換的第一步是從每個(gè) ’Participation’ 列中刪除 “%” 字符,以便將它們轉(zhuǎn)換為浮點(diǎn)數(shù)。下一步將把除每個(gè)數(shù)據(jù)幀中的 “State” 列之外的所有數(shù)據(jù)轉(zhuǎn)換為浮點(diǎn)數(shù)。這可能是乏味的,這給了我們另一個(gè)創(chuàng)建函數(shù)來節(jié)省時(shí)間的好機(jī)會(huì)!我的解決方案如下函數(shù)所示:

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

      現(xiàn)在我們可以使用 convert_to_float() 函數(shù)轉(zhuǎn)換所有列的數(shù)據(jù)類型:

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

      看起來我們的罪魁禍?zhǔn)资菙?shù)據(jù)中的一個(gè) “x” 字符,很可能是在將數(shù)據(jù)輸入到原始文件時(shí)輸入錯(cuò)誤造成的。要?jiǎng)h除它,可以在 .apply() 方法中使用 .strip() 方法,如下所示:

      太棒了!現(xiàn)在再試著運(yùn)行這段代碼,所有的數(shù)據(jù)都是正確的類型:

      在開始可視化數(shù)據(jù)之前的最后一步是將數(shù)據(jù)合并到單個(gè)數(shù)據(jù)中。為了實(shí)現(xiàn)這一點(diǎn),我們需要重命名每個(gè)數(shù)據(jù)中的列,以描述它們各自代表的內(nèi)容。

      例如,2018 年 SAT ‘Participation’ 一欄的一個(gè)好名字應(yīng)該是 “satparticipation17”。當(dāng)數(shù)據(jù)合并時(shí),這個(gè)名稱更具描述性。

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

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

      最后,我們可以合并數(shù)據(jù)。我沒有一次合并所有四個(gè)數(shù)據(jù)幀,而是按年一次合并兩個(gè)數(shù)據(jù)幀,并確認(rèn)每次合并都沒有出現(xiàn)錯(cuò)誤。下面是每次合并的代碼:

      2017 SAT 與 ACT 合并的數(shù)據(jù)集

      2018 年 SAT 和 ACT 合并數(shù)據(jù)框架。

      最終合并數(shù)據(jù)集。

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

      設(shè)置 index = False 保存沒有索引值的數(shù)據(jù)。

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

      可視化數(shù)據(jù)分布- Seaborn 直方圖

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

      可視化數(shù)據(jù)分布- Matplotlib 框圖

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

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

      計(jì)算并可視化相關(guān)性-Seaborn Heat Map

      更強(qiáng)的關(guān)系由熱圖中的值表示,更接近于負(fù)值或正值。較弱的關(guān)系由接近于零的值表示。正相關(guān)變量,即零和正相關(guān)的值,表示一個(gè)變量隨著另一個(gè)變量的增加而增加。負(fù)相關(guān)變量,負(fù)1和0之間的相關(guān)性值表示一個(gè)變量隨著另一個(gè)變量的增加而減少。

      需要進(jìn)一步研究的關(guān)系較強(qiáng)的變量包括 2017 年 SAT 參與情況和 2018 年 SAT 參與情況、2017 年 ACT 綜合得分和 2017 年 ACT 參與情況、2018 年 ACT 參與情況和 2018 年 SAT 參與情況。還有很多關(guān)系需要進(jìn)一步研究,但這些都是很好的起點(diǎn),可以指導(dǎo)研究為什么這些關(guān)系會(huì)存在。

      總結(jié)

      徹底的探索性數(shù)據(jù)分析可確保你的數(shù)據(jù)清晰,可用,一致且直觀可視化。請(qǐng)記住,沒有所謂的干凈數(shù)據(jù),因此在開始使用數(shù)據(jù)之前探索數(shù)據(jù)是在數(shù)據(jù)分析過程中添加完整性和價(jià)值的好方法。通過對(duì)數(shù)據(jù)的深入研究來指導(dǎo)外部研究,你將能夠有效地獲得可證明的見解。
      文章來源:
      https:///exploratory-data-analysis-tutorial-in-python-15602b417445

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多