2024. 3. 21. 16:04ㆍ회고/기타 프로젝트
🔎 지난 1년 간의 수박 평균 & 평년 가격 데이터 분석 (feat. open api)
01 데이터 수집, 계기 : KAMIS 일별 품목별 도·소매가격정보
🤓 프로젝트 배경(사담)
지난 여름 수박을 정말 많이 사먹었다. 마트나 시장, 과일가게를 주로 이용했고 단기간에 20개 넘게 먹은 것 같다. 계속 먹다보면 어느 순간 물리게 되는데 그쯤이면 여름의 끝물이다. 너무 많이 먹어서 생각안날 정도로 먹긴 했다. 수박에 완전 빠져서 화채 만들어 먹는 블로그 글을 자주 올려 조회수를 지속적으로 올려보기도 했다.
가격 특징을 보자면 제철인 여름에 과일 가게에서 대량으로 들어오는 수박들. 그 중에서 밴드에 가입하면 회원가로 구입할 수 있을 때가 가장 맛있고 저렴했다. 그리고 수박이 비를 맞으면 가격이 좀 저렴해지는데 이때 식자재 마트에서 좀 가성비 있게 구입할 수 있고 그밖에도 한낮에 시장이나 과일 트럭을 잘 노리면 좋은 가격에 구입할 수 있다.
중요한 건 싸게 사는 것도 중요하지만 "맛"이 들어야 한다. 수박은 장마가 지날 수록 맛이 빠진다. 단맛이 떨어진다는 말이다. 하나에 4~5만원 하면 맛있을 수도 있겠지만 굳이? 싶다. 종합하자면 제철+과일가게가 좀 강점인 듯하다.
🔎 요약: 각설하고 다음 해에도 수박을 많이 먹고 싶고 지갑도 최대한 지키는 방안이 무엇일까? 생각하다가 시작한 프로젝트이다.
지역별로 구분된 데이터가 있어서 특정 지역의 수박 데이터를 구하고 싶었는데 근처 지역에는 전부 수박 데이터가 없어서 가장 많이 유통되는 서울 지역의 수박 데이터를 Opne API로 수집하고 크게는 평균/평년, 작게는 날짜와 가격으로 구분하여 두개의 데이터셋을 만들었다.
💡 앞으로 만들 그래프는 1)수박의 월별 평균 가격 (23.04.04~24.03.20) 그래프와 2)평년 가격 그래프이다. 이번 미니 프로젝트는 오픈 API활용에 목적이 있다.
02 데이터 전처리
1. iloc속성을 이용해서 필요없는 컬럼은 제거하고 날짜와 가격만 남겼다.
2. 평균 그래프와 평년 그래프로 데이터셋을 분리했다.
3. 'yyyy' 연도 컬럼과 'regday' 월일 컬럼을 합치고 새로운 date 컬럼을 생성한다.
4. '2023.004/04'로 만들어진 형식을 replace로 '2023-04-04'로 만든다. (메서드체이닝1)
avg_sweet_1['yymd'] = avg_sweet_1['date'].str.replace('.0', '-').str.replace('/', '-')
5. date컬럼은 날짜형 pd.to_datetime 자료형으로 변경한다.
6. price컬럼도 콤마(,)를 제거하고 int형으로 변경한다. (메서드체이닝2)
7. pandas 공식문서 확인하면서 블로그 의존성 좀 떨어뜨리는 중
03 해결한 문제, 유의점
1. price의 자료형을 int로 변경하지 않아서 생긴 문제 발생에 주의한다.
- object의 그래프가 궁금하면 try해보시길 바란다. (ㅠㅠ)
2. 평균은 단기적인 값, 평년은 장기적인 값이라고 하는데 왜 미래를 예측하는지?
- '평균'은 보통 짧은 기간 동안의 가격 데이터의 산술 평균을, '평년'은 장기간 동안의 가격 데이터의 평균을 의미한다. 이 두 지표를 비교함으로써, 현재 가격이 장기적인 관점에서 어떤지, 그리고 단기적인 변동이 있는지를 파악할 수 있다.
- '평년'을 해석하자면 특정일 23-03-02일의 지난 10년간의 가격의 평균을 산출한 가격이고, '평균'은 한 달간의 평균 가격이다.
- 그래프로 볼 수 있는 미래 예측 데이터는 잘못 산출된 날짜라고 보인다. (상담 참고!)
- 평년 가격 정의: 최근 5년 가격 중 최고치와 최소치를 뺀 "3개년 가격의 평균"이었다.
3. 최소값, 최대값, 평균값 수치를 적어주고 싶은데 잘 되지 않는다. (우선적인 값이 있는 듯 하다.)
- 자료형이 object일 때에는 최소 최대의 가격이 찍혀있었다.
- 튜터님 말씀 들어보면 보통 잘 사용하지 않는 기능인 듯 하다.
4. 만약 1년 이상의 자료를 받고 싶으면 기관 홈페이지 관리자 측에 요청해야 함.
04. sns.lineplot 완성 (수박(바)색깔)
1. 지난 한 해의 수박가격 중 가장 높은 가격대는 2월~3월 사이이고, 가장 낮은 가격대는 10월~11월 사이이다.
2. 지난 한 해의 수박 가격을 결정하는 요인은 다양하다.
- 수요의 증가: 특정 이벤트, 계절적 요인, 또는 소비자의 선호도 변화
- 공급의 감소: 날씨로 인한 생산성의 문제
- 물가의 상승: 일반적인 물가 상승 또는 인플레이션으로 인한 가격의 전반적 상승
- 시장 변동성: 기타 시장 조건의 변화로 인해 가격이 변동했을 가능성 有
3. 평균 가격이 평년보다 높다는 것은 그 시기의 수박 가격이 과거 장기간 동안의 평균보다 상승했다는 것을 의미한다.
4. 평균(단기)>평년(장기) 가격의 이유도 한해 가격을 결정하는 요인과 유사하다.
5. 지난 10년간의 소비자 물가상승률에 대한 그래프를 만들어봤는데, 작은 폭으로 꾸준히 증가하고 있다가 2020년도에서부터 큰폭으로 상승하는 것을 볼 수 있다. (2023년도에도 3.6%만큼 상승했다, 그래프가 하락해도 상승률을 보여주는 지표이기 때문에 상승했다고 해석하는게 맞다.)
결론 : 평균 가격의 상승은 물가의 영향이 크지 않나 생각하고, 수박은 하락하다가 6월부터 9월까지 꾸준히 상승세를 보이는데 (단기적으로 추세가 바뀜) 이때는 제철에 맞춰서 수요가 증가하니 가격도 상승하는 것으로 보인다. 나는 평균 이하의 가격으로 많이 먹고 싶으니까 6월부터 8월까지 집중적으로 사먹도록 해야겠다. (생각해보니 작년에도 그랬던 것 같다. 오르기 전에 많이 먹어야지.)
05 마지막으로 "평년" 가격에 대한 정의를 알아야 한다.
- 카미스의 평년 가격은 최근 5년 가격 중 최고치와 최소치를 뺀 "3개년 가격의 평균"으로 정의된다.
- 단순히 3개년 가격의 평균이라고 이해를 하면 그래프를 해석하기 어렵다.
- 데이터를 가져오면 평년 가격의 날짜가 미래로 나오는데 추후 수정됐다. (24.04.28 확인)
06 본 프로젝트는 차후 자동화 프로젝트로 이어진다.
이어서
'회고 > 기타 프로젝트' 카테고리의 다른 글
[개인] 데이터 리터러시 : '공유 킥보드' 사라진 파리... 왜? (0) | 2024.03.26 |
---|---|
[머신러닝 프로젝트] 4. 데이터 분할, 문자+수치형 컬럼 변환 (0) | 2024.02.16 |
[머신러닝 프로젝트] 3. 단순/다중회귀모델 결과비교 (0) | 2024.02.14 |
[머신러닝 프로젝트] 2. 워크 플로우(피드백 추가) (0) | 2024.02.14 |
[머신러닝 프로젝트] 1. 현재 상황(상담 준비 자료) (0) | 2024.02.13 |