Pandas 與 Excel

      在〈Pandas 與 Excel〉中尚無留言

讀取、儲存成 Excel 檔

讀取與儲存 .xlsx 檔,只需安裝 openpyxl 套件。

pip install openpyxl

底下代碼將把 px 取得的 df ,存成 gdp.xlsx 的 Excel  檔,其中的 index=None 表示 df 的 index 不會儲存到 Excel 檔案中

import plotly_express as px
df=px.data.gapminder().query('year==2007')
df.to_excel("gdp.xlsx", sheet_name='Sheet1', index=None)

請注意上述的 to_excel 會把原本的檔案刪除並重建新檔案,所以原先的檔案若有其它的工作表,都會一併不見。

讀取舊版 .xls 檔

若要讀取舊版的 .xls 檔,還需安裝 xlrd 套件。

pip install xlrd

底下代碼由 pd.read_excel 讀取 Excel 檔。

sheet_name=None 時,會把所有的工作表全都讀入,若沒有指定,則只讀取第一張工作表,若要指定某幾張工作表,可用如下方法指定

sheet_name=['202401', '202402']

index_col 是指定由第幾欄當作索引,如果沒有指定,則使用列數當索引。

keep_default_na = True 時,Excel 中沒有資料的儲存格將顯示 Nan。keep-default_na=False 時,沒有資料的儲存格將顯示空字串。

import pandas as pd
df=pd.read_excel("gdp.xlsx", sheet_name='Sheet1',index_col=0, keep_default_na=False)
print(df)

修改 xlsx

若只想取代某個工作表,並保留其它的工作表,就需使用如下方式。

with pd.ExcelWriter(file, mode='a', engine='openpyxl', if_sheet_exists="replace") as writer:
    df.to_excel(writer, sheet_name=sheetname, index=False)

if_sheet_exists 是如果工作表已存在,則使用 replace 取代原工作表。

if_sheet_exists 有四種模式。
error : 直接丟出錯誤
new : 保留原先工作表(Sheet1),然後建立新的工作表,名稱為 Sheet11, Sheet12….
replace : 刪除原先工作表,然後建立新的工作表
overlay : 從指定的位置覆寫儲存格,通常會再加入 startrow=xxx, startcol=xxx。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *