Post

데이콘 프로젝트 - 농산물 가격예측 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.csvTEST_산지공판장_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
시점품목명품종명거래단위등급평년 평균가격(원)평균가격(원)
0201801상순건고추화건30 kg상품381666.666667590000.0
1201801중순건고추화건30 kg상품380809.666667590000.0
2201801하순건고추화건30 kg상품380000.000000590000.0
3201802상순건고추화건30 kg상품380000.000000590000.0
4201802중순건고추화건30 kg상품376666.666667590000.0
........................
29371202111중순대파대파(일반)10키로묶음0.0000000.0
29372202111하순대파대파(일반)10키로묶음0.0000000.0
29373202112상순대파대파(일반)10키로묶음0.0000000.0
29374202112중순대파대파(일반)10키로묶음0.0000000.0
29375202112하순대파대파(일반)10키로묶음0.0000000.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
시점품목명품종명거래단위등급평년 평균가격(원)평균가격(원)
144201801상순건고추햇산양건30 kg상품0.00.0
145201801중순건고추햇산양건30 kg상품0.00.0
146201801하순건고추햇산양건30 kg상품0.00.0
147201802상순건고추햇산양건30 kg상품0.00.0
148201802중순건고추햇산양건30 kg상품0.00.0
........................
29371202111중순대파대파(일반)10키로묶음0.00.0
29372202111하순대파대파(일반)10키로묶음0.00.0
29373202112상순대파대파(일반)10키로묶음0.00.0
29374202112중순대파대파(일반)10키로묶음0.00.0
29375202112하순대파대파(일반)10키로묶음0.00.0

27936 rows × 7 columns

1
non_target_data[non_target_data['평년 평균가격(원)'] > 0]
시점품목명품종명거래단위등급평년 평균가격(원)평균가격(원)
167201808하순건고추햇산양건30 kg상품484324.0000009.157000e+05
203201908하순건고추햇산양건30 kg상품530301.6666675.925000e+05
239202008하순건고추햇산양건30 kg상품559039.6666671.063400e+06
311201808하순건고추햇산화건30 kg중품359800.0000007.407110e+05
347201908하순건고추햇산화건30 kg중품404000.0000004.420310e+05
........................
29083202111중순대파깐쪽파10키로상자31883.5648154.916489e+04
29084202111하순대파깐쪽파10키로상자25615.3750003.022850e+04
29085202112상순대파깐쪽파10키로상자27183.2685192.813400e+04
29086202112중순대파깐쪽파10키로상자36559.7962962.732662e+04
29087202112하순대파깐쪽파10키로상자33635.9925932.507640e+04

6371 rows × 7 columns

1
non_target_data[non_target_data['평균가격(원)'] > 0]
시점품목명품종명거래단위등급평년 평균가격(원)평균가격(원)
167201808하순건고추햇산양건30 kg상품484324.000000915700.0
203201908하순건고추햇산양건30 kg상품530301.666667592500.0
239202008하순건고추햇산양건30 kg상품559039.6666671063400.0
272202107하순건고추햇산양건30 kg상품0.000000800000.0
273202108상순건고추햇산양건30 kg상품0.000000799571.0
........................
29105201806하순대파대파 수입10키로상자0.0000003630.0
29106201807상순대파대파 수입10키로상자0.0000003630.0
29107201807중순대파대파 수입10키로상자0.0000003630.0
29108201807하순대파대파 수입10키로상자0.0000003630.0
29109201808상순대파대파 수입10키로상자0.0000003630.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['등급']))
    )
]
시점품목명품종명거래단위등급평년 평균가격(원)평균가격(원)
0201801상순건고추화건30 kg상품381666.666667590000.000000
1201801중순건고추화건30 kg상품380809.666667590000.000000
2201801하순건고추화건30 kg상품380000.000000590000.000000
3201802상순건고추화건30 kg상품380000.000000590000.000000
4201802중순건고추화건30 kg상품376666.666667590000.000000
........................
26491202111중순대파대파(일반)1키로단1934.8194441754.222222
26492202111하순대파대파(일반)1키로단1774.8981481460.250000
26493202112상순대파대파(일반)1키로단1728.3796301619.000000
26494202112중순대파대파(일반)1키로단1677.6435191217.125000
26495202112하순대파대파(일반)1키로단1581.4111111322.200000

1440 rows × 7 columns

1
2
# 기초 통계량 확인
train_data.describe()
평년 평균가격(원)평균가격(원)
count2.937600e+042.937600e+04
mean1.772730e+045.224625e+04
std1.521004e+054.545482e+05
min0.000000e+000.000000e+00
25%0.000000e+000.000000e+00
50%0.000000e+001.055214e+03
75%5.203333e+021.289481e+04
max5.213802e+061.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()

png

  • 전박적으로 여름에 가격이 소폭 증가하는 경향이 있고, 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()

png

  • 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()

png

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-01960531500012566716980281511459609770617924682
2018-01-151109431500012560020689290111520614670388254223
2018-01-281112631500012560014314303011766714071808154168
2018-02-0112120315000129614183724562116851093972168384392
2018-02-151217231500013210017447438111956767074958414512
2018-02-281166131041613210010219412111884694473537274048
2018-03-01120673008331321007469524311650702273105663332
2018-03-15128193062501321006052469211633673472235302900
2018-03-28159773062501319125947504611713723972715392437
2018-04-01185703062501314286778441711809633869425882179
2018-04-15181933062501355007225517011806698269915682538
2018-04-281899730625013550023639566311684737269226063552
2018-05-011529530625013550023175596811724606068335853495
2018-05-15964930625013258318201285111786422669165603631
2018-05-28844330625013200021906205111688431868335863262
2018-06-01513931191013200024559192211677348769046103152
2018-06-15458331528613142828287166011688355570385623549
2018-06-28238931332513060027492182711975419169435393473
2018-07-01246131332511735736952192112003607469745933385
2018-07-15239731301211583847717231911955695669838893227
2018-07-28279730880011347841621270011965834769618133367
2018-08-013636316890113050460513293119861009270928283699
2018-08-1537743228591124004668331381202411379734810173798
2018-08-28426173279610980041795372523355126621468113323600
2018-09-01404339316210980036827335023458107251782317853377
2018-09-154049346350109769293592847280527971866719113133
2018-09-284402337004109550217652746287886636873414213004
2018-10-014075324123109550164611906149264634843811603485
2018-10-153964312225112407188811750138246639102338733048
2018-10-28396031116211441913204450608135526802106217803003
2018-11-0145583073681153571443347412713747827673126832905
2018-11-15884130585011550011654130456413694659075426242599
2018-11-2882973062161163751038590268814032694577726042601
2018-12-0191663077751161001207384851914224675578545872673
2018-12-15155453087751151881172685628314564692277295872672
2018-12-28150033087751117171378429195814986482977146192062
2019-01-011513430723010930014768142314861554177516462765
2019-01-151380430443810935015265123715098509279506532021
2019-01-281374229818910940014079125715932482882616372153
2019-02-011407429680010940017959129716426511886976381918
2019-02-151348829734710940012496132516152500484036082174
2019-02-281247729930010940012856142516048496782385742095
2019-03-01136232993001094008721138616034459579995722212
2019-03-15125622993001112447795137816166494580995742277
2019-03-28148562985861124008008145116179465182735722492
2019-04-01146802968001119627330147116260489282655812908
2019-04-15138302966211115437310139616390472282595843664
2019-04-281223429617511140016856133116414352083235583210
2019-05-011276329617511140017809161216930431283566343677
2019-05-151272929617511140027514145817434376883047112471
2019-05-281032729589710786629909138717267455382186152100
2019-06-01811729367510463031624156616988538883425952091
2019-06-1569312933629707546389160017693551084335711979
2019-06-2865822911758975034359160218254654084845902135
2019-07-0159772901448725031441154018955586585396721952
2019-07-1565972898008125727887152319366532986197512002
2019-07-28651328933180425186431482197155092148347562022
2019-08-016286280050793572484819862035278581444013502240
2019-08-156563268117787002924116703524470891444813262071
2019-08-286223317315786502694116563165064891777810332262
2019-09-01628825250078600309001949291618526120579402298
2019-09-156258252500786003999420892770210204742311342076
2019-09-286055247500782663368720291410511462653412682221
2019-10-016153236250781003045930661322711988605511781926
2019-10-156432235833781003468133861300015019597114172217
2019-10-28609223527879456334147038091306712803917812702121
2019-11-0164502355008020028121719056128871151565499742400
2019-11-15647923550080400116881556263125281068365048252251
2019-11-2868012366438017211510182385012598952363867812416
2019-12-01681323750080000124001734489127671048361377802756
2019-12-1539312375008000015920183878412834954662197652667
2019-12-2855252350837958414514156716012833987862477812834
2020-01-0162152210727950013914680509131431103162749453357
2020-01-15688022000078666154976798941311610155645410823843
2020-01-2861112190007269616385679404131048527695511173705
2020-02-018998216500721001128867895112794913868368723360
2020-02-1586092138757230014780679126132041033569137224052
2020-02-28108402173447187510032678947135361099969616745270
2020-03-0110029216353719108923679244134371244467596564329
2020-03-1510746214734698129672679055133871473768566474270
2020-03-2811156216321695008409679112131331280369106364243
2020-04-019673217125695008730678702130481128468625904293
2020-04-15164122171256980032514678865131891101070735754153
2020-04-2818641217125706432949167888713118924873175584169
2020-05-01193372171257125026113678813133101067875125643669
2020-05-15178152173447518825872139713276835777505603885
2020-05-28150072180187620029355162513093837077795763053
2020-06-01143972257817602534122185613183619679495992534
2020-06-15131802339647667235851202913995663081636403427
2020-06-28120902364788190438163230414054978785588686409
2020-07-01120542355508426636811203914214856087709945739
2020-07-1512124235716101954305691751144269656911710876448
2020-07-2810650236806122711309611675146109420940610927148
2020-08-011200124741613055047756242214682130301709313408963
2020-08-15873852414313057263233269214649154401722718469910
2020-08-28919481413613141471330340526960145162098818039695
2020-09-019074474528131700698143283268421633117403119610407
2020-09-159388469025131700652913482200941921710003125110594
2020-09-289067442272131586570143306241471654610874123110343
2020-10-018971438938131500303852584161721216010502101811383
2020-10-15795243906413150025623202016024103531026775611128
2020-10-2883204433121315002626115761551175841445166010686
2020-11-018453448039131500273284078411558681481006963011125
2020-11-15817244706613150029092449013157007286943560511189
2020-11-281075944466713150024609454504159076950926858312580
2020-12-011099644314313150018835403338163007288896558412029
2020-12-151639143969613150026109403705167396723915866911631
2020-12-281684543291213150036840403840172317988955775511414
2021-01-0120610430975131500472862595176328418961892213086
2021-01-1522195430975131500605392689184101018110121104214330
2021-01-282415643097513150043940222120002826611251103914183
2021-02-012491243097513535030753207220986919312116100416002
2021-02-15261674304551383001885915962126991091180393717111
2021-02-28262404288251386002048714632116979751177085018713
2021-03-01249394281041384001619315972058685481142071916731
2021-03-152534942491113980014551165820921102881128672015533
2021-03-28230064247911407381362315902182399171156171612893
2021-04-0119729428372141014262251524214807622118606987999
2021-04-1519479428550142114297351635213787626119057006961
2021-04-2817557428550150150293281621213016508119627094060
2021-05-0118033428550148200293451657214086463119906835483
2021-05-1514501428550145914294601494205785829119746854436
2021-05-2814075428550143836236041561213096004116437014504
2021-06-018616428550143000258691756217455323115548254409
2021-06-157789429383141250298851715218375445117468055454
2021-06-289470429800140286313881850223316290116828185025
2021-07-0110931429800140511317262433228765669116128555012
2021-07-157822425857157114304221982236416295117099705108
2021-07-2893076818601573504600520802421075921158712365944
2021-08-011127376865715788662117235524748106951540812387477
2021-08-151197073137115635868709193524302103091761113208324
2021-08-28119943219171560005237718802738198092072913818467
2021-09-01123813191971536504733623003013411555838518429139
2021-09-15123143108061529006523720062413412051833920188431
2021-09-2812266307452152900396381300166937299863116148398
2021-10-011124730647015290030134142915809678076719719470
2021-10-1511949302532152986406962172145838674717610808856
2021-10-28114283007751530003143535031455013462495017318931
2021-11-01116163007751545002590624341450212038892213948007
2021-11-1513272300775162086235912595137341309682949679487
2021-11-2817634302382164000171682130139401211383008458158
2021-12-0118178303588164000171182216141331147684907537300
2021-12-1517322303588164000194191882143241096684487386870
2021-12-2826568301400162934189001934154201192985757776792
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()

png

png

png

png

png

png

png

png

png

png

  • 나름 규칙적인 패턴이 있는가하면 가격이 불안정한 농산물도 상당수 있음
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-014417059000013066716859284283125420203619401144
2018-01-154828459000013060016259260282905319203599811041
2018-01-2850243590000130600183410576283246735206539831036
2018-02-01553815900001346142530183712811389422056310091046
2018-02-15591335900001371001538195462829472472177910221098
2018-02-286048758083313710014441922628129789121465918922
2018-03-016407056333313710014262385627435816821384670879
2018-03-157082257500013710013091921527543779720695627675
2018-03-289219557500013691211211930427942799620794623644
2018-04-011151285750001364289141861128129750319019689647
2018-04-151090375750001420007872000728140708219208676760
2018-04-289843457500014200010022367627779663719154711954
2018-05-017455857500014200012542517428143558919074707836
2018-05-15509405750001390838842267828288465718943672592
2018-05-284149857500013850013851320128179377118681698553
2018-06-012506259132013850012371310627790334519018741679
2018-06-152376559951413792811491080927844407319762699742
2018-06-282387060000013710012891143228322468419393664659
2018-07-012474260000012391413241128028555547919508700697
2018-07-1524152599375122350120314501285957957194961046713
2018-07-2828255590943119928140020879286321123619680977799
2018-08-0137492601250119500160923968283521077920287969911
2018-08-15374746050001188001843206422846416235209561223804
2018-08-28425546000001160002981278212819217583218071556810
2018-09-01405457716331160002997228262669910922212991908790
2018-09-1540888670800116000267121873352069810262282071764
2018-09-2843794651067116000290421683362637212262191634718
2018-10-0139751628017116000280915611355286275254111410808
2018-10-1538610616000119714184912332331375449224741037708
2018-10-28384996085001223751908846633051550022336935714
2018-11-01435835938571233571852686233505546921791831724
2018-11-15426685860001235001828577033602493122815759720
2018-11-28404735885001243751606572434202479523070744677
2018-12-01394545990001241001827723034577431422840721649
2018-12-15427366010001231881531780935128355322237711696
2018-12-28429056010001199171412753536299326821908730650
2019-01-01424265983571175001501772936310292722487760722
2019-01-15394115939501175501188680136997282323655772583
2019-01-28404875813781176001171774139020278325155761575
2019-02-01427605786001176001156789540269323526059767610
2019-02-15423515817251176001170862038450277524721736645
2019-02-2841386588600117600953843338635248424274709593
2019-03-0149900588600117600914799438477248024027710668
2019-03-1557439588600120850851764638730249524501716667
2019-03-2864747585743123100698667038835248324797715762
2019-04-01602245786001226628427174388552466245507231006
2019-04-1551644577171122243830815138745268124522739974
2019-04-2841836573600122100895927738809264325049715729
2019-05-01432635736001221001187976239511289424884767726
2019-05-15432755736001221001414905139963342024801861489
2019-05-28297875730441185441719834239913374424563803498
2019-06-01213125686001152801756913240033488025007766464
2019-06-15183775679751035251440880541507575825248708398
2019-06-2819100563600947501371836443013612825287726450
2019-07-0116364561350922501562815143830552425319800390
2019-07-1519713560600862571564893044998609425760929413
2019-07-2819782559350854251583579545877591225340950427
2019-08-01184795387438435719096929458236700252791549538
2019-08-15185895167338370016248141457366597259741675502
2019-08-28167504933668365013359616434867692266721339474
2019-09-0117472470000836001732120563661311855257001225496
2019-09-1517827470000836001701109073495813132229391339539
2019-09-2816791460000832661684123253480318168201271518494
2019-10-0116972430000831001734202883368916388185161469450
2019-10-1518050430000831001503189023262613268176441689510
2019-10-281634443111184456157720094320749547189861530523
2019-11-011904743200085200146818688314788370190861219530
2019-11-151955743200085400157119211307899176188291047577
2019-11-28201754337148517214251869730527916318390965641
2019-12-01200884350008500014942265231030869717583974802
2019-12-15189964350008500013332562931423860017745947728
2019-12-28231324298338458414062414631549882018227970784
2020-01-012553540142984500140625479321919273182901127933
2020-01-153122340000083666108519378322498702185081316898
2020-01-28252933988577769692617106316858522206251377930
2020-02-013280939600077100110610902300748881200061143929
2020-02-15316113960007730092511589317869089203489321015
2020-02-2847157401250768759229168329149076201208511490
2020-03-01390143997507691080710112329038657196678111132
2020-03-1542722399125748127888491335138288198027961090
2020-03-28446744038577450076610133323318157199887861124
2020-04-0141647406000745008238165320937590202517131082
2020-04-154511740600074800905970932593850420484695986
2020-04-284958440600075643113810187327841124520518693910
2020-05-01485234060007625013259875331121065420940689856
2020-05-1543740406375801881449840432948958921526691855
2020-05-2828288409000812001503899232668995021783726709
2020-06-01278994281258102513641105732951717322451754613
2020-06-15251774467148167216231127533685748822908799699
2020-06-282032645345785833155512731339637608236821078774
2020-07-011961845160088140144811514344437897248791209664
2020-07-15203464519331064081758117463469611236260751348797
2020-07-28226754539331276221718108093522412040269731360900
2020-08-01271684722331356002951127653533812339277681632978
2020-08-152919565657113561425721342135367171042764922031002
2020-08-283014370357113648623122333636155186182651421641009
2020-09-012906590565013680027132361737269197903036915331102
2020-09-153046489080013680024262213329846258212994415841044
2020-09-283209381511413668626612491736920243733261015301063
2020-10-013068280600013660029052066237215169843057912641245
2020-10-1527133807057136600253014746365688204295349651169
2020-10-2828129819750136600277711304357326000297158341221
2020-11-0128879830629136600277111496367075757290997601283
2020-11-1528705825750136600280410245363546674271597231296
2020-11-282898781646713660022598736364555542269426901334
2020-12-012833481037113660017838982373464002265437051294
2020-12-1527793797800136600191312023381553782271348351290
2020-12-2829702778150136600178314112394433373279359201420
2021-01-01407697704001366002760154544030933152804610941571
2021-01-15420777704001366003285142094177349052995412211707
2021-01-28385637704001366003452115294669856413262412141691
2021-02-0144619770400140438430790994854762973533911911752
2021-02-1537598770400143300467083404749884213409711392001
2021-02-2846297770400143800548975714622088943390110482021
2021-03-014199376968614360051767826448009311330668851825
2021-03-154497476402914500043868208462709345329178871973
2021-03-285023976400014593844417182481639393336688961556
2021-04-015216276780014621442967465471769566346428691349
2021-04-15497367678001473144370829146831921834038880945
2021-04-28398507678001553503715894646783899734235888715
2021-05-01356887678001534003749905246856650734263861661
2021-05-15303557678001511432249816546516459134386865523
2021-05-28263457678001490861446849746978571332823892549
2021-06-012095676780014825011839258477116226330131010576
2021-06-151825177113314650010538436484555418340231026695
2021-06-28191787728001453968509150495115138335541056688
2021-07-0120931772800145618102212564506964672332001092677
2021-07-15201697728001622078849013520314782333001214683
2021-07-282334477280016245084411067524736819334721573736
2021-08-01282587599431629861382138855346310284325111607912
2021-08-1529960732243161458116510581527078025310311714874
2021-08-2828987602000161100134210102505149007305311849874
2021-09-0129590599813158750149095313210111554249072204960
2021-09-15313655870001580001850101873277413765264072403908
2021-09-283039858075015800012748076367349142279702043855
2021-10-012862857840015800013167584353256351250091228893
2021-10-152944256271415808614288730327574706236081365900
2021-10-2828300558000158100160110917314876466247482072937
2021-11-0130181558000159600158310744326669495258891734907
2021-11-15337615580001672001754125813085910627260041208909
2021-11-2836024565143169100146011107322399273254941062855
2021-12-013523457050016910016191145833333828226144946816
2021-12-153267957050016910012171059833593766726177931735
2021-12-284244156077816803413221074835900776325952988695
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()

png

산지공판장

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연도
0201801상순1000000000*전국농협공판장501감자50101수미1115470.0...1712.6373631723.9610391545.4545452320.66666771947.3504271769.8583201023.9823790.02018
1201801상순1000000000*전국농협공판장501감자50101수미122900.0...1198.6551721252.737207893.0555561417.85714341301.2396691348.253676571.3114750.02018
2201801상순1000000000*전국농협공판장501감자50199기타감자13보통1320.0...615.000000600.000000240.000000911.8750007630.851064449.166667473.0327870.02018
3201801상순1000000000*전국농협공판장501감자50199기타감자12460.0...544.130435365.000000200.0000001650.00000051088.0468751129.600000734.0243900.02018
4201801상순1000000000*전국농협공판장501감자50199기타감자1130967.0...1876.4544842010.4404771598.3277152438.72058882126.4024571779.2627281750.5447000.02018

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 SOON0
전달 평균가격(원) PreVious MMonth0
전년 평균가격(원) PreVious YeaR0
평년 평균가격(원) Common Year SOON0
연도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.496324274.655066242.19051831.957720
1고냉지무264.6509770.0000000.0000000.000000
2기타무521.595289480.538100493.06263361.633020
3다발무471.451711406.059504410.61460457.488390
4단무지무309.917956218.829911139.9509140.941931
5무말랭이4900.2873934715.7854344911.765053686.727068
6봄무395.756037322.147367373.67087150.657647
7여름무389.546479280.379240388.05157050.507092
8저장무151.465287114.053021141.6167538.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.678093263.004736869.6792460.000000
1감홍1730.576598875.5000951445.164604167.070058
2기꾸8954.873830339.413813310.7755930.000000
3기타사과1492.3728721283.2138151268.129595173.348689
4대홍0.0000000.0000000.0000000.000000
5로얄부사1008.518617659.573187935.18666788.956486
6맨코이273.23232349.735450635.9190030.000000
7모리스260.8709680.000000169.1710900.000000
8미시마1536.4029741292.3338771259.039874121.912301
9미야비1456.013788931.744844801.86089710.217735
10미얀마1573.6689941291.4008641204.713259145.481536
11사과1399.631728842.684355960.7001390.000000
12사이삼0.0000000.0000000.0000000.000000
13산사632.68622785.2955261170.18365962.347713
14서광0.0000000.0000000.0000000.000000
15선홍0.0000000.0000000.0000000.000000
16세계일0.0000000.0000000.0000000.000000
17소백3호90.71428682.0277780.0000000.000000
18스타크림숀873.9583330.0000000.0000000.000000
19시나노레드987.021283428.423642975.49542037.317702
20시나노스위트1097.280536621.1041891148.696673151.421861
21아오리1085.836575528.807416893.64100988.249611
22아이카향548.058101126.154514379.6052830.000000
23알프스오토메1255.968427203.878106528.1970400.000000
24야다까619.378365163.313874861.39850449.213360
25양광1631.535267778.8425561529.035052219.143259
26왕령0.0000000.0000000.0000000.000000
27요까966.583885447.7139811043.005145144.976263
28육오0.0000000.0000000.0000000.000000
29자홍1340.516699406.9613991080.4972200.000000
30조나골드0.0000000.0000000.0000000.000000
31착색후지652.728871486.832747618.76233835.674192
32천추0.0000000.0000000.0000000.000000
33추광257.62589026.965116564.1044370.000000
34추향1184.833333308.3333330.0000000.000000
35태양293.98301123.52941259.5055410.000000
36하향692.172805154.598801542.65272036.171389
37홍로1532.854744964.0383021529.363417216.348149
38홍옥1158.549332504.6925251374.366649197.498201
39홍월516.15074561.062553448.1377050.000000
40홍장군830.636433300.6432451053.822129109.504413
41화홍439.64663019.545455568.3282490.000000
42후지1629.4322111476.4539221398.351233197.896520
43히로사끼888.466765363.7017101013.950324128.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.145404693.869780687.86027094.925818
1남작560.150205498.348088568.97983683.130762
2대서31.30612234.693878170.6608360.000000
3대지628.065914327.570561230.7731290.000000
4돼지감자607.880485448.199625560.95847454.396822
5두백554.171564508.894107377.2660710.000000
6선농123.99255394.739011176.4697800.000000
7수미831.473593768.579309756.332810100.398814
8자주감자1016.011391752.886205845.31767450.766169
9조풍472.468275387.280421457.01752142.304697
10홍감자417.985111364.044977185.3303090.000000
11홍깨니백343.218450175.853059396.1762750.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.185423549.726862485.24638242.963859
1금촌추804.144196677.757725414.91331327.469353
2기타배1493.3831071279.096535922.97721675.824698
3단배293.33333350.0000000.0000000.000000
4만삼길350.0000000.0000000.0000000.000000
5만수165.680272171.957939284.0370960.000000
6만풍444.6997760.0000000.0000000.000000
7석정0.0000000.0000000.0000000.000000
8수황941.727865238.297621960.73866844.899032
9신고1730.0287251619.5138471396.755925193.838871
10신수0.0000000.0000000.0000000.000000
11신흥0.0000000.0000000.0000000.000000
12영산0.0000000.0000000.0000000.000000
13예황0.0000000.0000000.0000000.000000
14원황1397.269386766.1782121207.394486191.250208
15이십세기721.5458940.000000521.1494250.000000
16장수208.3333330.0000000.0000000.000000
17장십랑251.45723825.714286588.33505458.037189
18추황996.263762779.599155798.79688978.297595
19풍수804.547070209.809643875.784070109.519438
20한아름754.0904770.000000574.3563840.000000
21행수940.415875287.048062867.34012964.067563
22화산1156.334721576.8475711090.989661111.568495
23황금1126.561505579.651897964.146319112.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.3078252014.8730501718.696767220.564913
1깐마늘6851.7278826707.6281523887.406098590.993279
2깐마늘 남도6808.3560736069.6799480.0000000.000000
3깐마늘 대서0.0000000.0000000.0000000.000000
4깐마늘 한지3005.9398581790.6559600.0000000.000000
5깐마늘(수입)0.000000603.0809521394.3059520.000000
6마늘(수입)361.940741160.2888891486.6018520.000000
7마늘쫑2598.0217682050.2176222297.485411354.816994
8마늘쫑(수입)2873.6914322847.1416322575.108374423.663978
9육쪽마늘1874.3507441495.7962881568.59150288.251788
10저장형 난지2035.7023721516.5837812032.278421263.498433
11저장형 남도4209.3287133327.5371550.0000000.000000
12저장형 대서3336.2709212852.4234500.0000000.000000
13저장형 한지2733.7006952059.0034522404.896881261.597355
14풋마늘1792.3719251592.4762741508.626327192.950485
15햇마늘 난지4219.4580291465.3436991690.64381797.184833
16햇마늘 남도2274.7598620.0000000.0000000.000000
17햇마늘 대서1797.9760460.0000000.0000000.000000
18햇마늘 한지10212.9880969951.8046855957.0530150.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.5111921930.8845751562.900287191.887012
1꽃적상추1391.938094457.795699191.6666670.000000
2상추순783.913324742.550723568.19100769.979328
3적상추3058.3556703006.6920392690.612742441.116182
4적포기1024.156627660.238552712.1101993.233451
5쫑상추1329.0801361147.546696828.7780537.730644
6청상추3377.3124433270.0387612723.517637505.513017
7청포기205.841880101.88034292.1636140.000000
8포기찹3700.1012613625.8325103350.796448528.106543
9흑적2351.4100021389.7352382535.8575160.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.817259245.919432227.6967070.000000
1기타배추902.679278822.868489854.08596889.189073
2김장(가을)배추363.406296272.368420258.40573615.012064
3봄배추292.659405201.895076252.70682932.732634
4생채용 배추0.0000000.0000000.0000000.000000
5쌈배추1178.0014471111.5570091161.396834236.701700
6여름배추565.441190367.385128490.98353774.483888
7우거지1020.4571051016.813775985.23402099.890435
8월동배추568.802533541.501727495.51461873.753218
9저장배추247.154223177.595923299.05607419.751537
10절임배추763.0243450.0000000.0000000.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.477631497.359374512.58886177.602752
1깐양파807.705412770.527307656.31488287.884198
2만생양파212.498495131.46870181.4655710.000000
3양파(수입)965.602218747.991851543.73377617.773838
4양파(일반)437.944484382.429851426.55686856.629547
5저장양파487.242214423.431548357.98947416.754170
6조생양파793.435615585.810471610.68770649.123972
7중생양파0.00000062.9629630.0000000.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.116192930.638454853.80836184.685006
1깐대파1213.7355801111.199885955.285619100.574540
2대파(일반)1258.4644681206.3762161004.420828161.390806
3중파1120.2668381065.715810908.631415179.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연도
1201801상순1000000000*전국농협공판장501감자50101수미122900.0...1198.6551721252.737207893.0555561417.85714341301.2396691348.253676571.3114750.0000002018
43201801상순1000000000*전국농협공판장601사과60103후지1230029.0...1298.3416031312.4906671175.2581261788.02907981260.4422711186.3462561567.5056010.0000002018
54201801상순1000000000*전국농협공판장60260201신고1225005.0...1133.7972411134.126195945.5900621241.43540781119.1734721097.3158661010.5773650.0000002018
72201801상순1000000000*전국농협공판장1001배추100108쌈배추121147.0...380.732345379.342723269.230769461.5384626421.717791296.701031732.5301200.0000002018
97201801상순1000000000*전국농협공판장1101110199기타무1251700.0...260.007737263.225186224.901099298.4183678322.803236361.371457856.6361790.0000002018
..................................................................
118540202112하순6128201171통영농협 농산물공판장1101110199기타무1216.0...800.000000800.000000800.000000800.00000010.0000001422.7272730.0000000.0000002021
118544202112하순6128201171통영농협 농산물공판장1201양파120199기타양파12680.0...650.000000650.000000650.000000650.0000003900.000000900.0000001101.1627910.0000002021
118578202112하순6168223255제주시농협농산물공판장601사과60103후지121850.0...1822.8648651770.8928571728.2000002060.000000571844.9759121537.6073621686.0000001160.9241182021
118598202112하순6168223255제주시농협농산물공판장1101110199기타무1217460.0...236.901489236.44000067.500000475.21126823298.141844399.580243470.430878457.4694882021
118606202112하순6168223255제주시농협농산물공판장1201양파120199기타양파121815.0...389.256198360.000000270.000000727.9411764694.672489776.8595041317.556634669.3575302021

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연도
0201801상순100000*전국도매시장501감자50124깐감자20.0865204326.000000...4326.0000004326.0000004326.04326.00000010.0000004009.0000000.0000000.0000002018
1201801상순100000*전국도매시장501감자50121돼지감자12380.011650810941.099354...545.1057171010.000000200.03000.00000011711213.3584509174.1967238167.8956320.0000002018
2201801상순100000*전국도매시장501감자50110자주감자240.0158400660.000000...500.000000550.000000500.01000.000000712553.27935212612.21644524990.32489718483.9613042018
3201801상순100000*전국도매시장501감자50111가을감자10.0375003750.000000...3700.0000003750.0000003700.03800.000000224929.46341540365.0812690.0000000.0000002018
4201801상순100000*전국도매시장501감자50199기타감자1367301.324031994621757.622451...955.2896681360.4534310.010581.08108187230806.77952927661.15077023741.95322319340.1219892018
..................................................................
176009202112하순380401진주1202대파120201대파(일반)21897.5338370051545.245119...760.3603601450.000000500.03879.125000391348.6468011261.8286682400.0443482026.6351892021
176010202112하순380401진주1209마늘120942깐마늘 대서3250.0150000004615.384615...4000.0000004500.0000004000.05000.00000020.0000004615.3846150.0000000.0000002021
176011202112하순380401진주1209마늘120943깐마늘 남도9250.0450000004864.864865...4827.5862075000.0000004000.05000.00000030.0000004864.8648650.0000000.0000002021
176012202112하순380401진주1209마늘120999기타마늘130.04640003569.230769...2400.0000003900.0000002400.04000.00000040.0000005823.0769232604.1666670.0000002021
176013202112하순380401진주1209마늘120917마늘쫑(수입)16.0764004775.000000...4775.0000004775.0000004775.04775.00000024637.5000004637.5000002900.0000000.0000002021

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 SOON0
전달 평균가격(원) PreVious MMonth0
전년 평균가격(원) PreVious YeaR0
평년 평균가격(원) Common Year SOON0
연도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()
시점감자건고추깐마늘(국산)대파배추사과상추양파
0TEST_00+1순0.00.00.00.00.00.00.00.00.00.0
1TEST_00+2순0.00.00.00.00.00.00.00.00.00.0
2TEST_00+3순0.00.00.00.00.00.00.00.00.00.0
3TEST_01+1순0.00.00.00.00.00.00.00.00.00.0
4TEST_01+2순0.00.00.00.00.00.00.00.00.00.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를 결합하여 시계열 예측에 적합한 방법을 만들 수 있습니다.

This post is licensed under CC BY 4.0 by the author.