MaDi's Blog

一個紀錄自己在轉職軟體工程師路上的學習小空間

0%

Pandas常用語法整理(二) astype/處理空值資料/stack/unstack

Table of Contents:

  1. 轉換DataFrame資料型態: astype
  2. 處理空值資料: isnull/notnull/dropna/fillna
  3. MultiIndex與DataFrame的轉換: stack/unstack

DataFrame轉換資料型態

DataFrame.astype(資料型態)

1
2
3
# 先建立一個DataFrame
demo_dict = {'a':[1,2,3],'b':[2,4,6],'c':[3,6,9]}
demo = pd.DataFrame.from_dict(demo_dict)

1
demo.astype('float')

處理空值資料

開始前,先比較None/NaN兩者資料型態的差異

1
2
type(None)   # NoneType
type(np.nan) # float
  1. None是一種object,而NaN則是浮點數
  2. 當使用sum(),min(),count()…等函式時,或資料內含有None就會出錯
  3. 為了表達這個資料缺失型態,NaN 因而誕生
  4. 當使用NaN進行前述運算時,需使用np.nansum(),np.nanmin()

Pandas是擅長用來處理資料的套件,所以在處理資料的過程中肯定會遇到這些問題,因此誕生了isnull(),notnull(),dropna(),fillna()…等等函式,以下分別介紹這些常見的函式~

首先先建立一個含有缺失值的DataFrame

1
2
demo = pd.DataFrame({'a':[1,2,np.nan],'b':[2,None,6]})
demo

NaN,None在DataFrame都視為是一種缺失值,所以都以NaN表示

1. isnull()

DataFrame.isnull()

檢查是否空值

1
demo.isnull()

2. notnull()

DataFrame.notnull()

檢查不是空值

1
demo.notnull()

3. dropna():

DataFrame.dropna()

刪除空值,會直接刪除整欄或整列

1
demo.dropna()

4. fillna():

DataFrame.fillna( 取代的值 )

自定義要填入空值什麼值

1
demo.fillna('色即是空')

MultiIndex與DataFrame的轉換

函式 轉換過程
stack() DataFrame->MultiIndex
unstack() MultiIndex->DataFrame

建立一個DataFrame來示範

1
2
3
4
books = pd.Series({'a':'beam','b':'column','c':'hinge'})
tools = pd.Series({'a':'E-tabs','b':'Sap2000','c':'Revit'})

civil = pd.DataFrame({'books':books,'tools':tools})

DataFrame.stack()

1
2
3
4
5
6
7
8
9
civil_multiIndex = civil.stack()

a books beam
tools E-tabs
b books column
tools Sap2000
c books hinge
tools Revit
dtype: object

multiIndex.unstack()

1
civil_multiIndex.unstack()

參考