Pandas 是強大的資料科學分析工具,
今天要進入DataFrame的介紹
首先簡介Dataframe
又可以稱作資料框架,是表格型的資料結構
我們生活中常見的類似例子為Excel表格
可以想成DataFrame是Pandas裡的Excel表格
實際上是由多個 Series 組合起來的資料結構
通常用來封裝、處理二維的資料
今天練習的分別是
看的課程是Coursera上的 Introduction to Data Science in Python
Coursera | Online Courses & Credentials From Top Educators. Join for Free | Coursera
下面的練習是利用上課教的還有以前在學校教過的
重新整理有關DataFrame的筆記
首先先利用 Series來建立 Dataframe,看看Dataframe的架構
假設現在想建立顧客檔案,先利用Series建立每個顧客的名字、居住的城市跟年齡
import pandas as pd
n_1 = pd.Series({"Name":"Sunny","City":"Taipei","Age":"18"})
n_2 = pd.Series({"Name":"Kevin","City":"Taipei","Age":"21"})
n_3 = pd.Series({"Name":"Pennt","City":"Hsinchie","Age":"24"})
再把每個顧客的資訊利用 Series做出來之後,轉換成Dataframe的形式,並且指定index
df = pd.DataFrame([n_1,n_2,n_3], index = ["customer1","customer2","customer3"])
df.head()
來檢查變成DataFrame之後的形式
可以看到DataFrame將資料排列的很好解讀,二維的架構就跟前幾週在SQL介紹的一樣
接下來來換另外一種生成DataFrame的方式,使用Dictionary的形式產生
customers = [{"Name":"Sunny","City":"Taipei","Age":"18"},
{"Name":"Kevin","City":"Taipei","Age":"21"},
{"Name":"Ray","City":"Hsinchiu","Age":"24"}]
df = pd.DataFrame(customers,index = ["customer1","customer2","customer3"])
df.head()
在DataFrame我們使用的方法跟在Series一樣,可以用`iloc.[ ]`, `loc[ ]`
如果index只輸入單一值而且該值屬於唯一值,就會回傳該row的所有資料
假設現在想找出顧客2的所有資訊
可以用.loc[ ]
,使用欄位名稱查詢
df.loc["customer2"]
可以看到顯示出來有關顧客2Kevin的所有資料
現在來檢查這個回傳的資料型態是什麼
type(df.loc["customer2"])
'''
pandas.core.series.Series
'''
可以確定若是輸入的index是單一值而且該值屬於唯一值
回傳的資料就會是Series的型態
也可以使用ioc.[ ]
,利用索引值找到同樣的顧客二資訊
df.iloc[1]
如果index在資料表裡不是唯一值
現在假設原始資料的顧客四輸入時出現差錯
將第四位客人的index寫成第一位客人
讓新的資料表裡標示為第一位客人的資料有兩筆
customers_1 = [{"Name":"Sunny","City":"Taipei","Age":"18"},
{"Name":"Kevin","City":"Taipei","Age":"21"},
{"Name":"Ray","City":"Hsinchiu","Age":"24"},
{"Name":"Jane","City":"Taichung","Age":"27"}]
df_1 = pd.DataFrame(customers_1,index = ["customer1","customer2","customer3","customer1"])
df_1.head()
接下來試著找出有關customer1的資料
並且檢查回傳的資料型態
df_1.loc["customer1"]
type(df_1.loc["customer1"])
'''
pandas.core.frame.DataFrame
'''
可以得知當index不為唯一值時
pandas會回傳資料型態為DataFrame的結果
.loc [ ]
也可以用在不同維度的資料索取
現在想知道顧客2居住的城市的話
就可以先從row的index開始
再到column裡檢索
在中括號內利用逗號隔開兩個條件
df.loc["customer2","City"]
'''
'Taipei'
'''
這種方式還有另外一個寫法
df.loc["customer2"]["City"]
'''
'Taipei'
'''
會得到同樣的結果
這種把回傳值再傳到下一個指令的方法叫做**"Chaining"**
這個方式是產生一個複製過後的新的DataFrame
第二種方式有slicing的性質
如果想要擷取所有顧客的"Name"還有"City",可以先在row裡用":"
找出所有row,再利用list
指定想要的column
df.loc[:,["Name","City"]]
現在若是想用.loc[ ]
找到column裡的資料
方法一是將表格轉置
讓column跟row對調,使用.T
df.T
先來看看轉置之後的表格會變成怎樣
接下來就可以用row查詢想要的值
如果想找出顧客的所在城市資訊
df.T.loc["City"]
可以直接使用[ ]
,裡面放column的欄位名稱
當我們知道所有的顧客名字時
df["Name"]
直接在[ ]裡放上欄位名稱即可
還有另外一種表示法,可以直接利用.欄位名稱
,記得不用加上引號
df.Name
可以看到兩個方法回傳的答案會是一致的
今天練習的是DataFrame的基本操作
簡單的產生DataFrame
還有練習資料的查詢
這些概念衍伸了執行Series會用到的語法
還有SQL關於資料庫的概念
Pandas的世界博大精深
明天繼續探索