Python – Pandas (1) – Data Structure , read Data

簡介

Python程式語言廣泛的運用在最新的科技中,例如AI、資料分析、爬蟲等等的應用,而應用在數據分析時,通常我們會有一堆大量的資料,在過去我們通常都適用Excel來整理,並透過語法來讓他做更多的應用,而再Python中也有一個套件是在處理大量資料,容我做個紀錄並介紹一下。

Panda資料結構

在撰寫程式之前,我們先了解一下Panda所提供的幾種資料結構:

  • 1.Series:用來處理時間序列相關的資料(如感測器資料等),主要為建立索引的一維陣列。
  • 2.DataFrame:用來處理結構化(Table like)的資料,有列索引與欄標籤的二維資料集,例如關聯式資料庫、CSV 等等。
  • 3.Panel:用來處理有資料及索引、列索引與欄標籤的三維資料集。

Series的資料型態可以有三種,Array、Dictionary、SingleData

Series Array模式

可以看到上圖,在Pd.Series的Array資料結構, 把Array放置在Series中,印出來的pd格式會有序號顯示,亦可透過陣列索引方式來印出指定資料。

Series Dictionary模式

而在Python中的Dictionary創建方式如上圖,把資料的『名稱 : 資料』放置在『 dict 』中。一樣把Dictionary放在Series中,產生Pd可讀取的資料結構。索引方式同陣列。

DataFrame

DataFrame用於處理結構化數據。具有行索引和列表的二維數據集可以通過Dictionary或Array來創建,但也可以通過讀取外部數據來創建,如CSV文件和數據庫。 下面的例子介紹瞭如何通過Dictionary或Array創建,以及如何使用DataFrame進行數據查看、數據過濾、數據切片、數據排序等操作。

我們可以將Dictionary與Array融合運用,且一併放置在Dataframe的資料結構內,如上圖,Pd會整齊地排列好印出。

DataFrame – shape

而DataFrame算是比較常用的一個資料結構,我們來看看DataFrame的一些基本方法操作。上圖是將整個字典的 (Row , Column) 數量歸納出。

DataFrame – describe()
對照

DataFrame的Describe(),用來統計你的數據的數量、最大值、最小值、平均值等等的數值,假如資料是非常大量這是很好用的一個方法。

DataFrame – head() , tail()

取整個資料庫的前幾筆的資料可以使用『 head(筆數) 』,上圖是取後三筆資料,是使用『 tail(3) 』的方式。

DataFrame – columns
DataFrame – index
DataFrame – info

而最後想記錄的是回傳數據庫的『 columns , index , info 』,分別是取得數據庫的標題欄位、資料列數、整個數據庫的內容。以上的幾種方法是DataFrame的常用功能。

產生隨機資料

在生活中我們最常見的數據就像是股市、行銷個資、學生成績,而這些資料都要經過時間來輸入再後台或是文件,讓Python去讀取並透過panda來呈現,而python有一個方式可以快速的隨機產生DataFrame。上圖就是運用list透過panda來呈現之,panda會幫你依序列出,並給予序號。

pd.util.testing.makeDataFrame().head(10)

回到隨機生成DataFrame,如上述程式碼,『pd.util.testing().makeDataFrame()』,接著我們想要產生隨機資料,並取前10組,透過一行程式碼就可以看到pd的功用。

讀取、整理資料

df = pd.read_csv('http://bit.ly/kaggletrain')
df.head()

承如剛剛說的,我們因為自己做數據也是要花點時間,所以通常就是讀取自己累積已久的資料庫,或是別人提供的網頁檔案或CSV等等的文件檔案,而panda讀取csv的方式如上程式碼。

我們可以透過先前介紹過的requests來取得網頁上的資料(前提是他有開API可以讓我們進行post & get),接著再使用『pd.read_html()』來讀取,就會呈現出上圖的樣貌。

小結

而pandas可以讀取的格式還蠻多種的,如上圖,Json、Excel等等,但上述紀錄的兩個讀取模式是比較常用的模式,各位可以先看你們要讀取的資料是怎樣的格式,在進行程式的撰寫,在下一篇我會介紹記錄更多panda的方法與函示。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *