批次讀取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()
檔名:108年雲林縣使用牌照稅稅源統計表.xls資料筆數為24筆 檔名:109年雲林縣使用牌照稅稅源統計表.xlsx資料筆數為24筆 檔名:110年雲林縣使用牌照稅稅源統計表.xlsx資料筆數為24筆 合併後的dataframe資料筆數共為72筆
汽缸總排氣量 | 免稅輛數總計 | 應稅輛數總計 | 稅額總計 | 自用小客車免稅輛數 | 自用小客車應稅輛數 | 自用小客車稅額 | … | 機車應稅輛數 | 機車稅額 |
0 | 總計 | 34184 | 249856 | ###### | 32213 | 184478 | 1E+06 | 41 | 8295 |
1 | 燃油車合計 | 34138 | 249856 | ###### | 32167 | 184478 | 1E+06 | 41 | 8295 |
2 | 150(含以下)立方公分 | 0 | 0 | ###### | 0 | 0 | 0 | 0 | 0 |
3 | 151-250立方公分 | 27 | 5312 | ###### | 0 | 0 | 0 | 27 | 5312 |
4 | 251-500立方公分 | 1 | 1279 | ###### | 0 | 1 | 0 | 1 | 1278 |
第二種方法:
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()
檔名:108年雲林縣使用牌照稅稅源統計表.xls資料筆數為24筆 檔名:109年雲林縣使用牌照稅稅源統計表.xlsx資料筆數為24筆 檔名:110年雲林縣使用牌照稅稅源統計表.xlsx資料筆數為24筆 合併後的dataframe資料筆數共為72筆
汽缸總排氣量 | 免稅輛數總計 | 應稅輛數總計 | 稅額總計 | 自用小客車免稅輛數 | 自用小客車應稅輛數 | 自用小客車稅額 | … | 機車應稅輛數 | 機車稅額 |
0 | 總計 | 34184 | 249856 | ###### | 32213 | 184478 | 1E+06 | 41 | 8295 |
1 | 燃油車合計 | 34138 | 249856 | ###### | 32167 | 184478 | 1E+06 | 41 | 8295 |
2 | 150(含以下)立方公分 | 0 | 0 | ###### | 0 | 0 | 0 | 0 | 0 |
3 | 151-250立方公分 | 27 | 5312 | ###### | 0 | 0 | 0 | 27 | 5312 |
4 | 251-500立方公分 | 1 | 1279 | ###### | 0 | 1 | 0 | 1 | 1278 |