iT邦幫忙

0

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

  • 分享至 

  • xImage
  •  

本文同步發表於小弟自架網站:微確幸資訊站

本文為網友於ithelp發問之解答:

網友有n個excel檔案,每個檔案中都有time、X、Y、Z工作表。
網友想要把每個excel檔案中「相同名稱」的工作表讀出來,並整合成同一個dataframe,
然後再來做後續的處理。

import pandas as pd
import os

path = os.getcwd()
# List files:
files = os.listdir(path)
print(files)
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)
for i, element in enumerate(files_xls):
    print(i, element)
print(len(files_xls))

print(files_xls)

['.ipynb_checkpoints', '1.xlsx', '2.xlsx', '3.xlsx', 'Untitled.ipynb']
0 1.xlsx
1 2.xlsx
2 3.xlsx
3
['1.xlsx', '2.xlsx', '3.xlsx']

import warnings
sh_list = ['time', 'X', 'Y', 'Z']

for s in sh_list:
    df = pd.DataFrame()
    print(f'工作表變數:{s}')
    for f in files_xls:
        data = pd.read_excel(f, sheet_name=s)        
        warnings.simplefilter("ignore") #不顯示讀檔驗證警告
        print(f'檔案名稱:{f},工作表{s}的原始資料筆數:{len(data)}')

        df = df.append(data, ignore_index=True) # 將所有檔案中相同名稱的工作表dataframe合併
    print(f'dataframe_{s}的總資料筆數:{len(df)}')
    
    
    exec('{} = df.copy()'.format('df_'+s)) # 將合併好的工作表dataframe存到一個新的名稱如df_time

工作表變數:time
檔案名稱:1.xlsx,工作表time的原始資料筆數:224
檔案名稱:2.xlsx,工作表time的原始資料筆數:475
檔案名稱:3.xlsx,工作表time的原始資料筆數:469
dataframe_time的總資料筆數:1168
工作表變數:X
檔案名稱:1.xlsx,工作表X的原始資料筆數:224
檔案名稱:2.xlsx,工作表X的原始資料筆數:475
檔案名稱:3.xlsx,工作表X的原始資料筆數:469
dataframe_X的總資料筆數:1168
工作表變數:Y
檔案名稱:1.xlsx,工作表Y的原始資料筆數:224
檔案名稱:2.xlsx,工作表Y的原始資料筆數:475
檔案名稱:3.xlsx,工作表Y的原始資料筆數:469
dataframe_Y的總資料筆數:1168
工作表變數:Z
檔案名稱:1.xlsx,工作表Z的原始資料筆數:224
檔案名稱:2.xlsx,工作表Z的原始資料筆數:475
檔案名稱:3.xlsx,工作表Z的原始資料筆數:469
dataframe_Z的總資料筆數:1168

print(len(df_time))
df_time.head()

1168

0 1
0 0 nan
1 0 nan
2 0 nan
3 0 nan
4 0 nan
print(len(df_X))
df_X.ilco[:, :3]head()

1168

0.04102 -0.10547 -0.1748
0 -0.41943 -0.10059 0.20605
1 0.05176 0.00586 -0.03516
2 -0.70557 -0.48193 -0.12988
3 0.05127 -0.2793 -0.35889
4 0.03027 -0.59082 -0.97949
print(len(df_Y))
df_Y.ilco[:, :3]head()

1168

-0.15186 -0.25 -0.26367
0 -0.23535 0.28613 0.49023
1 -0.24512 -0.16797 -0.06836
2 0.16846 0.25098 0.11035
3 0.24561 0.35889 0.19336
4 -0.16406 -0.15771 -0.09717
print(len(df_Z))
df_Z.ilco[:, :3]head()

1168

-0.021 0.05566 0.05078
0 0.31445 0.10303 -0.21191
1 0.10693 -0.03516 0.021
2 -0.06006 -0.10205 -0.06689
3 -0.14209 -0.2915 -0.09131
4 -0.23535 -0.2041 -0.08936

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言