整合營(yíng)銷(xiāo)服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          用EXCEL像Python一樣優(yōu)雅的抓取網(wǎng)頁(yè)中的信息

          用EXCEL像Python一樣優(yōu)雅的抓取網(wǎng)頁(yè)中的信息

          一篇我說(shuō)到了如何用EXCEL抓取網(wǎng)頁(yè)中的多頁(yè)表格,上一篇鏈接:爬蟲(chóng)何必用Python,用EXCEL爬取網(wǎng)頁(yè)上的多頁(yè)表格,但有些同學(xué)會(huì)說(shuō)我不想抓取表格并且我不想用EXCEL工具欄上來(lái)自網(wǎng)站那種粗暴的點(diǎn)選方式,我就想像python一樣優(yōu)雅的抓取網(wǎng)頁(yè)上的信息怎么辦?答案當(dāng)然是可以的。下面我就教大家如何用EXCEL VBA 抓取網(wǎng)頁(yè)上的信息。

          這次的抓取目標(biāo)就選有道詞典的首頁(yè)吧(我是隨便選的) 鏈接:http://www.youdao.com/ 上的在此輸入要翻譯的單詞或文字 這幾個(gè)字。雖然簡(jiǎn)單,但讀者可自行擴(kuò)展O(∩_∩)O~

          有道首頁(yè)

          1. 在EXCEL VB編輯器中插入模塊,并填寫(xiě)自定義函數(shù)代碼

          VBA編輯器

          2.代碼如下

          Public Function GetHtmlElementByRegex(url As String, reg As String)

          Dim XMLHTTP As Object, html As Object, objResult As Object

          Set XMLHTTP=CreateObject("MSXML2.serverXMLHTTP")

          XMLHTTP.Open "GET", url, False

          XMLHTTP.setRequestHeader "Content-Type", "text/xml"

          XMLHTTP.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0"

          XMLHTTP.send

          Set html=CreateObject("htmlfile")

          html.body.innerHTML=XMLHTTP.responseText

          Set regEx=CreateObject("VBScript.RegExp")

          regEx.Pattern=reg

          regEx.Global=True

          If regEx.Test(XMLHTTP.responseText) Then

          Set matches=regEx.Execute(XMLHTTP.responseText)

          GetHtmlElementByRegex=matches(0).SubMatches(0)

          Exit Function

          End If

          GetHtmlElementByRegex=""

          End Function

          3.在EXCEL單元格中輸入自定義函數(shù)名,函數(shù)的兩個(gè)參數(shù)分別是要抓取的網(wǎng)址和正則表達(dá)式

          自定義函數(shù)

          4.抓取效果

          抓取效果

          5.關(guān)于正則表達(dá)式

          我們可以發(fā)現(xiàn)“在此輸入要翻譯的單詞或文字”字符串前的placeholder=在網(wǎng)頁(yè)中是唯一存在,所以我們只要用(.*?)進(jìn)行替換就可以了placeholder=""(.*?)"">,簡(jiǎn)單吧^_^

          網(wǎng)頁(yè)源代碼

          教程到這就結(jié)束了,有不正確的地方還望大家多多指教^_^

          者:ROGER HUANG

          本文轉(zhuǎn)載自:http://code-love.com/2017/04/30/excel-sql-python/

          本教程的代碼和數(shù)據(jù)可在Github 資源庫(kù)中找到。有關(guān)如何使用 Github 的更多信息,請(qǐng)參閱本指南。

          數(shù)據(jù)從業(yè)者有許多工具可用于分割數(shù)據(jù)。有些人使用 Excel,有些人使用SQL,有些人使用Python。對(duì)于某些任務(wù),使用 Python 的優(yōu)點(diǎn)是顯而易見(jiàn)的。以更快的速度處理更大的數(shù)據(jù)集。使用基于 Python 構(gòu)建的開(kāi)源機(jī)器學(xué)習(xí)庫(kù)。你可以輕松導(dǎo)入和導(dǎo)出不同格式的數(shù)據(jù)。

          由于其多功能性,Python 可以成為任何數(shù)據(jù)分析師工具箱的重要組成部分。但是,這很難開(kāi)始。大多數(shù)數(shù)據(jù)分析師可能熟悉 SQL 或 Excel。本教程是涉及幫助你將技能和技術(shù)從 EXcel 和 SQL 轉(zhuǎn)移到 Python。

          首先,讓我們來(lái)設(shè)置 Python。最簡(jiǎn)單的方法就是使用Jupyter Notebook 和 Anaconda。這個(gè)可視化界面將允許你插入 Python 代碼并立即查看輸出。這也將使你輕松跟隨本教程的其余部分。

          我強(qiáng)烈推薦使用 Anaconda,但這個(gè)初學(xué)者指南也將幫助你安裝Python-- 盡管這將使本教程更加難以接受。

          我們從基礎(chǔ)開(kāi)始:打開(kāi)一個(gè)數(shù)據(jù)集。

          導(dǎo)入數(shù)據(jù)

          你可以導(dǎo)入.sql 數(shù)據(jù)庫(kù)并用 SQL 查詢中處理它們。在Excel中,你可以雙擊一個(gè)文件,然后在電子表格模式下開(kāi)始處理它。在 Python 中,有更多復(fù)雜的特性,得益于能夠處理許多不同類(lèi)型的文件格式和數(shù)據(jù)源的。

          使用一個(gè)數(shù)據(jù)處理庫(kù) Pandas,你可以使用 read 方法導(dǎo)入各種文件格式。,使用這個(gè)方法所能導(dǎo)入完整的文件格式清單是在 Pandas 文檔中。你可以導(dǎo)入從 CSV 和 Excel 文件到 HTML 文件中的所有內(nèi)容!

          使用 Python 的最大優(yōu)點(diǎn)之一是能夠從網(wǎng)絡(luò)的巨大范圍中獲取數(shù)據(jù)的能力,而不是只能訪問(wèn)手動(dòng)下載的文件。在 Python 的requests 庫(kù)可以幫助你分類(lèi)不同的網(wǎng)站,并從它們獲取數(shù)據(jù),而B(niǎo)eautifulSoup 庫(kù)可以幫助你處理和過(guò)濾數(shù)據(jù),那么你精確得到你所需要的。如果你要去這條路線,請(qǐng)小心使用權(quán)問(wèn)題。

          (不用擔(dān)心,如果你想跳過(guò)這個(gè)部分,可以的!原始的 csv 文件在這里,你可以隨意下載,如果你寧愿開(kāi)始這個(gè)練習(xí)而不從網(wǎng)絡(luò)上獲取數(shù)據(jù),或者你可以gitclone 整個(gè)存儲(chǔ)庫(kù)](https://github.com/Rogerh91/codelove-tutorials/tree/master/ExcelSQLto_Python)。)

          在這個(gè)例子中,我們將獲取許多國(guó)家人均 GDP(一個(gè)技術(shù)術(shù)語(yǔ),意思是一個(gè)國(guó)家的人均收入)的維基百科表格,并在 Python 中使用Pandas庫(kù)對(duì)數(shù)據(jù)進(jìn)行排序。

          首先,導(dǎo)入我們需要的庫(kù)。有關(guān) Python 中如何 import 的更多信息,請(qǐng)點(diǎn)擊此處。

          需要 Pandas 庫(kù)處理我們的數(shù)據(jù)。需要numpy庫(kù)來(lái)執(zhí)行數(shù)值的操作和轉(zhuǎn)換。我們需要 requests 庫(kù)來(lái)從網(wǎng)站獲取 HTML 數(shù)據(jù)。需要 BeautifulSoup 來(lái)處理這些數(shù)據(jù)。最后,需要 Python(re)的正則表達(dá)式庫(kù)來(lái)更改在處理數(shù)據(jù)時(shí)將出現(xiàn)的某些字符串。

          在 Python 中,不需要知道很多關(guān)于正則表達(dá)式的知識(shí),但它們是一個(gè)強(qiáng)大的工具,可用于匹配和替換某些字符串或子字符串。如果你想了解更多,請(qǐng)參考以下教程。

          信任這個(gè)網(wǎng)站的一些代碼。

          這是一個(gè)更具技術(shù)性的解釋?zhuān)敿?xì)說(shuō)明如何使用 Python 代碼來(lái)獲取 HTML 表格。

          你可以將上面的代碼復(fù)制粘貼到你自己的 Anaconda 中,如果你用一些 Python 代碼運(yùn)行,可以迭代它!

          下面是代碼的輸出,如果你不修改它,就是所謂的字典。

          你會(huì)注意到逗號(hào)分隔起來(lái)的括號(hào)的 key-value 列表。每個(gè)括號(hào)內(nèi)的列表都代表了我們 dataframe 中的一行,每列都以 key 表示:我們正在處理一個(gè)國(guó)家的排名,人均 GDP(以美元表示)及其名稱(chēng)(用「國(guó)家」)。

          有關(guān)數(shù)據(jù)結(jié)構(gòu),如列表和詞典,如何在 Python 中的運(yùn)行的更多信息,本教程將有所幫助。

          幸運(yùn)的是,為了將數(shù)據(jù)移動(dòng)到 Pandas dataframe 中,我們不需要理解這些數(shù)據(jù),這是將數(shù)據(jù)聚合到 SQL 表或 Excel 電子表格的類(lèi)似方式。使用一行代碼,我們已經(jīng)將這些數(shù)據(jù)分配并保存到 Pandas dataframe 中 - 事實(shí)證明是這種情況,字典是要轉(zhuǎn)換為 dataframe 的完美數(shù)據(jù)格式。

          通過(guò)這個(gè)簡(jiǎn)單的 Python 賦值給變量 gdp,我們現(xiàn)在有了一個(gè) dataframe,可以在我們編寫(xiě) gdp 的時(shí)候打開(kāi)和瀏覽。我們可以為該詞添加 Python 方法,以創(chuàng)建其中的數(shù)據(jù)的策略視圖。作為我們剛剛在 Python 中使用等號(hào)和賦值的一點(diǎn)深入了解,教程很有幫助。

          快速查看數(shù)據(jù)

          現(xiàn)在,如果要快速查看我們所做的工作,我們可以使用 head() 方法,它與 Excel 中的選擇幾行或SQL中的 LIMIT 方法非常相似。輕松地使用它來(lái)快速查看數(shù)據(jù)集,而無(wú)需加載整個(gè)數(shù)據(jù)集!如果要查看特定數(shù)量的行,還可以在 head() 方法中插入行數(shù)。

          我們得到的輸出是人均 GDP 數(shù)據(jù)集的前五行(head 方法的默認(rèn)值),我們可以看到它們整齊地排列成三列以及索引列。請(qǐng)注意,Python 索引從0開(kāi)始,而不是1,這樣,如果要調(diào)用 dataframe 中的第一個(gè)值,則使用0而不是1!你可以通過(guò)在圓括號(hào)內(nèi)添加你選擇的數(shù)字來(lái)更改顯示的行數(shù)。試試看!

          重命名列

          有一件你在 Python 中很快意識(shí)到的事是,具有某些特殊字符(例如$)的名稱(chēng)處理可能變得非常麻煩。我們將要重命名某些列,在 Excel 中,可以通過(guò)單擊列名稱(chēng)并鍵入新名稱(chēng),在SQL中,你可以執(zhí)行 ALTER TABLE 語(yǔ)句或使用 SQL Server 中的 sp_rename。

          在 Pandas 中,這樣做的方式是rename 方法。

          在實(shí)現(xiàn)上述方法時(shí),我們將使用列標(biāo)題 「gdppercapita」 替換列標(biāo)題「US $」。一個(gè)快速的 .head() 方法調(diào)用確認(rèn)已經(jīng)更改。

          刪除列

          有一些數(shù)據(jù)損壞!如果你查看 Rank 列,你會(huì)注意到散亂的隨機(jī)破折號(hào)。這不是很好,由于實(shí)際的數(shù)字順序被破壞,這使得 Rank 列無(wú)用,特別是使用 Pandas 默認(rèn)提供的編號(hào)索引。

          幸運(yùn)的是,使用內(nèi)置的 Python 方法:del,刪除列變得很容易。

          現(xiàn)在,通過(guò)另外調(diào)用 head 方法,我們可以確認(rèn) dataframe 不再包含 rank 列。

          在列中轉(zhuǎn)換數(shù)據(jù)類(lèi)型

          有時(shí),給定的數(shù)據(jù)類(lèi)型很難使用。這個(gè)方便的教程將分解 Python 中不同數(shù)據(jù)類(lèi)型之間的差異,以便你需要復(fù)習(xí)。

          在 Excel 中,你可以右鍵單擊并找到將列數(shù)據(jù)轉(zhuǎn)換為不同類(lèi)型的數(shù)據(jù)的方法。你可以復(fù)制一組由公式呈現(xiàn)的單元格,并將其粘貼為值,你可以使用格式選項(xiàng)快速切換數(shù)字,日期和字符串。

          有時(shí)候,在 Python 中切換一種數(shù)據(jù)類(lèi)型為其他數(shù)據(jù)類(lèi)型并不容易,但當(dāng)然有可能。

          我們首先在 Python 中使用 re 庫(kù)。我們將使用正則表達(dá)式來(lái)替換 gdppercapita 列中的逗號(hào),以便我們可以更容易地使用該列。

          re.sub 方法本質(zhì)上是使用空格替換逗號(hào)。以下教程詳細(xì)介紹了re庫(kù)的各個(gè)方法。

          現(xiàn)在我們已經(jīng)刪除了逗號(hào),我們可以輕易地將列轉(zhuǎn)換為數(shù)字。

          現(xiàn)在我們可以計(jì)算這列的平均值。

          我們可以看到,人均 GDP 的平均值約為13037.27美元,如果這列被判斷為字符串(不能執(zhí)行算術(shù)運(yùn)算),我們就無(wú)法做到這一點(diǎn)。現(xiàn)在,可以對(duì)我們以前不能做的人均 GDP 列進(jìn)行各種計(jì)算,包括通過(guò)不同的值過(guò)濾列,并確定列的百分位數(shù)值。

          選擇/過(guò)濾數(shù)據(jù)

          任何數(shù)據(jù)分析師的基本需求是將大型數(shù)據(jù)集分割成有價(jià)值的結(jié)果。為了做到這一點(diǎn),你必須檢查一部分?jǐn)?shù)據(jù):這對(duì)選擇和過(guò)濾數(shù)據(jù)是非常有幫助的。在 SQL 中,這是通過(guò)混合使用 SELECT 和不同的其他函數(shù)實(shí)現(xiàn)的,而在 Excel 中,可以通過(guò)拖放數(shù)據(jù)和執(zhí)行過(guò)濾器來(lái)實(shí)現(xiàn)。

          你可以使用 Pandas 庫(kù)不同的方法或查詢快速過(guò)濾。

          作為一個(gè)快速的代表,只顯示人均 GDP 高于 5 萬(wàn)美元的國(guó)家。

          這是這樣做到的:

          我們?yōu)橐粋€(gè)新的 dataframe 分配一個(gè)布爾索引的過(guò)濾器,這個(gè)方法基本上就是說(shuō)「創(chuàng)建一個(gè)人均 GDP 超過(guò) 50000 的新 dataframe」。現(xiàn)在我們可以顯示gdp50000。

          有12個(gè)國(guó)家的 GDP 超過(guò) 50000!

          選擇屬于以 s 開(kāi)頭的國(guó)家的行。

          現(xiàn)在可以顯示一個(gè)新 dataframe,其中只包含以 s 開(kāi)頭的國(guó)家。使用 len 方法快速檢查(一個(gè)用于計(jì)算 dataframe 中的行數(shù)的救星!)表示我們有 25 個(gè)國(guó)家符合。

          要是我們想把這兩個(gè)過(guò)濾條件連在一起呢?

          這里是連接過(guò)濾的方法。在多個(gè)過(guò)濾條件之前,你想要了解它的工作原理。你還需要了解 Python 中的基本操作符。為了這個(gè)練習(xí)的目的,你只需要知道「&」代表 AND,而「|」代表 Python 中的 OR。然而,通過(guò)更深入地了解所有基礎(chǔ)運(yùn)算符,你可以用各種條件輕松地處理的數(shù)據(jù)。

          讓我們繼續(xù)工作,并在過(guò)濾選擇以「S」開(kāi)頭且有大于 50,000 人均 GDP 的國(guó)家。

          現(xiàn)在過(guò)濾以「S」開(kāi)頭 或人均 GDP 超過(guò) 50000 的國(guó)家。

          我們正在努力處理 Pandas 中的過(guò)濾視圖。

          用計(jì)算機(jī)來(lái)處理數(shù)據(jù)

          沒(méi)有可以幫助計(jì)算不同的結(jié)果的方法,那么 Excel 會(huì)變成什么?

          在這種情況下,Pandas 大量依賴(lài)于 numpy 庫(kù)和通用 Python 語(yǔ)法將計(jì)算放在一起。對(duì)我們一直在研究的 GDP 數(shù)據(jù)集進(jìn)行一系列簡(jiǎn)單的計(jì)算。例如,計(jì)算人均國(guó)民生產(chǎn)總值超過(guò) 5 萬(wàn)的總和。

          這將給你答案為 770046 。使用相同的邏輯,我們可以計(jì)算各種的值 -- 完整列表位于左側(cè)菜單欄下的計(jì)算/描述性統(tǒng)計(jì)部分的Pandas 文檔。

          數(shù)據(jù)可視化(圖表/圖形)

          數(shù)據(jù)可視化是一個(gè)非常強(qiáng)大的工具 - 它允許你以可理解的格式與其他人分享你獲得的見(jiàn)解。畢竟,一張照片值得一千字。SQL 和 Excel 都具有將查詢轉(zhuǎn)換為圖表和圖形的功能。使用seaborn和matplotlib庫(kù),你可以使用 Python 執(zhí)行相同操作。 有關(guān)數(shù)據(jù)可視化選項(xiàng)的綜合的教程 - 我最喜歡的是這個(gè)Github readme document(全部在文本中),它解釋了如何在 Seaborn 中構(gòu)建概率分布和各種各樣的圖。這應(yīng)該讓你了解 Python 中數(shù)據(jù)可視化的強(qiáng)大功能。如果你感到不知所措,你可以使用一些解決方案,如Plot.ly,這可能更直觀地掌握。

          我們不會(huì)檢查每一個(gè)數(shù)據(jù)可視化選項(xiàng),只要說(shuō)使用 Python,可以比任何 SQL 提供的功能具有更強(qiáng)大的可視化功能,必須權(quán)衡使用 Python 獲得更多的靈活性,以及在 Excel 中通過(guò)模板生成圖表的簡(jiǎn)易性。

          在這種情況下,我們將建立一個(gè)簡(jiǎn)單的直方圖,顯示人均 GDP 超過(guò) 5 萬(wàn)美元的國(guó)家的人均 GDP 分布。

          有了這個(gè)強(qiáng)大的直方圖方法 (hist()),我們現(xiàn)在可以生成一個(gè)直方圖,顯示出大部分人均 GDP 在 5 萬(wàn)到 7 萬(wàn)美元之間!

          分組和連接數(shù)據(jù)

          在 Excel 和 SQL 中,諸如 JOIN 方法和數(shù)據(jù)透視表之類(lèi)的強(qiáng)大工具可以快速匯總數(shù)據(jù)。

          Pandas 和 Python 共享了許多從 SQL 和 Excel 被移植的相同方法。可以在數(shù)據(jù)集中對(duì)數(shù)據(jù)進(jìn)行分組,并將不同的數(shù)據(jù)集連接在一起。你可以看看這里的文檔。你會(huì)發(fā)現(xiàn),由 Pandas 中的merge 方法提供的連接功能與 SQL 通過(guò) join 命令提供的連接功能非常相似,而 Pandas 還為過(guò)去在 Excel 中使用數(shù)據(jù)透視表的人提供了pivot table 方法。

          我們將制定的人均 GDP 的表格與世界銀行的世界發(fā)展指數(shù)清單進(jìn)行簡(jiǎn)單的連接。

          首先導(dǎo)入世界發(fā)展指數(shù)的 .csv文件。

          使用 .head() 方法快速查看這個(gè)數(shù)據(jù)集中的不同列。

          現(xiàn)在我們完成了,我們可以快速看看,添加了幾個(gè)可以操作的列,包括不同年份的數(shù)據(jù)來(lái)源。

          現(xiàn)在我們來(lái)合并數(shù)據(jù):

          我們現(xiàn)在可以看到,這個(gè)表格包含了人均 GDP 列和具有不同列的遍及全國(guó)的數(shù)據(jù)。對(duì)于熟悉SQL join的用戶,你可以看到我們正在對(duì)原始 dataframe 的 Country 列進(jìn)行內(nèi)部連接。

          現(xiàn)在我們有一個(gè)連接表,我們希望將國(guó)家和人均 GDP 按其所在地區(qū)進(jìn)行分組。

          我們現(xiàn)在可以使用 Pandas 中的group方法排列按區(qū)域分組的數(shù)據(jù)。

          要是我們想看到 groupby 總結(jié)的永久觀點(diǎn)怎么辦?Groupby 操作創(chuàng)建一個(gè)可以被操縱的臨時(shí)對(duì)象,但是它們不會(huì)創(chuàng)建一個(gè)永久接口來(lái)為構(gòu)建聚合結(jié)果。為此,我們必須使用 Excel 用戶的舊喜愛(ài):數(shù)據(jù)透視表。幸運(yùn)的是,Pandas 擁有強(qiáng)大的數(shù)據(jù)透視表方法。

          你會(huì)看到我們收集了一些不需要的列。幸運(yùn)的是,使用 Pandas 中的 drop 方法,你可以輕松地刪除幾列。

          現(xiàn)在我們可以看到,人均 GDP 根據(jù)世界不同地區(qū)而不同。我們有一個(gè)干凈的、包含我們想要的數(shù)據(jù)的表。

          這是一個(gè)非常膚淺的分析:你想實(shí)際做一個(gè)加權(quán)平均數(shù),因?yàn)槊總€(gè)國(guó)家的人均 GDP 不代表一個(gè)群體中每個(gè)國(guó)家的人均 GDP,因?yàn)樵谌后w中的人口不同。

          事實(shí)上,你將要重復(fù)我們所有的計(jì)算,包括反映每個(gè)國(guó)家的人口列的方法!看看你是否可以在剛剛啟動(dòng)的 Python notebook 中執(zhí)行此操作。如果你可以弄清楚,你將會(huì)很好地將 SQL 或 Excel 知識(shí)轉(zhuǎn)移到 Python 中。

          據(jù)從業(yè)者有許多工具可用于分割數(shù)據(jù)。有些人使用 Excel,有些人使用SQL,有些人使用Python。對(duì)于某些任務(wù),使用 Python 的優(yōu)點(diǎn)是顯而易見(jiàn)的。以更快的速度處理更大的數(shù)據(jù)集。使用基于 Python 構(gòu)建的開(kāi)源機(jī)器學(xué)習(xí)庫(kù)。你可以輕松導(dǎo)入和導(dǎo)出不同格式的數(shù)據(jù)。

          由于其多功能性,Python 可以成為任何數(shù)據(jù)分析師工具箱的重要組成部分。但是,這很難開(kāi)始。大多數(shù)數(shù)據(jù)分析師可能熟悉 SQL 或 Excel。本篇是涉及幫助你將技能和技術(shù)從 EXcel 和 SQL 轉(zhuǎn)移到 Python。

          首先,讓我們來(lái)設(shè)置 Python。最簡(jiǎn)單的方法就是使用** Jupyter Notebook 和 Anaconda**。這個(gè)可視化界面將允許你插入 Python 代碼并立即查看輸出。這也將使你輕松跟隨本教程的其余部分。

          我強(qiáng)烈推薦使用 Anaconda,但這個(gè)初學(xué)者指南也將幫助你安裝 Python——盡管這將使本篇文章更加難以接受。

          我們從基礎(chǔ)開(kāi)始:打開(kāi)一個(gè)數(shù)據(jù)集。

          1.導(dǎo)入數(shù)據(jù)

          你可以導(dǎo)入.sql 數(shù)據(jù)庫(kù)并用 SQL 查詢中處理它們。在Excel中,你可以雙擊一個(gè)文件,然后在電子表格模式下開(kāi)始處理它。在 Python 中,有更多復(fù)雜的特性,得益于能夠處理許多不同類(lèi)型的文件格式和數(shù)據(jù)源的。

          使用一個(gè)數(shù)據(jù)處理庫(kù) Pandas,你可以使用 read 方法導(dǎo)入各種文件格式。使用這個(gè)方法所能導(dǎo)入完整的文件格式清單是在 Pandas 文檔中。你可以導(dǎo)入從 CSV 和 Excel 文件到 HTML 文件中的所有內(nèi)容!

          使用 Python 的最大優(yōu)點(diǎn)之一是能夠從網(wǎng)絡(luò)的巨大范圍中獲取數(shù)據(jù)的能力,而不是只能訪問(wèn)手動(dòng)下載的文件。在 Python 的requests 庫(kù)可以幫助你分類(lèi)不同的網(wǎng)站,并從它們獲取數(shù)據(jù),而 BeautifulSoup 庫(kù)可以幫助你處理和過(guò)濾數(shù)據(jù),那么你精確得到你所需要的。如果你要去這條路線,請(qǐng)小心使用權(quán)問(wèn)題。

          (不用擔(dān)心,如果你想跳過(guò)這個(gè)部分,可以的!原始的 csv 文件在這里,你可以隨意下載,如果你寧愿開(kāi)始這個(gè)練習(xí)而不從網(wǎng)絡(luò)上獲取數(shù)據(jù),或者你可以 git (https://rogerdudler.github.io/git-guide/) clone 整個(gè)存儲(chǔ)庫(kù)。)

          在這個(gè)例子中,我們將獲取許多國(guó)家人均 GDP(一個(gè)技術(shù)術(shù)語(yǔ),意思是一個(gè)國(guó)家的人均收入)的維基百科表格,并在 Python 中使用 Pandas 庫(kù)對(duì)數(shù)據(jù)進(jìn)行排序。

          首先,導(dǎo)入我們需要的庫(kù)。有關(guān) Python 中如何 import 的更多信息,請(qǐng)點(diǎn)擊此處。

          需要 Pandas 庫(kù)處理我們的數(shù)據(jù)。需要 numpy 庫(kù)來(lái)執(zhí)行數(shù)值的操作和轉(zhuǎn)換。我們需要 requests 庫(kù)來(lái)從網(wǎng)站獲取 HTML 數(shù)據(jù)。需要 BeautifulSoup 來(lái)處理這些數(shù)據(jù)。最后,需要 Python(re)的正則表達(dá)式庫(kù)來(lái)更改在處理數(shù)據(jù)時(shí)將出現(xiàn)的某些字符串。

          在 Python 中,不需要知道很多關(guān)于正則表達(dá)式的知識(shí),但它們是一個(gè)強(qiáng)大的工具,可用于匹配和替換某些字符串或子字符串。如果你想了解更多,請(qǐng)參考以下內(nèi)容。

          2.信任這個(gè)網(wǎng)站的一些代碼。

          這是一個(gè)更具技術(shù)性的解釋?zhuān)敿?xì)說(shuō)明如何使用 Python 代碼來(lái)獲取 HTML 表格。

          你可以將上面的代碼復(fù)制粘貼到你自己的 Anaconda 中,如果你用一些 Python 代碼運(yùn)行,可以迭代它!

          下面是代碼的輸出,如果你不修改它,就是所謂的字典。

          你會(huì)注意到逗號(hào)分隔起來(lái)的括號(hào)的** key-value 列表**。每個(gè)括號(hào)內(nèi)的列表都代表了我們 dataframe 中的一行,每列都以 key 表示:我們正在處理一個(gè)國(guó)家的排名,人均 GDP(以美元表示)及其名稱(chēng)(用「國(guó)家」)。

          有關(guān)數(shù)據(jù)結(jié)構(gòu),如列表和詞典,如何在 Python 中的運(yùn)行的更多信息,本篇將有所幫助。

          幸運(yùn)的是,為了將數(shù)據(jù)移動(dòng)到 Pandas dataframe 中,我們不需要理解這些數(shù)據(jù),這是將數(shù)據(jù)聚合到 SQL 表或 Excel 電子表格的類(lèi)似方式。使用一行代碼,我們已經(jīng)將這些數(shù)據(jù)分配并保存到 Pandas dataframe 中 —— 事實(shí)證明是這種情況,字典是要轉(zhuǎn)換為 dataframe 的完美數(shù)據(jù)格式。

          通過(guò)這個(gè)簡(jiǎn)單的 Python 賦值給變量 gdp,我們現(xiàn)在有了一個(gè) dataframe,可以在我們編寫(xiě) gdp 的時(shí)候打開(kāi)和瀏覽。我們可以為該詞添加 Python 方法,以創(chuàng)建其中的數(shù)據(jù)的策略視圖。作為我們剛剛在 Python 中使用等號(hào)和賦值的一點(diǎn)深入了解,很有幫助。

          3.快速查看數(shù)據(jù)

          現(xiàn)在,如果要快速查看我們所做的工作,我們可以使用 head() 方法,它與 Excel 中的選擇幾行或SQL中的 LIMIT 方法非常相似。輕松地使用它來(lái)快速查看數(shù)據(jù)集,而無(wú)需加載整個(gè)數(shù)據(jù)集!如果要查看特定數(shù)量的行,還可以在 head() 方法中插入行數(shù)。

          我們得到的輸出是人均 GDP 數(shù)據(jù)集的前五行(head 方法的默認(rèn)值),我們可以看到它們整齊地排列成三列以及索引列。請(qǐng)注意,Python 索引從0開(kāi)始,而不是1,這樣,如果要調(diào)用 dataframe 中的第一個(gè)值,則使用0而不是1!你可以通過(guò)在圓括號(hào)內(nèi)添加你選擇的數(shù)字來(lái)更改顯示的行數(shù)。試試看!

          4.重命名列

          有一件你在 Python 中很快意識(shí)到的事是,具有某些特殊字符(例如$)的名稱(chēng)處理可能變得非常麻煩。我們將要重命名某些列,在 Excel 中,可以通過(guò)單擊列名稱(chēng)并鍵入新名稱(chēng),在SQL中,你可以執(zhí)行 ALTER TABLE 語(yǔ)句或使用 SQL Server 中的 sp_rename。

          在 Pandas 中,這樣做的方式是rename 方法。

          在實(shí)現(xiàn)上述方法時(shí),我們將使用列標(biāo)題 「gdp_per_capita」 替換列標(biāo)題「US $」。一個(gè)快速的 .head() 方法調(diào)用確認(rèn)已經(jīng)更改。

          5.刪除列

          有一些數(shù)據(jù)損壞!如果你查看 Rank 列,你會(huì)注意到散亂的隨機(jī)破折號(hào)。這不是很好,由于實(shí)際的數(shù)字順序被破壞,這使得 Rank 列無(wú)用,特別是使用 Pandas 默認(rèn)提供的編號(hào)索引。

          幸運(yùn)的是,使用內(nèi)置的 Python 方法:del,刪除列變得很容易。

          現(xiàn)在,通過(guò)另外調(diào)用 head 方法,我們可以確認(rèn) dataframe 不再包含 rank 列。

          6.在列中轉(zhuǎn)換數(shù)據(jù)類(lèi)型

          有時(shí),給定的數(shù)據(jù)類(lèi)型很難使用。這個(gè)方便的教程將分解 Python 中不同數(shù)據(jù)類(lèi)型之間的差異,以便你需要復(fù)習(xí)。

          在 Excel 中,你可以右鍵單擊并找到將列數(shù)據(jù)轉(zhuǎn)換為不同類(lèi)型的數(shù)據(jù)的方法。你可以復(fù)制一組由公式呈現(xiàn)的單元格,并將其粘貼為值,你可以使用格式選項(xiàng)快速切換數(shù)字,日期和字符串。

          有時(shí)候,在 Python 中切換一種數(shù)據(jù)類(lèi)型為其他數(shù)據(jù)類(lèi)型并不容易,但當(dāng)然有可能。

          我們首先在 Python 中使用 re 庫(kù)。我們將使用正則表達(dá)式來(lái)替換 gdp_per_capita 列中的逗號(hào),以便我們可以更容易地使用該列。

          re.sub 方法本質(zhì)上是使用空格替換逗號(hào)。以下詳細(xì)介紹了 re庫(kù) 的各個(gè)方法。

          現(xiàn)在我們已經(jīng)刪除了逗號(hào),我們可以輕易地將列轉(zhuǎn)換為數(shù)字。

          現(xiàn)在我們可以計(jì)算這列的平均值。

          我們可以看到,人均 GDP 的平均值約為13037.27美元,如果這列被判斷為字符串(不能執(zhí)行算術(shù)運(yùn)算),我們就無(wú)法做到這一點(diǎn)。現(xiàn)在,可以對(duì)我們以前不能做的人均 GDP 列進(jìn)行各種計(jì)算,包括通過(guò)不同的值過(guò)濾列,并確定列的百分位數(shù)值。

          7.選擇/過(guò)濾數(shù)據(jù)

          任何數(shù)據(jù)分析師的基本需求是將大型數(shù)據(jù)集分割成有價(jià)值的結(jié)果。為了做到這一點(diǎn),你必須檢查一部分?jǐn)?shù)據(jù):這對(duì)選擇和過(guò)濾數(shù)據(jù)是非常有幫助的。在 SQL 中,這是通過(guò)混合使用 SELECT 和不同的其他函數(shù)實(shí)現(xiàn)的,而在 Excel 中,可以通過(guò)拖放數(shù)據(jù)和執(zhí)行過(guò)濾器來(lái)實(shí)現(xiàn)。python學(xué)習(xí)關(guān)注我們企鵝qun: 8393 83765 各類(lèi)入門(mén)學(xué)習(xí)資料免費(fèi)分享哦!

          你可以使用 Pandas 庫(kù)不同的方法或查詢快速過(guò)濾。

          作為一個(gè)快速的代表,只顯示人均 GDP 高于 5 萬(wàn)美元的國(guó)家。

          這是這樣做到的:

          我們?yōu)橐粋€(gè)新的 dataframe 分配一個(gè)布爾索引的過(guò)濾器,這個(gè)方法基本上就是說(shuō)「創(chuàng)建一個(gè)人均 GDP 超過(guò) 50000 的新 dataframe」。現(xiàn)在我們可以顯示gdp50000。

          有12個(gè)國(guó)家的 GDP 超過(guò) 50000!

          選擇屬于以 s 開(kāi)頭的國(guó)家的行。

          現(xiàn)在可以顯示一個(gè)新 dataframe,其中只包含以 s 開(kāi)頭的國(guó)家。使用 len 方法快速檢查(一個(gè)用于計(jì)算 dataframe 中的行數(shù)的救星!)表示我們有 25 個(gè)國(guó)家符合。

          要是我們想把這兩個(gè)過(guò)濾條件連在一起呢?

          這里是連接過(guò)濾的方法。在多個(gè)過(guò)濾條件之前,你想要了解它的工作原理。你還需要了解 Python 中的基本操作符。為了這個(gè)練習(xí)的目的,你只需要知道「&」代表 AND,「|」代表 Python 中的 OR。然而,通過(guò)更深入地了解所有基礎(chǔ)運(yùn)算符,你可以用各種條件輕松地處理的數(shù)據(jù)。

          讓我們繼續(xù)工作,并在過(guò)濾選擇以「S」開(kāi)頭且有大于 50,000 人均 GDP 的國(guó)家。

          現(xiàn)在過(guò)濾以「S」開(kāi)頭 或人均 GDP 超過(guò) 50000 的國(guó)家。

          我們正在努力處理 Pandas 中的過(guò)濾視圖。

          8.用計(jì)算機(jī)來(lái)處理數(shù)據(jù)

          沒(méi)有可以幫助計(jì)算不同的結(jié)果的方法,那么 Excel 會(huì)變成什么?

          在這種情況下,Pandas 大量依賴(lài)于 numpy 庫(kù)和通用 Python 語(yǔ)法將計(jì)算放在一起。對(duì)我們一直在研究的 GDP 數(shù)據(jù)集進(jìn)行一系列簡(jiǎn)單的計(jì)算。例如,計(jì)算人均國(guó)民生產(chǎn)總值超過(guò) 5 萬(wàn)的總和。

          這將給你答案為 770046 。使用相同的邏輯,我們可以計(jì)算各種的值 — 完整列表位于左側(cè)菜單欄下的計(jì)算/描述性統(tǒng)計(jì)部分的 Pandas 文檔。

          9.數(shù)據(jù)可視化(圖表/圖形)

          數(shù)據(jù)可視化是一個(gè)非常強(qiáng)大的工具 – 它允許你以可理解的格式與其他人分享你獲得的見(jiàn)解。畢竟,一張照片值得一千字。SQL 和 Excel 都具有將查詢轉(zhuǎn)換為圖表和圖形的功能。使用 seaborn 和 matplotlib 庫(kù),你可以使用 Python 執(zhí)行相同操作。

          有關(guān)數(shù)據(jù)可視化選項(xiàng)的綜合的教程 – 我最喜歡的是這個(gè) Github readme document (全部在文本中),它解釋了如何在 Seaborn 中構(gòu)建概率分布和各種各樣的圖。這應(yīng)該讓你了解 Python 中數(shù)據(jù)可視化的強(qiáng)大功能。如果你感到不知所措,你可以使用一些解決方案,如Plot.ly,這可能更直觀地掌握。

          我們不會(huì)檢查每一個(gè)數(shù)據(jù)可視化選項(xiàng),只要說(shuō)使用 Python,可以比任何 SQL 提供的功能具有更強(qiáng)大的可視化功能,必須權(quán)衡使用 Python 獲得更多的靈活性,以及在 Excel 中通過(guò)模板生成圖表的簡(jiǎn)易性。

          在這種情況下,我們將建立一個(gè)簡(jiǎn)單的直方圖,顯示人均 GDP 超過(guò) 5 萬(wàn)美元的國(guó)家的人均 GDP 分布。

          有了這個(gè)強(qiáng)大的直方圖方法 (hist()),我們現(xiàn)在可以生成一個(gè)直方圖,顯示出大部分人均 GDP 在 5 萬(wàn)到 7 萬(wàn)美元之間!

          10.分組和連接數(shù)據(jù)

          在 Excel 和 SQL 中,諸如 JOIN 方法和數(shù)據(jù)透視表之類(lèi)的強(qiáng)大工具可以快速匯總數(shù)據(jù)。

          Pandas 和 Python 共享了許多從 SQL 和 Excel 被移植的相同方法。可以在數(shù)據(jù)集中對(duì)數(shù)據(jù)進(jìn)行分組,并將不同的數(shù)據(jù)集連接在一起。你可以看看這里的文檔。你會(huì)發(fā)現(xiàn),由 Pandas 中的merge 方法提供的連接功能與 SQL 通過(guò) join 命令提供的連接功能非常相似,而 Pandas 還為過(guò)去在 Excel 中使用數(shù)據(jù)透視表的人提供了 pivot table 方法。

          我們將制定的人均 GDP 的表格與世界銀行的世界發(fā)展指數(shù)清單進(jìn)行簡(jiǎn)單的連接。

          首先導(dǎo)入世界發(fā)展指數(shù)的 .csv文件。

          使用 .head() 方法快速查看這個(gè)數(shù)據(jù)集中的不同列。

          現(xiàn)在我們完成了,我們可以快速看看,添加了幾個(gè)可以操作的列,包括不同年份的數(shù)據(jù)來(lái)源。

          現(xiàn)在我們來(lái)合并數(shù)據(jù):

          我們現(xiàn)在可以看到,這個(gè)表格包含了人均 GDP 列和具有不同列的遍及全國(guó)的數(shù)據(jù)。對(duì)于熟悉 SQL join 的用戶,你可以看到我們正在對(duì)原始 dataframe 的 Country 列進(jìn)行內(nèi)部連接。

          現(xiàn)在我們有一個(gè)連接表,我們希望將國(guó)家和人均 GDP 按其所在地區(qū)進(jìn)行分組。

          我們現(xiàn)在可以使用 Pandas 中的** group 方法排列按區(qū)域分組的數(shù)據(jù)。**

          要是我們想看到 groupby 總結(jié)的永久觀點(diǎn)怎么辦?Groupby 操作創(chuàng)建一個(gè)可以被操縱的臨時(shí)對(duì)象,但是它們不會(huì)創(chuàng)建一個(gè)永久接口來(lái)為構(gòu)建聚合結(jié)果。為此,我們必須使用 Excel 用戶的舊喜愛(ài):數(shù)據(jù)透視表。幸運(yùn)的是,Pandas 擁有強(qiáng)大的數(shù)據(jù)透視表方法。

          你會(huì)看到我們收集了一些不需要的列。幸運(yùn)的是,使用 Pandas 中的 drop 方法,你可以輕松地刪除幾列。

          現(xiàn)在我們可以看到,人均 GDP 根據(jù)世界不同地區(qū)而不同。我們有一個(gè)干凈的、包含我們想要的數(shù)據(jù)的表。

          這是一個(gè)非常膚淺的分析:你想實(shí)際做一個(gè)加權(quán)平均數(shù),因?yàn)槊總€(gè)國(guó)家的人均 GDP 不代表一個(gè)群體中每個(gè)國(guó)家的人均 GDP,因?yàn)樵谌后w中的人口不同。

          事實(shí)上,你將要重復(fù)我們所有的計(jì)算,包括反映每個(gè)國(guó)家的人口列的方法!看看你是否可以在剛剛啟動(dòng)的 Python notebook 中執(zhí)行此操作。如果你可以弄清楚,你將會(huì)很好地將 S

          最后,如果你跟我一樣都喜歡python,想成為一名優(yōu)秀的程序員,也在學(xué)習(xí)python的道路上奔跑,歡迎你加入python學(xué)習(xí)群:839383765 群內(nèi)每天都會(huì)分享最新業(yè)內(nèi)資料,分享python免費(fèi)課程,共同交流學(xué)習(xí),讓學(xué)習(xí)變(編)成(程)一種習(xí)慣!


          主站蜘蛛池模板: 国产主播福利精品一区二区| 国产免费播放一区二区| 一级特黄性色生活片一区二区| 国产精品福利一区| 成人中文字幕一区二区三区| 无码精品前田一区二区| 在线观看一区二区三区av| 日本高清成本人视频一区| 日本丰满少妇一区二区三区| 国语精品一区二区三区| 视频一区二区三区免费观看| 日韩免费一区二区三区在线播放| 国偷自产av一区二区三区| 一区三区三区不卡| 精彩视频一区二区三区| 国产午夜精品一区二区三区极品| 亚洲国产精品乱码一区二区 | 色一情一乱一区二区三区啪啪高| 日本成人一区二区| 国产日韩AV免费无码一区二区| 国产福利一区视频| 国产成人高清亚洲一区91| 国模吧一区二区三区精品视频| 久久无码人妻一区二区三区| 免费日本一区二区| 久久久久一区二区三区| 日韩亚洲一区二区三区| 亚洲一区综合在线播放| 久久精品无码一区二区WWW| 亚洲男女一区二区三区| 国产香蕉一区二区在线网站| 一本大道在线无码一区| 激情无码亚洲一区二区三区| 日韩一区二区三区在线| 日本一区二区三区中文字幕| 果冻传媒一区二区天美传媒| 中文字幕无码一区二区免费 | 熟女精品视频一区二区三区| 91在线一区二区三区| 青青青国产精品一区二区| 天堂va在线高清一区|