brunch

You can make anything
by writing

C.S.Lewis

by 스토너 Apr 26. 2021

데이터와 일상 - 대파 공공 데이터 전처리 과정

일정 기간 데이터 불러오기


원하는 기간의 데이터를 불러오기 위해서는 어떻게 해야 할까요? 

지난번처럼 일일이 불러온다면 수백번 같은 동작을 반복해야 할 겁니다.


프로그래밍의 장점은 50번 100번을 일일이 수동으로 반복해야 하는 일의 수고로움을 덜어주는 것입니다.

어떤 기능을 한번 만들어두면 5시간이 걸릴 일을 단 3분으로 줄여줍니다. 틀을 만들어두면 계속해서 틀에 내용물을 달리 넣고 찍어서 생산하듯이 말입니다.


모든 데이터 분석 과정에서 가장 생략하고 싶지만 가장 중요한 과정입니다.


프로그래밍이 처음이신 분은 다소 어렵고 이해안 갈 수 있습니다.


전처리하는 중간 과정을 생략할까 고민했지만 구글링을 통해 다른 분이 올려두신 코드를 보면서 많은 도움을 받았고 역시 다른 분께도 도움이 되었으면 하는 마음에 공유합니다.




일정 기간 데이터 불러와서 JSON 파일로 저장하기



대파라는 품목코드와 date 일정기간을 파라미터로 받는 기능의 call_api함수를 만듭니다.

지난번에 소개드렸던 소스코드와 첫부분은 같지만 일정기간의 날짜를 반복해서 만들고 생성하는 부분이 추가가 됩니다.


원하는 기간의 데이터를 Api call 하기 위해서는 pandas 라이브러리인 pandas.date_range()함수 등 시계열을 이해해야 합니다. 


저는 202001부터 20200315까지 데이터를 불러오기로 마음 먹었습니다.


date함수로 생성한 일자를 리스트 자료구조에 넣고 하나씩 꺼내와서 call_api 함수를 호출하는 반복문을 사용했습니다.


자세한 내용은 주석으로 달았으며 아래 소스코드를 참고해주시면 됩니다.


call_api 기능이 잘 구현된다면 json파일 형태로

 데이터가 없는 공휴일을 제외하여 데이터 불러와서 저장에 성공한다면 아래 형태로 파일들이 저장됩니다 




json 파일 저장 예시



이처럼 json 파일을 일일이 불러와서 데이터프레임으로 변환한 뒤 바로 분석을 할 수 있지만

csv 파일로 변환하여 분석에 활용하고 싶을 수 있습니다.


json파일을 csv 파일로 저장하는 방법을 소개하면서 소스코드를 공유하겠습니다.





JSON 데이터를 CSV파일로 저장하기



우선 csv파일로 저장하기 위해선 같은 폴더 내에 있는 json파일을 모두 불러와서 한줄씩 읽어들이는 과정이 필요합니다. 


glob과 json 라이브러리를 import해줍니다.


중간에 리스트 자료구조에 불러온 json 파일을 모두 넣어서 csv파일로 변환했더니 65개의 파일이 하나로 합쳐진 csv 파일로 만들어져 난감했습니다.


이때는 for 반복문을 통해 json 파일을 하나씩 세서 데이터 프레임으로 변환 후 -> csv 파일로 저장을 하면 됩니다. 각각의 csv 파일이 필요할 때는 이 과정을 참고하면 되고 원하는 일자의 json파일을 합치려면 해당 파일만 합칠 수도 있습니다.


자세한 건 아래 소스코드를 참고해주시면 됩니다.




csv 파일로 저장이 성공하여 폴더에 파일들이 생성되었습니다.


2020년은 약 10만 2021년은 약 15만건으로 총 25만 건의 데이터를 csv파일로 저장하였습니다. 



(분석 시 참고파일)



csv 저장 파일 예시






저에겐 쉽지 않은 과정이었고 프로그래밍에 상당한 시간이 소요되었습니다.

아직 보완해야 할 점이 있지만 한번 만들어두니 다음에 분석할 때 또 사용할 수 있어 유용합니다.



호기심으로 시작한 간단한 프로젝트였지만 여러가지를 공부해보는 시간을 가진 의미있는 시간이었습니다 ^^



5%의 결과를 얻기 위해 95%의 전처리 과정을 인내심있게 견디는 것.

데이터 분석의 즐거움은 성취감 때문인지도 모르겠네요.



혹시 수정할 부분이나 보완해야 할 점이 있다면 넌지시 말씀 주시면 감사하겠습니다.





작가의 이전글 데이터와 일상 - 대파 공공 데이터 시각화해보자
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari