오늘은 Python을 사용해서 다수의 csv 파일을 한 번에 합쳐보겠습니다
저는 기상자료개방포털이라는 곳에서 기상자료를 가지고 옵니다
짧은 특정 기간 자료가 아니라 1년 동안의 1시간 단위 자료, 일 단위 자료 이렇게 자료를 크게 가져올 경우
데이터를 쪼개서 주는 경우가 있습니다
특히 제가 이번에 사용중인 1분 단위 자료는 자료의 양이 방대하기 때문에 한 달 단위로 쪼개서 제공합니다
대충 이런 모양이 됩니다
하지만 이 친구들을 전부 따로 사용할게 아니라 한 번에 사용하고 싶기 때문에
한 번에 묶는 방법을 생각해서 코드를 짜봤습니다
혹시 더 깔끔하고 간단하게 짜셨거나 조언이 있으신 분들은 언제든지 댓글 부탁드립니다!
#Lbrary Import
import numpy as np
import tensorflow as tf
import pandas as pd
#------------------------------------------------------------------------------
df0 = pd.DataFrame()
for i in np.arange(2000, 2021, 1):
for j in np.arange(1, 13, 1):
if j < 10:
globals()['s_df{0}_{1}'.format(i, j)] = pd.read_csv("/home/lsh/python/data/minute/SURFACE_ASOS_105_MI_{0}-0{1}.csv".format(i, j), encoding = 'cp949')
if j >= 10 and j < 13:
globals()['s_df{0}_{1}'.format(i, j)] = pd.read_csv("/home/lsh/python/data/minute/SURFACE_ASOS_105_MI_{0}-{1}.csv".format(i, j), encoding = 'cp949')
df0 = pd.concat([df0, globals()['s_df{0}_{1}'.format(i, j)]])
df0.to_csv('/home/lsh/python/data/gn_min.csv', encoding = "utf-8-sig")
제가 짠 코드에 대해 쪼금 설명을 드리면
제가 사용한 방식은 초기에 빈 데이터 프레임을 하나 만들어서
반복문을 사용해 순서대로 파일들을 읽은 후 빈 데이터 프레임에 concat을 사용해서 연결하고
그 변수를 다시 재할당해서 계속 이어 붙이는 방식을 사용했습니다
파일 이름에서 1월부터 9월이 01, 02 처럼 앞에 0이 붙이는 방식을 사용했기 때문에
조건문을 사용해서 따로 읽을 수 있도록 했습니다
모두 끝나면 csv 파일로 저장하도록 했습니다
완료되는데 소요시간은 거의 2시간 정도 걸린 것 같습니다
워낙 데이터 양이 많다보니까 오래 걸린 것 같습니다
성공적으로 파일이 만들어졌고 파이썬으로 열어보아도 큰 문제 없이 잘 연결되었습니다
다 보여드리기엔 너무 많아서 경계 부분 하나만 보여드리겠습니다!
원래는 엑셀 합치기 프로그램을 사용했었는데 제가 원하는 것처럼 값을 이어 붙이는게 아니라
그냥 위에 컬럼부터 다 통째로 가져다 붙여버려서 코드를 짜봤는데
원하는대로 만들어져서 다행인 것 같습니다
아마 다음 포스팅부터는 코드를 쫌 더 예쁘게 짜보려고 합니다
진행상황을 표시하는 식으로 해볼거고 유용한 기능들을 만들면
이전에 사용했던 GUI 프로그래밍으로 실행기 같은 것도 만들어보려고 합니다
최대한 유용한 기능 많이 만들어보겠습니다!
긴 글 읽어주셔서 감사합니다!
'파이썬' 카테고리의 다른 글
Python으로 결측치 확인 후 보간(내삽)하기 (2) | 2024.01.24 |
---|---|
Mayavi 라이브러리를 이용해서 전구 기압 분포 3D 시각화 (0) | 2023.11.28 |
Python 환경에서 지역 변수와 전역 변수 (global) (0) | 2023.11.06 |
데이터 프레임에서 특정 데이터 추출(globals()) (2) | 2023.10.18 |
건조공기의 이상기체 방정식 그래프 그리기(대기 열역학) (0) | 2023.09.25 |