white and blue Sato chart

Python學習筆記: 批次讀取excel檔案(同一目錄下),彙整成一個dataframe

批次讀取excel檔案(附檔名為xls或xlsx)

實做的資料夾目錄結構如下:

列出目錄下的所有子目錄及檔案,指令為:tree/f

D:\Python Data>tree/f 20220805_108-110年雲林縣使用牌照稅稅源統計表

D:\PYTHON DATA\20220805_108-110年雲林縣使用牌照稅稅源統計表
│ 108年雲林縣使用牌照稅稅源統計表.xls
│ 109年雲林縣使用牌照稅稅源統計表.xlsx
│ 110年雲林縣使用牌照稅稅源統計表.xlsx
│ Untitled.ipynb

└─.ipynb_checkpoints
Untitled-checkpoint.ipynb

第一種方法:

import pandas as pd
import numpy as np
import os

path = os.getcwd()

print(f'目前工作目錄為:{path}')
# List files:
files = os.listdir(path)
print(files)
目前工作目錄為:D:\Python Data\20220805_108-110年雲林縣使用牌照稅稅源統計表
['.ipynb_checkpoints', '108年雲林縣使用牌照稅稅源統計表.xls', '109年雲林縣使用牌照稅稅源統計表.xlsx', '110年雲林縣使用牌照稅稅源統計表.xlsx', 'Untitled.ipynb']
files_xlsx = [f for f in files if f[-4:] == "xlsx"]
files_xls = [f for f in files if f[-3:] == "xls"]
files_xls.extend(files_xlsx)

print(f'目前的目錄下共有:{len(files_xls)}個excel檔案')

for i, file_name in enumerate(files_xls):
    print(f'第{i+1}個檔案為:{file_name}')
目前的目錄下共有:3個excel檔案
第1個檔案為:108年雲林縣使用牌照稅稅源統計表.xls
第2個檔案為:109年雲林縣使用牌照稅稅源統計表.xlsx
第3個檔案為:110年雲林縣使用牌照稅稅源統計表.xlsx
df = pd.DataFrame() # 建立一個空白的dataframe來串接所有的檔案
for file_name in files_xls:
    data = pd.read_excel(file_name)
    print(f'檔名:{file_name}資料筆數為{len(data)}筆')
    df = pd.concat([df, data], ignore_index=True)

print(f'合併後的dataframe資料筆數共為{len(df)}筆')
df.head()

 

第二種方法:

import glob
import pandas as pd
import numpy as np
import os
path = os.getcwd()
print(path)
files = glob.glob("*.xls") + glob.glob("*.xlsx")
for file in files:
    print(file)
D:\Python Data\20220805_108-110年雲林縣使用牌照稅稅源統計表
108年雲林縣使用牌照稅稅源統計表.xls
109年雲林縣使用牌照稅稅源統計表.xlsx
110年雲林縣使用牌照稅稅源統計表.xlsx
df = pd.DataFrame() # 建立一個空白的dataframe來串接所有的檔案
for file_name in files:
    data = pd.read_excel(file_name)
    print(f'檔名:{file_name}資料筆數為{len(data)}筆')
    df = pd.concat([df, data], ignore_index=True)

print(f'合併後的dataframe資料筆數共為{len(df)}筆')
df.head()

發佈留言

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