01.22 Pandas讓Python變得更好

Pandas使用Python進行數據處理

Pandas讓Python變得更好

我想談了很長時間的事情是Pandas帶給Python的力量。 Pandas是Python數據科學必不可少的軟件包,因為它用途廣泛且非常擅長處理數據。 我真正喜歡Pandas的一個組件是其出色的IPython和Numpy集成。 這就是說,使Pandas與Numpy直接交織在一起,就像花生醬與果凍一樣。 難怪這兩種組合都打包出售。

Pandas讓Python變得更好

除了Smucker的Goober開玩笑之外,Pandas僅僅通過內置Python就能使Python成為Data Science更可行的語言。 這並不是說Python沒有許多可以模仿這種效果的出色軟件包,因為Python擁有數量眾多的用於機器學習和數據處理的軟件包。 Pandas使得相對困難的事情,或者在其他語言中更加痛苦的事情,在Python中變得異常容易。

IPython的

支持Pandas的最大事情是-Pandas本身。 該軟件包來自第一方,旨在合併數據科學的主要內容,例如IPython Notebooks和Numpy。 將它們組合在一起的方式很有道理,但我不只是告訴您,我還將向您展示使用其他語言的軟件包的感覺,這是我的最愛:

Julia

有趣的是,我們用來創建數據框架的軟件包是DataFrames.jl。 當然,我們現在將使用逗號分隔值文件(CSV文件)。 所以第一步就是讀取我們的數據……但是我們該怎麼做呢? 在更改日誌中,簡要提到了一種稱為read_table的方法,但是在大多數情況下,這似乎已被棄用。

Pandas讓Python變得更好

嗯,這就是訣竅,為了使用DataFrames.jl讀取我們的DataFrames,我們實際上必須獲得另一個名為CSV.jl的程序包。 添加該軟件包後,我們可以使用read()方法打開CSV文件:

<code>using CSVdf = CSV.read("Fizzbuzz")/<code>


太棒了,現在我們已經讀完數據,但在頂部看到了一條有趣的消息……

Pandas讓Python變得更好

<code>"省略了12列打印"/<code> 

好吧,一切都很好,但是為什麼呢? 出於某種奇怪的原因,他們選擇根據列的特定長度,在Iframe外部渲染數據幀,並省略列。 那麼我們如何顯示所有列? 顯示所有列非常容易,只需在show方法中添加bool類型參數即可,如下所示:

Pandas讓Python變得更好

等一下那是什麼 沒錯,它會轉到基於文本的數據框,其中的列已打印

在彼此之上。

好消息是,我們過去不得不使用的舊的showall!()方法現在已棄用,這意味著當我們顯示ALL COLUMNS時不必顯示ALL ROWS。 這很可能是我不久前開始使用字典的原因……

好的,現在我們知道Julia的工作有多困難,但是Pandas呢? 好吧,您不會認為它是如此簡單,但是您需要的唯一軟件包是Pandas,您唯一需要的方法是read_csv,最後但並非最不重要的是,您可以使用函數df.head()進行打印 您選擇的頭部長度,然後使用df.tail()打印您選擇的頭部長度。 更不用說,它看起來像這樣:

Pandas讓Python變得更好

相信我,R的數據框架也不如Pandas好,在大多數情況下,使用R和Julia的人傾向於PyCall Pandas,而不是使用各自語言的數據框架包。

脾氣暴躁的

Pandas讓Python變得更好

Numpy是Python數據科學三大劍客的另一部分。 Numpy集成允許在數據幀內部使用所有Numpy的線性代數。 此外,Numpy的某些部分使數據處理變得更加容易。 只要看著我在眨眼間銷燬一千多個空值!

Pandas讓Python變得更好

重要的是要記住,由於這是一種編程語言,因此香草Python和線性代數實際上並沒有您想象的那樣好。 我認為這僅僅是因為Python比"線性代數"具有更高的水平,而且當然不應該期望它成為許多公司現在深陷其中的統計語言。當然,我的df.dropna()示例是非常輕巧的,但可以保證在某些時候與Numpy的緊密集成將使您的生活比以前更加輕鬆!

Pandas本身

除了Pandas與其他Python軟件包的出色集成和方法論之外,Pandas還具有許多好處,它們所做的所有出色的開源工作都提供了這些好處。 每一次轉彎,分度,連接,融化,旋轉,甚至交叉製表都可以與Pandas一起完成。 這些任務確實可以使用其他程序包提供一整小時的工作,但是使用Pandas可以輕鬆,即時地完成任務。

藉助replace()函數之類的簡單工具,可以更輕鬆地使用Pandas,該工具可用於替換NaN或只是奇怪的數據。 Pandas做了很多工作,做了一點工作,這就是它如此受歡迎和令人印象深刻的原因。 但是Pandas還有其他一些巨大的好處。

字符串訪問器

是的,傳說是正確的:

數據框是榮耀的字典。

但是,並非所有字典都是一樣的。 首先,在我所知道的語言中,熊貓的條件屏蔽是迄今為止最好的。

Pandas讓Python變得更好

只需一個簡單的步驟,即可對數據進行完全過濾並準備就緒,所有數據都包含在Pandas中,而無需實際運行任何其他方法-因為畢竟這只是一個字典。

Julia也有字典,它們的DataFrames.jl包當然是完全相同的系統,但是在我看來,在這種情況下嘗試與Pandas站在一起時,它的外觀完全不變。 首先,為了使用布爾型,我們使用filter!()方法。 沒問題,它有點優雅,但無論如何都可以正常工作。 但總體而言,在茱莉亞(Julia)詞典中,有一個非常重要的問題,我感到驚訝的是,沒有涉及太多問題。

Julia的字典命名方案使用符號而不是字符串。 這是非常有問題的,因為在我們所有鍵盤的基礎上都存在著這種邪惡的事物,

空格鍵。

Pandas讓Python變得更好

如您所見,典型的字符串命名方案在Julia中不起作用。 取而代之的是,Julia使用的符號是通過在變量名前加一個冒號而創建的。 因此,讓我們嘗試使用符號代替:

Pandas讓Python變得更好

好的,這行得通,但是如何在空間上做到這一點? 嗯,這是個大問題,如果名稱中有空格,則根本無法訪問該列。 當然,大多數數據框的列名中都不會包含空格,因為使用_而不是空格被認為更合適,但是如果有的話該怎麼辦? 朱莉婭唯一有意義的解決方案是打開CSV文件並在其中更改列名稱,這是一個大問題。

結論

我愛Pandas

Pandas是一個很棒的軟件包,在大多數情況下使Data Science變得輕而易舉。 我當然希望DataFrames.jl能夠模擬Pandas為Python數據科學社區創建的內容。 Pandas真正的優點在於,圍繞它的整個技術堆棧如何與之無縫流動。

Python的世界肯定是一個漂亮的世界。


(本文翻譯自Emmett Boudreau的文章《Pandas Makes Python Better》,參考:https://towardsdatascience.com/pandas-makes-python-better-ec6cc1e30233)


分享到:


相關文章: