從生活應用了解Pandas -- 編輯檔案
簡介
在前一篇文章中,我們簡單介紹了一些Pandas在Excel的使用情境,這一篇會針對編輯Excel內資料的指令做介紹
主要應用情境:
1. 修改文件結構
2. 修改檔案內容
3. inplace 及 index
修改文件結構 -- 重新命名 rename
用來調整文件的“外框”
外框指的是 AB (欄位 Column) 和 1234 (列 row / index)
欄(column)
data.rename (columns = {‘舊欄位名稱’: ‘新欄位名稱’}, inplace = True)
列(row)
data.rename(index = {‘舊列名稱’: ’新列名稱’}, inplace = True)
例如,我們有個統計蘋果和香蕉的資料
import pandas as pd
data= pd.DataFrame({'蘋果': [1,2], '香蕉': [4,5]}, index=['A組','B組'])
print(data)
結果如下
蘋果 香蕉
A組 1 4
B組 2 5
現在想要把分類的方式,換成用“顏色”
把蘋果換成紅色,香蕉換成黃色
就可以用rename
import pandas as pd
data= pd.DataFrame({'蘋果': [1,2], '香蕉': [4,5]}, index=['A組','B組'])
#把水果換成顏色
data.rename(columns={'蘋果': '紅色', '香蕉':'黃色'}, inplace = True)
print(data)
結果如下
紅色 黃色
A組 1 4
B組 2 5
同時對列和欄進行調整
import pandas as pd
data= pd.DataFrame({'蘋果': [1,2], '香蕉': [4,5]}, index=['A組','B組'])
data.rename(columns = {'蘋果':'顆', '香蕉': '根'}, inplace = True)
data.rename(index= {'A組':'蘋果', 'B組':'香蕉'}, inplace= True)
print(data)
結果如下
顆 根
蘋果 1 4
香蕉 2 5
因為DataFrame這個參數是預設給欄(Column) 使用,所以只有要修改列值的時候才要把index 寫出來
修改檔案內容 -- 取代replace
例如圖中的水果名稱和後面的數量
我們把原本的數字,改成中文並加上量詞
import pandas as pd
data= pd.DataFrame({'蘋果': [1,2], '香蕉': [4,5]}, index=['A組','B組'])
data['香蕉']= data['香蕉'].replace({4:'四根'})
data['蘋果']= data['蘋果'].replace({1:'一顆'})
print(data)
結果如下
蘋果 香蕉
A組 一顆 四根
B組 2 5
可以直接當作是Word / Excel 裡面的取代功能
只是透過Pandas可以一次取代兩個以上的數值
既節省時間,又能防止操作錯誤
細節補充:inplace & index
1. inplace
inplace = True / False 的差異?
True 的場合:直接將修改的值覆蓋掉原有的值
就像直接儲存已編輯的word 檔案。只會有一個檔案
False 的場合:修改後的值會會保留,不影響原有的值
對已編輯的word,另存新檔。所以這時候會有兩個檔案
謹慎一點的話,我們可以固定使用False,把修改後的檔案放到另個新命名的變數裡面
不過忘記也沒關係,因為 inplace = False 是預設值,就算不寫出來也可以
偷懶不想另外命名變數,又想要直接使用處理用的檔案,才要加一個inplace = True
2. index
上面的範例也可以不寫index,但pandas還是會預設一組數值給你
import pandas as pd
data= pd.DataFrame({'蘋果': [1,2], '香蕉': [4,5]})
print (data)
結果如下:
蘋果 香蕉
0 1 4
1 2 5
處理Excel檔案的時候當然也會產生一組index的數列
難道要全部手動重打一次嗎?
不用擔心,只要在文件產生的時候把這個功能“關掉”就好了
data.to_excel('產生的檔案.xlsx', index=False)
沒有寫出來的話,預設為 index = True
總結
有時候會從不同人手中拿到同一份資料庫的文件內容,如果用詞有出入,整理資料時就會相當頭痛,妥善使用rename 和 replace就可以把資料迅速地彙整。