여러 Excel 파일을 python pander로 Import하여 하나의 데이터 프레임에 연결
디렉토리에서 팬더로 엑셀 파일을 여러 개 읽어 하나의 빅데이터프레임에 연결하고 싶습니다.하지만 나는 그것을 이해할 수 없었다.for 루프와 연결된 데이터 프레임 구축에 대한 도움이 필요합니다.지금까지의 내용은 다음과 같습니다.
import sys
import csv
import glob
import pandas as pd
# get data file names
path =r'C:\DRO\DCL_rawdata_files\excelfiles'
filenames = glob.glob(path + "/*.xlsx")
dfs = []
for df in dfs:
xl_file = pd.ExcelFile(filenames)
df=xl_file.parse('Sheet1')
dfs.concat(df, ignore_index=True)
코멘트에서 설명한 것처럼 빈 목록을 루프하고 있는 오류도 있습니다.
동일한 Excel 파일을 5개씩 첨부하는 예를 들어 다음과 같습니다.
(1) 수입:
import os
import pandas as pd
(2) 리스트 파일:
path = os.getcwd()
files = os.listdir(path)
files
출력:
['.DS_Store',
'.ipynb_checkpoints',
'.localized',
'Screen Shot 2013-12-28 at 7.15.45 PM.png',
'test1 2.xls',
'test1 3.xls',
'test1 4.xls',
'test1 5.xls',
'test1.xls',
'Untitled0.ipynb',
'Werewolf Modelling',
'~$Random Numbers.xlsx']
(3) 'xls' 파일을 선택합니다.
files_xls = [f for f in files if f[-3:] == 'xls']
files_xls
출력:
['test1 2.xls', 'test1 3.xls', 'test1 4.xls', 'test1 5.xls', 'test1.xls']
(4) 빈 데이터 프레임 초기화:
df = pd.DataFrame()
(5) 빈 데이터 프레임에 추가할 파일 목록을 루프 오버합니다.
for f in files_xls:
data = pd.read_excel(f, 'Sheet1')
df = df.append(data)
(6) 새로운 데이터 프레임을 즐기세요. :-)
df
출력:
Result Sample
0 a 1
1 b 2
2 c 3
3 d 4
4 e 5
5 f 6
6 g 7
7 h 8
8 i 9
9 j 10
0 a 1
1 b 2
2 c 3
3 d 4
4 e 5
5 f 6
6 g 7
7 h 8
8 i 9
9 j 10
0 a 1
1 b 2
2 c 3
3 d 4
4 e 5
5 f 6
6 g 7
7 h 8
8 i 9
9 j 10
0 a 1
1 b 2
2 c 3
3 d 4
4 e 5
5 f 6
6 g 7
7 h 8
8 i 9
9 j 10
0 a 1
1 b 2
2 c 3
3 d 4
4 e 5
5 f 6
6 g 7
7 h 8
8 i 9
9 j 10
이것은 python 2.x에서 동작합니다.
엑셀 파일이 있는 디렉토리에 있다
http://pbpython.com/excel-file-combine.html 를 참조해 주세요.
import numpy as np
import pandas as pd
import glob
all_data = pd.DataFrame()
for f in glob.glob("*.xlsx"):
df = pd.read_excel(f)
all_data = all_data.append(df,ignore_index=True)
# now save the data frame
writer = pd.ExcelWriter('output.xlsx')
all_data.to_excel(writer,'sheet1')
writer.save()
목록 이해는 내부에서 사용할 수 있습니다.
import os
import pandas
path = '/path/to/directory/'
filenames = [file for file in os.listdir(path) if file.endswith('.xlsx')]
df = pd.concat([pd.read_excel(path + file) for file in filenames], ignore_index=True)
와 함께ignore_index = True
의 지표df
에는 0, …, n - 1이라는 라벨이 붙습니다.
그것을 하는 더 깔끔한 방법이 있다.
# import libraries
import glob
import pandas as pd
# get the absolute path of all Excel files
allExcelFiles = glob.glob("/path/to/Excel/files/*.xlsx")
# read all Excel files at once
df = pd.concat(pd.read_excel(excelFile) for excelFile in allExcelFiles)
이것은 다음과 같은 방법으로 실행할 수 있습니다.
import pandas as pd
import glob
all_data = pd.DataFrame()
for f in glob.glob("/path/to/directory/*.xlsx"):
df = pd.read_excel(f)
all_data = all_data.append(df,ignore_index=True)
all_data.to_csv("new_combined_file.csv")
#실패하다
import pandas as pd
from glob import glob
dfs=[]
for f in glob("data/*.xlsx"):
dfs.append(pd.read_excel(f))
df=pd.concat(dfs, ignore_index=True)
import pandas as pd
import os
os.chdir('...')
#read first file for column names
fdf= pd.read_excel("first_file.xlsx", sheet_name="sheet_name")
#create counter to segregate the different file's data
fdf["counter"]=1
nm= list(fdf)
c=2
#read first 1000 files
for i in os.listdir():
print(c)
if c<1001:
if "xlsx" in i:
df= pd.read_excel(i, sheet_name="sheet_name")
df["counter"]=c
if list(df)==nm:
fdf=fdf.append(df)
c+=1
else:
print("headers name not match")
else:
print("not xlsx")
fdf=fdf.reset_index(drop=True)
#relax
import pandas as pd
import os
files = [file for file in os.listdir('./Salesfolder')]
all_month_sales= pd.DataFrame()
for file in files
df= pd.read_csv("./Salesfolder/"+file)
all_months_data=pd.concat([all_months_sales,df])
all_months_data.to_csv("all_data.csv",index=False)
폴더(내 경우 Sales folder)에서 모든 .xls 파일을 읽을 수 있습니다.로컬 경로도 마찬가지입니다.~ 를 반복하여 빈 데이터 프레임에 넣을 수 있으며 데이터 프레임을 이 프레임에 연결할 수 있습니다.또한 모든 달의 데이터를 하나의 CSV 파일로 내보냈습니다.
언급URL : https://stackoverflow.com/questions/20908018/import-multiple-excel-files-into-python-pandas-and-concatenate-them-into-one-dat
'source' 카테고리의 다른 글
행렬을 3열 표로 변환합니다('역방향 피벗', '비회전', '평탄', '정규화'). (0) | 2023.04.17 |
---|---|
VSO를 선택하고 다음을 선택합니다. (0) | 2023.04.17 |
커밋 메시지에 Git 지점 이름을 추가하는 방법 (0) | 2023.04.17 |
시간 범위를 일, 시간 및 분 단위로 포맷합니다. (0) | 2023.04.17 |
초기 git commit을 되돌리는 방법 (0) | 2023.04.17 |