파이썬

Python을 이용해서 다수의 csv파일 한 번에 합치기

이석사 중 2024. 1. 24. 15:43
728x90

오늘은 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 프로그래밍으로 실행기 같은 것도 만들어보려고 합니다

 

최대한 유용한 기능 많이 만들어보겠습니다!

 

긴 글 읽어주셔서 감사합니다!

728x90