brunch

You can make anything
by writing

C.S.Lewis

by 스토너 Apr 16. 2021

데이터와 일상 - 대파 공공 데이터 분석해보자

실제 데이터는 어떤 모습일까

대파는?


대파는 노지채소로 (지붕, 덮개로 가리지 않는 밭농사) 전국적으로 재배하며 배수가 잘 되는 곳을 선정해서 파종하면 기후 적응력이 뛰어나고 특별한 병충해가 없어 수확이 어렵지 않습니다. 발아 적온은 15~25도고 발아 최저온도는 1~4도 최고 온도는 33도로 생육하기에 적온은 20도 내외이구요^^


대파 파종시기는 한지형(여름파), 난지형(겨울파)이 있으며 추운지방에서는 3월 하순 경 봄에 종자를 뿌리고 여름에 생육시켜 9월 상순~11월 중순 가을부터 초겨울에 수확, 더운 지방에서는 가을에 종자를 뿌려서 겨울에 생육시켜 이듬해 봄 수확을 합니다.


보통 파종 후 6개월 이후부터는 수시로 수확하여 이용할 수 있고, 한번 키우면 수시로 잘라서 먹을 수 있으니 최소 4개월 이후여야 먹을 수 있을정도로 자라니 잘 기르는 것이 중요합니다.


그런 대파가 과연 올한파로 인해서 실제 수확량이 줄어든걸까요?


직접 눈으로 확인해보도록 하겠습니다. 


 너 이녀석 많이 비싼 몸이 됐구나.




사용할 데이터는?


분석할 데이터로는 농림수산식품교육문화정보원의 "농수축산물 도매시장 상세 경락가격" 데이터를 분석하기로 했습니다. 실제 가격과 시장으로 유입되는 농산물의 거래물량을 확인할 수 있는 유용한 데이터입니다. 


(농업온에서도 같은 데이터로 일자별 조회가 가능하나 3일 기간만 제공하고 데이터드림 서비스에서 담당자에게 데이터를 후 기다려야 하는등 절차가 번거롭습니다. )


아래 사이트에서는 전국 도매시장에서 거래되는 경매낙찰가격과 거래되는 상품들에 대한 정산 거래 상세 정보(경락일자+거래량+거래가격+품목코드 등)를 파악할 수 있습니다.


농수축산물 도매시장 상세 경락가격 데이터 다운


 연도_월별로 실시간 도매가격의 원시데이터는 3월은 12일까지만 데이터가 존재합니다.


제가 분석 프로젝트를 진행하기로 한 시점은 3월 15일이므로 2020년과 2021년 1월1일~3월 15일 약 2개월 반의 데이터로 작년과 올해를 비교하고자 했습니다.


해당 데이터의 Open API 활용가이드를 참고하였습니다. 각 데이터 항목에 대한 상세 내용이 설명되어 있습니다. 각 항목은 Column이라고 하며 Model 적용시 feature라고도 합니다.


활용가이드 Open API 다운 시 참고


응답메시지 예시)




공공데이터 API Call 하는 법


사실 파일이 있으면 다운 받는 것이 제일 편하지만 대개 다운 받는 것은 운이 좋은 경우입니다. 대다수 Open API를 활용하여 데이터를 불러오는 경우가 많습니다. 저는 실제 open API를 활용하는 것을 연습하기 위해서 데이터 활용신청을 했습니다. 


공공데이터 포털에서 데이터 사용 신청하면 마이페이지>OpenAPI>개발계정에서 활용 신청 내용을 확인할 수 있습니다.



승인은 바로 되는 편입니다. 활용신청 승인 내역을 클릭하면 인증키를 확인할 수 있습니다.


 

Json과 XML 형태의 데이터포맷 모두 사용가능합니다. 보통 JSon 타입이 XML보다 훨씬 가볍고 파싱하기 쉬우므로 JSon으로 데이터를 불러옵니다. 


일반인증키는 Encoding과 Decoding이 있는데 웹 브라우저에서 바로 Call 하고 싶을 때는 Encoding 인증키를 사용하고 프로그램으로 돌리고 싶을 때는 Decoding 인증키를 사용하면 알아서 Encoding으로 데이터를 불러옵니다.


데이터를 핸들링할 때 프로그래밍을 해야 하는 경우가 있는데요, 그럴 때 저는 분석용 툴인 Jupyter notebook이 아니라 Pycharm Tool을 사용하는 것을 더 선호합니다.





Json 데이터 확인


대파 품목코드를 의미하는 1202를 prd_cd=1202로 설정하고 1월 4일 데이터를 불러와봤습니다. 확인해보니 1월 1일은 공휴일로 시장이 열리지 않아 데이터가 없었습니다. 

Json 형태의 일부 1월 4일 하루 데이터 건수만 해도 최소 수천건에서 수만건에 달한다.



json 형태로 데이터를 확인해보니 Dict구조로 되어 있는 것을 확인하였습니다. 


json 구조의 데이터를 다루기 위해서는 json에 대해서도 상세히 공부해야 했습니다. 모르면 다루기가 어렵습니다 ㅠ.ㅠ


이런 원시 형태의 데이터를 다루기 쉬운 형태인 데이터프레임으로 변환을 해야 분석하기 쉬운 구조로 바꿀 수 있습니다. (쉽게 설명하면 엑셀의 행과 열의 형태로 2차원 구조의 표로 되어 있는 것을 뜻합니다.)


파이썬은 pandas 라이브러리를 통해 이러한 데이터프레임을 쉬이 다룰 수 있어 데이터 분석 언어로 각광받고 있습니다. (pandas는 R에서 영향을 받았습니다.)


한줄씩 데이터를 읽어들이면서 Key, Value에서 Key를 의미하는 윗단 구조의 response, body, items, item을 끄집어 냅니다.  자세한 과정은 아래 소스코드를 참고하실 수 있습니다.



소스코드


GreenOnion_Data_Requests.py



일일 데이터를 json으로 저장하고 불러와서 데이터프레임으로 변환했을 때 성공했다면 아래의 모습일 겁니다.









그렇다면 2020년 1~3월과 2021년 1~3월의 데이터를 한꺼번에 호출하기 위해서는 어떻게 해야 될까요?


일일이 날짜를 입력한다면 150번 이상을 일일이 수동으로 입력해야 하는데 그렇게 된다면 무척 번거롭고 힘든 일일겁니다.


여기서 바로 프로그래밍이 무척 중요한 역할을 하는데요.


데이터 분석의 팔할은 거의 엔지니어링이라고 봐도 무방합니다. 그래서 분석가도 프로그래밍과 툴을 잘 다룰줄 알아야 하죠 ^^;


비전공자에 문과출신인 저로서는 결코 쉬운일은 아니었지만 혼자서도 프로그래밍을 하여 분석하고 싶은 데이터를 마음껏 불러올 수 있을 때 비로소야 자유로운 분석이 가능해졌습니다.


이 다음 화엔 일정 기간의 데이터를 한꺼번에 불러와서 json으로 저장하고 데이터프레임으로 변환-> csv파일로 저장하는 법까지 설명드리도록 하겠습니다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari