從生活應用了解Pandas -- 編輯檔案

張庭瑋 Gary Chang 2023/08/07 10:00:00
670

簡介

 

前一篇文章中,我們簡單介紹了一些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就可以把資料迅速地彙整。

 

 

張庭瑋 Gary Chang