데이콘 프로젝트 - 농산물 가격예측 1-1 데이터 살펴보기
데이터분석가로 공부를 하면서, 데이터에 흥미를 갖기위해 관심있는 수강생들과함께 데이콘에 참여해보기로 했습니다. 처음으로 대회를 참여해보는데요, 흥미와 경험목적으로 참여하는만큼, 부담없이 최대한 즐기는 느낌으로 프로젝트를 진행하고자 합니다. 저희가 참여하는 대회는
국민생활과 밀접한 10가지 농산물 품목의 가격을 예측
해야하는데요, 첫번째로 대회에서 제공하는 데이터들을 살펴보는 시간을 가졌고, 제가 정리한 내용을 기록으로 남기고자합니다.
데이터 설명
- 대회명 : 데이터·AI를 활용한 물가 예측 경진대회 : 농산물 가격을 중심으로
- 데이터 출처 : 데이콘
- [주제]
- 국민생활과 밀접한 10개 농산물 품목의 가격 예측
- (배추, 무, 양파, 사과, 배, 건고추, 깐마늘, 감자, 대파, 상추)
- [문제 상세 설명]
- 학습 데이터는 2018년 ~ 2021년의 순 단위(10일)의 데이터가 주어지며,
- 평가 데이터는 추론 시점 T가 비식별화된 2022년의 순 단위의 데이터가 주어집니다.
- 평가 데이터 추론은 추론 시점 T 기준으로 최대 3개월의 순 단위의 입력 데이터를 바탕으로 T+1순, T+2순, T+3순의 평균가격을 예측해야합니다.
- 예측해야할 Target은 (배추, 무, 양파, 사과, 배, 건고추, 깐마늘, 감자, 대파, 상추)의 10개의 품목 중 아래의 특정 품종, 등급에 대해서만 예측을 진행합니다.
- train [폴더] :
- train.csv [파일] : 2018년 ~ 2021년의 모든 농산물의 상세 정보 및 가격
- meta [폴더]
- TRAIN_산지공판장_2018-2021.csv : 전국도매 경락정보
- TRAIN_전국도매_2018-2021.csv : 산지공판장 경락정보
- test [폴더] :
- 2022년의 특정 시점 T가 비식별화된 평가 데이터
- 예측의 입력으로 사용될 예측 시점 T를 포함한 최대 3개월의 9개의 시점에 대한 데이터 (총 25개의 평가 데이터셋 샘플 구성)
- TEST_00.csv ~ TEST_24.csv [파일]
- meta [폴더]
- TEST_전국도매_00.csv ~ TEST_전국도매_24.csv [파일]
- TEST_산지공판장_00.csv ~ TEST_산지공판장_24.csv [파일]
- 예시)
TEST_00
추론 시에는TEST_00.csv.
필요시에는TEST_전국도매_00.csv
와TEST_산지공판장_00.csv
만 추론에 사용 가능
- sample_submission.csv [ 파일 ] :
- 각 품목의 TEST 파일별 +1순, +2순, +3순의 평균가격(원) 예측 결과
- 시점 : TEST_00+1순, TEST_00+2순, TEST_00+3순 … TEST_24+1순, TEST_24+2순, TEST_24+3순
품목명 | 품종명 | 거래단위 | 등급 |
---|---|---|---|
건고추 | 화건 | 30 kg | 상품 |
사과 | 홍로, 후지 | 10 개 | 상품 |
감자 | 감자 수미 | 20키로상자 | 상 |
배 | 신고 | 10 개 | 상품 |
깐마늘(국산) | 깐마늘(국산) | 20 kg | 상품 |
무 | 무 | 20키로상자 | 상 |
상추 | 청 | 100 g | 상품 |
배추 | 배추 | 10키로망대 | 상 |
양파 | 양파 | 1키로 | 상 |
대파 | 대파(일반) | 1키로단 | 상 |
1
2
3
4
5
6
### 개발환경 세팅하기
# ▶ 한글 폰트 다운로드
!sudo apt-get install -y fonts-nanum
!sudo fc-cache -fv
!rm ~/.cache/matplotlib -rf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following NEW packages will be installed:
fonts-nanum
0 upgraded, 1 newly installed, 0 to remove and 49 not upgraded.
Need to get 10.3 MB of archives.
After this operation, 34.1 MB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu jammy/universe amd64 fonts-nanum all 20200506-1 [10.3 MB]
Fetched 10.3 MB in 1s (9,777 kB/s)
debconf: unable to initialize frontend: Dialog
debconf: (No usable dialog-like program is installed, so the dialog based frontend cannot be used. at /usr/share/perl5/Debconf/FrontEnd/Dialog.pm line 78, <> line 1.)
debconf: falling back to frontend: Readline
debconf: unable to initialize frontend: Readline
debconf: (This frontend requires a controlling tty.)
debconf: falling back to frontend: Teletype
dpkg-preconfigure: unable to re-open stdin:
Selecting previously unselected package fonts-nanum.
(Reading database ... 123620 files and directories currently installed.)
Preparing to unpack .../fonts-nanum_20200506-1_all.deb ...
Unpacking fonts-nanum (20200506-1) ...
Setting up fonts-nanum (20200506-1) ...
Processing triggers for fontconfig (2.13.1-4.2ubuntu5) ...
/usr/share/fonts: caching, new cache contents: 0 fonts, 1 dirs
/usr/share/fonts/truetype: caching, new cache contents: 0 fonts, 3 dirs
/usr/share/fonts/truetype/humor-sans: caching, new cache contents: 1 fonts, 0 dirs
/usr/share/fonts/truetype/liberation: caching, new cache contents: 16 fonts, 0 dirs
/usr/share/fonts/truetype/nanum: caching, new cache contents: 12 fonts, 0 dirs
/usr/local/share/fonts: caching, new cache contents: 0 fonts, 0 dirs
/root/.local/share/fonts: skipping, no such directory
/root/.fonts: skipping, no such directory
/usr/share/fonts/truetype: skipping, looped directory detected
/usr/share/fonts/truetype/humor-sans: skipping, looped directory detected
/usr/share/fonts/truetype/liberation: skipping, looped directory detected
/usr/share/fonts/truetype/nanum: skipping, looped directory detected
/var/cache/fontconfig: cleaning cache directory
/root/.cache/fontconfig: not cleaning non-existent cache directory
/root/.fontconfig: not cleaning non-existent cache directory
fc-cache: succeeded
1
2
3
4
5
6
7
8
# ▶ 한글 폰트 설정하기
import matplotlib.pyplot as plt
plt.rc('font', family='NanumBarunGothic')
plt.rcParams['axes.unicode_minus'] =False
# ▶ Warnings 제거
import warnings
warnings.filterwarnings('ignore')
1
2
3
4
5
6
7
8
9
10
11
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
# 나눔고딕 폰트를 설치합니다.
!apt-get install -y fonts-nanum
!fc-cache -fv
# 설치된 나눔고딕 폰트를 matplotlib에 등록합니다.
font_path = '/usr/share/fonts/truetype/nanum/NanumGothic.ttf'
fm.fontManager.addfont(font_path)
plt.rcParams['font.family'] = 'NanumGothic'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
fonts-nanum is already the newest version (20200506-1).
0 upgraded, 0 newly installed, 0 to remove and 49 not upgraded.
/usr/share/fonts: caching, new cache contents: 0 fonts, 1 dirs
/usr/share/fonts/truetype: caching, new cache contents: 0 fonts, 3 dirs
/usr/share/fonts/truetype/humor-sans: caching, new cache contents: 1 fonts, 0 dirs
/usr/share/fonts/truetype/liberation: caching, new cache contents: 16 fonts, 0 dirs
/usr/share/fonts/truetype/nanum: caching, new cache contents: 12 fonts, 0 dirs
/usr/local/share/fonts: caching, new cache contents: 0 fonts, 0 dirs
/root/.local/share/fonts: skipping, no such directory
/root/.fonts: skipping, no such directory
/usr/share/fonts/truetype: skipping, looped directory detected
/usr/share/fonts/truetype/humor-sans: skipping, looped directory detected
/usr/share/fonts/truetype/liberation: skipping, looped directory detected
/usr/share/fonts/truetype/nanum: skipping, looped directory detected
/var/cache/fontconfig: cleaning cache directory
/root/.cache/fontconfig: not cleaning non-existent cache directory
/root/.fontconfig: not cleaning non-existent cache directory
fc-cache: succeeded
train 폴더 살펴보기
train 파일
1
2
3
4
5
import pandas as pd
# train.csv 파일 읽기
train_file_path = '/content/drive/MyDrive/데이콘/농산물/train/train.csv'
train_data = pd.read_csv(train_file_path)
1
2
# 어떤 데이터인가요?
train_data
시점 | 품목명 | 품종명 | 거래단위 | 등급 | 평년 평균가격(원) | 평균가격(원) | |
---|---|---|---|---|---|---|---|
0 | 201801상순 | 건고추 | 화건 | 30 kg | 상품 | 381666.666667 | 590000.0 |
1 | 201801중순 | 건고추 | 화건 | 30 kg | 상품 | 380809.666667 | 590000.0 |
2 | 201801하순 | 건고추 | 화건 | 30 kg | 상품 | 380000.000000 | 590000.0 |
3 | 201802상순 | 건고추 | 화건 | 30 kg | 상품 | 380000.000000 | 590000.0 |
4 | 201802중순 | 건고추 | 화건 | 30 kg | 상품 | 376666.666667 | 590000.0 |
... | ... | ... | ... | ... | ... | ... | ... |
29371 | 202111중순 | 대파 | 대파(일반) | 10키로묶음 | 상 | 0.000000 | 0.0 |
29372 | 202111하순 | 대파 | 대파(일반) | 10키로묶음 | 상 | 0.000000 | 0.0 |
29373 | 202112상순 | 대파 | 대파(일반) | 10키로묶음 | 상 | 0.000000 | 0.0 |
29374 | 202112중순 | 대파 | 대파(일반) | 10키로묶음 | 상 | 0.000000 | 0.0 |
29375 | 202112하순 | 대파 | 대파(일반) | 10키로묶음 | 상 | 0.000000 | 0.0 |
29376 rows × 7 columns
1
2
# 데이터 정보 확인
train_data.info()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 29376 entries, 0 to 29375
Data columns (total 7 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 시점 29376 non-null object
1 품목명 29376 non-null object
2 품종명 29376 non-null object
3 거래단위 29376 non-null object
4 등급 29376 non-null object
5 평년 평균가격(원) 29376 non-null float64
6 평균가격(원) 29376 non-null float64
dtypes: float64(2), object(5)
memory usage: 1.6+ MB
1
train_data.isnull().sum()
0 | |
---|---|
시점 | 0 |
품목명 | 0 |
품종명 | 0 |
거래단위 | 0 |
등급 | 0 |
평년 평균가격(원) | 0 |
평균가격(원) | 0 |
1
train_data.duplicated().sum()
1
0
1
train_data['시점'].unique()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
array(['201801상순', '201801중순', '201801하순', '201802상순', '201802중순',
'201802하순', '201803상순', '201803중순', '201803하순', '201804상순',
'201804중순', '201804하순', '201805상순', '201805중순', '201805하순',
'201806상순', '201806중순', '201806하순', '201807상순', '201807중순',
'201807하순', '201808상순', '201808중순', '201808하순', '201809상순',
'201809중순', '201809하순', '201810상순', '201810중순', '201810하순',
'201811상순', '201811중순', '201811하순', '201812상순', '201812중순',
'201812하순', '201901상순', '201901중순', '201901하순', '201902상순',
'201902중순', '201902하순', '201903상순', '201903중순', '201903하순',
'201904상순', '201904중순', '201904하순', '201905상순', '201905중순',
'201905하순', '201906상순', '201906중순', '201906하순', '201907상순',
'201907중순', '201907하순', '201908상순', '201908중순', '201908하순',
'201909상순', '201909중순', '201909하순', '201910상순', '201910중순',
'201910하순', '201911상순', '201911중순', '201911하순', '201912상순',
'201912중순', '201912하순', '202001상순', '202001중순', '202001하순',
'202002상순', '202002중순', '202002하순', '202003상순', '202003중순',
'202003하순', '202004상순', '202004중순', '202004하순', '202005상순',
'202005중순', '202005하순', '202006상순', '202006중순', '202006하순',
'202007상순', '202007중순', '202007하순', '202008상순', '202008중순',
'202008하순', '202009상순', '202009중순', '202009하순', '202010상순',
'202010중순', '202010하순', '202011상순', '202011중순', '202011하순',
'202012상순', '202012중순', '202012하순', '202101상순', '202101중순',
'202101하순', '202102상순', '202102중순', '202102하순', '202103상순',
'202103중순', '202103하순', '202104상순', '202104중순', '202104하순',
'202105상순', '202105중순', '202105하순', '202106상순', '202106중순',
'202106하순', '202107상순', '202107중순', '202107하순', '202108상순',
'202108중순', '202108하순', '202109상순', '202109중순', '202109하순',
'202110상순', '202110중순', '202110하순', '202111상순', '202111중순',
'202111하순', '202112상순', '202112중순', '202112하순'], dtype=object)
1
train_data['품목명'].unique()
1
2
array(['건고추', '사과', '감자', '배', '깐마늘(국산)', '무', '상추', '배추', '양파', '대파'],
dtype=object)
1
train_data['품종명'].unique()
1
2
3
4
5
array(['화건', '햇산양건', '햇산화건', '양건', '후지', '홍로', '쓰가루', '감자 수미', '감자 수미(햇)',
'감자', '감자 조풍', '감자 대지', '감자 두백', '감자 수미(저장)', '홍감자', '감자 수입', '신고',
'원황', '깐마늘(국산)', '무', '다발무', '열무', '청', '적', '배추', '쌈배추', '알배기배추',
'얼갈이배추', '봄동배추', '절임배추', '양파', '저장양파', '조생양파', '양파(햇)', '자주양파',
'양파 수입', '대파(일반)', '실파', '깐쪽파', '쪽파', '대파 수입'], dtype=object)
1
train_data['거래단위'].unique()
1
2
3
4
array(['30 kg', '10 개', '20키로상자', '10키로상자', '23키로상자', '20 kg', '10키로',
'18키로상자(비닐포)', '5000키로', '5톤트럭', '1000키로', '4키로상자', '1.5키로단',
'8톤트럭', '100 g', '10키로망대', '1키로상자', '8키로상자', '15키로상자', '1키로',
'15키로', '12키로', '20키로', '1키로단', '10키로묶음'], dtype=object)
1
train_data['등급'].unique()
1
array(['상품', '중품', '상', '특', '하', '중'], dtype=object)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# target에 해당되지않는 데이터들을 확인해보자
# target 데이터 정의
target_values = {
'품목명': ['건고추', '사과', '감자', '배', '깐마늘(국산)', '무', '상추', '배추', '양파', '대파'],
'품종명': ['화건', '홍로', '후지', '감자 수미', '신고', '깐마늘(국산)', '무', '청', '배추', '양파', '대파(일반)'],
'거래단위': ['30 kg', '10 개', '20키로상자', '10 개', '20 kg', '100 g', '10키로망대', '1키로', '1키로단'],
'등급': ['상품', '상']
}
# target 값과 일치하지 않는 데이터
non_target_data = train_data[
~(
(train_data['품목명'].isin(target_values['품목명'])) &
(train_data['품종명'].isin(target_values['품종명'])) &
(train_data['거래단위'].isin(target_values['거래단위'])) &
(train_data['등급'].isin(target_values['등급']))
)
]
# 결과 확인
non_target_data
시점 | 품목명 | 품종명 | 거래단위 | 등급 | 평년 평균가격(원) | 평균가격(원) | |
---|---|---|---|---|---|---|---|
144 | 201801상순 | 건고추 | 햇산양건 | 30 kg | 상품 | 0.0 | 0.0 |
145 | 201801중순 | 건고추 | 햇산양건 | 30 kg | 상품 | 0.0 | 0.0 |
146 | 201801하순 | 건고추 | 햇산양건 | 30 kg | 상품 | 0.0 | 0.0 |
147 | 201802상순 | 건고추 | 햇산양건 | 30 kg | 상품 | 0.0 | 0.0 |
148 | 201802중순 | 건고추 | 햇산양건 | 30 kg | 상품 | 0.0 | 0.0 |
... | ... | ... | ... | ... | ... | ... | ... |
29371 | 202111중순 | 대파 | 대파(일반) | 10키로묶음 | 상 | 0.0 | 0.0 |
29372 | 202111하순 | 대파 | 대파(일반) | 10키로묶음 | 상 | 0.0 | 0.0 |
29373 | 202112상순 | 대파 | 대파(일반) | 10키로묶음 | 상 | 0.0 | 0.0 |
29374 | 202112중순 | 대파 | 대파(일반) | 10키로묶음 | 상 | 0.0 | 0.0 |
29375 | 202112하순 | 대파 | 대파(일반) | 10키로묶음 | 상 | 0.0 | 0.0 |
27936 rows × 7 columns
1
non_target_data[non_target_data['평년 평균가격(원)'] > 0]
시점 | 품목명 | 품종명 | 거래단위 | 등급 | 평년 평균가격(원) | 평균가격(원) | |
---|---|---|---|---|---|---|---|
167 | 201808하순 | 건고추 | 햇산양건 | 30 kg | 상품 | 484324.000000 | 9.157000e+05 |
203 | 201908하순 | 건고추 | 햇산양건 | 30 kg | 상품 | 530301.666667 | 5.925000e+05 |
239 | 202008하순 | 건고추 | 햇산양건 | 30 kg | 상품 | 559039.666667 | 1.063400e+06 |
311 | 201808하순 | 건고추 | 햇산화건 | 30 kg | 중품 | 359800.000000 | 7.407110e+05 |
347 | 201908하순 | 건고추 | 햇산화건 | 30 kg | 중품 | 404000.000000 | 4.420310e+05 |
... | ... | ... | ... | ... | ... | ... | ... |
29083 | 202111중순 | 대파 | 깐쪽파 | 10키로상자 | 하 | 31883.564815 | 4.916489e+04 |
29084 | 202111하순 | 대파 | 깐쪽파 | 10키로상자 | 하 | 25615.375000 | 3.022850e+04 |
29085 | 202112상순 | 대파 | 깐쪽파 | 10키로상자 | 하 | 27183.268519 | 2.813400e+04 |
29086 | 202112중순 | 대파 | 깐쪽파 | 10키로상자 | 하 | 36559.796296 | 2.732662e+04 |
29087 | 202112하순 | 대파 | 깐쪽파 | 10키로상자 | 하 | 33635.992593 | 2.507640e+04 |
6371 rows × 7 columns
1
non_target_data[non_target_data['평균가격(원)'] > 0]
시점 | 품목명 | 품종명 | 거래단위 | 등급 | 평년 평균가격(원) | 평균가격(원) | |
---|---|---|---|---|---|---|---|
167 | 201808하순 | 건고추 | 햇산양건 | 30 kg | 상품 | 484324.000000 | 915700.0 |
203 | 201908하순 | 건고추 | 햇산양건 | 30 kg | 상품 | 530301.666667 | 592500.0 |
239 | 202008하순 | 건고추 | 햇산양건 | 30 kg | 상품 | 559039.666667 | 1063400.0 |
272 | 202107하순 | 건고추 | 햇산양건 | 30 kg | 상품 | 0.000000 | 800000.0 |
273 | 202108상순 | 건고추 | 햇산양건 | 30 kg | 상품 | 0.000000 | 799571.0 |
... | ... | ... | ... | ... | ... | ... | ... |
29105 | 201806하순 | 대파 | 대파 수입 | 10키로상자 | 상 | 0.000000 | 3630.0 |
29106 | 201807상순 | 대파 | 대파 수입 | 10키로상자 | 상 | 0.000000 | 3630.0 |
29107 | 201807중순 | 대파 | 대파 수입 | 10키로상자 | 상 | 0.000000 | 3630.0 |
29108 | 201807하순 | 대파 | 대파 수입 | 10키로상자 | 상 | 0.000000 | 3630.0 |
29109 | 201808상순 | 대파 | 대파 수입 | 10키로상자 | 상 | 0.000000 | 3630.0 |
15223 rows × 7 columns
1
2
3
4
5
6
7
8
train_data[
(
(train_data['품목명'].isin(target_values['품목명'])) &
(train_data['품종명'].isin(target_values['품종명'])) &
(train_data['거래단위'].isin(target_values['거래단위'])) &
(train_data['등급'].isin(target_values['등급']))
)
]
시점 | 품목명 | 품종명 | 거래단위 | 등급 | 평년 평균가격(원) | 평균가격(원) | |
---|---|---|---|---|---|---|---|
0 | 201801상순 | 건고추 | 화건 | 30 kg | 상품 | 381666.666667 | 590000.000000 |
1 | 201801중순 | 건고추 | 화건 | 30 kg | 상품 | 380809.666667 | 590000.000000 |
2 | 201801하순 | 건고추 | 화건 | 30 kg | 상품 | 380000.000000 | 590000.000000 |
3 | 201802상순 | 건고추 | 화건 | 30 kg | 상품 | 380000.000000 | 590000.000000 |
4 | 201802중순 | 건고추 | 화건 | 30 kg | 상품 | 376666.666667 | 590000.000000 |
... | ... | ... | ... | ... | ... | ... | ... |
26491 | 202111중순 | 대파 | 대파(일반) | 1키로단 | 상 | 1934.819444 | 1754.222222 |
26492 | 202111하순 | 대파 | 대파(일반) | 1키로단 | 상 | 1774.898148 | 1460.250000 |
26493 | 202112상순 | 대파 | 대파(일반) | 1키로단 | 상 | 1728.379630 | 1619.000000 |
26494 | 202112중순 | 대파 | 대파(일반) | 1키로단 | 상 | 1677.643519 | 1217.125000 |
26495 | 202112하순 | 대파 | 대파(일반) | 1키로단 | 상 | 1581.411111 | 1322.200000 |
1440 rows × 7 columns
1
2
# 기초 통계량 확인
train_data.describe()
평년 평균가격(원) | 평균가격(원) | |
---|---|---|
count | 2.937600e+04 | 2.937600e+04 |
mean | 1.772730e+04 | 5.224625e+04 |
std | 1.521004e+05 | 4.545482e+05 |
min | 0.000000e+00 | 0.000000e+00 |
25% | 0.000000e+00 | 0.000000e+00 |
50% | 0.000000e+00 | 1.055214e+03 |
75% | 5.203333e+02 | 1.289481e+04 |
max | 5.213802e+06 | 1.335000e+07 |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 시점별 평균가격 변화를 살펴볼까요?
import matplotlib.pyplot as plt
# 시점 열을 날짜 형식으로 변환
def convert_to_date(row):
year_month = row['시점'][:-2] # '201801' 부분 추출
day_indicator = row['시점'][-2:] # '상순', '중순', '하순' 부분 추출
if day_indicator == '상순':
day = '01'
elif day_indicator == '중순':
day = '15'
elif day_indicator == '하순':
day = '28'
return pd.to_datetime(f"{year_month}{day}")
train_data['시점'] = train_data.apply(convert_to_date, axis=1)
# 시점별 평균가격 시각화
monthly_avg_price = train_data.groupby('시점')['평균가격(원)'].mean()
plt.figure(figsize=(12, 6))
plt.plot(monthly_avg_price.index, monthly_avg_price.values)
plt.title('Monthly Average Price Over Time')
plt.xlabel('Date')
plt.ylabel('Average Price (won)')
plt.xticks(rotation=45)
plt.grid()
plt.show()
- 전박적으로 여름에 가격이 소폭 증가하는 경향이 있고, 11월과 12월에 농산물 가격이 폭증하고있다
- 특이사항으로는 2019년 10월 하순부터 2020년 5월 상순까지 가격이 폭증한 기간이 다소 길게 관찰되었다. 이부분을 어떻게 해석할지도 주목할 필요가 있다
1
pd.set_option('display.max_rows', 150)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# target 대상만 시각화
train_data_target = train_data[
(
(train_data['품목명'].isin(target_values['품목명'])) &
(train_data['품종명'].isin(target_values['품종명'])) &
(train_data['거래단위'].isin(target_values['거래단위'])) &
(train_data['등급'].isin(target_values['등급']))
)
]
monthly_avg_price2 = train_data_target.groupby('시점')['평균가격(원)'].mean()
plt.figure(figsize=(12, 6))
plt.plot(monthly_avg_price2.index, monthly_avg_price2.values)
plt.title('Monthly Average Price Over Time')
plt.xlabel('Date')
plt.ylabel('Average Price (won)')
plt.xticks(rotation=45)
plt.grid()
plt.show()
- target 데이터 기준으로만 시각화를 했을때는 평균가격이 다른양상을 띄고 있었다
- 아무래도 저렴한 농산물들이 더많이있는 전체데이터랑 차이가있다
- 품목별로 비교를 해볼 필요가있다
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import seaborn as sns
# 시점별 품목별 평균가격 계산
monthly_avg_price_by_item = train_data.groupby(['시점', '품목명'])['평균가격(원)'].mean().reset_index()
# 시각화
plt.figure(figsize=(14, 8))
sns.lineplot(data=monthly_avg_price_by_item, x='시점', y='평균가격(원)', hue='품목명')
plt.title('Average Price by Item Over Time')
plt.xlabel('Date')
plt.ylabel('Average Price (원)')
plt.xticks(rotation=45)
plt.legend(title='품목명')
plt.grid()
plt.show()
1
2
3
pivot_table = monthly_avg_price_by_item.pivot(index='시점', columns='품목명', values='평균가격(원)')
pivot_table = pivot_table.round(0).astype(int)
pivot_table
품목명 | 감자 | 건고추 | 깐마늘(국산) | 대파 | 무 | 배 | 배추 | 사과 | 상추 | 양파 |
---|---|---|---|---|---|---|---|---|---|---|
시점 | ||||||||||
2018-01-01 | 9605 | 315000 | 125667 | 16980 | 2815 | 11459 | 6097 | 7061 | 792 | 4682 |
2018-01-15 | 11094 | 315000 | 125600 | 20689 | 2901 | 11520 | 6146 | 7038 | 825 | 4223 |
2018-01-28 | 11126 | 315000 | 125600 | 14314 | 3030 | 11766 | 7140 | 7180 | 815 | 4168 |
2018-02-01 | 12120 | 315000 | 129614 | 18372 | 4562 | 11685 | 10939 | 7216 | 838 | 4392 |
2018-02-15 | 12172 | 315000 | 132100 | 17447 | 4381 | 11956 | 7670 | 7495 | 841 | 4512 |
2018-02-28 | 11661 | 310416 | 132100 | 10219 | 4121 | 11884 | 6944 | 7353 | 727 | 4048 |
2018-03-01 | 12067 | 300833 | 132100 | 7469 | 5243 | 11650 | 7022 | 7310 | 566 | 3332 |
2018-03-15 | 12819 | 306250 | 132100 | 6052 | 4692 | 11633 | 6734 | 7223 | 530 | 2900 |
2018-03-28 | 15977 | 306250 | 131912 | 5947 | 5046 | 11713 | 7239 | 7271 | 539 | 2437 |
2018-04-01 | 18570 | 306250 | 131428 | 6778 | 4417 | 11809 | 6338 | 6942 | 588 | 2179 |
2018-04-15 | 18193 | 306250 | 135500 | 7225 | 5170 | 11806 | 6982 | 6991 | 568 | 2538 |
2018-04-28 | 18997 | 306250 | 135500 | 23639 | 5663 | 11684 | 7372 | 6922 | 606 | 3552 |
2018-05-01 | 15295 | 306250 | 135500 | 23175 | 5968 | 11724 | 6060 | 6833 | 585 | 3495 |
2018-05-15 | 9649 | 306250 | 132583 | 18201 | 2851 | 11786 | 4226 | 6916 | 560 | 3631 |
2018-05-28 | 8443 | 306250 | 132000 | 21906 | 2051 | 11688 | 4318 | 6833 | 586 | 3262 |
2018-06-01 | 5139 | 311910 | 132000 | 24559 | 1922 | 11677 | 3487 | 6904 | 610 | 3152 |
2018-06-15 | 4583 | 315286 | 131428 | 28287 | 1660 | 11688 | 3555 | 7038 | 562 | 3549 |
2018-06-28 | 2389 | 313325 | 130600 | 27492 | 1827 | 11975 | 4191 | 6943 | 539 | 3473 |
2018-07-01 | 2461 | 313325 | 117357 | 36952 | 1921 | 12003 | 6074 | 6974 | 593 | 3385 |
2018-07-15 | 2397 | 313012 | 115838 | 47717 | 2319 | 11955 | 6956 | 6983 | 889 | 3227 |
2018-07-28 | 2797 | 308800 | 113478 | 41621 | 2700 | 11965 | 8347 | 6961 | 813 | 3367 |
2018-08-01 | 3636 | 316890 | 113050 | 46051 | 3293 | 11986 | 10092 | 7092 | 828 | 3699 |
2018-08-15 | 3774 | 322859 | 112400 | 46683 | 3138 | 12024 | 11379 | 7348 | 1017 | 3798 |
2018-08-28 | 4261 | 732796 | 109800 | 41795 | 3725 | 23355 | 12662 | 14681 | 1332 | 3600 |
2018-09-01 | 4043 | 393162 | 109800 | 36827 | 3350 | 23458 | 10725 | 17823 | 1785 | 3377 |
2018-09-15 | 4049 | 346350 | 109769 | 29359 | 2847 | 28052 | 7971 | 8667 | 1911 | 3133 |
2018-09-28 | 4402 | 337004 | 109550 | 21765 | 2746 | 28788 | 6636 | 8734 | 1421 | 3004 |
2018-10-01 | 4075 | 324123 | 109550 | 16461 | 1906 | 14926 | 4634 | 8438 | 1160 | 3485 |
2018-10-15 | 3964 | 312225 | 112407 | 18881 | 1750 | 13824 | 6639 | 10233 | 873 | 3048 |
2018-10-28 | 3960 | 311162 | 114419 | 13204 | 450608 | 13552 | 6802 | 10621 | 780 | 3003 |
2018-11-01 | 4558 | 307368 | 115357 | 14433 | 474127 | 13747 | 8276 | 7312 | 683 | 2905 |
2018-11-15 | 8841 | 305850 | 115500 | 11654 | 1304564 | 13694 | 6590 | 7542 | 624 | 2599 |
2018-11-28 | 8297 | 306216 | 116375 | 10385 | 902688 | 14032 | 6945 | 7772 | 604 | 2601 |
2018-12-01 | 9166 | 307775 | 116100 | 12073 | 848519 | 14224 | 6755 | 7854 | 587 | 2673 |
2018-12-15 | 15545 | 308775 | 115188 | 11726 | 856283 | 14564 | 6922 | 7729 | 587 | 2672 |
2018-12-28 | 15003 | 308775 | 111717 | 13784 | 291958 | 14986 | 4829 | 7714 | 619 | 2062 |
2019-01-01 | 15134 | 307230 | 109300 | 14768 | 1423 | 14861 | 5541 | 7751 | 646 | 2765 |
2019-01-15 | 13804 | 304438 | 109350 | 15265 | 1237 | 15098 | 5092 | 7950 | 653 | 2021 |
2019-01-28 | 13742 | 298189 | 109400 | 14079 | 1257 | 15932 | 4828 | 8261 | 637 | 2153 |
2019-02-01 | 14074 | 296800 | 109400 | 17959 | 1297 | 16426 | 5118 | 8697 | 638 | 1918 |
2019-02-15 | 13488 | 297347 | 109400 | 12496 | 1325 | 16152 | 5004 | 8403 | 608 | 2174 |
2019-02-28 | 12477 | 299300 | 109400 | 12856 | 1425 | 16048 | 4967 | 8238 | 574 | 2095 |
2019-03-01 | 13623 | 299300 | 109400 | 8721 | 1386 | 16034 | 4595 | 7999 | 572 | 2212 |
2019-03-15 | 12562 | 299300 | 111244 | 7795 | 1378 | 16166 | 4945 | 8099 | 574 | 2277 |
2019-03-28 | 14856 | 298586 | 112400 | 8008 | 1451 | 16179 | 4651 | 8273 | 572 | 2492 |
2019-04-01 | 14680 | 296800 | 111962 | 7330 | 1471 | 16260 | 4892 | 8265 | 581 | 2908 |
2019-04-15 | 13830 | 296621 | 111543 | 7310 | 1396 | 16390 | 4722 | 8259 | 584 | 3664 |
2019-04-28 | 12234 | 296175 | 111400 | 16856 | 1331 | 16414 | 3520 | 8323 | 558 | 3210 |
2019-05-01 | 12763 | 296175 | 111400 | 17809 | 1612 | 16930 | 4312 | 8356 | 634 | 3677 |
2019-05-15 | 12729 | 296175 | 111400 | 27514 | 1458 | 17434 | 3768 | 8304 | 711 | 2471 |
2019-05-28 | 10327 | 295897 | 107866 | 29909 | 1387 | 17267 | 4553 | 8218 | 615 | 2100 |
2019-06-01 | 8117 | 293675 | 104630 | 31624 | 1566 | 16988 | 5388 | 8342 | 595 | 2091 |
2019-06-15 | 6931 | 293362 | 97075 | 46389 | 1600 | 17693 | 5510 | 8433 | 571 | 1979 |
2019-06-28 | 6582 | 291175 | 89750 | 34359 | 1602 | 18254 | 6540 | 8484 | 590 | 2135 |
2019-07-01 | 5977 | 290144 | 87250 | 31441 | 1540 | 18955 | 5865 | 8539 | 672 | 1952 |
2019-07-15 | 6597 | 289800 | 81257 | 27887 | 1523 | 19366 | 5329 | 8619 | 751 | 2002 |
2019-07-28 | 6513 | 289331 | 80425 | 18643 | 1482 | 19715 | 5092 | 14834 | 756 | 2022 |
2019-08-01 | 6286 | 280050 | 79357 | 24848 | 1986 | 20352 | 7858 | 14440 | 1350 | 2240 |
2019-08-15 | 6563 | 268117 | 78700 | 29241 | 1670 | 35244 | 7089 | 14448 | 1326 | 2071 |
2019-08-28 | 6223 | 317315 | 78650 | 26941 | 1656 | 31650 | 6489 | 17778 | 1033 | 2262 |
2019-09-01 | 6288 | 252500 | 78600 | 30900 | 1949 | 29161 | 8526 | 12057 | 940 | 2298 |
2019-09-15 | 6258 | 252500 | 78600 | 39994 | 2089 | 27702 | 10204 | 7423 | 1134 | 2076 |
2019-09-28 | 6055 | 247500 | 78266 | 33687 | 2029 | 14105 | 11462 | 6534 | 1268 | 2221 |
2019-10-01 | 6153 | 236250 | 78100 | 30459 | 3066 | 13227 | 11988 | 6055 | 1178 | 1926 |
2019-10-15 | 6432 | 235833 | 78100 | 34681 | 3386 | 13000 | 15019 | 5971 | 1417 | 2217 |
2019-10-28 | 6092 | 235278 | 79456 | 33414 | 703809 | 13067 | 12803 | 9178 | 1270 | 2121 |
2019-11-01 | 6450 | 235500 | 80200 | 28121 | 719056 | 12887 | 11515 | 6549 | 974 | 2400 |
2019-11-15 | 6479 | 235500 | 80400 | 11688 | 1556263 | 12528 | 10683 | 6504 | 825 | 2251 |
2019-11-28 | 6801 | 236643 | 80172 | 11510 | 1823850 | 12598 | 9523 | 6386 | 781 | 2416 |
2019-12-01 | 6813 | 237500 | 80000 | 12400 | 1734489 | 12767 | 10483 | 6137 | 780 | 2756 |
2019-12-15 | 3931 | 237500 | 80000 | 15920 | 1838784 | 12834 | 9546 | 6219 | 765 | 2667 |
2019-12-28 | 5525 | 235083 | 79584 | 14514 | 1567160 | 12833 | 9878 | 6247 | 781 | 2834 |
2020-01-01 | 6215 | 221072 | 79500 | 13914 | 680509 | 13143 | 11031 | 6274 | 945 | 3357 |
2020-01-15 | 6880 | 220000 | 78666 | 15497 | 679894 | 13116 | 10155 | 6454 | 1082 | 3843 |
2020-01-28 | 6111 | 219000 | 72696 | 16385 | 679404 | 13104 | 8527 | 6955 | 1117 | 3705 |
2020-02-01 | 8998 | 216500 | 72100 | 11288 | 678951 | 12794 | 9138 | 6836 | 872 | 3360 |
2020-02-15 | 8609 | 213875 | 72300 | 14780 | 679126 | 13204 | 10335 | 6913 | 722 | 4052 |
2020-02-28 | 10840 | 217344 | 71875 | 10032 | 678947 | 13536 | 10999 | 6961 | 674 | 5270 |
2020-03-01 | 10029 | 216353 | 71910 | 8923 | 679244 | 13437 | 12444 | 6759 | 656 | 4329 |
2020-03-15 | 10746 | 214734 | 69812 | 9672 | 679055 | 13387 | 14737 | 6856 | 647 | 4270 |
2020-03-28 | 11156 | 216321 | 69500 | 8409 | 679112 | 13133 | 12803 | 6910 | 636 | 4243 |
2020-04-01 | 9673 | 217125 | 69500 | 8730 | 678702 | 13048 | 11284 | 6862 | 590 | 4293 |
2020-04-15 | 16412 | 217125 | 69800 | 32514 | 678865 | 13189 | 11010 | 7073 | 575 | 4153 |
2020-04-28 | 18641 | 217125 | 70643 | 29491 | 678887 | 13118 | 9248 | 7317 | 558 | 4169 |
2020-05-01 | 19337 | 217125 | 71250 | 26113 | 678813 | 13310 | 10678 | 7512 | 564 | 3669 |
2020-05-15 | 17815 | 217344 | 75188 | 25872 | 1397 | 13276 | 8357 | 7750 | 560 | 3885 |
2020-05-28 | 15007 | 218018 | 76200 | 29355 | 1625 | 13093 | 8370 | 7779 | 576 | 3053 |
2020-06-01 | 14397 | 225781 | 76025 | 34122 | 1856 | 13183 | 6196 | 7949 | 599 | 2534 |
2020-06-15 | 13180 | 233964 | 76672 | 35851 | 2029 | 13995 | 6630 | 8163 | 640 | 3427 |
2020-06-28 | 12090 | 236478 | 81904 | 38163 | 2304 | 14054 | 9787 | 8558 | 868 | 6409 |
2020-07-01 | 12054 | 235550 | 84266 | 36811 | 2039 | 14214 | 8560 | 8770 | 994 | 5739 |
2020-07-15 | 12124 | 235716 | 101954 | 30569 | 1751 | 14426 | 9656 | 9117 | 1087 | 6448 |
2020-07-28 | 10650 | 236806 | 122711 | 30961 | 1675 | 14610 | 9420 | 9406 | 1092 | 7148 |
2020-08-01 | 12001 | 247416 | 130550 | 47756 | 2422 | 14682 | 13030 | 17093 | 1340 | 8963 |
2020-08-15 | 8738 | 524143 | 130572 | 63233 | 2692 | 14649 | 15440 | 17227 | 1846 | 9910 |
2020-08-28 | 9194 | 814136 | 131414 | 71330 | 3405 | 26960 | 14516 | 20988 | 1803 | 9695 |
2020-09-01 | 9074 | 474528 | 131700 | 69814 | 3283 | 26842 | 16331 | 17403 | 1196 | 10407 |
2020-09-15 | 9388 | 469025 | 131700 | 65291 | 3482 | 20094 | 19217 | 10003 | 1251 | 10594 |
2020-09-28 | 9067 | 442272 | 131586 | 57014 | 3306 | 24147 | 16546 | 10874 | 1231 | 10343 |
2020-10-01 | 8971 | 438938 | 131500 | 30385 | 2584 | 16172 | 12160 | 10502 | 1018 | 11383 |
2020-10-15 | 7952 | 439064 | 131500 | 25623 | 2020 | 16024 | 10353 | 10267 | 756 | 11128 |
2020-10-28 | 8320 | 443312 | 131500 | 26261 | 1576 | 15511 | 7584 | 14451 | 660 | 10686 |
2020-11-01 | 8453 | 448039 | 131500 | 27328 | 407841 | 15586 | 8148 | 10069 | 630 | 11125 |
2020-11-15 | 8172 | 447066 | 131500 | 29092 | 449013 | 15700 | 7286 | 9435 | 605 | 11189 |
2020-11-28 | 10759 | 444667 | 131500 | 24609 | 454504 | 15907 | 6950 | 9268 | 583 | 12580 |
2020-12-01 | 10996 | 443143 | 131500 | 18835 | 403338 | 16300 | 7288 | 8965 | 584 | 12029 |
2020-12-15 | 16391 | 439696 | 131500 | 26109 | 403705 | 16739 | 6723 | 9158 | 669 | 11631 |
2020-12-28 | 16845 | 432912 | 131500 | 36840 | 403840 | 17231 | 7988 | 9557 | 755 | 11414 |
2021-01-01 | 20610 | 430975 | 131500 | 47286 | 2595 | 17632 | 8418 | 9618 | 922 | 13086 |
2021-01-15 | 22195 | 430975 | 131500 | 60539 | 2689 | 18410 | 10181 | 10121 | 1042 | 14330 |
2021-01-28 | 24156 | 430975 | 131500 | 43940 | 2221 | 20002 | 8266 | 11251 | 1039 | 14183 |
2021-02-01 | 24912 | 430975 | 135350 | 30753 | 2072 | 20986 | 9193 | 12116 | 1004 | 16002 |
2021-02-15 | 26167 | 430455 | 138300 | 18859 | 1596 | 21269 | 9109 | 11803 | 937 | 17111 |
2021-02-28 | 26240 | 428825 | 138600 | 20487 | 1463 | 21169 | 7975 | 11770 | 850 | 18713 |
2021-03-01 | 24939 | 428104 | 138400 | 16193 | 1597 | 20586 | 8548 | 11420 | 719 | 16731 |
2021-03-15 | 25349 | 424911 | 139800 | 14551 | 1658 | 20921 | 10288 | 11286 | 720 | 15533 |
2021-03-28 | 23006 | 424791 | 140738 | 13623 | 1590 | 21823 | 9917 | 11561 | 716 | 12893 |
2021-04-01 | 19729 | 428372 | 141014 | 26225 | 1524 | 21480 | 7622 | 11860 | 698 | 7999 |
2021-04-15 | 19479 | 428550 | 142114 | 29735 | 1635 | 21378 | 7626 | 11905 | 700 | 6961 |
2021-04-28 | 17557 | 428550 | 150150 | 29328 | 1621 | 21301 | 6508 | 11962 | 709 | 4060 |
2021-05-01 | 18033 | 428550 | 148200 | 29345 | 1657 | 21408 | 6463 | 11990 | 683 | 5483 |
2021-05-15 | 14501 | 428550 | 145914 | 29460 | 1494 | 20578 | 5829 | 11974 | 685 | 4436 |
2021-05-28 | 14075 | 428550 | 143836 | 23604 | 1561 | 21309 | 6004 | 11643 | 701 | 4504 |
2021-06-01 | 8616 | 428550 | 143000 | 25869 | 1756 | 21745 | 5323 | 11554 | 825 | 4409 |
2021-06-15 | 7789 | 429383 | 141250 | 29885 | 1715 | 21837 | 5445 | 11746 | 805 | 5454 |
2021-06-28 | 9470 | 429800 | 140286 | 31388 | 1850 | 22331 | 6290 | 11682 | 818 | 5025 |
2021-07-01 | 10931 | 429800 | 140511 | 31726 | 2433 | 22876 | 5669 | 11612 | 855 | 5012 |
2021-07-15 | 7822 | 425857 | 157114 | 30422 | 1982 | 23641 | 6295 | 11709 | 970 | 5108 |
2021-07-28 | 9307 | 681860 | 157350 | 46005 | 2080 | 24210 | 7592 | 11587 | 1236 | 5944 |
2021-08-01 | 11273 | 768657 | 157886 | 62117 | 2355 | 24748 | 10695 | 15408 | 1238 | 7477 |
2021-08-15 | 11970 | 731371 | 156358 | 68709 | 1935 | 24302 | 10309 | 17611 | 1320 | 8324 |
2021-08-28 | 11994 | 321917 | 156000 | 52377 | 1880 | 27381 | 9809 | 20729 | 1381 | 8467 |
2021-09-01 | 12381 | 319197 | 153650 | 47336 | 2300 | 30134 | 11555 | 8385 | 1842 | 9139 |
2021-09-15 | 12314 | 310806 | 152900 | 65237 | 2006 | 24134 | 12051 | 8339 | 2018 | 8431 |
2021-09-28 | 12266 | 307452 | 152900 | 39638 | 1300 | 16693 | 7299 | 8631 | 1614 | 8398 |
2021-10-01 | 11247 | 306470 | 152900 | 30134 | 1429 | 15809 | 6780 | 7671 | 971 | 9470 |
2021-10-15 | 11949 | 302532 | 152986 | 40696 | 2172 | 14583 | 8674 | 7176 | 1080 | 8856 |
2021-10-28 | 11428 | 300775 | 153000 | 31435 | 3503 | 14550 | 13462 | 4950 | 1731 | 8931 |
2021-11-01 | 11616 | 300775 | 154500 | 25906 | 2434 | 14502 | 12038 | 8922 | 1394 | 8007 |
2021-11-15 | 13272 | 300775 | 162086 | 23591 | 2595 | 13734 | 13096 | 8294 | 967 | 9487 |
2021-11-28 | 17634 | 302382 | 164000 | 17168 | 2130 | 13940 | 12113 | 8300 | 845 | 8158 |
2021-12-01 | 18178 | 303588 | 164000 | 17118 | 2216 | 14133 | 11476 | 8490 | 753 | 7300 |
2021-12-15 | 17322 | 303588 | 164000 | 19419 | 1882 | 14324 | 10966 | 8448 | 738 | 6870 |
2021-12-28 | 26568 | 301400 | 162934 | 18900 | 1934 | 15420 | 11929 | 8575 | 777 | 6792 |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# target 기준 시점별 품목별 평균가격
monthly_avg_price_by_item_target = train_data_target.groupby(['시점', '품목명'])['평균가격(원)'].mean().reset_index()
# 시각화
unique_items = monthly_avg_price_by_item_target['품목명'].unique()
# 각 품목별로 차트 생성
for item in unique_items:
plt.figure(figsize=(14, 6))
item_data = monthly_avg_price_by_item_target[monthly_avg_price_by_item_target['품목명'] == item]
sns.lineplot(data=item_data, x='시점', y='평균가격(원)')
plt.title(f'Average Price of {item} Over Time')
plt.xlabel('Date')
plt.ylabel('Average Price (원)')
plt.xticks(rotation=45)
plt.grid()
plt.show()
- 나름 규칙적인 패턴이 있는가하면 가격이 불안정한 농산물도 상당수 있음
1
2
3
4
monthly_avg_price_by_item_target = train_data_target.groupby(['시점', '품목명'])['평균가격(원)'].mean().reset_index()
pivot_table2 = monthly_avg_price_by_item_target.pivot(index='시점', columns='품목명', values='평균가격(원)')
pivot_table2 = pivot_table2.round(0).astype(int)
pivot_table2
품목명 | 감자 | 건고추 | 깐마늘(국산) | 대파 | 무 | 배 | 배추 | 사과 | 상추 | 양파 |
---|---|---|---|---|---|---|---|---|---|---|
시점 | ||||||||||
2018-01-01 | 44170 | 590000 | 130667 | 1685 | 9284 | 28312 | 5420 | 20361 | 940 | 1144 |
2018-01-15 | 48284 | 590000 | 130600 | 1625 | 9260 | 28290 | 5319 | 20359 | 981 | 1041 |
2018-01-28 | 50243 | 590000 | 130600 | 1834 | 10576 | 28324 | 6735 | 20653 | 983 | 1036 |
2018-02-01 | 55381 | 590000 | 134614 | 2530 | 18371 | 28113 | 8942 | 20563 | 1009 | 1046 |
2018-02-15 | 59133 | 590000 | 137100 | 1538 | 19546 | 28294 | 7247 | 21779 | 1022 | 1098 |
2018-02-28 | 60487 | 580833 | 137100 | 1444 | 19226 | 28129 | 7891 | 21465 | 918 | 922 |
2018-03-01 | 64070 | 563333 | 137100 | 1426 | 23856 | 27435 | 8168 | 21384 | 670 | 879 |
2018-03-15 | 70822 | 575000 | 137100 | 1309 | 19215 | 27543 | 7797 | 20695 | 627 | 675 |
2018-03-28 | 92195 | 575000 | 136912 | 1121 | 19304 | 27942 | 7996 | 20794 | 623 | 644 |
2018-04-01 | 115128 | 575000 | 136428 | 914 | 18611 | 28129 | 7503 | 19019 | 689 | 647 |
2018-04-15 | 109037 | 575000 | 142000 | 787 | 20007 | 28140 | 7082 | 19208 | 676 | 760 |
2018-04-28 | 98434 | 575000 | 142000 | 1002 | 23676 | 27779 | 6637 | 19154 | 711 | 954 |
2018-05-01 | 74558 | 575000 | 142000 | 1254 | 25174 | 28143 | 5589 | 19074 | 707 | 836 |
2018-05-15 | 50940 | 575000 | 139083 | 884 | 22678 | 28288 | 4657 | 18943 | 672 | 592 |
2018-05-28 | 41498 | 575000 | 138500 | 1385 | 13201 | 28179 | 3771 | 18681 | 698 | 553 |
2018-06-01 | 25062 | 591320 | 138500 | 1237 | 13106 | 27790 | 3345 | 19018 | 741 | 679 |
2018-06-15 | 23765 | 599514 | 137928 | 1149 | 10809 | 27844 | 4073 | 19762 | 699 | 742 |
2018-06-28 | 23870 | 600000 | 137100 | 1289 | 11432 | 28322 | 4684 | 19393 | 664 | 659 |
2018-07-01 | 24742 | 600000 | 123914 | 1324 | 11280 | 28555 | 5479 | 19508 | 700 | 697 |
2018-07-15 | 24152 | 599375 | 122350 | 1203 | 14501 | 28595 | 7957 | 19496 | 1046 | 713 |
2018-07-28 | 28255 | 590943 | 119928 | 1400 | 20879 | 28632 | 11236 | 19680 | 977 | 799 |
2018-08-01 | 37492 | 601250 | 119500 | 1609 | 23968 | 28352 | 10779 | 20287 | 969 | 911 |
2018-08-15 | 37474 | 605000 | 118800 | 1843 | 20642 | 28464 | 16235 | 20956 | 1223 | 804 |
2018-08-28 | 42554 | 600000 | 116000 | 2981 | 27821 | 28192 | 17583 | 21807 | 1556 | 810 |
2018-09-01 | 40545 | 771633 | 116000 | 2997 | 22826 | 26699 | 10922 | 21299 | 1908 | 790 |
2018-09-15 | 40888 | 670800 | 116000 | 2671 | 21873 | 35206 | 9810 | 26228 | 2071 | 764 |
2018-09-28 | 43794 | 651067 | 116000 | 2904 | 21683 | 36263 | 7212 | 26219 | 1634 | 718 |
2018-10-01 | 39751 | 628017 | 116000 | 2809 | 15611 | 35528 | 6275 | 25411 | 1410 | 808 |
2018-10-15 | 38610 | 616000 | 119714 | 1849 | 12332 | 33137 | 5449 | 22474 | 1037 | 708 |
2018-10-28 | 38499 | 608500 | 122375 | 1908 | 8466 | 33051 | 5500 | 22336 | 935 | 714 |
2018-11-01 | 43583 | 593857 | 123357 | 1852 | 6862 | 33505 | 5469 | 21791 | 831 | 724 |
2018-11-15 | 42668 | 586000 | 123500 | 1828 | 5770 | 33602 | 4931 | 22815 | 759 | 720 |
2018-11-28 | 40473 | 588500 | 124375 | 1606 | 5724 | 34202 | 4795 | 23070 | 744 | 677 |
2018-12-01 | 39454 | 599000 | 124100 | 1827 | 7230 | 34577 | 4314 | 22840 | 721 | 649 |
2018-12-15 | 42736 | 601000 | 123188 | 1531 | 7809 | 35128 | 3553 | 22237 | 711 | 696 |
2018-12-28 | 42905 | 601000 | 119917 | 1412 | 7535 | 36299 | 3268 | 21908 | 730 | 650 |
2019-01-01 | 42426 | 598357 | 117500 | 1501 | 7729 | 36310 | 2927 | 22487 | 760 | 722 |
2019-01-15 | 39411 | 593950 | 117550 | 1188 | 6801 | 36997 | 2823 | 23655 | 772 | 583 |
2019-01-28 | 40487 | 581378 | 117600 | 1171 | 7741 | 39020 | 2783 | 25155 | 761 | 575 |
2019-02-01 | 42760 | 578600 | 117600 | 1156 | 7895 | 40269 | 3235 | 26059 | 767 | 610 |
2019-02-15 | 42351 | 581725 | 117600 | 1170 | 8620 | 38450 | 2775 | 24721 | 736 | 645 |
2019-02-28 | 41386 | 588600 | 117600 | 953 | 8433 | 38635 | 2484 | 24274 | 709 | 593 |
2019-03-01 | 49900 | 588600 | 117600 | 914 | 7994 | 38477 | 2480 | 24027 | 710 | 668 |
2019-03-15 | 57439 | 588600 | 120850 | 851 | 7646 | 38730 | 2495 | 24501 | 716 | 667 |
2019-03-28 | 64747 | 585743 | 123100 | 698 | 6670 | 38835 | 2483 | 24797 | 715 | 762 |
2019-04-01 | 60224 | 578600 | 122662 | 842 | 7174 | 38855 | 2466 | 24550 | 723 | 1006 |
2019-04-15 | 51644 | 577171 | 122243 | 830 | 8151 | 38745 | 2681 | 24522 | 739 | 974 |
2019-04-28 | 41836 | 573600 | 122100 | 895 | 9277 | 38809 | 2643 | 25049 | 715 | 729 |
2019-05-01 | 43263 | 573600 | 122100 | 1187 | 9762 | 39511 | 2894 | 24884 | 767 | 726 |
2019-05-15 | 43275 | 573600 | 122100 | 1414 | 9051 | 39963 | 3420 | 24801 | 861 | 489 |
2019-05-28 | 29787 | 573044 | 118544 | 1719 | 8342 | 39913 | 3744 | 24563 | 803 | 498 |
2019-06-01 | 21312 | 568600 | 115280 | 1756 | 9132 | 40033 | 4880 | 25007 | 766 | 464 |
2019-06-15 | 18377 | 567975 | 103525 | 1440 | 8805 | 41507 | 5758 | 25248 | 708 | 398 |
2019-06-28 | 19100 | 563600 | 94750 | 1371 | 8364 | 43013 | 6128 | 25287 | 726 | 450 |
2019-07-01 | 16364 | 561350 | 92250 | 1562 | 8151 | 43830 | 5524 | 25319 | 800 | 390 |
2019-07-15 | 19713 | 560600 | 86257 | 1564 | 8930 | 44998 | 6094 | 25760 | 929 | 413 |
2019-07-28 | 19782 | 559350 | 85425 | 1583 | 5795 | 45877 | 5912 | 25340 | 950 | 427 |
2019-08-01 | 18479 | 538743 | 84357 | 1909 | 6929 | 45823 | 6700 | 25279 | 1549 | 538 |
2019-08-15 | 18589 | 516733 | 83700 | 1624 | 8141 | 45736 | 6597 | 25974 | 1675 | 502 |
2019-08-28 | 16750 | 493366 | 83650 | 1335 | 9616 | 43486 | 7692 | 26672 | 1339 | 474 |
2019-09-01 | 17472 | 470000 | 83600 | 1732 | 12056 | 36613 | 11855 | 25700 | 1225 | 496 |
2019-09-15 | 17827 | 470000 | 83600 | 1701 | 10907 | 34958 | 13132 | 22939 | 1339 | 539 |
2019-09-28 | 16791 | 460000 | 83266 | 1684 | 12325 | 34803 | 18168 | 20127 | 1518 | 494 |
2019-10-01 | 16972 | 430000 | 83100 | 1734 | 20288 | 33689 | 16388 | 18516 | 1469 | 450 |
2019-10-15 | 18050 | 430000 | 83100 | 1503 | 18902 | 32626 | 13268 | 17644 | 1689 | 510 |
2019-10-28 | 16344 | 431111 | 84456 | 1577 | 20094 | 32074 | 9547 | 18986 | 1530 | 523 |
2019-11-01 | 19047 | 432000 | 85200 | 1468 | 18688 | 31478 | 8370 | 19086 | 1219 | 530 |
2019-11-15 | 19557 | 432000 | 85400 | 1571 | 19211 | 30789 | 9176 | 18829 | 1047 | 577 |
2019-11-28 | 20175 | 433714 | 85172 | 1425 | 18697 | 30527 | 9163 | 18390 | 965 | 641 |
2019-12-01 | 20088 | 435000 | 85000 | 1494 | 22652 | 31030 | 8697 | 17583 | 974 | 802 |
2019-12-15 | 18996 | 435000 | 85000 | 1333 | 25629 | 31423 | 8600 | 17745 | 947 | 728 |
2019-12-28 | 23132 | 429833 | 84584 | 1406 | 24146 | 31549 | 8820 | 18227 | 970 | 784 |
2020-01-01 | 25535 | 401429 | 84500 | 1406 | 25479 | 32191 | 9273 | 18290 | 1127 | 933 |
2020-01-15 | 31223 | 400000 | 83666 | 1085 | 19378 | 32249 | 8702 | 18508 | 1316 | 898 |
2020-01-28 | 25293 | 398857 | 77696 | 926 | 17106 | 31685 | 8522 | 20625 | 1377 | 930 |
2020-02-01 | 32809 | 396000 | 77100 | 1106 | 10902 | 30074 | 8881 | 20006 | 1143 | 929 |
2020-02-15 | 31611 | 396000 | 77300 | 925 | 11589 | 31786 | 9089 | 20348 | 932 | 1015 |
2020-02-28 | 47157 | 401250 | 76875 | 922 | 9168 | 32914 | 9076 | 20120 | 851 | 1490 |
2020-03-01 | 39014 | 399750 | 76910 | 807 | 10112 | 32903 | 8657 | 19667 | 811 | 1132 |
2020-03-15 | 42722 | 399125 | 74812 | 788 | 8491 | 33513 | 8288 | 19802 | 796 | 1090 |
2020-03-28 | 44674 | 403857 | 74500 | 766 | 10133 | 32331 | 8157 | 19988 | 786 | 1124 |
2020-04-01 | 41647 | 406000 | 74500 | 823 | 8165 | 32093 | 7590 | 20251 | 713 | 1082 |
2020-04-15 | 45117 | 406000 | 74800 | 905 | 9709 | 32593 | 8504 | 20484 | 695 | 986 |
2020-04-28 | 49584 | 406000 | 75643 | 1138 | 10187 | 32784 | 11245 | 20518 | 693 | 910 |
2020-05-01 | 48523 | 406000 | 76250 | 1325 | 9875 | 33112 | 10654 | 20940 | 689 | 856 |
2020-05-15 | 43740 | 406375 | 80188 | 1449 | 8404 | 32948 | 9589 | 21526 | 691 | 855 |
2020-05-28 | 28288 | 409000 | 81200 | 1503 | 8992 | 32668 | 9950 | 21783 | 726 | 709 |
2020-06-01 | 27899 | 428125 | 81025 | 1364 | 11057 | 32951 | 7173 | 22451 | 754 | 613 |
2020-06-15 | 25177 | 446714 | 81672 | 1623 | 11275 | 33685 | 7488 | 22908 | 799 | 699 |
2020-06-28 | 20326 | 453457 | 85833 | 1555 | 12731 | 33963 | 7608 | 23682 | 1078 | 774 |
2020-07-01 | 19618 | 451600 | 88140 | 1448 | 11514 | 34443 | 7897 | 24879 | 1209 | 664 |
2020-07-15 | 20346 | 451933 | 106408 | 1758 | 11746 | 34696 | 11236 | 26075 | 1348 | 797 |
2020-07-28 | 22675 | 453933 | 127622 | 1718 | 10809 | 35224 | 12040 | 26973 | 1360 | 900 |
2020-08-01 | 27168 | 472233 | 135600 | 2951 | 12765 | 35338 | 12339 | 27768 | 1632 | 978 |
2020-08-15 | 29195 | 656571 | 135614 | 2572 | 13421 | 35367 | 17104 | 27649 | 2203 | 1002 |
2020-08-28 | 30143 | 703571 | 136486 | 2312 | 23336 | 36155 | 18618 | 26514 | 2164 | 1009 |
2020-09-01 | 29065 | 905650 | 136800 | 2713 | 23617 | 37269 | 19790 | 30369 | 1533 | 1102 |
2020-09-15 | 30464 | 890800 | 136800 | 2426 | 22133 | 29846 | 25821 | 29944 | 1584 | 1044 |
2020-09-28 | 32093 | 815114 | 136686 | 2661 | 24917 | 36920 | 24373 | 32610 | 1530 | 1063 |
2020-10-01 | 30682 | 806000 | 136600 | 2905 | 20662 | 37215 | 16984 | 30579 | 1264 | 1245 |
2020-10-15 | 27133 | 807057 | 136600 | 2530 | 14746 | 36568 | 8204 | 29534 | 965 | 1169 |
2020-10-28 | 28129 | 819750 | 136600 | 2777 | 11304 | 35732 | 6000 | 29715 | 834 | 1221 |
2020-11-01 | 28879 | 830629 | 136600 | 2771 | 11496 | 36707 | 5757 | 29099 | 760 | 1283 |
2020-11-15 | 28705 | 825750 | 136600 | 2804 | 10245 | 36354 | 6674 | 27159 | 723 | 1296 |
2020-11-28 | 28987 | 816467 | 136600 | 2259 | 8736 | 36455 | 5542 | 26942 | 690 | 1334 |
2020-12-01 | 28334 | 810371 | 136600 | 1783 | 8982 | 37346 | 4002 | 26543 | 705 | 1294 |
2020-12-15 | 27793 | 797800 | 136600 | 1913 | 12023 | 38155 | 3782 | 27134 | 835 | 1290 |
2020-12-28 | 29702 | 778150 | 136600 | 1783 | 14112 | 39443 | 3373 | 27935 | 920 | 1420 |
2021-01-01 | 40769 | 770400 | 136600 | 2760 | 15454 | 40309 | 3315 | 28046 | 1094 | 1571 |
2021-01-15 | 42077 | 770400 | 136600 | 3285 | 14209 | 41773 | 4905 | 29954 | 1221 | 1707 |
2021-01-28 | 38563 | 770400 | 136600 | 3452 | 11529 | 46698 | 5641 | 32624 | 1214 | 1691 |
2021-02-01 | 44619 | 770400 | 140438 | 4307 | 9099 | 48547 | 6297 | 35339 | 1191 | 1752 |
2021-02-15 | 37598 | 770400 | 143300 | 4670 | 8340 | 47498 | 8421 | 34097 | 1139 | 2001 |
2021-02-28 | 46297 | 770400 | 143800 | 5489 | 7571 | 46220 | 8894 | 33901 | 1048 | 2021 |
2021-03-01 | 41993 | 769686 | 143600 | 5176 | 7826 | 44800 | 9311 | 33066 | 885 | 1825 |
2021-03-15 | 44974 | 764029 | 145000 | 4386 | 8208 | 46270 | 9345 | 32917 | 887 | 1973 |
2021-03-28 | 50239 | 764000 | 145938 | 4441 | 7182 | 48163 | 9393 | 33668 | 896 | 1556 |
2021-04-01 | 52162 | 767800 | 146214 | 4296 | 7465 | 47176 | 9566 | 34642 | 869 | 1349 |
2021-04-15 | 49736 | 767800 | 147314 | 4370 | 8291 | 46831 | 9218 | 34038 | 880 | 945 |
2021-04-28 | 39850 | 767800 | 155350 | 3715 | 8946 | 46783 | 8997 | 34235 | 888 | 715 |
2021-05-01 | 35688 | 767800 | 153400 | 3749 | 9052 | 46856 | 6507 | 34263 | 861 | 661 |
2021-05-15 | 30355 | 767800 | 151143 | 2249 | 8165 | 46516 | 4591 | 34386 | 865 | 523 |
2021-05-28 | 26345 | 767800 | 149086 | 1446 | 8497 | 46978 | 5713 | 32823 | 892 | 549 |
2021-06-01 | 20956 | 767800 | 148250 | 1183 | 9258 | 47711 | 6226 | 33013 | 1010 | 576 |
2021-06-15 | 18251 | 771133 | 146500 | 1053 | 8436 | 48455 | 5418 | 34023 | 1026 | 695 |
2021-06-28 | 19178 | 772800 | 145396 | 850 | 9150 | 49511 | 5138 | 33554 | 1056 | 688 |
2021-07-01 | 20931 | 772800 | 145618 | 1022 | 12564 | 50696 | 4672 | 33200 | 1092 | 677 |
2021-07-15 | 20169 | 772800 | 162207 | 884 | 9013 | 52031 | 4782 | 33300 | 1214 | 683 |
2021-07-28 | 23344 | 772800 | 162450 | 844 | 11067 | 52473 | 6819 | 33472 | 1573 | 736 |
2021-08-01 | 28258 | 759943 | 162986 | 1382 | 13885 | 53463 | 10284 | 32511 | 1607 | 912 |
2021-08-15 | 29960 | 732243 | 161458 | 1165 | 10581 | 52707 | 8025 | 31031 | 1714 | 874 |
2021-08-28 | 28987 | 602000 | 161100 | 1342 | 10102 | 50514 | 9007 | 30531 | 1849 | 874 |
2021-09-01 | 29590 | 599813 | 158750 | 1490 | 9531 | 32101 | 11554 | 24907 | 2204 | 960 |
2021-09-15 | 31365 | 587000 | 158000 | 1850 | 10187 | 32774 | 13765 | 26407 | 2403 | 908 |
2021-09-28 | 30398 | 580750 | 158000 | 1274 | 8076 | 36734 | 9142 | 27970 | 2043 | 855 |
2021-10-01 | 28628 | 578400 | 158000 | 1316 | 7584 | 35325 | 6351 | 25009 | 1228 | 893 |
2021-10-15 | 29442 | 562714 | 158086 | 1428 | 8730 | 32757 | 4706 | 23608 | 1365 | 900 |
2021-10-28 | 28300 | 558000 | 158100 | 1601 | 10917 | 31487 | 6466 | 24748 | 2072 | 937 |
2021-11-01 | 30181 | 558000 | 159600 | 1583 | 10744 | 32666 | 9495 | 25889 | 1734 | 907 |
2021-11-15 | 33761 | 558000 | 167200 | 1754 | 12581 | 30859 | 10627 | 26004 | 1208 | 909 |
2021-11-28 | 36024 | 565143 | 169100 | 1460 | 11107 | 32239 | 9273 | 25494 | 1062 | 855 |
2021-12-01 | 35234 | 570500 | 169100 | 1619 | 11458 | 33333 | 8282 | 26144 | 946 | 816 |
2021-12-15 | 32679 | 570500 | 169100 | 1217 | 10598 | 33593 | 7667 | 26177 | 931 | 735 |
2021-12-28 | 42441 | 560778 | 168034 | 1322 | 10748 | 35900 | 7763 | 25952 | 988 | 695 |
1
2
3
4
5
6
7
8
# 품목별 평균가격 비교
plt.figure(figsize=(12, 6))
sns.boxplot(x='품목명', y='평균가격(원)', data=train_data)
plt.title('Average Price by Item')
plt.xticks(rotation=45)
plt.grid()
plt.show()
산지공판장
1
2
3
4
# TRAIN_산지공판장_2018-2021.csv 파일 읽기
meta_sanji_file_path = '/content/drive/MyDrive/데이콘/농산물/train/meta/TRAIN_산지공판장_2018-2021.csv'
sanji_data = pd.read_csv(meta_sanji_file_path)
sanji_data.head(5)
시점 | 공판장코드 | 공판장명 | 품목코드 | 품목명 | 품종코드 | 품종명 | 등급코드 | 등급명 | 총반입량(kg) | ... | 평균가(원/kg) | 중간가(원/kg) | 최저가(원/kg) | 최고가(원/kg) | 경매 건수 | 전순 평균가격(원) PreVious SOON | 전달 평균가격(원) PreVious MMonth | 전년 평균가격(원) PreVious YeaR | 평년 평균가격(원) Common Year SOON | 연도 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 201801상순 | 1000000000 | *전국농협공판장 | 501 | 감자 | 50101 | 수미 | 11 | 특 | 15470.0 | ... | 1712.637363 | 1723.961039 | 1545.454545 | 2320.666667 | 7 | 1947.350427 | 1769.858320 | 1023.982379 | 0.0 | 2018 |
1 | 201801상순 | 1000000000 | *전국농협공판장 | 501 | 감자 | 50101 | 수미 | 12 | 상 | 2900.0 | ... | 1198.655172 | 1252.737207 | 893.055556 | 1417.857143 | 4 | 1301.239669 | 1348.253676 | 571.311475 | 0.0 | 2018 |
2 | 201801상순 | 1000000000 | *전국농협공판장 | 501 | 감자 | 50199 | 기타감자 | 13 | 보통 | 1320.0 | ... | 615.000000 | 600.000000 | 240.000000 | 911.875000 | 7 | 630.851064 | 449.166667 | 473.032787 | 0.0 | 2018 |
3 | 201801상순 | 1000000000 | *전국농협공판장 | 501 | 감자 | 50199 | 기타감자 | 12 | 상 | 460.0 | ... | 544.130435 | 365.000000 | 200.000000 | 1650.000000 | 5 | 1088.046875 | 1129.600000 | 734.024390 | 0.0 | 2018 |
4 | 201801상순 | 1000000000 | *전국농협공판장 | 501 | 감자 | 50199 | 기타감자 | 11 | 특 | 30967.0 | ... | 1876.454484 | 2010.440477 | 1598.327715 | 2438.720588 | 8 | 2126.402457 | 1779.262728 | 1750.544700 | 0.0 | 2018 |
5 rows × 21 columns
1
sanji_data.info()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 118628 entries, 0 to 118627
Data columns (total 21 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 시점 118628 non-null object
1 공판장코드 118628 non-null int64
2 공판장명 118628 non-null object
3 품목코드 118628 non-null int64
4 품목명 118628 non-null object
5 품종코드 118628 non-null int64
6 품종명 118628 non-null object
7 등급코드 118628 non-null int64
8 등급명 118628 non-null object
9 총반입량(kg) 118628 non-null float64
10 총거래금액(원) 118628 non-null int64
11 평균가(원/kg) 118628 non-null float64
12 중간가(원/kg) 118628 non-null float64
13 최저가(원/kg) 118628 non-null float64
14 최고가(원/kg) 118628 non-null float64
15 경매 건수 118628 non-null int64
16 전순 평균가격(원) PreVious SOON 118628 non-null float64
17 전달 평균가격(원) PreVious MMonth 118628 non-null float64
18 전년 평균가격(원) PreVious YeaR 118628 non-null float64
19 평년 평균가격(원) Common Year SOON 118628 non-null float64
20 연도 118628 non-null int64
dtypes: float64(9), int64(7), object(5)
memory usage: 19.0+ MB
1
sanji_data.isnull().sum()
0 | |
---|---|
시점 | 0 |
공판장코드 | 0 |
공판장명 | 0 |
품목코드 | 0 |
품목명 | 0 |
품종코드 | 0 |
품종명 | 0 |
등급코드 | 0 |
등급명 | 0 |
총반입량(kg) | 0 |
총거래금액(원) | 0 |
평균가(원/kg) | 0 |
중간가(원/kg) | 0 |
최저가(원/kg) | 0 |
최고가(원/kg) | 0 |
경매 건수 | 0 |
전순 평균가격(원) PreVious SOON | 0 |
전달 평균가격(원) PreVious MMonth | 0 |
전년 평균가격(원) PreVious YeaR | 0 |
평년 평균가격(원) Common Year SOON | 0 |
연도 | 0 |
1
sanji_data.duplicated().sum()
1
0
1
sanji_data.columns
1
2
3
4
5
6
Index(['시점', '공판장코드', '공판장명', '품목코드', '품목명', '품종코드', '품종명', '등급코드', '등급명',
'총반입량(kg)', '총거래금액(원)', '평균가(원/kg)', '중간가(원/kg)', '최저가(원/kg)',
'최고가(원/kg)', '경매 건수', '전순 평균가격(원) PreVious SOON',
'전달 평균가격(원) PreVious MMonth', '전년 평균가격(원) PreVious YeaR',
'평년 평균가격(원) Common Year SOON', '연도'],
dtype='object')
1
sanji_data['공판장명'].unique()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
array(['*전국농협공판장', '동두천농협공판장', '포천농협공판장', '제천농협공판장', '공주농협공판장',
'논산계룡농협농산물공판장', '충서원협농산물공판장', '예산능금농협공판장', '군산원예농업협동조합', '전주농협공판장',
'김제원예농업협동조합공판장', '남원원협공판장', '목포원예농업협동조합', '나주배농업협동조합', '대구공판장',
'여수원예농협여천공판장', '여수원예농협농산물공판장', '왜관농협공판장', '경주농협 공판장',
'영천농협농산물공판장간이지점', '대구경북능금농협영천공판장', '김천농협공판장', '상주농협공판장',
'상주원예농협공판장', '점촌농협경제사업소', '풍기농협 백신<간>(판매)', '거창사과원예농협',
'통영농협 농산물공판장', '동부농협 경매식집하장', '고성농협 공판장', '새통영농협 도산지점(공판)',
'새남해농협경매식집하장', '새남해농협설천지점', '새남해농협남상지소', '새남해농협도마지점공판장(공판)',
'새남해농협 중현지점', '창선농협(공판)', '동남해농협 남면지점(공판)', '동남해농협 삼동지점(공판)',
'남해농협경매식집하장', '밀양농협공판장지점', '제주시농협농산물공판장', '서포농협(공판)',
'삼천포농협농산물공판장', '의성농협농산물공판장(공판)', '동남해농협집하장(공판)', '남지농협공판장',
'서생농협구동경매식집하장', '새남해농협서면지점경매식집하장', '동남해농협 미조지점(공판)',
'동남해농협상주지점(공판)', '산청군농협 농산물산지유통센터(공판)', '새고성농협 하일지점(공판)',
'동고성농협(공판)', '무안농업협동조합', '풍양농협 경매식집하장', '녹동농협농산물공판장', '대곡농협월아지점',
'청도농협', '창녕농협공판장', '대관령원예농협공판사업소', '의성중부농협경매식집하장(공판)', '금성농협(공판)',
'하양농협경매식집하장', '합천동부농협집하장(공판)', '이방농협', '경산농협공판장', '산서농협공판장',
'의성중부농협 안평지점(공판)', '대동농협 공판장', '우포농협(공판)', '동안동농협(공판)',
'용암농협농산물공판장'], dtype=object)
1
sanji_data['품목명'].unique()
1
2
array(['감자', '사과', '배', '배추', '상추', '무', '양파', '대파', '마늘', '순무'],
dtype=object)
1
sanji_data['품종명'].unique()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
array(['수미', '기타감자', '돼지감자', '자주감자', '대지', '미시마', '미얀마', '로얄부사', '착색후지',
'후지', '기꾸8', '기타사과', '신고', '금촌추', '추황', '감천', '기타배', '월동배추',
'기타배추', '우거지', '쌈배추', '저장배추', '기타상추', '쫑상추', '상추순', '포기찹', '청상추',
'적포기', '적상추', '다발무', '단무지무', '무말랭이', '기타무', '가을무', '저장무', '저장양파',
'깐양파', '기타양파', '양파(수입)', '기타대파', '깐대파', '중파', '대파(일반)', '저장형 난지',
'마늘쫑(수입)', '마늘쫑', '깐마늘', '풋마늘', '기타마늘', '남작', '감홍', '양파(일반)',
'깐마늘(수입)', '알프스오토메', '꽃적상추', '갈라', '수황', '순무(일반)', '육쪽마늘', '만수',
'김장(가을)배추', '봄배추', '마늘(수입)', '조생양파', '청포기', '영산', '조풍', '생채용 배추',
'여름배추', '흑적', '스타크림숀', '봄무', '햇마늘 난지', '저장형 한지', '햇마늘 한지', '대서',
'여름무', '만생양파', '중생양파', '홍깨니백', '고냉지배추', '산사', '왕령', '행수', '선농',
'미야비', '아오리', '시나노스위트', '시나노레드', '맨코이', '홍로', '하향', '원황', '장수',
'두백', '태양', '모리스', '추향', '석정', '화산', '추광', '화홍', '풍수', '황금', '요까',
'홍옥', '자홍', '장십랑', '조나골드', '천추', '홍월', '양광', '홍장군', '히로사끼', '예황',
'야다까', '사이삼', '사과', '신흥', '단배', '홍감자', '신수', '한아름', '선홍', '만풍',
'이십세기', '고냉지무', '아이카향', '서광', '세계일', '육오', '대홍', '소백3호', '햇마늘 대서',
'햇마늘 남도', '깐마늘 남도', '깐마늘 한지', '저장형 대서', '저장형 남도', '만삼길', '절임배추',
'깐마늘 대서'], dtype=object)
1
sanji_data['등급명'].unique()
1
2
array(['특', '상', '보통', '.', '등외', '4등', '5등', '6등', '7등', '8등'],
dtype=object)
1
sanji_data['연도'].unique()
1
array([2018, 2019, 2020, 2021])
무
- 베이스코드는
기타무
사용 - 가을무, 봄무, 여름무, 다발무 통합 고려
1
2
3
sanji_data[sanji_data['품목명'] == '무'].groupby(['품종명'])[['전순 평균가격(원) PreVious SOON',
'전달 평균가격(원) PreVious MMonth', '전년 평균가격(원) PreVious YeaR',
'평년 평균가격(원) Common Year SOON']].mean().reset_index()
품종명 | 전순 평균가격(원) PreVious SOON | 전달 평균가격(원) PreVious MMonth | 전년 평균가격(원) PreVious YeaR | 평년 평균가격(원) Common Year SOON | |
---|---|---|---|---|---|
0 | 가을무 | 364.496324 | 274.655066 | 242.190518 | 31.957720 |
1 | 고냉지무 | 264.650977 | 0.000000 | 0.000000 | 0.000000 |
2 | 기타무 | 521.595289 | 480.538100 | 493.062633 | 61.633020 |
3 | 다발무 | 471.451711 | 406.059504 | 410.614604 | 57.488390 |
4 | 단무지무 | 309.917956 | 218.829911 | 139.950914 | 0.941931 |
5 | 무말랭이 | 4900.287393 | 4715.785434 | 4911.765053 | 686.727068 |
6 | 봄무 | 395.756037 | 322.147367 | 373.670871 | 50.657647 |
7 | 여름무 | 389.546479 | 280.379240 | 388.051570 | 50.507092 |
8 | 저장무 | 151.465287 | 114.053021 | 141.616753 | 8.661138 |
사과
- 베이스코드는
후지
사용 - target에 홍로도 있고 공판장에도 홍로가있어서 포함할 필요가 있다
- 그밖에 품종들은 지식이없어서 넣어야할지 고민이 필요하다
1
2
3
sanji_data[sanji_data['품목명'] == '사과'].groupby(['품종명'])[['전순 평균가격(원) PreVious SOON',
'전달 평균가격(원) PreVious MMonth', '전년 평균가격(원) PreVious YeaR',
'평년 평균가격(원) Common Year SOON']].mean().reset_index()
품종명 | 전순 평균가격(원) PreVious SOON | 전달 평균가격(원) PreVious MMonth | 전년 평균가격(원) PreVious YeaR | 평년 평균가격(원) Common Year SOON | |
---|---|---|---|---|---|
0 | 갈라 | 569.678093 | 263.004736 | 869.679246 | 0.000000 |
1 | 감홍 | 1730.576598 | 875.500095 | 1445.164604 | 167.070058 |
2 | 기꾸8 | 954.873830 | 339.413813 | 310.775593 | 0.000000 |
3 | 기타사과 | 1492.372872 | 1283.213815 | 1268.129595 | 173.348689 |
4 | 대홍 | 0.000000 | 0.000000 | 0.000000 | 0.000000 |
5 | 로얄부사 | 1008.518617 | 659.573187 | 935.186667 | 88.956486 |
6 | 맨코이 | 273.232323 | 49.735450 | 635.919003 | 0.000000 |
7 | 모리스 | 260.870968 | 0.000000 | 169.171090 | 0.000000 |
8 | 미시마 | 1536.402974 | 1292.333877 | 1259.039874 | 121.912301 |
9 | 미야비 | 1456.013788 | 931.744844 | 801.860897 | 10.217735 |
10 | 미얀마 | 1573.668994 | 1291.400864 | 1204.713259 | 145.481536 |
11 | 사과 | 1399.631728 | 842.684355 | 960.700139 | 0.000000 |
12 | 사이삼 | 0.000000 | 0.000000 | 0.000000 | 0.000000 |
13 | 산사 | 632.686227 | 85.295526 | 1170.183659 | 62.347713 |
14 | 서광 | 0.000000 | 0.000000 | 0.000000 | 0.000000 |
15 | 선홍 | 0.000000 | 0.000000 | 0.000000 | 0.000000 |
16 | 세계일 | 0.000000 | 0.000000 | 0.000000 | 0.000000 |
17 | 소백3호 | 90.714286 | 82.027778 | 0.000000 | 0.000000 |
18 | 스타크림숀 | 873.958333 | 0.000000 | 0.000000 | 0.000000 |
19 | 시나노레드 | 987.021283 | 428.423642 | 975.495420 | 37.317702 |
20 | 시나노스위트 | 1097.280536 | 621.104189 | 1148.696673 | 151.421861 |
21 | 아오리 | 1085.836575 | 528.807416 | 893.641009 | 88.249611 |
22 | 아이카향 | 548.058101 | 126.154514 | 379.605283 | 0.000000 |
23 | 알프스오토메 | 1255.968427 | 203.878106 | 528.197040 | 0.000000 |
24 | 야다까 | 619.378365 | 163.313874 | 861.398504 | 49.213360 |
25 | 양광 | 1631.535267 | 778.842556 | 1529.035052 | 219.143259 |
26 | 왕령 | 0.000000 | 0.000000 | 0.000000 | 0.000000 |
27 | 요까 | 966.583885 | 447.713981 | 1043.005145 | 144.976263 |
28 | 육오 | 0.000000 | 0.000000 | 0.000000 | 0.000000 |
29 | 자홍 | 1340.516699 | 406.961399 | 1080.497220 | 0.000000 |
30 | 조나골드 | 0.000000 | 0.000000 | 0.000000 | 0.000000 |
31 | 착색후지 | 652.728871 | 486.832747 | 618.762338 | 35.674192 |
32 | 천추 | 0.000000 | 0.000000 | 0.000000 | 0.000000 |
33 | 추광 | 257.625890 | 26.965116 | 564.104437 | 0.000000 |
34 | 추향 | 1184.833333 | 308.333333 | 0.000000 | 0.000000 |
35 | 태양 | 293.983011 | 23.529412 | 59.505541 | 0.000000 |
36 | 하향 | 692.172805 | 154.598801 | 542.652720 | 36.171389 |
37 | 홍로 | 1532.854744 | 964.038302 | 1529.363417 | 216.348149 |
38 | 홍옥 | 1158.549332 | 504.692525 | 1374.366649 | 197.498201 |
39 | 홍월 | 516.150745 | 61.062553 | 448.137705 | 0.000000 |
40 | 홍장군 | 830.636433 | 300.643245 | 1053.822129 | 109.504413 |
41 | 화홍 | 439.646630 | 19.545455 | 568.328249 | 0.000000 |
42 | 후지 | 1629.432211 | 1476.453922 | 1398.351233 | 197.896520 |
43 | 히로사끼 | 888.466765 | 363.701710 | 1013.950324 | 128.438054 |
감자
- 베이스코드는
수미
사용
1
2
3
sanji_data[sanji_data['품목명'] == '감자'].groupby(['품종명'])[['전순 평균가격(원) PreVious SOON',
'전달 평균가격(원) PreVious MMonth', '전년 평균가격(원) PreVious YeaR',
'평년 평균가격(원) Common Year SOON']].mean().reset_index()
품종명 | 전순 평균가격(원) PreVious SOON | 전달 평균가격(원) PreVious MMonth | 전년 평균가격(원) PreVious YeaR | 평년 평균가격(원) Common Year SOON | |
---|---|---|---|---|---|
0 | 기타감자 | 755.145404 | 693.869780 | 687.860270 | 94.925818 |
1 | 남작 | 560.150205 | 498.348088 | 568.979836 | 83.130762 |
2 | 대서 | 31.306122 | 34.693878 | 170.660836 | 0.000000 |
3 | 대지 | 628.065914 | 327.570561 | 230.773129 | 0.000000 |
4 | 돼지감자 | 607.880485 | 448.199625 | 560.958474 | 54.396822 |
5 | 두백 | 554.171564 | 508.894107 | 377.266071 | 0.000000 |
6 | 선농 | 123.992553 | 94.739011 | 176.469780 | 0.000000 |
7 | 수미 | 831.473593 | 768.579309 | 756.332810 | 100.398814 |
8 | 자주감자 | 1016.011391 | 752.886205 | 845.317674 | 50.766169 |
9 | 조풍 | 472.468275 | 387.280421 | 457.017521 | 42.304697 |
10 | 홍감자 | 417.985111 | 364.044977 | 185.330309 | 0.000000 |
11 | 홍깨니백 | 343.218450 | 175.853059 | 396.176275 | 0.000000 |
배
- 베이스코드는
신고
사용
1
2
3
sanji_data[sanji_data['품목명'] == '배'].groupby(['품종명'])[['전순 평균가격(원) PreVious SOON',
'전달 평균가격(원) PreVious MMonth', '전년 평균가격(원) PreVious YeaR',
'평년 평균가격(원) Common Year SOON']].mean().reset_index()
품종명 | 전순 평균가격(원) PreVious SOON | 전달 평균가격(원) PreVious MMonth | 전년 평균가격(원) PreVious YeaR | 평년 평균가격(원) Common Year SOON | |
---|---|---|---|---|---|
0 | 감천 | 716.185423 | 549.726862 | 485.246382 | 42.963859 |
1 | 금촌추 | 804.144196 | 677.757725 | 414.913313 | 27.469353 |
2 | 기타배 | 1493.383107 | 1279.096535 | 922.977216 | 75.824698 |
3 | 단배 | 293.333333 | 50.000000 | 0.000000 | 0.000000 |
4 | 만삼길 | 350.000000 | 0.000000 | 0.000000 | 0.000000 |
5 | 만수 | 165.680272 | 171.957939 | 284.037096 | 0.000000 |
6 | 만풍 | 444.699776 | 0.000000 | 0.000000 | 0.000000 |
7 | 석정 | 0.000000 | 0.000000 | 0.000000 | 0.000000 |
8 | 수황 | 941.727865 | 238.297621 | 960.738668 | 44.899032 |
9 | 신고 | 1730.028725 | 1619.513847 | 1396.755925 | 193.838871 |
10 | 신수 | 0.000000 | 0.000000 | 0.000000 | 0.000000 |
11 | 신흥 | 0.000000 | 0.000000 | 0.000000 | 0.000000 |
12 | 영산 | 0.000000 | 0.000000 | 0.000000 | 0.000000 |
13 | 예황 | 0.000000 | 0.000000 | 0.000000 | 0.000000 |
14 | 원황 | 1397.269386 | 766.178212 | 1207.394486 | 191.250208 |
15 | 이십세기 | 721.545894 | 0.000000 | 521.149425 | 0.000000 |
16 | 장수 | 208.333333 | 0.000000 | 0.000000 | 0.000000 |
17 | 장십랑 | 251.457238 | 25.714286 | 588.335054 | 58.037189 |
18 | 추황 | 996.263762 | 779.599155 | 798.796889 | 78.297595 |
19 | 풍수 | 804.547070 | 209.809643 | 875.784070 | 109.519438 |
20 | 한아름 | 754.090477 | 0.000000 | 574.356384 | 0.000000 |
21 | 행수 | 940.415875 | 287.048062 | 867.340129 | 64.067563 |
22 | 화산 | 1156.334721 | 576.847571 | 1090.989661 | 111.568495 |
23 | 황금 | 1126.561505 | 579.651897 | 964.146319 | 112.404139 |
마늘
- 베이스코드는
깐마늘
사용 - 깐마늘 남도가 수치가 비슷해보이지만, 일부가격정보가없어 통합하는데 문제가 발생할 수 있음
1
2
3
sanji_data[sanji_data['품목명'] == '마늘'].groupby(['품종명'])[['전순 평균가격(원) PreVious SOON',
'전달 평균가격(원) PreVious MMonth', '전년 평균가격(원) PreVious YeaR',
'평년 평균가격(원) Common Year SOON']].mean().reset_index()
품종명 | 전순 평균가격(원) PreVious SOON | 전달 평균가격(원) PreVious MMonth | 전년 평균가격(원) PreVious YeaR | 평년 평균가격(원) Common Year SOON | |
---|---|---|---|---|---|
0 | 기타마늘 | 2273.307825 | 2014.873050 | 1718.696767 | 220.564913 |
1 | 깐마늘 | 6851.727882 | 6707.628152 | 3887.406098 | 590.993279 |
2 | 깐마늘 남도 | 6808.356073 | 6069.679948 | 0.000000 | 0.000000 |
3 | 깐마늘 대서 | 0.000000 | 0.000000 | 0.000000 | 0.000000 |
4 | 깐마늘 한지 | 3005.939858 | 1790.655960 | 0.000000 | 0.000000 |
5 | 깐마늘(수입) | 0.000000 | 603.080952 | 1394.305952 | 0.000000 |
6 | 마늘(수입) | 361.940741 | 160.288889 | 1486.601852 | 0.000000 |
7 | 마늘쫑 | 2598.021768 | 2050.217622 | 2297.485411 | 354.816994 |
8 | 마늘쫑(수입) | 2873.691432 | 2847.141632 | 2575.108374 | 423.663978 |
9 | 육쪽마늘 | 1874.350744 | 1495.796288 | 1568.591502 | 88.251788 |
10 | 저장형 난지 | 2035.702372 | 1516.583781 | 2032.278421 | 263.498433 |
11 | 저장형 남도 | 4209.328713 | 3327.537155 | 0.000000 | 0.000000 |
12 | 저장형 대서 | 3336.270921 | 2852.423450 | 0.000000 | 0.000000 |
13 | 저장형 한지 | 2733.700695 | 2059.003452 | 2404.896881 | 261.597355 |
14 | 풋마늘 | 1792.371925 | 1592.476274 | 1508.626327 | 192.950485 |
15 | 햇마늘 난지 | 4219.458029 | 1465.343699 | 1690.643817 | 97.184833 |
16 | 햇마늘 남도 | 2274.759862 | 0.000000 | 0.000000 | 0.000000 |
17 | 햇마늘 대서 | 1797.976046 | 0.000000 | 0.000000 | 0.000000 |
18 | 햇마늘 한지 | 10212.988096 | 9951.804685 | 5957.053015 | 0.000000 |
상추
- 베이스코드는
청상추
사용 - target에서 ‘품종명’을 ‘청’으로 표기했기에 별도 통합 필요 없어보임
1
2
3
sanji_data[sanji_data['품목명'] == '상추'].groupby(['품종명'])[['전순 평균가격(원) PreVious SOON',
'전달 평균가격(원) PreVious MMonth', '전년 평균가격(원) PreVious YeaR',
'평년 평균가격(원) Common Year SOON']].mean().reset_index()
품종명 | 전순 평균가격(원) PreVious SOON | 전달 평균가격(원) PreVious MMonth | 전년 평균가격(원) PreVious YeaR | 평년 평균가격(원) Common Year SOON | |
---|---|---|---|---|---|
0 | 기타상추 | 2063.511192 | 1930.884575 | 1562.900287 | 191.887012 |
1 | 꽃적상추 | 1391.938094 | 457.795699 | 191.666667 | 0.000000 |
2 | 상추순 | 783.913324 | 742.550723 | 568.191007 | 69.979328 |
3 | 적상추 | 3058.355670 | 3006.692039 | 2690.612742 | 441.116182 |
4 | 적포기 | 1024.156627 | 660.238552 | 712.110199 | 3.233451 |
5 | 쫑상추 | 1329.080136 | 1147.546696 | 828.778053 | 7.730644 |
6 | 청상추 | 3377.312443 | 3270.038761 | 2723.517637 | 505.513017 |
7 | 청포기 | 205.841880 | 101.880342 | 92.163614 | 0.000000 |
8 | 포기찹 | 3700.101261 | 3625.832510 | 3350.796448 | 528.106543 |
9 | 흑적 | 2351.410002 | 1389.735238 | 2535.857516 | 0.000000 |
배추
- 베이스코드는
쌈배추
사용 - target에서는 명확한 배추 품종이 없기에 어떤것을 사용해야 할지 고민할 필요가 있으나, 쌈배추가 제일 흔해보임
1
2
3
sanji_data[sanji_data['품목명'] == '배추'].groupby(['품종명'])[['전순 평균가격(원) PreVious SOON',
'전달 평균가격(원) PreVious MMonth', '전년 평균가격(원) PreVious YeaR',
'평년 평균가격(원) Common Year SOON']].mean().reset_index()
품종명 | 전순 평균가격(원) PreVious SOON | 전달 평균가격(원) PreVious MMonth | 전년 평균가격(원) PreVious YeaR | 평년 평균가격(원) Common Year SOON | |
---|---|---|---|---|---|
0 | 고냉지배추 | 434.817259 | 245.919432 | 227.696707 | 0.000000 |
1 | 기타배추 | 902.679278 | 822.868489 | 854.085968 | 89.189073 |
2 | 김장(가을)배추 | 363.406296 | 272.368420 | 258.405736 | 15.012064 |
3 | 봄배추 | 292.659405 | 201.895076 | 252.706829 | 32.732634 |
4 | 생채용 배추 | 0.000000 | 0.000000 | 0.000000 | 0.000000 |
5 | 쌈배추 | 1178.001447 | 1111.557009 | 1161.396834 | 236.701700 |
6 | 여름배추 | 565.441190 | 367.385128 | 490.983537 | 74.483888 |
7 | 우거지 | 1020.457105 | 1016.813775 | 985.234020 | 99.890435 |
8 | 월동배추 | 568.802533 | 541.501727 | 495.514618 | 73.753218 |
9 | 저장배추 | 247.154223 | 177.595923 | 299.056074 | 19.751537 |
10 | 절임배추 | 763.024345 | 0.000000 | 0.000000 | 0.000000 |
양파
- 베이스코드는
기타양파
사용 - target에서는 명확한 양파 품종이 없기에 어떤기준일지 고민이 필요. 예를들어 ‘양파(일반)’을 고려할 수도 있음
1
2
3
sanji_data[sanji_data['품목명'] == '양파'].groupby(['품종명'])[['전순 평균가격(원) PreVious SOON',
'전달 평균가격(원) PreVious MMonth', '전년 평균가격(원) PreVious YeaR',
'평년 평균가격(원) Common Year SOON']].mean().reset_index()
품종명 | 전순 평균가격(원) PreVious SOON | 전달 평균가격(원) PreVious MMonth | 전년 평균가격(원) PreVious YeaR | 평년 평균가격(원) Common Year SOON | |
---|---|---|---|---|---|
0 | 기타양파 | 530.477631 | 497.359374 | 512.588861 | 77.602752 |
1 | 깐양파 | 807.705412 | 770.527307 | 656.314882 | 87.884198 |
2 | 만생양파 | 212.498495 | 131.468701 | 81.465571 | 0.000000 |
3 | 양파(수입) | 965.602218 | 747.991851 | 543.733776 | 17.773838 |
4 | 양파(일반) | 437.944484 | 382.429851 | 426.556868 | 56.629547 |
5 | 저장양파 | 487.242214 | 423.431548 | 357.989474 | 16.754170 |
6 | 조생양파 | 793.435615 | 585.810471 | 610.687706 | 49.123972 |
7 | 중생양파 | 0.000000 | 62.962963 | 0.000000 | 0.000000 |
대파
- 베이스코드는
대파(일반)
을 사용했고, target도 동일하기에 특별한 통합은 필요없을듯
1
2
3
sanji_data[sanji_data['품목명'] == '대파'].groupby(['품종명'])[['전순 평균가격(원) PreVious SOON',
'전달 평균가격(원) PreVious MMonth', '전년 평균가격(원) PreVious YeaR',
'평년 평균가격(원) Common Year SOON']].mean().reset_index()
품종명 | 전순 평균가격(원) PreVious SOON | 전달 평균가격(원) PreVious MMonth | 전년 평균가격(원) PreVious YeaR | 평년 평균가격(원) Common Year SOON | |
---|---|---|---|---|---|
0 | 기타대파 | 1007.116192 | 930.638454 | 853.808361 | 84.685006 |
1 | 깐대파 | 1213.735580 | 1111.199885 | 955.285619 | 100.574540 |
2 | 대파(일반) | 1258.464468 | 1206.376216 | 1004.420828 | 161.390806 |
3 | 중파 | 1120.266838 | 1065.715810 | 908.631415 | 179.711495 |
target 필터링
- 무 : ‘기타무’, ‘가을무’, ‘여름무’, ‘봄무’, ‘저장무’, ‘다발무’를 포함하여 통합
- 사과 : ‘후지’, ‘홍로’를 포함
- 감자 : ‘수미’만 포함
- 배 : ‘신고’만 포함
- 마늘 : ‘깐마늘’만 포함. ‘깐마늘 남도’는 일부 가격 정보가 없기 때문에 미포함
- 상추 : ‘청상추’만 포함
- 배추 : ‘쌈배추’를 포함. 배추 품종이 명확하지 않으므로 가장 일반적인 품종 사용
- 양파 : ‘기타양파’와 ‘양파(일반)’을 포함
- 대파 : ‘대파(일반)’만 포함
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 타겟 품목 및 품종 정의
target_filters = {
'무': ['기타무', '가을무', '여름무', '봄무', '저장무', '다발무'],
'사과': ['후지', '홍로'],
'감자': ['수미'],
'배': ['신고'],
'마늘': ['깐마늘'],
'상추': ['청상추'],
'배추': ['쌈배추'],
'양파': ['기타양파', '양파(일반)'],
'대파': ['대파(일반)']
}
# 등급 필터링 (상 등급 및 상품 등급만 포함)
grade_filter = ['상', '상품']
# 필터링 함수
def filter_sanji_data(row):
if row['품목명'] in target_filters:
if row['품종명'] in target_filters[row['품목명']] and row['등급명'] in grade_filter:
return True
return False
# 필터링 수행
filtered_sanji_data = sanji_data[sanji_data.apply(filter_sanji_data, axis=1)]
filtered_sanji_data
시점 | 공판장코드 | 공판장명 | 품목코드 | 품목명 | 품종코드 | 품종명 | 등급코드 | 등급명 | 총반입량(kg) | ... | 평균가(원/kg) | 중간가(원/kg) | 최저가(원/kg) | 최고가(원/kg) | 경매 건수 | 전순 평균가격(원) PreVious SOON | 전달 평균가격(원) PreVious MMonth | 전년 평균가격(원) PreVious YeaR | 평년 평균가격(원) Common Year SOON | 연도 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 201801상순 | 1000000000 | *전국농협공판장 | 501 | 감자 | 50101 | 수미 | 12 | 상 | 2900.0 | ... | 1198.655172 | 1252.737207 | 893.055556 | 1417.857143 | 4 | 1301.239669 | 1348.253676 | 571.311475 | 0.000000 | 2018 |
43 | 201801상순 | 1000000000 | *전국농협공판장 | 601 | 사과 | 60103 | 후지 | 12 | 상 | 30029.0 | ... | 1298.341603 | 1312.490667 | 1175.258126 | 1788.029079 | 8 | 1260.442271 | 1186.346256 | 1567.505601 | 0.000000 | 2018 |
54 | 201801상순 | 1000000000 | *전국농협공판장 | 602 | 배 | 60201 | 신고 | 12 | 상 | 25005.0 | ... | 1133.797241 | 1134.126195 | 945.590062 | 1241.435407 | 8 | 1119.173472 | 1097.315866 | 1010.577365 | 0.000000 | 2018 |
72 | 201801상순 | 1000000000 | *전국농협공판장 | 1001 | 배추 | 100108 | 쌈배추 | 12 | 상 | 1147.0 | ... | 380.732345 | 379.342723 | 269.230769 | 461.538462 | 6 | 421.717791 | 296.701031 | 732.530120 | 0.000000 | 2018 |
97 | 201801상순 | 1000000000 | *전국농협공판장 | 1101 | 무 | 110199 | 기타무 | 12 | 상 | 51700.0 | ... | 260.007737 | 263.225186 | 224.901099 | 298.418367 | 8 | 322.803236 | 361.371457 | 856.636179 | 0.000000 | 2018 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
118540 | 202112하순 | 6128201171 | 통영농협 농산물공판장 | 1101 | 무 | 110199 | 기타무 | 12 | 상 | 16.0 | ... | 800.000000 | 800.000000 | 800.000000 | 800.000000 | 1 | 0.000000 | 1422.727273 | 0.000000 | 0.000000 | 2021 |
118544 | 202112하순 | 6128201171 | 통영농협 농산물공판장 | 1201 | 양파 | 120199 | 기타양파 | 12 | 상 | 680.0 | ... | 650.000000 | 650.000000 | 650.000000 | 650.000000 | 3 | 900.000000 | 900.000000 | 1101.162791 | 0.000000 | 2021 |
118578 | 202112하순 | 6168223255 | 제주시농협농산물공판장 | 601 | 사과 | 60103 | 후지 | 12 | 상 | 1850.0 | ... | 1822.864865 | 1770.892857 | 1728.200000 | 2060.000000 | 57 | 1844.975912 | 1537.607362 | 1686.000000 | 1160.924118 | 2021 |
118598 | 202112하순 | 6168223255 | 제주시농협농산물공판장 | 1101 | 무 | 110199 | 기타무 | 12 | 상 | 17460.0 | ... | 236.901489 | 236.440000 | 67.500000 | 475.211268 | 23 | 298.141844 | 399.580243 | 470.430878 | 457.469488 | 2021 |
118606 | 202112하순 | 6168223255 | 제주시농협농산물공판장 | 1201 | 양파 | 120199 | 기타양파 | 12 | 상 | 1815.0 | ... | 389.256198 | 360.000000 | 270.000000 | 727.941176 | 4 | 694.672489 | 776.859504 | 1317.556634 | 669.357530 | 2021 |
9309 rows × 21 columns
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 1. 가격 관련 파생변수 생성
# 각 품목의 평균 가격을 기반으로 전순, 전달, 전년, 평년 가격 대비 현재 가격 변화율을 계산
filtered_sanji_data['가격 변화율(전순)'] = (filtered_sanji_data['평균가(원/kg)'] - filtered_sanji_data['전순 평균가격(원) PreVious SOON']) / filtered_sanji_data['전순 평균가격(원) PreVious SOON']
filtered_sanji_data['가격 변화율(전달)'] = (filtered_sanji_data['평균가(원/kg)'] - filtered_sanji_data['전달 평균가격(원) PreVious MMonth']) / filtered_sanji_data['전달 평균가격(원) PreVious MMonth']
filtered_sanji_data['가격 변화율(전년)'] = (filtered_sanji_data['평균가(원/kg)'] - filtered_sanji_data['전년 평균가격(원) PreVious YeaR']) / filtered_sanji_data['전년 평균가격(원) PreVious YeaR']
filtered_sanji_data['가격 변화율(평년)'] = (filtered_sanji_data['평균가(원/kg)'] - filtered_sanji_data['평년 평균가격(원) Common Year SOON']) / filtered_sanji_data['평년 평균가격(원) Common Year SOON']
# 2. 총반입량 및 경매 건수의 평균 계산
avg_volume = filtered_sanji_data.groupby('품목명')['총반입량(kg)'].mean().reset_index()
avg_auction_count = filtered_sanji_data.groupby('품목명')['경매 건수'].mean().reset_index()
# 3. 평균값을 원본 데이터에 병합
filtered_sanji_data = filtered_sanji_data.merge(avg_volume, on='품목명', suffixes=('', '_평균반입량'))
filtered_sanji_data = filtered_sanji_data.merge(avg_auction_count, on='품목명', suffixes=('', '_평균경매건수'))
# 4. 가격 변화율과 평균 반입량, 평균 경매 건수의 상관관계 분석
correlation_columns = ['가격 변화율(전순)', '가격 변화율(전달)', '가격 변화율(전년)', '가격 변화율(평년)', '총반입량(kg)', '경매 건수']
correlation_matrix = filtered_sanji_data[correlation_columns].corr()
# 결과 출력
print("필터링된 데이터의 상관관계 매트릭스:")
print(correlation_matrix)
# 필터링된 데이터의 일부를 출력
print("\n필터링된 데이터 샘플:")
print(filtered_sanji_data.head())
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
필터링된 데이터의 상관관계 매트릭스:
가격 변화율(전순) 가격 변화율(전달) 가격 변화율(전년) 가격 변화율(평년) 총반입량(kg) 경매 건수
가격 변화율(전순) 1.000000 0.211875 0.218065 0.187848 -0.015081 -0.011421
가격 변화율(전달) 0.211875 1.000000 0.217217 0.216816 -0.012900 -0.002991
가격 변화율(전년) 0.218065 0.217217 1.000000 0.775282 -0.040436 0.008105
가격 변화율(평년) 0.187848 0.216816 0.775282 1.000000 -0.003032 0.090661
총반입량(kg) -0.015081 -0.012900 -0.040436 -0.003032 1.000000 0.277587
경매 건수 -0.011421 -0.002991 0.008105 0.090661 0.277587 1.000000
필터링된 데이터 샘플:
시점 공판장코드 공판장명 품목코드 품목명 품종코드 품종명 등급코드 등급명 총반입량(kg) \
0 201801상순 1000000000 *전국농협공판장 501 감자 50101 수미 12 상 2900.0
1 201801상순 1000000000 *전국농협공판장 601 사과 60103 후지 12 상 30029.0
2 201801상순 1000000000 *전국농협공판장 602 배 60201 신고 12 상 25005.0
3 201801상순 1000000000 *전국농협공판장 1001 배추 100108 쌈배추 12 상 1147.0
4 201801상순 1000000000 *전국농협공판장 1101 무 110199 기타무 12 상 51700.0
... 전달 평균가격(원) PreVious MMonth 전년 평균가격(원) PreVious YeaR \
0 ... 1348.253676 571.311475
1 ... 1186.346256 1567.505601
2 ... 1097.315866 1010.577365
3 ... 296.701031 732.530120
4 ... 361.371457 856.636179
평년 평균가격(원) Common Year SOON 연도 가격 변화율(전순) 가격 변화율(전달) 가격 변화율(전년) \
0 0.0 2018 -0.078836 -0.110957 1.098076
1 0.0 2018 0.030068 0.094404 -0.171715
2 0.0 2018 0.013067 0.033246 0.121930
3 0.0 2018 -0.097187 0.283219 -0.480250
4 0.0 2018 -0.194532 -0.280497 -0.696478
가격 변화율(평년) 총반입량(kg)_평균반입량 경매 건수_평균경매건수
0 inf 1749.715395 7.182406
1 inf 4194.463299 29.750864
2 inf 5621.256362 23.698212
3 inf 1466.388309 5.528184
4 inf 6573.046959 7.874519
[5 rows x 27 columns]
전국도매
1
2
3
4
# TRAIN_전국도매_2018-2021.csv 파일 읽기
meta_jeonguk_file_path = '/content/drive/MyDrive/데이콘/농산물/train/meta/TRAIN_전국도매_2018-2021.csv'
jeonguk_data = pd.read_csv(meta_jeonguk_file_path)
jeonguk_data
시점 | 시장코드 | 시장명 | 품목코드 | 품목명 | 품종코드 | 품종명 | 총반입량(kg) | 총거래금액(원) | 평균가(원/kg) | ... | 저가(20%) 평균가 | 중간가(원/kg) | 최저가(원/kg) | 최고가(원/kg) | 경매 건수 | 전순 평균가격(원) PreVious SOON | 전달 평균가격(원) PreVious MMonth | 전년 평균가격(원) PreVious YeaR | 평년 평균가격(원) Common Year SOON | 연도 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 201801상순 | 100000 | *전국도매시장 | 501 | 감자 | 50124 | 깐감자 | 20.0 | 86520 | 4326.000000 | ... | 4326.000000 | 4326.000000 | 4326.0 | 4326.000000 | 1 | 0.000000 | 4009.000000 | 0.000000 | 0.000000 | 2018 |
1 | 201801상순 | 100000 | *전국도매시장 | 501 | 감자 | 50121 | 돼지감자 | 12380.0 | 11650810 | 941.099354 | ... | 545.105717 | 1010.000000 | 200.0 | 3000.000000 | 117 | 11213.358450 | 9174.196723 | 8167.895632 | 0.000000 | 2018 |
2 | 201801상순 | 100000 | *전국도매시장 | 501 | 감자 | 50110 | 자주감자 | 240.0 | 158400 | 660.000000 | ... | 500.000000 | 550.000000 | 500.0 | 1000.000000 | 7 | 12553.279352 | 12612.216445 | 24990.324897 | 18483.961304 | 2018 |
3 | 201801상순 | 100000 | *전국도매시장 | 501 | 감자 | 50111 | 가을감자 | 10.0 | 37500 | 3750.000000 | ... | 3700.000000 | 3750.000000 | 3700.0 | 3800.000000 | 2 | 24929.463415 | 40365.081269 | 0.000000 | 0.000000 | 2018 |
4 | 201801상순 | 100000 | *전국도매시장 | 501 | 감자 | 50199 | 기타감자 | 1367301.3 | 2403199462 | 1757.622451 | ... | 955.289668 | 1360.453431 | 0.0 | 10581.081081 | 872 | 30806.779529 | 27661.150770 | 23741.953223 | 19340.121989 | 2018 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
176009 | 202112하순 | 380401 | 진주 | 1202 | 대파 | 120201 | 대파(일반) | 21897.5 | 33837005 | 1545.245119 | ... | 760.360360 | 1450.000000 | 500.0 | 3879.125000 | 39 | 1348.646801 | 1261.828668 | 2400.044348 | 2026.635189 | 2021 |
176010 | 202112하순 | 380401 | 진주 | 1209 | 마늘 | 120942 | 깐마늘 대서 | 3250.0 | 15000000 | 4615.384615 | ... | 4000.000000 | 4500.000000 | 4000.0 | 5000.000000 | 2 | 0.000000 | 4615.384615 | 0.000000 | 0.000000 | 2021 |
176011 | 202112하순 | 380401 | 진주 | 1209 | 마늘 | 120943 | 깐마늘 남도 | 9250.0 | 45000000 | 4864.864865 | ... | 4827.586207 | 5000.000000 | 4000.0 | 5000.000000 | 3 | 0.000000 | 4864.864865 | 0.000000 | 0.000000 | 2021 |
176012 | 202112하순 | 380401 | 진주 | 1209 | 마늘 | 120999 | 기타마늘 | 130.0 | 464000 | 3569.230769 | ... | 2400.000000 | 3900.000000 | 2400.0 | 4000.000000 | 4 | 0.000000 | 5823.076923 | 2604.166667 | 0.000000 | 2021 |
176013 | 202112하순 | 380401 | 진주 | 1209 | 마늘 | 120917 | 마늘쫑(수입) | 16.0 | 76400 | 4775.000000 | ... | 4775.000000 | 4775.000000 | 4775.0 | 4775.000000 | 2 | 4637.500000 | 4637.500000 | 2900.000000 | 0.000000 | 2021 |
176014 rows × 22 columns
1
jeonguk_data.info()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 176014 entries, 0 to 176013
Data columns (total 22 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 시점 176014 non-null object
1 시장코드 176014 non-null int64
2 시장명 176014 non-null object
3 품목코드 176014 non-null int64
4 품목명 176014 non-null object
5 품종코드 176014 non-null int64
6 품종명 176014 non-null object
7 총반입량(kg) 176014 non-null float64
8 총거래금액(원) 176014 non-null int64
9 평균가(원/kg) 176014 non-null float64
10 고가(20%) 평균가 176014 non-null float64
11 중가(60%) 평균가 176014 non-null float64
12 저가(20%) 평균가 176014 non-null float64
13 중간가(원/kg) 176014 non-null float64
14 최저가(원/kg) 176014 non-null float64
15 최고가(원/kg) 176014 non-null float64
16 경매 건수 176014 non-null int64
17 전순 평균가격(원) PreVious SOON 176014 non-null float64
18 전달 평균가격(원) PreVious MMonth 176014 non-null float64
19 전년 평균가격(원) PreVious YeaR 176014 non-null float64
20 평년 평균가격(원) Common Year SOON 176014 non-null float64
21 연도 176014 non-null int64
dtypes: float64(12), int64(6), object(4)
memory usage: 29.5+ MB
1
jeonguk_data.isnull().sum()
0 | |
---|---|
시점 | 0 |
시장코드 | 0 |
시장명 | 0 |
품목코드 | 0 |
품목명 | 0 |
품종코드 | 0 |
품종명 | 0 |
총반입량(kg) | 0 |
총거래금액(원) | 0 |
평균가(원/kg) | 0 |
고가(20%) 평균가 | 0 |
중가(60%) 평균가 | 0 |
저가(20%) 평균가 | 0 |
중간가(원/kg) | 0 |
최저가(원/kg) | 0 |
최고가(원/kg) | 0 |
경매 건수 | 0 |
전순 평균가격(원) PreVious SOON | 0 |
전달 평균가격(원) PreVious MMonth | 0 |
전년 평균가격(원) PreVious YeaR | 0 |
평년 평균가격(원) Common Year SOON | 0 |
연도 | 0 |
1
jeonguk_data.duplicated().sum()
1
0
1
jeonguk_data.columns
1
2
3
4
5
6
Index(['시점', '시장코드', '시장명', '품목코드', '품목명', '품종코드', '품종명', '총반입량(kg)',
'총거래금액(원)', '평균가(원/kg)', '고가(20%) 평균가', '중가(60%) 평균가 ', '저가(20%) 평균가',
'중간가(원/kg)', '최저가(원/kg)', '최고가(원/kg)', '경매 건수',
'전순 평균가격(원) PreVious SOON', '전달 평균가격(원) PreVious MMonth',
'전년 평균가격(원) PreVious YeaR', '평년 평균가격(원) Common Year SOON', '연도'],
dtype='object')
1
jeonguk_data['시장명'].unique()
1
2
3
4
array(['*전국도매시장', '서울가락', '서울강서', '부산엄궁', '부산반여', '대구북부', '인천남촌', '인천삼산',
'광주각화', '광주서부', '대전오정', '대전노은', '수원', '안양', '안산', '구리', '춘천', '원주',
'강릉', '청주', '충주', '천안', '전주', '익산', '정읍', '순천', '포항', '안동', '구미',
'창원팔용', '울산', '창원내서', '진주'], dtype=object)
1
jeonguk_data['품목명'].unique()
1
2
array(['감자', '사과', '배', '배추', '상추', '순무', '무', '양파', '대파', '마늘'],
dtype=object)
1
jeonguk_data['품종명'].unique()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
array(['깐감자', '돼지감자', '자주감자', '가을감자', '기타감자', '봄감자', '조풍', '대지', '수미',
'조림감자', '감자(수입)', '감자', '추백감자', '로얄부사', '미야비', '챔피온', '로얄후지',
'스타칼라', '착색후지', '사과', '기꾸8', '알프스오토메', '산사', '후지', '미시마', '미얀마',
'기타사과', '홍옥', '감홍', '금촌추', '추황', '감천', '배', '신고', '기타배', '우거지',
'봄배추', '생채용 배추', '배추', '김장(가을)배추', '절임배추', '저장배추', '고냉지배추', '월동배추',
'여름배추', '배추뿌리', '쌈배추', '기타배추', '상추순', '상추솎음', '청포기', '흑적', '쫑상추',
'청상추', '꽃적상추', '적포기', '기타상추', '포기찹', '적상추', '상추', '순무(일반)', '여름무',
'무솎음', '가을무', '고냉지무', '무말랭이(수입)', '단무지무', '건무(수입)', '월동무', '저장무',
'소궁기무', '무', '기타무', '다발무', '세척무', '무말랭이', '달랑무', '봄무', '조생양파',
'깐양파', '기타양파', '자주양파', '양파(일반)', '양파(수입)', '양파', '저장양파', '만생양파',
'중파', '대파(일반)', '깐대파', '대파(수입)', '대파', '기타대파', '햇마늘 한지', '햇마늘 난지',
'깐마늘', '저장형 한지', '깐마늘(수입)', '마늘(수입)', '냉동마늘(수입)', '육쪽마늘', '마늘',
'마늘쫑(수입)', '저장형 난지', '풋마늘', '주대마늘', '기타마늘', '마늘쫑', '아이카향', '황금',
'홍감자', '시나노스위트', '축', '스타크림숀', '히로사끼', '자색무', '홍로', '양광', '국광',
'만수', '배추(수입)', '화홍', '우거지(수입)', '홍깨니백', '샬롯', '쪽마늘', '남작', '신흥',
'단배', '만삼길', '중만생양파', '중생양파', '두백', '아오리', '답리작', '선농', '조나골드',
'수황', '토말린', '서광', '대서', '선홍', '야다까', '고냉지', '맨코이', '홍월', '송본금',
'시나노레드', '레드골드', '행수', '줄기상추(수입)', 'OBIR', '홍무', '장수', '태양', '추향',
'추광', '하향', '하쯔쓰가루', '화산', '군총', '석정', '신천', '원황', '월향', '모리스',
'채향', '자홍', '선황', '한아름', '신수', '풍수', '장십랑', '갈라', '홍장군', '요까',
'대홍', '자주양파(수입)', '세계일', '천추', '만풍', '이십세기', '홍추', '북두', '골덴',
'나리따', '호노까', '뉴히로사끼', '앙림', '육오', '금왕자', '만월', '사이삼', '사과(수입)',
'얌빈(히카마)', '인도', '어리브레이스', '데리셔스', '노변', '호박감자', '명월', '애감수',
'수경상추', '영산', '무(수입)', '치마상추', '메구미', '아리수', '시원', '시나노골드', '추홍',
'배양채', '깐마늘 대서', '깐마늘 한지', '햇마늘 남도', '깐마늘 남도', '햇마늘 대서', '남서',
'저장형 대서', '저장형 남도', '루비에스', '신화', '창조'], dtype=object)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 1. 가격 관련 파생변수 생성
# 각 품목의 평균 가격을 기반으로 전순, 전달, 전년, 평년 가격 대비 현재 가격 변화율을 계산
jeonguk_data2 = jeonguk_data.copy()
jeonguk_data2['가격 변화율(전순)'] = (jeonguk_data2['평균가(원/kg)'] - jeonguk_data2['전순 평균가격(원) PreVious SOON']) / jeonguk_data2['전순 평균가격(원) PreVious SOON']
jeonguk_data2['가격 변화율(전달)'] = (jeonguk_data2['평균가(원/kg)'] - jeonguk_data2['전달 평균가격(원) PreVious MMonth']) / jeonguk_data2['전달 평균가격(원) PreVious MMonth']
jeonguk_data2['가격 변화율(전년)'] = (jeonguk_data2['평균가(원/kg)'] - jeonguk_data2['전년 평균가격(원) PreVious YeaR']) / jeonguk_data2['전년 평균가격(원) PreVious YeaR']
jeonguk_data2['가격 변화율(평년)'] = (jeonguk_data2['평균가(원/kg)'] - jeonguk_data2['평년 평균가격(원) Common Year SOON']) / jeonguk_data2['평년 평균가격(원) Common Year SOON']
# 2. 총반입량 및 경매 건수의 평균 계산
avg_volume_jk = jeonguk_data2.groupby('품목명')['총반입량(kg)'].mean().reset_index()
avg_auction_count_jk = jeonguk_data2.groupby('품목명')['경매 건수'].mean().reset_index()
# 3. 평균값을 원본 데이터에 병합
jeonguk_data2 = jeonguk_data2.merge(avg_volume_jk, on='품목명', suffixes=('', '_평균반입량'))
jeonguk_data2 = jeonguk_data2.merge(avg_auction_count_jk, on='품목명', suffixes=('', '_평균경매건수'))
# 4. 가격 변화율과 평균 반입량, 평균 경매 건수의 상관관계 분석
correlation_columns_jk = ['가격 변화율(전순)', '가격 변화율(전달)', '가격 변화율(전년)', '가격 변화율(평년)', '총반입량(kg)', '경매 건수']
correlation_matrix_jk = jeonguk_data2[correlation_columns_jk].corr()
# 결과 출력
print("필터링된 데이터의 상관관계 매트릭스:")
print(correlation_matrix_jk)
# 필터링된 데이터의 일부를 출력
print("\n필터링된 데이터 샘플:")
print(jeonguk_data2.head())
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
필터링된 데이터의 상관관계 매트릭스:
가격 변화율(전순) 가격 변화율(전달) 가격 변화율(전년) 가격 변화율(평년) 총반입량(kg) 경매 건수
가격 변화율(전순) 1.000000 0.846193 0.187391 0.187619 -0.007526 -0.006760
가격 변화율(전달) 0.846193 1.000000 0.332185 0.259791 -0.008042 -0.005671
가격 변화율(전년) 0.187391 0.332185 1.000000 0.391600 -0.016595 -0.012232
가격 변화율(평년) 0.187619 0.259791 0.391600 1.000000 -0.085754 -0.039916
총반입량(kg) -0.007526 -0.008042 -0.016595 -0.085754 1.000000 0.661800
경매 건수 -0.006760 -0.005671 -0.012232 -0.039916 0.661800 1.000000
필터링된 데이터 샘플:
시점 시장코드 시장명 품목코드 품목명 품종코드 품종명 총반입량(kg) 총거래금액(원) \
0 201801상순 100000 *전국도매시장 501 감자 50124 깐감자 20.0 86520
1 201801상순 100000 *전국도매시장 501 감자 50121 돼지감자 12380.0 11650810
2 201801상순 100000 *전국도매시장 501 감자 50110 자주감자 240.0 158400
3 201801상순 100000 *전국도매시장 501 감자 50111 가을감자 10.0 37500
4 201801상순 100000 *전국도매시장 501 감자 50199 기타감자 1367301.3 2403199462
평균가(원/kg) ... 전달 평균가격(원) PreVious MMonth 전년 평균가격(원) PreVious YeaR \
0 4326.000000 ... 4009.000000 0.000000
1 941.099354 ... 9174.196723 8167.895632
2 660.000000 ... 12612.216445 24990.324897
3 3750.000000 ... 40365.081269 0.000000
4 1757.622451 ... 27661.150770 23741.953223
평년 평균가격(원) Common Year SOON 연도 가격 변화율(전순) 가격 변화율(전달) 가격 변화율(전년) \
0 0.000000 2018 inf 0.079072 inf
1 0.000000 2018 -0.916073 -0.897419 -0.884781
2 18483.961304 2018 -0.947424 -0.947670 -0.973590
3 0.000000 2018 -0.849576 -0.907098 inf
4 19340.121989 2018 -0.942947 -0.936459 -0.925970
가격 변화율(평년) 총반입량(kg)_평균반입량 경매 건수_평균경매건수
0 inf 98459.192339 74.30387
1 inf 98459.192339 74.30387
2 -0.964293 98459.192339 74.30387
3 inf 98459.192339 74.30387
4 -0.909120 98459.192339 74.30387
[5 rows x 28 columns]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 전국도매 데이터에서 inf 값을 NaN으로 변환하고 평균으로 대체
jeonguk_data2.replace([float('inf'), -float('inf')], pd.NA, inplace=True)
# 가격 변화율의 NaN 값을 평균으로 대체
jeonguk_data2['가격 변화율(전순)'].fillna(jeonguk_data2['가격 변화율(전순)'].mean(), inplace=True)
jeonguk_data2['가격 변화율(전달)'].fillna(jeonguk_data2['가격 변화율(전달)'].mean(), inplace=True)
jeonguk_data2['가격 변화율(전년)'].fillna(jeonguk_data2['가격 변화율(전년)'].mean(), inplace=True)
jeonguk_data2['가격 변화율(평년)'].fillna(jeonguk_data2['가격 변화율(평년)'].mean(), inplace=True)
# 품목별 평균가, 총반입량, 경매 건수 등을 그룹화하여 새로운 데이터프레임 생성
grouped_data = jeonguk_data2.groupby('품목명').agg({
'평균가(원/kg)': 'mean',
'총반입량(kg)': 'mean',
'경매 건수': 'mean'
}).reset_index()
# 결과 출력
print("품목별 평균가, 총반입량, 경매 건수:")
print(grouped_data)
1
2
3
4
5
6
7
8
9
10
11
12
품목별 평균가, 총반입량, 경매 건수:
품목명 평균가(원/kg) 총반입량(kg) 경매 건수
0 감자 1314.934345 98459.192339 74.303870
1 대파 1564.553918 168442.175014 105.601864
2 마늘 3512.587850 15736.019170 35.946525
3 무 1637.456777 198041.259141 37.253932
4 배 2208.448162 71929.095068 57.707191
5 배추 1133.312756 159356.791475 56.965319
6 사과 2680.289318 80497.468027 107.137944
7 상추 3140.843293 17690.675079 69.982016
8 순무 1279.888071 6825.427354 11.674888
9 양파 813.963477 280327.858769 60.127061
test 폴더 살펴보기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
test_data_03 = pd.read_csv('/content/drive/MyDrive/데이콘/농산물/test/TEST_03.csv')
print(f"test_data_03 정보\n{test_data_03.head}")
print(f"{test_data_03.columns}")
test_data_21 = pd.read_csv('/content/drive/MyDrive/데이콘/농산물/test/TEST_21.csv')
print(f"test_data_21 정보\n{test_data_21.head}")
sanji_test_data_03 = pd.read_csv('/content/drive/MyDrive/데이콘/농산물/test/meta/TEST_산지공판장_03.csv')
print(f"sanji_test_data_03 정보\n{sanji_test_data_03.head}")
print(f"{sanji_test_data_03.columns}")
sanji_test_data_21 = pd.read_csv('/content/drive/MyDrive/데이콘/농산물/test/meta/TEST_산지공판장_21.csv')
print(f"sanji_test_data_21 정보\n{sanji_test_data_21.head}")
jeonguk_test_data_03 = pd.read_csv('/content/drive/MyDrive/데이콘/농산물/test/meta/TEST_전국도매_03.csv')
print(f"jeonguk_test_data_03 정보\n{jeonguk_test_data_03.head}")
print(f"{jeonguk_test_data_03.columns}")
jeonguk_test_data_21 = pd.read_csv('/content/drive/MyDrive/데이콘/농산물/test/meta/TEST_전국도매_21.csv')
print(f"jeonguk_test_data_21 정보\n{jeonguk_test_data_21.head}")
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
test_data_03 정보
<bound method NDFrame.head of 시점 품목명 품종명 거래단위 등급 평년 평균가격(원) 평균가격(원)
0 T-8순 건고추 화건 30 kg 상품 517227.666667 543000.0
1 T-7순 건고추 화건 30 kg 상품 520908.333333 543000.0
2 T-6순 건고추 화건 30 kg 상품 521533.333333 543000.0
3 T-5순 건고추 화건 30 kg 상품 519866.666667 543000.0
4 T-4순 건고추 화건 30 kg 상품 519390.333333 543000.0
... ... ... ... ... .. ... ...
1831 T-4순 대파 대파(일반) 10키로묶음 상 0.000000 0.0
1832 T-3순 대파 대파(일반) 10키로묶음 상 0.000000 0.0
1833 T-2순 대파 대파(일반) 10키로묶음 상 0.000000 0.0
1834 T-1순 대파 대파(일반) 10키로묶음 상 0.000000 0.0
1835 T 대파 대파(일반) 10키로묶음 상 0.000000 0.0
[1836 rows x 7 columns]>
Index(['시점', '품목명', '품종명', '거래단위', '등급', '평년 평균가격(원)', '평균가격(원)'], dtype='object')
test_data_21 정보
<bound method NDFrame.head of 시점 품목명 품종명 거래단위 등급 평년 평균가격(원) 평균가격(원)
0 T-8순 건고추 화건 30 kg 상품 519866.666667 543000.0
1 T-7순 건고추 화건 30 kg 상품 519390.333333 543000.0
2 T-6순 건고추 화건 30 kg 상품 518200.000000 543000.0
3 T-5순 건고추 화건 30 kg 상품 518200.000000 543000.0
4 T-4순 건고추 화건 30 kg 상품 518325.000000 543000.0
... ... ... ... ... .. ... ...
1831 T-4순 대파 대파(일반) 10키로묶음 상 0.000000 0.0
1832 T-3순 대파 대파(일반) 10키로묶음 상 0.000000 0.0
1833 T-2순 대파 대파(일반) 10키로묶음 상 0.000000 0.0
1834 T-1순 대파 대파(일반) 10키로묶음 상 0.000000 0.0
1835 T 대파 대파(일반) 10키로묶음 상 0.000000 0.0
[1836 rows x 7 columns]>
sanji_test_data_03 정보
<bound method NDFrame.head of 시점 공판장코드 공판장명 품목코드 품목명 품종코드 품종명 등급코드 등급명 \
0 T-8순 1000000000 *전국농협공판장 501 감자 50113 두백 11 특
1 T-8순 1000000000 *전국농협공판장 501 감자 50113 두백 12 상
2 T-8순 1000000000 *전국농협공판장 501 감자 50103 대지 10 .
3 T-8순 1000000000 *전국농협공판장 501 감자 50101 수미 19 등외
4 T-8순 1000000000 *전국농협공판장 501 감자 50101 수미 11 특
... ... ... ... ... .. ... ... ... ..
5892 T 6198200402 서포농협(공판) 1209 마늘 120906 깐마늘 11 특
5893 T 6198200402 서포농협(공판) 1209 마늘 120999 기타마늘 11 특
5894 T 6198201338 삼천포농협농산물공판장 501 감자 50199 기타감자 10 .
5895 T 6198201338 삼천포농협농산물공판장 601 사과 60199 기타사과 10 .
5896 T 6198201338 삼천포농협농산물공판장 1209 마늘 120999 기타마늘 10 .
총반입량(kg) ... 평균가(원/kg) 중간가(원/kg) 최저가(원/kg) 최고가(원/kg) \
0 40.0 ... 1350.000000 1350.000000 1350.000000 1350.000000
1 60.0 ... 225.000000 225.000000 225.000000 225.000000
2 30.0 ... 1733.333333 1733.333333 1733.333333 1733.333333
3 3880.0 ... 877.912371 914.150943 321.538462 1221.428571
4 9116.0 ... 1279.611672 1233.642127 680.357143 2100.000000
... ... ... ... ... ... ...
5892 1920.0 ... 7032.973958 7120.601852 6737.766990 7264.468085
5893 60.0 ... 33200.000000 32331.578947 5785.714286 62200.000000
5894 5920.0 ... 1394.932432 1635.106383 1114.032258 2166.666667
5895 1000.0 ... 3869.000000 3869.000000 3869.000000 3869.000000
5896 5670.0 ... 5829.805996 5695.833333 5331.000000 6501.515152
경매 건수 전순 평균가격(원) PreVious SOON 전달 평균가격(원) PreVious MMonth \
0 1 950.000000 836.666667
1 1 750.000000 160.000000
2 1 0.000000 0.000000
3 7 1256.493506 0.000000
4 8 1474.647748 1437.418699
... ... ... ...
5892 273 7050.167715 0.000000
5893 7 24800.000000 0.000000
5894 98 2205.263158 0.000000
5895 11 3605.405405 3255.192878
5896 112 3055.555556 0.000000
전년 평균가격(원) PreVious YeaR 평년 평균가격(원) Common Year SOON 연도
0 1093.606965 0.000000 2022
1 464.000000 0.000000 2022
2 0.000000 0.000000 2022
3 1072.564103 683.867448 2022
4 963.208552 1145.540723 2022
... ... ... ...
5892 6369.957537 0.000000 2022
5893 0.000000 0.000000 2022
5894 0.000000 0.000000 2022
5895 0.000000 0.000000 2022
5896 4131.192661 2676.200380 2022
[5897 rows x 21 columns]>
Index(['시점', '공판장코드', '공판장명', '품목코드', '품목명', '품종코드', '품종명', '등급코드', '등급명',
'총반입량(kg)', '총거래금액(원)', '평균가(원/kg)', '중간가(원/kg)', '최저가(원/kg)',
'최고가(원/kg)', '경매 건수', '전순 평균가격(원) PreVious SOON',
'전달 평균가격(원) PreVious MMonth', '전년 평균가격(원) PreVious YeaR',
'평년 평균가격(원) Common Year SOON', '연도'],
dtype='object')
sanji_test_data_21 정보
<bound method NDFrame.head of 시점 공판장코드 공판장명 품목코드 품목명 품종코드 품종명 등급코드 등급명 \
0 T-8순 1000000000 *전국농협공판장 501 감자 50101 수미 10 .
1 T-8순 1000000000 *전국농협공판장 501 감자 50199 기타감자 19 등외
2 T-8순 1000000000 *전국농협공판장 501 감자 50101 수미 12 상
3 T-8순 1000000000 *전국농협공판장 501 감자 50101 수미 13 보통
4 T-8순 1000000000 *전국농협공판장 501 감자 50101 수미 19 등외
... ... ... ... ... .. ... ... ... ..
6675 T 6198200402 서포농협(공판) 1209 마늘 120906 깐마늘 11 특
6676 T 6198200402 서포농협(공판) 1209 마늘 120999 기타마늘 10 .
6677 T 6198200402 서포농협(공판) 1209 마늘 120904 햇마늘 난지 10 .
6678 T 6198201338 삼천포농협농산물공판장 1201 양파 120199 기타양파 10 .
6679 T 6198201338 삼천포농협농산물공판장 1209 마늘 120999 기타마늘 10 .
총반입량(kg) ... 평균가(원/kg) 중간가(원/kg) 최저가(원/kg) 최고가(원/kg) \
0 1507.0 ... 2075.049768 2852.500000 1571.218206 4400.000000
1 1680.0 ... 1075.595238 975.044563 600.000000 1253.030303
2 1390.0 ... 1596.330935 1443.750000 1200.000000 1805.312500
3 1960.0 ... 981.989796 787.500000 600.000000 1415.333333
4 788.0 ... 487.436548 472.955975 452.727273 1150.000000
... ... ... ... ... ... ...
6675 1452.0 ... 7893.829201 7882.046784 7696.666667 8079.753086
6676 31.0 ... 38064.516129 38064.516129 38064.516129 38064.516129
6677 183.0 ... 37423.497268 37423.497268 37423.497268 37423.497268
6678 70.0 ... 507.142857 507.142857 507.142857 507.142857
6679 1198.0 ... 6577.629382 6553.093434 5371.428571 7272.727273
경매 건수 전순 평균가격(원) PreVious SOON 전달 평균가격(원) PreVious MMonth \
0 6 2465.991736 2133.908046
1 4 1038.411215 517.857143
2 6 1322.627119 935.789474
3 5 869.911504 608.051020
4 3 650.151515 877.912371
... ... ... ...
6675 218 7952.884764 7032.973958
6676 6 0.000000 0.000000
6677 55 0.000000 0.000000
6678 5 634.059406 0.000000
6679 36 6377.109383 5829.805996
전년 평균가격(원) PreVious YeaR 평년 평균가격(원) Common Year SOON 연도
0 1182.756757 1118.240494 2022
1 498.039216 634.854010 2022
2 604.450549 1267.559974 2022
3 692.000000 710.886685 2022
4 1308.295455 991.291628 2022
... ... ... ...
6675 6741.148225 0.000000 2022
6676 0.000000 0.000000 2022
6677 0.000000 0.000000 2022
6678 521.144578 550.074197 2022
6679 5643.658226 2931.493233 2022
[6680 rows x 21 columns]>
jeonguk_test_data_03 정보
<bound method NDFrame.head of 시점 시장코드 시장명 품목코드 품목명 품종코드 품종명 총반입량(kg) 총거래금액(원) \
0 T-8순 100000 *전국도매시장 501 감자 50110 자주감자 1082.0 1300200
1 T-8순 100000 *전국도매시장 501 감자 50114 봄감자 5140.0 7385500
2 T-8순 100000 *전국도매시장 501 감자 50108 홍깨니백 2150.0 2557900
3 T-8순 100000 *전국도매시장 501 감자 50199 기타감자 2538262.0 4216592354
4 T-8순 100000 *전국도매시장 501 감자 50115 조림감자 1600.0 1214000
... ... ... ... ... .. ... ... ... ...
9767 T 380401 진주 1209 마늘 120943 깐마늘 남도 9250.0 45000000
9768 T 380401 진주 1209 마늘 120942 깐마늘 대서 3250.0 15000000
9769 T 380401 진주 1209 마늘 120933 저장형 남도 3159.0 13590700
9770 T 380401 진주 1209 마늘 120999 기타마늘 4797.0 18204400
9771 T 380401 진주 1209 마늘 120917 마늘쫑(수입) 10.0 37000
평균가(원/kg) ... 저가(20%) 평균가 중간가(원/kg) 최저가(원/kg) 최고가(원/kg) \
0 1201.663586 ... 642.241379 1136.153846 200.000000 2068.571429
1 1436.867704 ... 353.197674 1250.000000 281.521739 2500.000000
2 1189.720930 ... 640.392157 1038.750000 350.000000 2108.571429
3 1661.212418 ... 897.361664 1247.500000 0.000000 4054.000000
4 758.750000 ... 700.000000 750.000000 700.000000 1250.000000
... ... ... ... ... ... ...
9767 4864.864865 ... 4000.000000 4500.000000 4000.000000 6000.000000
9768 4615.384615 ... 4000.000000 4500.000000 4000.000000 5000.000000
9769 4302.215891 ... 2634.883721 4200.000000 1400.000000 6800.000000
9770 3794.955180 ... 2362.162162 3870.000000 1600.000000 6400.000000
9771 3700.000000 ... 3700.000000 3700.000000 3700.000000 3700.000000
경매 건수 전순 평균가격(원) PreVious SOON 전달 평균가격(원) PreVious MMonth \
0 10 382.456140 631.562500
1 9 528.084746 853.191489
2 20 1538.717949 0.000000
3 1460 1540.221201 1495.137734
4 5 580.000000 662.765957
... ... ... ...
9767 4 0.000000 5454.545455
9768 2 0.000000 4615.384615
9769 31 3759.696970 0.000000
9770 62 3400.413223 0.000000
9771 1 0.000000 0.000000
전년 평균가격(원) PreVious YeaR 평년 평균가격(원) Common Year SOON 연도
0 1230.432822 1087.911742 2022
1 555.522201 1330.461704 2022
2 461.409396 0.000000 2022
3 1287.517343 1626.391847 2022
4 889.393939 831.786507 2022
... ... ... ...
9767 3600.000000 0.000000 2022
9768 4000.000000 0.000000 2022
9769 0.000000 0.000000 2022
9770 2702.827204 2059.224261 2022
9771 0.000000 0.000000 2022
[9772 rows x 22 columns]>
Index(['시점', '시장코드', '시장명', '품목코드', '품목명', '품종코드', '품종명', '총반입량(kg)',
'총거래금액(원)', '평균가(원/kg)', '고가(20%) 평균가', '중가(60%) 평균가 ', '저가(20%) 평균가',
'중간가(원/kg)', '최저가(원/kg)', '최고가(원/kg)', '경매 건수',
'전순 평균가격(원) PreVious SOON', '전달 평균가격(원) PreVious MMonth',
'전년 평균가격(원) PreVious YeaR', '평년 평균가격(원) Common Year SOON', '연도'],
dtype='object')
jeonguk_test_data_21 정보
<bound method NDFrame.head of 시점 시장코드 시장명 품목코드 품목명 품종코드 품종명 총반입량(kg) 총거래금액(원) \
0 T-8순 100000 *전국도매시장 501 감자 50101 수미 2013576.0 4832049263
1 T-8순 100000 *전국도매시장 501 감자 50113 두백 114460.0 200423000
2 T-8순 100000 *전국도매시장 501 감자 50199 기타감자 1836666.2 4412017418
3 T-8순 100000 *전국도매시장 501 감자 50114 봄감자 4720.0 10216000
4 T-8순 100000 *전국도매시장 501 감자 50198 감자(수입) 160600.0 324776500
... ... ... ... ... .. ... ... ... ...
10143 T 380401 진주 1202 대파 120201 대파(일반) 19862.0 40310070
10144 T 380401 진주 1209 마늘 120999 기타마늘 1005.0 6158000
10145 T 380401 진주 1209 마늘 120943 깐마늘 남도 10000.0 60000000
10146 T 380401 진주 1209 마늘 120942 깐마늘 대서 14.0 100800
10147 T 380401 진주 1209 마늘 120933 저장형 남도 1230.0 6879100
평균가(원/kg) ... 저가(20%) 평균가 중간가(원/kg) 최저가(원/kg) 최고가(원/kg) \
0 2399.735229 ... 1219.237550 1845.321759 0.000000 9157.883333
1 1751.030928 ... 1002.860412 1800.000000 0.000000 2197.500000
2 2402.187952 ... 1169.937872 1800.000000 50.000000 49568.500000
3 2164.406780 ... 816.666667 1270.833333 650.000000 3132.377049
4 2022.269614 ... 1535.135135 2050.000000 1400.000000 4600.000000
... ... ... ... ... ... ...
10143 2029.507099 ... 1517.099407 1860.000000 900.000000 5107.194030
10144 6127.363184 ... 3801.290323 6535.384615 2609.090909 8330.000000
10145 6000.000000 ... 3000.000000 7000.000000 3000.000000 8000.000000
10146 7200.000000 ... 7200.000000 7200.000000 7200.000000 7200.000000
10147 5592.764228 ... 4292.682927 4942.000000 3000.000000 7310.000000
경매 건수 전순 평균가격(원) PreVious SOON 전달 평균가격(원) PreVious MMonth \
0 996 2142.420178 1829.705423
1 21 1959.042658 1364.686684
2 1198 2156.371290 1661.212418
3 10 1540.769231 1436.867704
4 23 2438.811437 0.000000
... ... ... ...
10143 73 2056.051767 1906.710336
10144 21 5993.568014 3794.955180
10145 5 0.000000 4864.864865
10146 1 8000.000000 4615.384615
10147 9 5366.728452 4302.215891
전년 평균가격(원) PreVious YeaR 평년 평균가격(원) Common Year SOON 연도
0 1533.137835 2464.433857 2022
1 916.920908 0.000000 2022
2 1384.496506 2400.650755 2022
3 901.351351 1658.790023 2022
4 1173.234487 0.000000 2022
... ... ... ...
10143 1053.252418 1280.391736 2022
10144 4808.939974 3064.712433 2022
10145 4000.000000 0.000000 2022
10146 4675.324675 0.000000 2022
10147 0.000000 0.000000 2022
[10148 rows x 22 columns]>
1
test_data_03.columns
1
Index(['시점', '품목명', '품종명', '거래단위', '등급', '평년 평균가격(원)', '평균가격(원)'], dtype='object')
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# 품종별 평균 가격 및 평년 평균 가격을 계산하는 함수
def analyze_price_data(test_data):
# 가격이 0이거나 NaN인 경우를 처리
test_data['평균가격(원)'].replace(0, pd.NA, inplace=True)
test_data['평년 평균가격(원)'].replace(0, pd.NA, inplace=True)
# 품종별 평균 가격 계산
price_analysis = test_data.groupby(['품목명', '품종명']).agg({
'평균가격(원)': 'mean',
'평년 평균가격(원)': 'mean',
'거래단위': 'first' # 거래 단위는 첫 번째 값만 가져오기
}).reset_index()
return price_analysis
# TEST_03 및 TEST_21 데이터 분석
price_analysis_03 = analyze_price_data(test_data_03)
price_analysis_21 = analyze_price_data(test_data_21)
# 결과 출력
print("TEST_03 품종별 평균 가격 분석:")
print(price_analysis_03)
print("\nTEST_21 품종별 평균 가격 분석:")
print(price_analysis_21)
# 상관관계 분석
correlation_columns_03 = ['평균가격(원)', '평년 평균가격(원)']
correlation_matrix_03 = test_data_03[correlation_columns_03].dropna().corr()
print("\nTEST_03 상관관계 매트릭스:")
print(correlation_matrix_03)
correlation_columns_21 = ['평균가격(원)', '평년 평균가격(원)']
correlation_matrix_21 = test_data_21[correlation_columns_21].dropna().corr()
print("\nTEST_21 상관관계 매트릭스:")
print(correlation_matrix_21)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
TEST_03 품종별 평균 가격 분석:
품목명 품종명 평균가격(원) 평년 평균가격(원) 거래단위
0 감자 감자 49064.133256 NaN 20키로상자
1 감자 감자 대지 35099.755208 27012.798495 20키로상자
2 감자 감자 두백 31858.2889 NaN 20키로상자
3 감자 감자 수미 48856.58125 35737.656327 20키로상자
4 감자 감자 수미(저장) 38555.416964 NaN 20키로상자
5 감자 감자 수미(햇) 53216.907407 NaN 20키로상자
6 감자 감자 수입 NaN NaN 23키로상자
7 감자 감자 조풍 NaN NaN 20키로상자
8 감자 홍감자 NaN NaN 10키로상자
9 건고추 양건 672472.222222 599482.814815 30 kg
10 건고추 햇산양건 NaN NaN 30 kg
11 건고추 햇산화건 NaN NaN 30 kg
12 건고추 화건 517200.0 493425.648148 30 kg
13 깐마늘(국산) 깐마늘(국산) 166221.055556 NaN 20 kg
14 대파 깐쪽파 47518.036651 35753.594162 10키로상자
15 대파 대파 수입 NaN NaN 10키로상자
16 대파 대파(일반) 1264.396373 1262.489017 1키로단
17 대파 실파 64748.157986 48562.487384 20키로
18 대파 쪽파 31030.773997 25528.259568 10키로상자
19 무 다발무 NaN NaN 10키로
20 무 무 10316.475849 NaN 20키로상자
21 무 열무 5584.752984 2857.937469 4키로상자
22 배 신고 33532.833333 28417.37037 10 개
23 배 원황 NaN NaN 10 개
24 배추 배추 8236.463272 5625.402366 10키로망대
25 배추 봄동배추 21177.394907 12519.885053 15키로상자
26 배추 쌈배추 10738.027701 11398.398817 1키로상자
27 배추 알배기배추 20067.963889 12404.717464 8키로상자
28 배추 얼갈이배추 6436.674537 3709.495405 8키로상자
29 배추 절임배추 NaN NaN 20키로상자
30 사과 쓰가루 NaN NaN 10 개
31 사과 홍로 NaN NaN 10 개
32 사과 후지 23565.833333 18718.185185 10 개
33 상추 적 745.388889 590.907407 100 g
34 상추 청 766.055556 584.166667 100 g
35 양파 양파 4874.905312 5361.914198 1키로
36 양파 양파 수입 NaN NaN 1키로
37 양파 양파(햇) 6650.506443 NaN 12키로
38 양파 자주양파 8718.353993 6777.088387 12키로
39 양파 저장양파 4508.145507 NaN 15키로
40 양파 조생양파 7679.793403 NaN 15키로
TEST_21 품종별 평균 가격 분석:
품목명 품종명 평균가격(원) 평년 평균가격(원) 거래단위
0 감자 감자 44331.225694 NaN 20키로상자
1 감자 감자 대지 38373.668056 27787.4625 20키로상자
2 감자 감자 두백 32642.956267 NaN 20키로상자
3 감자 감자 수미 44325.228395 29548.463066 20키로상자
4 감자 감자 수미(저장) 44014.070312 NaN 20키로상자
5 감자 감자 수미(햇) 45509.736883 NaN 20키로상자
6 감자 감자 수입 NaN NaN 23키로상자
7 감자 감자 조풍 NaN NaN 20키로상자
8 감자 홍감자 14004.583333 NaN 10키로상자
9 건고추 양건 667147.222222 602024.444444 30 kg
10 건고추 햇산양건 NaN NaN 30 kg
11 건고추 햇산화건 NaN NaN 30 kg
12 건고추 화건 517354.166667 499332.907407 30 kg
13 깐마늘(국산) 깐마늘(국산) 169673.333333 NaN 20 kg
14 대파 깐쪽파 73097.880401 46369.821708 10키로상자
15 대파 대파 수입 NaN NaN 10키로상자
16 대파 대파(일반) 1270.549769 1160.177932 1키로단
17 대파 실파 86681.314484 52706.694345 20키로
18 대파 쪽파 42195.557099 30048.150849 10키로상자
19 무 다발무 NaN NaN 10키로
20 무 무 11616.911265 NaN 20키로상자
21 무 열무 4831.901749 2766.245103 4키로상자
22 배 신고 34195.222222 29456.648148 10 개
23 배 원황 NaN NaN 10 개
24 배추 배추 7937.393133 4817.891667 10키로망대
25 배추 봄동배추 16756.666667 NaN 15키로상자
26 배추 쌈배추 10635.81848 9755.349434 1키로상자
27 배추 알배기배추 18192.36304 11122.053318 8키로상자
28 배추 얼갈이배추 6421.346965 3586.494582 8키로상자
29 배추 절임배추 NaN NaN 20키로상자
30 사과 쓰가루 NaN NaN 10 개
31 사과 홍로 NaN NaN 10 개
32 사과 후지 23991.222222 19191.166667 10 개
33 상추 적 771.333333 602.277778 100 g
34 상추 청 799.5 591.259259 100 g
35 양파 양파 8046.537068 3226.272569 1키로
36 양파 양파 수입 1459.75 NaN 1키로
37 양파 양파(햇) 11311.975694 NaN 12키로
38 양파 자주양파 9970.795139 6334.284966 12키로
39 양파 저장양파 6026.108507 NaN 15키로
40 양파 조생양파 8566.818452 NaN 15키로
TEST_03 상관관계 매트릭스:
평균가격(원) 평년 평균가격(원)
평균가격(원) 1.000000 0.998418
평년 평균가격(원) 0.998418 1.000000
TEST_21 상관관계 매트릭스:
평균가격(원) 평년 평균가격(원)
평균가격(원) 1.000000 0.995682
평년 평균가격(원) 0.995682 1.000000
1
2
sm_df = pd.read_csv('/content/drive/MyDrive/데이콘/농산물/sample_submission.csv')
sm_df.head()
시점 | 감자 | 건고추 | 깐마늘(국산) | 대파 | 무 | 배추 | 사과 | 상추 | 양파 | 배 | |
---|---|---|---|---|---|---|---|---|---|---|---|
0 | TEST_00+1순 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
1 | TEST_00+2순 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
2 | TEST_00+3순 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
3 | TEST_01+1순 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
4 | TEST_01+2순 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
데이터 살펴보기 리뷰
train 폴더 살펴보기
- 요약 :
- 결측치(0인 정보포함)를 0대신 다른방안 검토
- meta 정보가없는 건고추 처리방안 검토
- meta 필터링을 베이스코드 기준 말고 좀 더 적절하게(무를 시점별로 봄무, 여름무, 가을무 적용 등)
- 계절요인을 생각해보자
- 수요와 공급 요인들을 모델에 반영하자(총반입량이나 경매건수, 같은 시점에서 target의 대체제 품종들)
train 파일의 target 데이터는 한정적(29,376건 중에 1,440건)입니다. target외 정보들을 적절히 사용하여 예측정확도를 높일 필요가 있습니다.
가격정보가 0인 데이터들이 많습니다. 베이스코드에서는 수치형 데이터의 결측치를 0으로 채웠는데, 0이아닌 중앙값이나 평균값 등으로 대체하는방안을 검토하는게 더적절해보입니다.
건고추는 meta 데이터에 존재하지 않았습니다. train 파일에서 어떤식으로 접근해야할지 고민할 필요가 있습니다.
train 파일의 시점별 품목별 평균가격을 분석해보니, 전반적으로 품목별로 가격의 안정시기와 불안정시기가 공존하고 있었습니다. 감자, 배, 사과 등 일부품목은 주식차트마냥 규칙적인 패턴이 나타났지만 대부분 계절적인 요인에 영향을 받는것처럼 관찰됐습니다. 특히 ‘무’에서 가격변동이 제일 크게 관찰됐습니다.
meta폴더에 산지공판장과 전국도매 데이터들의 필터링을 검토할 필요가 있어보입니다. 예를들어, 베이스코드에서는 무를 기타무로 필터링했는데 품종을보면 봄무, 여름무, 가을무, 기타무, 다발무, 등등 다양하게 존재했고 가격도 조금씩다른데 기타무가 제일 비싼축에 속했습니다. 계절별로 봄무, 여름무, 가을무 등으로 필터링해서 학습을 시킨다던지 필터링을 다르게 적용해보면 좀더정확한 자료가 나오지않을까 싶습니다. 사과같은경우에도 베이스코드에서는 후지만 사용했는데, target 대상에는 후지, 홍로가 명시됐고 실제 meta 데이터상에도 후지, 홍로가 각각 있었습니다. 홍로 품종을 추가로 모델에 적용할 필요가 있어보였습니다. 양파도 베이스코드는 기타양파를 선택했는데 양파(일반)도 고려할수있다고 생각됩니다. 이처럼 품목별로 품종선택을 좀더 면밀히 검토해볼 필요가 있습니다.
풍년이 들면 농산물의 가격이 급락해 농가의 수입이 감소하고, 흉년이 들면 농산물의 가격이 급등해 농가의 수입이 증가하는 것을 두고 ‘농부의 역설’ 또는 ‘풍년의 역설’이라고 부른다고 합니다. 산지공판장과 전국도매 데이터에는 총반입량과 경매 건수 열이 있는데요, 수요와 공급이 관련된 요인들을 모델링에 적용하면 더 정확한 target 예측이 가능할 것으로 보입니다. 경매건수는 다른요인들(한번에 대량구매라던지)이 있어서 제외할수도있지만 총반입량은 target 예측에 연관성이 있을것으로 보입니다.
수요와 공급 관점에서 좀 더 살펴본다면, 각 시점별로 ‘수입 품종’도 고려대상일 수 있습니다. 예를들어 target에서 깐마늘은 ‘국산’ 품종이지만, 같은시기에 ‘깐마늘(수입)’산의 반입량과 가격이 영향을 줄수있다고 생각합니다. meta 데이터에도 수입품종이 일부있는것으로 확인됐고, 수입뿐만아니라 대체할수있는 target 대체제가 같은시기에 판매되고있다면 같이 검토해볼 필요가 있습니다.
- meta데이터 가격과 총반입량과 경매건수의 상관관계를 살펴봤을때, 산지공판장의 경우 평균가격이 전년과 평년의 상관관계가 0.78로 가장 높았고 그 외 상관관계는 0.3미만으로 낮았습니다. 다만, 제가 target 대상일것같은 품종들만 골라서 전체데이터 기준은 아닙니다. 전국도매는 전체데이터 기준으로 상관관계를 파악해봤는데요, 평균가격이 전달과 전순의 상관관계가 0.84로 가장높았고 총반입량과 경매건수도 0.66으로 높게 나타났습니다. 평균가격같은경우에는 어찌보면 전달과 전순은 비슷한시기라 상관관계가 높은게 정상인데, 필터링한 산지공판장에서는 0.21의 상관관계가 나와서 한번더 확인할 필요가있겠습니다.
test 폴더 살펴보기
- 평균가격이나 평년 평균가격 둘의 상관관계는 0.99 이상으로 추론시, 둘중 하나의 기준으로만 진행해도 무리가 없을것으로 보입니다. test에도 target외 정보들도 제공되고있네요.
모델링 검토
VAR같은경우 DA2 문제찾기 시간에 경제관련 정보를 찾다가 공신력있는 기관에서 데이터분석에 해당 모델을 사용해서 관심이갔습니다. 근데 데이터 양이 적으면 과적합 위험이 있을수 있다네요. 나머지는 GPT에 소규모 데이터 추론에 적합한 모델을 추천받았습니다.
VAR (Vector Autoregressive): 여러 시계열 변수 간의 상호 의존성을 잘 설명할 수 있어 농산물의 여러 특성 (예: 날씨, 수확량) 사이의 관계를 예측할 때 효과적입니다.
Prophet: 시계열 모델로, 복잡한 계절적 패턴과 연휴 등의 영향을 잘 반영합니다. 빠르게 결과를 도출할 수 있어 프로토타입용으로 적합합니다.
랜덤 포레스트 회귀: 비선형 관계를 잘 모델링하므로, 다양한 농산물의 가격 변동을 설명하는 데 유리할 수 있습니다.
XGBoost/LightGBM: 부스팅 기반 모델로, 속도가 빠르고 정확도가 높으며, 데이터 전처리와 파라미터 튜닝에 민감하지만 매우 강력한 성능을 보여줍니다.
SARIMA (Seasonal ARIMA): ARIMA 모델의 확장으로, 계절적 변동을 더 정확히 반영할 수 있습니다. 농산물은 계절적 특성이 강하기 때문에 이 모델을 고려해 볼 가치가 있습니다.
CNN-LSTM: CNN(Convolutional Neural Networks)과 LSTM을 결합한 모델로, 시계열 데이터의 패턴을 추출하고, 이를 바탕으로 장기적인 예측을 할 수 있습니다. 특히 복잡한 데이터에서 의미 있는 패턴을 학습하는 데 효과적입니다.
Ensemble 모델: 여러 모델을 결합하여 각 모델의 장점을 극대화할 수 있습니다. 예를 들어, ARIMA와 XGBoost를 결합하여 시계열 예측에 적합한 방법을 만들 수 있습니다.