什麼是Pandas?
Pandas是Python中常用的套件之一,簡單來說,就是把 Excel的表格觀念丟到Python裡,常見的Excel功能都可以在Pandas裡完成,例如欄位的加總、分群、樞紐分析表、小計、畫折線圖、圓餅圖等等… ,其中Pandas中的資料型態DataFrame更是可以仿照SQL進行資料的處理與運算,與另一個套件numpy都是Python做資料處理常見的工具之一。
為了避免將來忘記Pandas語法的操作,特別寫了一系列的文章來記錄,以便未來查閱~
利用pip下載Pandas套件pip install pandas as pd
Pandas倚靠三大物件進行運算
- Series
- DataFrame
- Index
1. Series:
- 可以看成是一維陣列
- 但與numpy不同的是它可以定義自己的index(任何資料型態)
- 也可以看成是特殊化的dict(有key,value的關係)
建立基本Series
pd.Series( [元素1,元素2..] )
1 | demo = pd.Series([1,2,3]) |
取得index/values
Series.index
1 | demo.index |
Series.values
1 | demo.values |
建立自定義index的Series
pd.Series( [元素1,元素2…] ,index=[名稱1,名稱2…] )
1 | demo = pd.Series([1,2,3],index=['a','b','c']) |
使用dict來建立Series
pd.Series(字典)
1 | demo = {'a':1,'b':2,'c':3} |
2. DataFrame:
- 由多個Series所組成
- 一樣可以指定index
由Series組成DataFrame
pd.DataFrame( {name1: Series1, name2: Series2..} )
1 | books = pd.Series({'a':'beam','b':'column','c':'hinge'}) |
DataFrame有
index
,values
,columns
三個屬性
1 | civil.index |
簡而言之,DataFrame的架構大概長這樣~
column1 | column2 | |
---|---|---|
index1 | value11 | value12 |
index2 | value21 | value22 |
從字典建立DataFrame
pd.DataFrame.from_dict{字典}
預設會把字典的key當成DataFrame的column
1 | demo_dict = {'a':[5,2,0],'A':[9,1,4]} |
pd.DataFrame.from_dict{字典, orient=’index’}
把字典的key當成DataFrame的row
1 | demo_dict = {'a':[5,2,0],'A':[9,1,4]} |
pd.DataFrame.from_dict{ 字典, orient=’index’, columns=[欄位1,欄位2,欄位3] }
1 | demo_dict = {'a':[5,2,0],'A':[9,1,4]} |
把字典的key當成DataFrame的row以外,也自己命名column的名稱
DataFrame基本運算
加 | 減 | 乘 | 除 | 整除 | 餘數 | 次方 | |
---|---|---|---|---|---|---|---|
運算子 | + | - | * | / | // | % | ** |
先建立兩個DataFrame
1 | d1 = {'a':[1,2,3],'b':[2,4,6],'c':[3,6,9]} |
DataFrame不同欄位也能互相計算
刪除column/row
建立一個DataFrame名叫demo
刪除column
DataFrame.drop(columns=[col1,col2…])
1 | demo.drop(columns=['a','c']) |
刪除row
DataFrame.drop(index=[index1,index2…])
1 | demo.drop(index=[0,2]) |
資料運算函式: sum(), min(), max(), median(), mean()
DataFrame.資料運算函式( axis )
預設以 index(列) 作為計算,可以修改axis
來決定以 columns
或 index
來計算
sum() | min() | max() | median() | mean() |
---|---|---|---|---|
加總 | 最小值 | 最大值 | 中位數 | 平均值 |
其他常用的資料運算函式
節錄至[Day13]Learning Pandas - 處理資料分組
3. Index
前幾筆資料
DataFrame.head(N)
取出前N行的資料
後幾筆資料
DataFrame.tail(N)
取出後N行的資料
遮罩
DataFrame[ 搜尋條件 ]
1 | demo[demo['1st']>5] |
Fancy索引
DataFrame[ [column1,column2…] ]
傳遞一個list當作index去取得元素
1 | demo[['1st','3rd']] |
loc取值
DataFrame.loc[ [index1,index2…] ]
以index的名稱去取值
1 | demo.loc['A'] |
iloc取值
DataFrame.iloc[ index1的編號,index2的編號… ]
以index的編號去取值
1 | demo.iloc[:2,:2] |