개인적으로 업무에서 파이썬을 활용하는 것은 주로 단순 업무의 반복을 자동화하기 위해서가 많다.
오늘은 그래서 파이썬을 활용해서 엑셀 파일을 합치는 방법을 알아보겠습니다.
회사에서 6월 경에는 상반기가 마무리되기 때문에 각종 자료 요청이 오는데요.
그래서 지난 통계를 제출해 달라는 요청이 옵니다.
그래서 각종 통계를 합쳐야하는 경우가 많은데요.
오늘은 이런 통계 엑셀을 하나의 파일로 합치는 방법을 알아보겠습니다.
파이썬으로 엑셀 합치기
오늘 파이썬에서 주로 활용할 라이브러리는 glob과 append입니다.
그 외의 엑셀과 판다스는 저번 포스팅에서 설명하였으니 참고하시기 바랍니다.
2022.05.31 - [Tip & Tech/Python] - 파이썬으로 엑셀하기 - sumif 함수 구현
먼저 정말 단순하게 동일한 포맷의 엑셀을 합치는 것은 append를 통해서 가능합니다.
기본적으로 시트의 칼럼이 동일하다면 아래처럼 append를 활용해서 단순 복사 붙여넣기가 가능합니다.
import pandas as pd
df0 = pd.read_excel("./Down/1월_study.xlsx")
df1 = pd.read_excel("./Down/2월_study.xlsx")
df2 = pd.read_excel("./Down/3월_study.xlsx")
df3 = pd.read_excel("./Down/4월_study.xlsx")
df4 = pd.read_excel("./Down/5월_study.xlsx")
merge_df = pd.DataFrame()
merge_df = merge_df.append(df0)
merge_df = merge_df.append(df1)
merge_df = merge_df.append(df2)
merge_df = merge_df.append(df3)
merge_df = merge_df.append(df4)
merge_df.to_excel('./Down/연간학습.xlsx')
하지만 append는 수직으로만 결합이 가능한데요.
수평으로도 결합을 해야한다면 concat을 활용하시면 됩니다.
concat은 샘플코드로 알아보겠습니다.
import pandas as pd
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2'],'B': ['B0', 'B1', 'B2'],'C': ['C0', 'C1', 'C2'],'D': ['D0', 'D1', 'D2']},index=[0, 1, 2])
df2 = pd.DataFrame({'A': ['A3', 'A4', 'A5'],'B': ['B3', 'B4', 'B5'],'C': ['C3', 'C4', 'C5'],'D': ['D3', 'D4', 'D5']},index=[3, 4, 5])
df_total = pd.concat([df1, df2])
print(df_total)
이렇게 concat을 활용해서도 합칠수 있습니다.
아래의 설명은 판다스 치트 시트에서 참고하였습니다.
또한 보다 자세한 설명은 판다스 자습서에서 확인하실 수 있습니다.
이 때 현재는 폴더를 제가 수동으로 지정해서 파일을 불러왔는데요.
glob함수를 통해서 해당 폴더의 파일을 다 불러올 수 있습니다.
간단하게 코드로 실행해보면, 아래처럼 원하는 폴더의 파일을 불러올 수 있습니다.
import pandas as pd
import glob
file_list = glob.glob('C:\python\down\study_*.xlsx')
print(file_list)
실제로 down 폴더에는 아래처럼 엑셀이 4개 있었고, 파이썬에서 잘 불러옴을 알 수 있습니다.
그리고 이를 활용해서 해당폴더에 있는 엑셀을 모두 더해서, 연간학습.xlsx로 출력할 것인데요.
아래와 같은 간단한 코드를 통해서 실행할 수 있습니다.
import pandas as pd
import glob
merge_df = pd.DataFrame()
for f in glob.glob('C:\python\down\study_*.xlsx'):
df = pd.read_excel(f)
merge_df = merge_df.append(df, ignore_index=True)
print(merge_df)
merge_df.to_excel('./Down/연간학습.xlsx')
down폴더 아래에 있는 모든 엑셀이 합쳐져서 연간학습.xlsx로 합쳐졌습니다.
실제로 파일을 열어보면 개별 달에 있는 데이터가 잘 합쳐진 것을 확인할 수 있습니다.
이렇게 단순한 엑셀 작업을 반복해야 한다면, 이를 파이썬 코드를 통해서 쉽게 할 수 있는데요.
이렇게 파이썬을 활용하면 다양한 엑셀 작업을 손쉽게 할 수 있는데요.
잘 활용하시기 바랍니다.
'Tip & Tech > Python' 카테고리의 다른 글
파이썬 AES로 암호화하고 푸는 방법 (0) | 2022.06.16 |
---|---|
파이썬 가상환경 만들기 (2) | 2022.06.02 |
파이썬으로 엑셀하기 - sumif 함수 구현 (2) | 2022.05.31 |
파이썬 워드 클라우드(Word cloud) 만들기 (6) | 2022.04.26 |
파이썬 웹페이지 표 크롤링 하는 방법(make2d) (10) | 2022.03.08 |