您好,登錄后才能下訂單哦!
怎么在Python中執(zhí)行SQL、Excel任務(wù),很多新手對此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
你可以導(dǎo)入.sql 數(shù)據(jù)庫并用 SQL 查詢中處理它們。在Excel中,你可以雙擊一個(gè)文件,然后在電子表格模式下開始處理它。在 Python 中,有更多復(fù)雜的特性,得益于能夠處理許多不同類型的文件格式和數(shù)據(jù)源的。
使用一個(gè)數(shù)據(jù)處理庫 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ù)的能力,而不是只能訪問手動下載的文件。在 Python 的requests 庫可以幫助你分類不同的網(wǎng)站,并從它們獲取數(shù)據(jù),而 BeautifulSoup 庫可以幫助你處理和過濾數(shù)據(jù),那么你將精確得到你所需要的。如果你要去這條路線,請小心使用權(quán)問題。
在這個(gè)例子中,我們將獲取許多國家人均 GDP(一個(gè)技術(shù)術(shù)語,意思是一個(gè)國家的人均收入)的維基百科表格,并在 Python 中使用 Pandas 庫對數(shù)據(jù)進(jìn)行排序。
首先,導(dǎo)入我們需要的庫。
需要 Pandas 庫處理我們的數(shù)據(jù)。需要 numpy 庫來執(zhí)行數(shù)值的操作和轉(zhuǎn)換。我們需要 requests 庫來從網(wǎng)站獲取 HTML 數(shù)據(jù)。需要 BeautifulSoup 來處理這些數(shù)據(jù)。最后,需要 Python(re)的正則表達(dá)式庫來更改在處理數(shù)據(jù)時(shí)將出現(xiàn)的某些字符串。
在 Python 中,不需要知道很多關(guān)于正則表達(dá)式的知識,但它們是一個(gè)強(qiáng)大的工具,可用于匹配和替換某些字符串或子字符串。如果你想了解更多,請參考以下內(nèi)容。
這是一個(gè)更具技術(shù)性的解釋,詳細(xì)說明如何使用 Python 代碼來獲取 HTML 表格。
你可以將上面的代碼復(fù)制粘貼到你自己的 Anaconda 中,如果你用一些 Python 代碼運(yùn)行,可以迭代它!
下面是代碼的輸出,如果你不修改它,就是所謂的字典。
你會注意到逗號分隔起來的括號的 key-value 列表。每個(gè)括號內(nèi)的列表都代表了我們 dataframe 中的一行,每列都以 key 表示:我們正在處理一個(gè)國家的排名,人均 GDP(以美元表示)及其名稱(用「國家」)。
有關(guān)數(shù)據(jù)結(jié)構(gòu),如列表和詞典,如何在 Python 中的運(yùn)行的更多信息,本篇將有所幫助。
幸運(yùn)的是,為了將數(shù)據(jù)移動到 Pandas dataframe 中,我們不需要理解這些數(shù)據(jù),這是將數(shù)據(jù)聚合到 SQL 表或 Excel 電子表格的類似方式。使用一行代碼,我們已經(jīng)將這些數(shù)據(jù)分配并保存到 Pandas dataframe 中 —— 事實(shí)證明是這種情況,字典是要轉(zhuǎn)換為 dataframe 的完美數(shù)據(jù)格式。
通過這個(gè)簡單的 Python 賦值給變量 gdp,我們現(xiàn)在有了一個(gè) dataframe,可以在我們編寫 gdp 的時(shí)候打開和瀏覽。我們可以為該詞添加 Python 方法,以創(chuàng)建其中的數(shù)據(jù)的策略視圖。作為我們剛剛在 Python 中使用等號和賦值的一點(diǎn)深入了解,很有幫助。
現(xiàn)在,如果要快速查看我們所做的工作,我們可以使用 head() 方法,它與 Excel 中的選擇幾行或SQL中的 LIMIT 方法非常相似。輕松地使用它來快速查看數(shù)據(jù)集,而無需加載整個(gè)數(shù)據(jù)集!如果要查看特定數(shù)量的行,還可以在 head() 方法中插入行數(shù)。
我們得到的輸出是人均 GDP 數(shù)據(jù)集的前五行(head 方法的默認(rèn)值),我們可以看到它們整齊地排列成三列以及索引列。請注意,Python 索引從0開始,而不是1,這樣,如果要調(diào)用 dataframe 中的第一個(gè)值,則使用0而不是1!你可以通過在圓括號內(nèi)添加你選擇的數(shù)字來更改顯示的行數(shù)。試試看!
有一件你在 Python 中很快意識到的事是,具有某些特殊字符(例如$)的名稱處理可能變得非常麻煩。我們將要重命名某些列,在 Excel 中,可以通過單擊列名稱并鍵入新名稱,在SQL中,你可以執(zhí)行 ALTER TABLE 語句或使用 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)更改。
有一些數(shù)據(jù)損壞!如果你查看 Rank 列,你會注意到散亂的隨機(jī)破折號。這不是很好,由于實(shí)際的數(shù)字順序被破壞,這使得 Rank 列無用,特別是使用 Pandas 默認(rèn)提供的編號索引。
幸運(yùn)的是,使用內(nèi)置的 Python 方法:del,刪除列變得很容易。
現(xiàn)在,通過另外調(diào)用 head 方法,我們可以確認(rèn) dataframe 不再包含 rank 列。
有時(shí),給定的數(shù)據(jù)類型很難使用。這個(gè)方便的教程將分解 Python 中不同數(shù)據(jù)類型之間的差異,以便你需要復(fù)習(xí)。
在 Excel 中,你可以右鍵單擊并找到將列數(shù)據(jù)轉(zhuǎn)換為不同類型的數(shù)據(jù)的方法。你可以復(fù)制一組由公式呈現(xiàn)的單元格,并將其粘貼為值,你可以使用格式選項(xiàng)快速切換數(shù)字,日期和字符串。
有時(shí)候,在 Python 中切換一種數(shù)據(jù)類型為其他數(shù)據(jù)類型并不容易,但當(dāng)然有可能。
我們首先在 Python 中使用 re 庫。我們將使用正則表達(dá)式來替換 gdp_per_capita 列中的逗號,以便我們可以更容易地使用該列。
re.sub 方法本質(zhì)上是使用空格替換逗號。以下詳細(xì)介紹了 re庫 的各個(gè)方法。
現(xiàn)在我們已經(jīng)刪除了逗號,我們可以輕易地將列轉(zhuǎn)換為數(shù)字。
現(xiàn)在我們可以計(jì)算這列的平均值。
我們可以看到,人均 GDP 的平均值約為13037.27美元,如果這列被判斷為字符串(不能執(zhí)行算術(shù)運(yùn)算),我們就無法做到這一點(diǎn)?,F(xiàn)在,可以對我們以前不能做的人均 GDP 列進(jìn)行各種計(jì)算,包括通過不同的值過濾列,并確定列的百分位數(shù)值。
任何數(shù)據(jù)分析師的基本需求是將大型數(shù)據(jù)集分割成有價(jià)值的結(jié)果。為了做到這一點(diǎn),你必須檢查一部分?jǐn)?shù)據(jù):這對選擇和過濾數(shù)據(jù)是非常有幫助的。在 SQL 中,這是通過混合使用 SELECT 和不同的其他函數(shù)實(shí)現(xiàn)的,而在 Excel 中,可以通過拖放數(shù)據(jù)和執(zhí)行過濾器來實(shí)現(xiàn)。
你可以使用 Pandas 庫不同的方法或查詢快速過濾。
作為一個(gè)快速的代表,只顯示人均 GDP 高于 5 萬美元的國家。
這是這樣做到的:
我們?yōu)橐粋€(gè)新的 dataframe 分配一個(gè)布爾索引的過濾器,這個(gè)方法基本上就是說「創(chuàng)建一個(gè)人均 GDP 超過 50000 的新 dataframe」?,F(xiàn)在我們可以顯示gdp50000。
有12個(gè)國家的 GDP 超過 50000!
選擇屬于以 s 開頭的國家的行。
現(xiàn)在可以顯示一個(gè)新 dataframe,其中只包含以 s 開頭的國家。使用 len 方法快速檢查(一個(gè)用于計(jì)算 dataframe 中的行數(shù)的救星?。┍硎疚覀冇?25 個(gè)國家符合。
要是我們想把這兩個(gè)過濾條件連在一起呢?
這里是連接過濾的方法。在多個(gè)過濾條件之前,你想要了解它的工作原理。你還需要了解 Python 中的基本操作符。為了這個(gè)練習(xí)的目的,你只需要知道「&」代表 AND,而「|」代表 Python 中的 OR。然而,通過更深入地了解所有基礎(chǔ)運(yùn)算符,你可以用各種條件輕松地處理的數(shù)據(jù)。
讓我們繼續(xù)工作,并在過濾選擇以「S」開頭且有大于 50,000 人均 GDP 的國家。
現(xiàn)在過濾以「S」開頭 或人均 GDP 超過 50000 的國家。
我們正在努力處理 Pandas 中的過濾視圖。
沒有可以幫助計(jì)算不同的結(jié)果的方法,那么 Excel 會變成什么?
在這種情況下,Pandas 大量依賴于 numpy 庫和通用 Python 語法將計(jì)算放在一起。對我們一直在研究的 GDP 數(shù)據(jù)集進(jìn)行一系列簡單的計(jì)算。例如,計(jì)算人均國民生產(chǎn)總值超過 5 萬的總和。
這將給你答案為 770046 。使用相同的邏輯,我們可以計(jì)算各種的值 — 完整列表位于左側(cè)菜單欄下的計(jì)算/描述性統(tǒng)計(jì)部分的 Pandas 文檔。
數(shù)據(jù)可視化是一個(gè)非常強(qiáng)大的工具 – 它允許你以可理解的格式與其他人分享你獲得的見解。畢竟,一張照片值得一千字。SQL 和 Excel 都具有將查詢轉(zhuǎn)換為圖表和圖形的功能。使用 seaborn 和 matplotlib 庫,你可以使用 Python 執(zhí)行相同操作。
有關(guān)數(shù)據(jù)可視化選項(xiàng)的綜合的教程 – 我最喜歡的是這個(gè) Github readme document (全部在文本中),它解釋了如何在 Seaborn 中構(gòu)建概率分布和各種各樣的圖。這應(yīng)該讓你了解 Python 中數(shù)據(jù)可視化的強(qiáng)大功能。如果你感到不知所措,你可以使用一些解決方案,如Plot.ly,這可能更直觀地掌握。
我們不會檢查每一個(gè)數(shù)據(jù)可視化選項(xiàng),只要說使用 Python,可以比任何 SQL 提供的功能具有更強(qiáng)大的可視化功能,必須權(quán)衡使用 Python 獲得更多的靈活性,以及在 Excel 中通過模板生成圖表的簡易性。
在這種情況下,我們將建立一個(gè)簡單的直方圖,顯示人均 GDP 超過 5 萬美元的國家的人均 GDP 分布。
有了這個(gè)強(qiáng)大的直方圖方法 (hist()),我們現(xiàn)在可以生成一個(gè)直方圖,顯示出大部分人均 GDP 在 5 萬到 7 萬美元之間!
在 Excel 和 SQL 中,諸如 JOIN 方法和數(shù)據(jù)透視表之類的強(qiáng)大工具可以快速匯總數(shù)據(jù)。
Pandas 和 Python 共享了許多從 SQL 和 Excel 被移植的相同方法??梢栽跀?shù)據(jù)集中對數(shù)據(jù)進(jìn)行分組,并將不同的數(shù)據(jù)集連接在一起。你可以看看這里的文檔。你會發(fā)現(xiàn),由 Pandas 中的merge 方法提供的連接功能與 SQL 通過 join 命令提供的連接功能非常相似,而 Pandas 還為過去在 Excel 中使用數(shù)據(jù)透視表的人提供了 pivot table 方法。
我們將制定的人均 GDP 的表格與世界銀行的世界發(fā)展指數(shù)清單進(jìn)行簡單的連接。
首先導(dǎo)入世界發(fā)展指數(shù)的 .csv文件。
使用 .head() 方法快速查看這個(gè)數(shù)據(jù)集中的不同列。
現(xiàn)在我們完成了,我們可以快速看看,添加了幾個(gè)可以操作的列,包括不同年份的數(shù)據(jù)來源。
現(xiàn)在我們來合并數(shù)據(jù):
我們現(xiàn)在可以看到,這個(gè)表格包含了人均 GDP 列和具有不同列的遍及全國的數(shù)據(jù)。對于熟悉 SQL join 的用戶,你可以看到我們正在對原始 dataframe 的 Country 列進(jìn)行內(nèi)部連接。
現(xiàn)在我們有一個(gè)連接表,我們希望將國家和人均 GDP 按其所在地區(qū)進(jìn)行分組。
我們現(xiàn)在可以使用 Pandas 中的 group 方法排列按區(qū)域分組的數(shù)據(jù)。
要是我們想看到 groupby 總結(jié)的永久觀點(diǎn)怎么辦?Groupby 操作創(chuàng)建一個(gè)可以被操縱的臨時(shí)對象,但是它們不會創(chuàng)建一個(gè)永久接口來為構(gòu)建聚合結(jié)果。為此,我們必須使用 Excel 用戶的舊喜愛:數(shù)據(jù)透視表。幸運(yùn)的是,Pandas 擁有強(qiáng)大的數(shù)據(jù)透視表方法。
你會看到我們收集了一些不需要的列。幸運(yùn)的是,使用 Pandas 中的 drop 方法,你可以輕松地刪除幾列。
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。