相關學習推薦:python教學
#這是pandas資料處理專題的第二篇文章,我們一起來聊聊pandas當中最重要的資料結構-DataFrame。
上一篇文章當中我們介紹了Series的用法,也提到了Series相當於一個一維的數組,只是pandas為我們封裝了許多方便好用的api。而DataFrame可以簡單了理解成Series構成的dict,這樣就將資料拼接成了二維的表格。並且為我們提供了許多表格層級資料處理以及批次資料處理的接口,大大降低了資料處理的難度。
建立DataFrame
#DataFrame是一個表格型的資料結構,它擁有兩個索引,分別是行索引以及列索引,使得我們可以很方便地取得對應的行以及列。這就大大降低了我們要找出資料處理資料的難度。
首先,我們先從最簡單的開始,如何建立一個DataFrame。
從字典建立

我們建立了一個dict,它的key是列名,value是一個list,當我們將這個dict傳入DataFrame的建構子的時候,它將會以key作為列名,value作為對應的值為我們建立一個DataFrame。
當我們在jupyter輸出的時候,它會自動為我們將DataFrame中的內容以表格的形式展現。
從numpy資料建立
#我們也可以從一個numpy的二維陣列來建立一個DataFrame,如果我們只是傳入numpy的數組而不指定列名的話,那麼pandas將會以數字作為索引為我們創建列:

我們在創建的時候為columns這個欄位傳入一個string的list即可為它指定列名:

從檔案讀取
#pandas另一個非常強大的功能就是可以從各種格式的檔案當中讀取資料建立DataFrame,例如像是常用的excel、csv,甚至是資料庫也可以。
對於excel、csv、json等這種結構化的數據,pandas提供了專門的api,我們找到對應的api進行使用即可:

如果是一些比較特殊格式的,也沒有關係,我們使用read_table,它可以從各種文字檔案中讀取數據,透過傳入分隔符號等參數完成建立。例如在上一篇驗證PCA降維效果的文章當中,我們從.data格式的檔案當中讀取了資料。該檔案當中列和列之間的分隔符號是空格,而不是csv的逗號或是table符。我們透過傳入sep這個參數,指定分隔符號就完成了資料的讀取。

這個header參數表示檔案的哪些行作為資料的列名,預設header=0,也會將第一行當作列名。如果資料當中不存在列名,需要指定header=None,否則會產生問題。我們很少會出現需要用到多層列名的情況,所以一般情況下最常用的就是取預設值或是令它等於None。
在所有這些建立DataFrame的方法當中最常用的就是最後一種,從檔案讀取。因為我們做機器學習或是參加kaggle當中的一些比賽的時候,往往數據都是現成的,以文件的形式給我們使用,需要我們自己創建數據的情況很少。如果是在實際的工作場景,雖然資料不會存在文件當中,但是也會有一個源頭,一般是會儲存在一些大數據平台當中,模型從這些平台當中取得訓練資料。
所以整體來說,我們很少使用其他建立DataFrame的方法,我們有所了解,專注於掌握從檔案讀取的方法即可。
常用操作
下面介紹一些pandas的常用操作,這些操作是我在沒有系統學習pandas的使用方法之前就已經了解的。了解的原因也很簡單,因為它們太常用了,可以說是必知必會的常識性內容。
檢視資料
我們在jupyter當中執行執行DataFrame的實例會為我們打出DataFrame中所有的數據,如果資料行數過多,則會以省略號的形式省略中間的部分。對於資料量很大的DataFrame,我們通常不會直接這樣輸出展示,而是選擇展示其中的前幾條或是後幾個資料。這裡就需要用到兩個api。
展示前若干條資料的方法叫做head,它接受一個參數,允許我們制定讓它從頭開始展示我們指定條數的資料。

既然有展示前面若干條自然也有展示最後若干條的api,這樣的api叫做tail。透過它我們可以查看DataFrame最後指定條數的資料:

#列的增刪改查

############## #######前面我們曾經提到過,對於DataFrame而言,它其實相當於Series組合成的dict。既然是dict我們自然可以根據key值取得指定的Series。 ######DataFrame當中有兩種方法取得指定的列,我們可以###透過.加列名###的方式或也可以###透過dict找出元素的方式###來查詢: ###############我們也###可以同時讀取多列###,如果是多列的話,只支援一種方法就是透過dict查詢元素的方法。它允許接收傳入一個list,可以找出這個list當中的欄位對應的資料。傳回的結果是這些新的欄位組成的新DataFrame。 ###

我們可以用del刪除一個我們不需要的欄位:

我們要建立一個新的列也很簡單,我們可以像dict賦值一樣,直接為DataFrame賦值即可:

也可以是一個陣列:

轉換到numpy陣列
#有時候我們使用pandas不方便,想要取得它對應的原始數據,可以直接使用.values取得DataFrame對應的numpy數組:

在DataFrame當中每一列單獨一個類型,而轉換成numpy的數組之後所有資料共享類型。那麼pandas會為所有的欄位找一個通用類型,這就是為什麼經常會得到一個object類型的原因。所以在使用.values之前最好先查看一下類型,保證一下不會因為類型而出錯。
總結
在今天的文章當中我們了解了DataFrame與Series的關係,也學習了一些DataFrame的基礎和常用的用法。雖然DataFrame可以近似看成是Series組合成的dict,但實際上它作為一個單獨的資料結構,也擁有許多自己的api,支援許多花式的操作,是我們處理資料強有力的工具。有專業機構做過統計,對於一個演算法工程師而言,大約70%的時間會被投入在資料的處理上。真正寫模型、調參的時間可能不到20%,從這當中我們可以看到資料處理的必要性與重要性。在Python領域當中,pandas是資料處理最好用的手術刀和工具箱,希望大家都能掌握它。
#想了解更多程式設計學習,請關注php培訓欄位!
以上是使用pandas進行資料處理之 DataFrame篇的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Python更易學且易用,C 則更強大但複雜。 1.Python語法簡潔,適合初學者,動態類型和自動內存管理使其易用,但可能導致運行時錯誤。 2.C 提供低級控制和高級特性,適合高性能應用,但學習門檻高,需手動管理內存和類型安全。

Python和C 在内存管理和控制方面的差异显著。1.Python使用自动内存管理,基于引用计数和垃圾回收,简化了程序员的工作。2.C 则要求手动管理内存,提供更多控制权但增加了复杂性和出错风险。选择哪种语言应基于项目需求和团队技术栈。

Python在科學計算中的應用包括數據分析、機器學習、數值模擬和可視化。 1.Numpy提供高效的多維數組和數學函數。 2.SciPy擴展Numpy功能,提供優化和線性代數工具。 3.Pandas用於數據處理和分析。 4.Matplotlib用於生成各種圖表和可視化結果。

選擇Python還是C 取決於項目需求:1)Python適合快速開發、數據科學和腳本編寫,因其簡潔語法和豐富庫;2)C 適用於需要高性能和底層控制的場景,如係統編程和遊戲開發,因其編譯型和手動內存管理。

Python在數據科學和機器學習中的應用廣泛,主要依賴於其簡潔性和強大的庫生態系統。 1)Pandas用於數據處理和分析,2)Numpy提供高效的數值計算,3)Scikit-learn用於機器學習模型構建和優化,這些庫讓Python成為數據科學和機器學習的理想工具。

每天學習Python兩個小時是否足夠?這取決於你的目標和學習方法。 1)制定清晰的學習計劃,2)選擇合適的學習資源和方法,3)動手實踐和復習鞏固,可以在這段時間內逐步掌握Python的基本知識和高級功能。

Python在Web開發中的關鍵應用包括使用Django和Flask框架、API開發、數據分析與可視化、機器學習與AI、以及性能優化。 1.Django和Flask框架:Django適合快速開發複雜應用,Flask適用於小型或高度自定義項目。 2.API開發:使用Flask或DjangoRESTFramework構建RESTfulAPI。 3.數據分析與可視化:利用Python處理數據並通過Web界面展示。 4.機器學習與AI:Python用於構建智能Web應用。 5.性能優化:通過異步編程、緩存和代碼優

Python在開發效率上優於C ,但C 在執行性能上更高。 1.Python的簡潔語法和豐富庫提高開發效率。 2.C 的編譯型特性和硬件控制提升執行性能。選擇時需根據項目需求權衡開發速度與執行效率。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SublimeText3漢化版
中文版,非常好用

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具