일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- fastapi
- 빅데이터분석기사
- 머신러닝
- 예제소스
- DASH
- KNN
- CUDA
- qgis
- GPU
- streamlit
- Ai
- 성능
- pytorch
- 딥러닝
- 1유형
- QGIS설치
- 공간분석
- 실기
- 2유형
- gradio
- ㅂ
- 인공지능
- 공간시각화
- webserving
- 3유형
- ml 웹서빙
- 캐글
- Kaggle
- dl
- K최근접이웃
Archives
- Today
- Total
에코프로.AI
[Python] 동일 폴더의 Excel 파일 모두 합치기 본문
데이터 분석관련 - 동일한 데이터가 년별,월별,일별 로 엑셀파일이 나눠져 있는 경우,
하나의 파일로 합치는 작업관련하여, 파이썬 코드를 만들었습니다.
라이브러리 임포트
import os
import pandas as pd
기본경로 설정
path_dateset = 'G:/내 드라이브/DataSet/'
확장자 가져오기 (Ex) .csv, .xlsx
- 2개의 확장자(csv, xlsx) 별로 파이썬 호출 함수가 달라서, 구분관련하여 확장자를 가져오는 함수 구현
def extract_extension(file_path):
_, file_extension = os.path.splitext(file_path)
return file_extension
extract_extension('G:/내 드라이브/DataSet/서울특별시 공공자전거 이용정보(일별)/서울특별시 공공자전거 이용정보(일별)_2406.csv')
'.csv'
파일명 가져오기
- path에서 파일명을 가져오는 함수
def extract_filename(file_path):
file_name = os.path.basename(file_path)
filename_without_extension, _ = os.path.splitext(file_name)
return filename_without_extension
extract_filename('G:/내 드라이브/DataSet/서울특별시 공공자전거 이용정보(일별)/서울특별시 공공자전거 이용정보(일별)_2406.csv')
'서울특별시 공공자전거 이용정보(일별)_2406'
파일 읽기
- 'utf-8'로 불러오다가 오류 발생 시, 'cp949'인코딩으로 다시한번 불러오도록 예외처리!
def read_file(file_path):
extension = extract_extension(file_path)
if ".xlsx" == extension:
return pd.read_excel(file_path)
if ".csv" == extension:
try:
return pd.read_csv(file_path, encoding='utf-8')
except BaseException as e:
return pd.read_csv(file_path, encoding='cp949')
특정 폴더의 csx, xlsx 파일들 확인
- 파일별 - 컬럼명, 데이터개수 확인관련
def check_file(path_dateset, path_sub):
path = path_dateset + path_sub
#파일 경로명 변경
file_list = os.listdir(path)
file_lists = [file for file in file_list if file.endswith((".csv", ".xlsx"))]
excel = pd.DataFrame()
print('path : ', path)
for _, file in enumerate(file_lists):
try:
df = read_file(path + file)
print('==============================================================')
print(extract_extension(file) + ', ' + file + ', ' + str(len(df)))
print(list(df.columns))
print(list(df.iloc[1]))
except:
print('- Err : ', file)
특정 폴더의 csx, xlsx 파일들 합치기
- 저장 시, 인코딩을 cp949로 하니깐 대용량 파일 불러올때 오래걸림. "utf-8"로 변경
# new_filename = '저장파일이름'
# columns = '저장할 컬럼 리스트
def merge_file(path_dateset, path_sub, new_filename = 'merge', columns = ""):
path = path_dateset + path_sub
#파일 경로명 변경
file_list = os.listdir(path)
file_lists = [file for file in file_list if file.endswith((".csv", ".xlsx"))]
excel = pd.DataFrame()
print('path : ', path)
for i, file in enumerate(file_lists):
df = read_file(path + file)
if (i > 0):
if columns == "":
df = df.iloc[1:]
else:
df = df.iloc[1:][columns]
else:
if columns == "":
df = df
else:
df = df[columns]
# excel = excel.append(df , ignore_index=True) #파일 하나에 다른 파일 추가하기(파일 합치기)
excel = pd.concat([excel, df], ignore_index=True)
print('==============================================================')
print(extract_extension(file) + ', ' + file + ', ' + str(len(df)))
print(list(df.columns))
# excel.to_csv(path+'merge.csv',index=False,encoding='euc-kr')
# excel.to_csv(path + new_filename + '.csv', index=False, encoding='cp949')
excel.to_csv(path + new_filename + '.csv', index=False, encoding='utf-8')
서울특별시 공공자전거 이용정보(일별)
- check_file 함수를 호출하여, '서울특별시 공공자전거 이용정보(일별)/' 폴더안의 엑셀파일들의
컬럼이 모두 동일 한지, 데이터 포맷이 동일한지 확인
path_sub = '서울특별시 공공자전거 이용정보(일별)/'
check_file(path_dateset, path_sub)
- merge_file 함수를 호출하여, '서울특별시 공공자전거 이용정보(일별).csv' 의 파일명으로 병합된 엑셀파일을 생성
merge_file(path_dateset, path_sub, '서울특별시 공공자전거 이용정보(일별)', '')
끝~

'AI Tutorial' 카테고리의 다른 글
[JupyterNotebook] 유용한 단축키 모음 (0) | 2024.10.18 |
---|---|
[Python] 대용량 csv 엑셀파일 읽기 (0) | 2024.10.16 |
[사전학습] ObjectDetection (Feat. efficientdet, OpenCV) (1) | 2024.09.04 |
[텍스트마이닝] 감성분석-네이버 영화리뷰 (3) | 2024.09.04 |
[텍스트마이닝] 이란? (0) | 2024.09.03 |