import warnings
warnings.filterwarnings('ignore')pandas 모듈 import
import pandas as pd
import numpy as npcsv파일을 불러오기
df = pd.read_csv('./data/01_house_price_2019_03.csv')살펴보기
df.head()| 지역명 | 규모구분 | 연도 | 월 | 분양가격(㎡) | |
|---|---|---|---|---|---|
| 0 | 서울 | 전체 | 2015 | 10 | 5841 |
| 1 | 서울 | 전용면적 60㎡이하 | 2015 | 10 | 5652 |
| 2 | 서울 | 전용면적 60㎡초과 85㎡이하 | 2015 | 10 | 5882 |
| 3 | 서울 | 전용면적 85㎡초과 102㎡이하 | 2015 | 10 | 5721 |
| 4 | 서울 | 전용면적 102㎡초과 | 2015 | 10 | 5879 |
df['test'] = Truedf.tail()| 지역명 | 규모구분 | 연도 | 월 | 분양가격(㎡) | test | |
|---|---|---|---|---|---|---|
| 3565 | 제주 | 전체 | 2019 | 3 | 3424 | True |
| 3566 | 제주 | 전용면적 60㎡이하 | 2019 | 3 | 3804 | True |
| 3567 | 제주 | 전용면적 60㎡초과 85㎡이하 | 2019 | 3 | 3504 | True |
| 3568 | 제주 | 전용면적 85㎡초과 102㎡이하 | 2019 | 3 | 3226 | True |
| 3569 | 제주 | 전용면적 102㎡초과 | 2019 | 3 | 2952 | True |
열의 이름 바꾸기
df=df.rename(columns={'분양가격(㎡)':'분양가'})df.head()| 지역명 | 규모구분 | 연도 | 월 | 분양가 | test | |
|---|---|---|---|---|---|---|
| 0 | 서울 | 전체 | 2015 | 10 | 5841 | True |
| 1 | 서울 | 전용면적 60㎡이하 | 2015 | 10 | 5652 | True |
| 2 | 서울 | 전용면적 60㎡초과 85㎡이하 | 2015 | 10 | 5882 | True |
| 3 | 서울 | 전용면적 85㎡초과 102㎡이하 | 2015 | 10 | 5721 | True |
| 4 | 서울 | 전용면적 102㎡초과 | 2015 | 10 | 5879 | True |
data type 보기
df.dtypes지역명 object
규모구분 object
연도 int64
월 int64
분양가 object
test bool
dtype: object
df.head()| 지역명 | 규모구분 | 연도 | 월 | 분양가 | test | |
|---|---|---|---|---|---|---|
| 0 | 서울 | 전체 | 2015 | 10 | 5841 | True |
| 1 | 서울 | 전용면적 60㎡이하 | 2015 | 10 | 5652 | True |
| 2 | 서울 | 전용면적 60㎡초과 85㎡이하 | 2015 | 10 | 5882 | True |
| 3 | 서울 | 전용면적 85㎡초과 102㎡이하 | 2015 | 10 | 5721 | True |
| 4 | 서울 | 전용면적 102㎡초과 | 2015 | 10 | 5879 | True |
df['분양가'] = df['분양가'].convert_objects(convert_numeric=True)df.dtypes지역명 object
규모구분 object
연도 int64
월 int64
분양가 float64
test bool
dtype: object
df.head()| 지역명 | 규모구분 | 연도 | 월 | 분양가 | test | |
|---|---|---|---|---|---|---|
| 0 | 서울 | 전체 | 2015 | 10 | 5841.0 | True |
| 1 | 서울 | 전용면적 60㎡이하 | 2015 | 10 | 5652.0 | True |
| 2 | 서울 | 전용면적 60㎡초과 85㎡이하 | 2015 | 10 | 5882.0 | True |
| 3 | 서울 | 전용면적 85㎡초과 102㎡이하 | 2015 | 10 | 5721.0 | True |
| 4 | 서울 | 전용면적 102㎡초과 | 2015 | 10 | 5879.0 | True |
numpy array로 변환하기
arr = df.to_numpy()arrarray([['서울', '전체', 2015, 10, 5841.0, True],
['서울', '전용면적 60㎡이하', 2015, 10, 5652.0, True],
['서울', '전용면적 60㎡초과 85㎡이하', 2015, 10, 5882.0, True],
...,
['제주', '전용면적 60㎡초과 85㎡이하', 2019, 3, 3504.0, True],
['제주', '전용면적 85㎡초과 102㎡이하', 2019, 3, 3226.0, True],
['제주', '전용면적 102㎡초과', 2019, 3, 2952.0, True]], dtype=object)
len(arr)3570
arr[0], arr[1](array(['서울', '전체', 2015, 10, 5841.0, True], dtype=object),
array(['서울', '전용면적 60㎡이하', 2015, 10, 5652.0, True], dtype=object))
간단한 통계 보기
df.describe()| 연도 | 월 | 분양가 | |
|---|---|---|---|
| count | 3570.000000 | 3570.000000 | 3273.000000 |
| mean | 2017.000000 | 6.500000 | 3130.001833 |
| std | 1.069195 | 3.634017 | 1141.740958 |
| min | 2015.000000 | 1.000000 | 1868.000000 |
| 25% | 2016.000000 | 3.000000 | 2387.000000 |
| 50% | 2017.000000 | 6.500000 | 2787.000000 |
| 75% | 2018.000000 | 10.000000 | 3383.000000 |
| max | 2019.000000 | 12.000000 | 8191.000000 |
Transposing 하기 (축 변환하기)
# 갯수를 지정하여 출력
df.head(3)| 지역명 | 규모구분 | 연도 | 월 | 분양가 | test | |
|---|---|---|---|---|---|---|
| 0 | 서울 | 전체 | 2015 | 10 | 5841.0 | True |
| 1 | 서울 | 전용면적 60㎡이하 | 2015 | 10 | 5652.0 | True |
| 2 | 서울 | 전용면적 60㎡초과 85㎡이하 | 2015 | 10 | 5882.0 | True |
df.T.head()| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ... | 3560 | 3561 | 3562 | 3563 | 3564 | 3565 | 3566 | 3567 | 3568 | 3569 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 지역명 | 서울 | 서울 | 서울 | 서울 | 서울 | 인천 | 인천 | 인천 | 인천 | 인천 | ... | 경남 | 경남 | 경남 | 경남 | 경남 | 제주 | 제주 | 제주 | 제주 | 제주 |
| 규모구분 | 전체 | 전용면적 60㎡이하 | 전용면적 60㎡초과 85㎡이하 | 전용면적 85㎡초과 102㎡이하 | 전용면적 102㎡초과 | 전체 | 전용면적 60㎡이하 | 전용면적 60㎡초과 85㎡이하 | 전용면적 85㎡초과 102㎡이하 | 전용면적 102㎡초과 | ... | 전체 | 전용면적 60㎡이하 | 전용면적 60㎡초과 85㎡이하 | 전용면적 85㎡초과 102㎡이하 | 전용면적 102㎡초과 | 전체 | 전용면적 60㎡이하 | 전용면적 60㎡초과 85㎡이하 | 전용면적 85㎡초과 102㎡이하 | 전용면적 102㎡초과 |
| 연도 | 2015 | 2015 | 2015 | 2015 | 2015 | 2015 | 2015 | 2015 | 2015 | 2015 | ... | 2019 | 2019 | 2019 | 2019 | 2019 | 2019 | 2019 | 2019 | 2019 | 2019 |
| 월 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | ... | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 |
| 분양가 | 5841 | 5652 | 5882 | 5721 | 5879 | 3163 | 3488 | 3119 | 3545 | 3408 | ... | 2877 | 2776 | 2855 | 3173 | 4303 | 3424 | 3804 | 3504 | 3226 | 2952 |
5 rows × 3570 columns
정렬
df.head()| 지역명 | 규모구분 | 연도 | 월 | 분양가 | test | |
|---|---|---|---|---|---|---|
| 0 | 서울 | 전체 | 2015 | 10 | 5841.0 | True |
| 1 | 서울 | 전용면적 60㎡이하 | 2015 | 10 | 5652.0 | True |
| 2 | 서울 | 전용면적 60㎡초과 85㎡이하 | 2015 | 10 | 5882.0 | True |
| 3 | 서울 | 전용면적 85㎡초과 102㎡이하 | 2015 | 10 | 5721.0 | True |
| 4 | 서울 | 전용면적 102㎡초과 | 2015 | 10 | 5879.0 | True |
1. Index 정렬
# 내림차순 정렬
df.sort_index(axis=0, ascending=False)[:5]| 지역명 | 규모구분 | 연도 | 월 | 분양가 | test | |
|---|---|---|---|---|---|---|
| 3569 | 제주 | 전용면적 102㎡초과 | 2019 | 3 | 2952.0 | True |
| 3568 | 제주 | 전용면적 85㎡초과 102㎡이하 | 2019 | 3 | 3226.0 | True |
| 3567 | 제주 | 전용면적 60㎡초과 85㎡이하 | 2019 | 3 | 3504.0 | True |
| 3566 | 제주 | 전용면적 60㎡이하 | 2019 | 3 | 3804.0 | True |
| 3565 | 제주 | 전체 | 2019 | 3 | 3424.0 | True |
# 오름차순 정렬
df.sort_index(axis=0, ascending=True)[:5]| 지역명 | 규모구분 | 연도 | 월 | 분양가 | test | |
|---|---|---|---|---|---|---|
| 0 | 서울 | 전체 | 2015 | 10 | 5841.0 | True |
| 1 | 서울 | 전용면적 60㎡이하 | 2015 | 10 | 5652.0 | True |
| 2 | 서울 | 전용면적 60㎡초과 85㎡이하 | 2015 | 10 | 5882.0 | True |
| 3 | 서울 | 전용면적 85㎡초과 102㎡이하 | 2015 | 10 | 5721.0 | True |
| 4 | 서울 | 전용면적 102㎡초과 | 2015 | 10 | 5879.0 | True |
2. Value 정렬
# 지역명 별로 정렬
df.sort_values(by='지역명')[:5]| 지역명 | 규모구분 | 연도 | 월 | 분양가 | test | |
|---|---|---|---|---|---|---|
| 1831 | 강원 | 전용면적 60㎡이하 | 2017 | 7 | 2167.0 | True |
| 896 | 강원 | 전용면적 60㎡이하 | 2016 | 8 | 2073.0 | True |
| 895 | 강원 | 전체 | 2016 | 8 | 2098.0 | True |
| 215 | 강원 | 전체 | 2015 | 12 | 2171.0 | True |
| 216 | 강원 | 전용면적 60㎡이하 | 2015 | 12 | 2292.0 | True |
# 연도 별로 정렬
df.sort_values(by='연도')[:5]| 지역명 | 규모구분 | 연도 | 월 | 분양가 | test | |
|---|---|---|---|---|---|---|
| 0 | 서울 | 전체 | 2015 | 10 | 5841.0 | True |
| 162 | 경남 | 전용면적 60㎡초과 85㎡이하 | 2015 | 11 | 2322.0 | True |
| 163 | 경남 | 전용면적 85㎡초과 102㎡이하 | 2015 | 11 | 2980.0 | True |
| 164 | 경남 | 전용면적 102㎡초과 | 2015 | 11 | 3043.0 | True |
| 165 | 제주 | 전체 | 2015 | 11 | 2232.0 | True |
선택 (Selection)
1. Column 이름으로 선택
df['지역명'][:5]0 서울
1 서울
2 서울
3 서울
4 서울
Name: 지역명, dtype: object
df['연도'][:5]0 2015
1 2015
2 2015
3 2015
4 2015
Name: 연도, dtype: int64
2. Index 선택
# index 0 부터 5 미만까지 선택
# index 지정시 : 기준으로 왼쪽은 포함, : 기준으로 오른쪽은 미만
df[0:5]| 지역명 | 규모구분 | 연도 | 월 | 분양가 | test | |
|---|---|---|---|---|---|---|
| 0 | 서울 | 전체 | 2015 | 10 | 5841.0 | True |
| 1 | 서울 | 전용면적 60㎡이하 | 2015 | 10 | 5652.0 | True |
| 2 | 서울 | 전용면적 60㎡초과 85㎡이하 | 2015 | 10 | 5882.0 | True |
| 3 | 서울 | 전용면적 85㎡초과 102㎡이하 | 2015 | 10 | 5721.0 | True |
| 4 | 서울 | 전용면적 102㎡초과 | 2015 | 10 | 5879.0 | True |
# 끝에 5개 출력
df[-5:]| 지역명 | 규모구분 | 연도 | 월 | 분양가 | test | |
|---|---|---|---|---|---|---|
| 3565 | 제주 | 전체 | 2019 | 3 | 3424.0 | True |
| 3566 | 제주 | 전용면적 60㎡이하 | 2019 | 3 | 3804.0 | True |
| 3567 | 제주 | 전용면적 60㎡초과 85㎡이하 | 2019 | 3 | 3504.0 | True |
| 3568 | 제주 | 전용면적 85㎡초과 102㎡이하 | 2019 | 3 | 3226.0 | True |
| 3569 | 제주 | 전용면적 102㎡초과 | 2019 | 3 | 2952.0 | True |
3. label로 선택
df.loc[:, ['지역명', '연도']][:5]| 지역명 | 연도 | |
|---|---|---|
| 0 | 서울 | 2015 |
| 1 | 서울 | 2015 |
| 2 | 서울 | 2015 |
| 3 | 서울 | 2015 |
| 4 | 서울 | 2015 |
# (주의) 여기서는 :를 기준으로 우측에 있는 범위인 6을 포함하여 출력
df.loc[:6,['지역명', '연도']]| 지역명 | 연도 | |
|---|---|---|
| 0 | 서울 | 2015 |
| 1 | 서울 | 2015 |
| 2 | 서울 | 2015 |
| 3 | 서울 | 2015 |
| 4 | 서울 | 2015 |
| 5 | 인천 | 2015 |
| 6 | 인천 | 2015 |
# 조건을 삽입 가능
df.loc[df.index > 5, ['지역명', '연도']][:10]| 지역명 | 연도 | |
|---|---|---|
| 6 | 인천 | 2015 |
| 7 | 인천 | 2015 |
| 8 | 인천 | 2015 |
| 9 | 인천 | 2015 |
| 10 | 경기 | 2015 |
| 11 | 경기 | 2015 |
| 12 | 경기 | 2015 |
| 13 | 경기 | 2015 |
| 14 | 경기 | 2015 |
| 15 | 부산 | 2015 |
# 지역명 column의 값이 '인천'인 행의 '지역명', '연도' 출력
df.loc[df['지역명']=='인천',['지역명', '연도']][:10]| 지역명 | 연도 | |
|---|---|---|
| 5 | 인천 | 2015 |
| 6 | 인천 | 2015 |
| 7 | 인천 | 2015 |
| 8 | 인천 | 2015 |
| 9 | 인천 | 2015 |
| 90 | 인천 | 2015 |
| 91 | 인천 | 2015 |
| 92 | 인천 | 2015 |
| 93 | 인천 | 2015 |
| 94 | 인천 | 2015 |
4. iloc을 활용한 인덱스 지정 선택
df.head()| 지역명 | 규모구분 | 연도 | 월 | 분양가 | test | |
|---|---|---|---|---|---|---|
| 0 | 서울 | 전체 | 2015 | 10 | 5841.0 | True |
| 1 | 서울 | 전용면적 60㎡이하 | 2015 | 10 | 5652.0 | True |
| 2 | 서울 | 전용면적 60㎡초과 85㎡이하 | 2015 | 10 | 5882.0 | True |
| 3 | 서울 | 전용면적 85㎡초과 102㎡이하 | 2015 | 10 | 5721.0 | True |
| 4 | 서울 | 전용면적 102㎡초과 | 2015 | 10 | 5879.0 | True |
df.iloc[2, 1]'전용면적 60㎡초과 85㎡이하'
# df.iloc과 동작방식은 동일하지만, 범위 지정은 불가
df.iat[2, 1]'전용면적 60㎡초과 85㎡이하'
df.iloc[2, :]지역명 서울
규모구분 전용면적 60㎡초과 85㎡이하
연도 2015
월 10
분양가 5882
test True
Name: 2, dtype: object
df.iloc[:5, 1]0 전체
1 전용면적 60㎡이하
2 전용면적 60㎡초과 85㎡이하
3 전용면적 85㎡초과 102㎡이하
4 전용면적 102㎡초과
Name: 규모구분, dtype: object
# iloc으로 인덱스 지정시 : 기준으로 왼쪽은 포함, : 기준으로 오른쪽은 미만
df.iloc[:5, 1:3]| 규모구분 | 연도 | |
|---|---|---|
| 0 | 전체 | 2015 |
| 1 | 전용면적 60㎡이하 | 2015 |
| 2 | 전용면적 60㎡초과 85㎡이하 | 2015 |
| 3 | 전용면적 85㎡초과 102㎡이하 | 2015 |
| 4 | 전용면적 102㎡초과 | 2015 |
5. 범위 조건 지정 선택
df[df.index > 3565]| 지역명 | 규모구분 | 연도 | 월 | 분양가 | test | |
|---|---|---|---|---|---|---|
| 3566 | 제주 | 전용면적 60㎡이하 | 2019 | 3 | 3804.0 | True |
| 3567 | 제주 | 전용면적 60㎡초과 85㎡이하 | 2019 | 3 | 3504.0 | True |
| 3568 | 제주 | 전용면적 85㎡초과 102㎡이하 | 2019 | 3 | 3226.0 | True |
| 3569 | 제주 | 전용면적 102㎡초과 | 2019 | 3 | 2952.0 | True |
5-a. df.연도 와 df[‘연도’] 의 column 지정방식은 동일하다
df[df.연도 == 2019][:5]| 지역명 | 규모구분 | 연도 | 월 | 분양가 | test | |
|---|---|---|---|---|---|---|
| 3315 | 서울 | 전체 | 2019 | 1 | 7600.0 | True |
| 3316 | 서울 | 전용면적 60㎡이하 | 2019 | 1 | 7400.0 | True |
| 3317 | 서울 | 전용면적 60㎡초과 85㎡이하 | 2019 | 1 | 8105.0 | True |
| 3318 | 서울 | 전용면적 85㎡초과 102㎡이하 | 2019 | 1 | 6842.0 | True |
| 3319 | 서울 | 전용면적 102㎡초과 | 2019 | 1 | 7787.0 | True |
df[df['연도'] == 2019][:5]| 지역명 | 규모구분 | 연도 | 월 | 분양가 | test | |
|---|---|---|---|---|---|---|
| 3315 | 서울 | 전체 | 2019 | 1 | 7600.0 | True |
| 3316 | 서울 | 전용면적 60㎡이하 | 2019 | 1 | 7400.0 | True |
| 3317 | 서울 | 전용면적 60㎡초과 85㎡이하 | 2019 | 1 | 8105.0 | True |
| 3318 | 서울 | 전용면적 85㎡초과 102㎡이하 | 2019 | 1 | 6842.0 | True |
| 3319 | 서울 | 전용면적 102㎡초과 | 2019 | 1 | 7787.0 | True |
Copy로 복사
df.head()| 지역명 | 규모구분 | 연도 | 월 | 분양가 | test | |
|---|---|---|---|---|---|---|
| 0 | 서울 | 전체 | 2015 | 10 | 5841.0 | True |
| 1 | 서울 | 전용면적 60㎡이하 | 2015 | 10 | 5652.0 | True |
| 2 | 서울 | 전용면적 60㎡초과 85㎡이하 | 2015 | 10 | 5882.0 | True |
| 3 | 서울 | 전용면적 85㎡초과 102㎡이하 | 2015 | 10 | 5721.0 | True |
| 4 | 서울 | 전용면적 102㎡초과 | 2015 | 10 | 5879.0 | True |
copy = df.copy()copy.head()| 지역명 | 규모구분 | 연도 | 월 | 분양가 | test | |
|---|---|---|---|---|---|---|
| 0 | 서울 | 전체 | 2015 | 10 | 5841.0 | True |
| 1 | 서울 | 전용면적 60㎡이하 | 2015 | 10 | 5652.0 | True |
| 2 | 서울 | 전용면적 60㎡초과 85㎡이하 | 2015 | 10 | 5882.0 | True |
| 3 | 서울 | 전용면적 85㎡초과 102㎡이하 | 2015 | 10 | 5721.0 | True |
| 4 | 서울 | 전용면적 102㎡초과 | 2015 | 10 | 5879.0 | True |
값 지정
# 지역명 == 서울 인 지역만 선택
df.loc[df['지역명']=='서울','지역명'][:10]0 서울
1 서울
2 서울
3 서울
4 서울
85 서울
86 서울
87 서울
88 서울
89 서울
Name: 지역명, dtype: object
# 지역명 == 서울 인 지역을 Seoul로 변경(값을 set)
df.loc[df['지역명']=='서울','지역명'] = 'Seoul'df.head()| 지역명 | 규모구분 | 연도 | 월 | 분양가 | test | |
|---|---|---|---|---|---|---|
| 0 | Seoul | 전체 | 2015 | 10 | 5841.0 | True |
| 1 | Seoul | 전용면적 60㎡이하 | 2015 | 10 | 5652.0 | True |
| 2 | Seoul | 전용면적 60㎡초과 85㎡이하 | 2015 | 10 | 5882.0 | True |
| 3 | Seoul | 전용면적 85㎡초과 102㎡이하 | 2015 | 10 | 5721.0 | True |
| 4 | Seoul | 전용면적 102㎡초과 | 2015 | 10 | 5879.0 | True |
reindex를 통한 지정 행과 새로운 열을 추가하여 새로운 dataframe으로 생성
df1 = df.reindex(index=df.index[:7], columns=list(df.columns) + ['extra'])df1| 지역명 | 규모구분 | 연도 | 월 | 분양가 | test | extra | |
|---|---|---|---|---|---|---|---|
| 0 | Seoul | 전체 | 2015 | 10 | 5841.0 | True | NaN |
| 1 | Seoul | 전용면적 60㎡이하 | 2015 | 10 | 5652.0 | True | NaN |
| 2 | Seoul | 전용면적 60㎡초과 85㎡이하 | 2015 | 10 | 5882.0 | True | NaN |
| 3 | Seoul | 전용면적 85㎡초과 102㎡이하 | 2015 | 10 | 5721.0 | True | NaN |
| 4 | Seoul | 전용면적 102㎡초과 | 2015 | 10 | 5879.0 | True | NaN |
| 5 | 인천 | 전체 | 2015 | 10 | 3163.0 | True | NaN |
| 6 | 인천 | 전용면적 60㎡이하 | 2015 | 10 | 3488.0 | True | NaN |
df1.loc[:4, 'extra'] = Falsedf1| 지역명 | 규모구분 | 연도 | 월 | 분양가 | test | extra | |
|---|---|---|---|---|---|---|---|
| 0 | Seoul | 전체 | 2015 | 10 | 5841.0 | True | False |
| 1 | Seoul | 전용면적 60㎡이하 | 2015 | 10 | 5652.0 | True | False |
| 2 | Seoul | 전용면적 60㎡초과 85㎡이하 | 2015 | 10 | 5882.0 | True | False |
| 3 | Seoul | 전용면적 85㎡초과 102㎡이하 | 2015 | 10 | 5721.0 | True | False |
| 4 | Seoul | 전용면적 102㎡초과 | 2015 | 10 | 5879.0 | True | False |
| 5 | 인천 | 전체 | 2015 | 10 | 3163.0 | True | NaN |
| 6 | 인천 | 전용면적 60㎡이하 | 2015 | 10 | 3488.0 | True | NaN |
빈 데이터 처리
df2 = df1.copy()df2| 지역명 | 규모구분 | 연도 | 월 | 분양가 | test | extra | |
|---|---|---|---|---|---|---|---|
| 0 | Seoul | 전체 | 2015 | 10 | 5841.0 | True | False |
| 1 | Seoul | 전용면적 60㎡이하 | 2015 | 10 | 5652.0 | True | False |
| 2 | Seoul | 전용면적 60㎡초과 85㎡이하 | 2015 | 10 | 5882.0 | True | False |
| 3 | Seoul | 전용면적 85㎡초과 102㎡이하 | 2015 | 10 | 5721.0 | True | False |
| 4 | Seoul | 전용면적 102㎡초과 | 2015 | 10 | 5879.0 | True | False |
| 5 | 인천 | 전체 | 2015 | 10 | 3163.0 | True | NaN |
| 6 | 인천 | 전용면적 60㎡이하 | 2015 | 10 | 3488.0 | True | NaN |
1. NaN 값이 있는 행을 제거
df2.dropna(how='any')| 지역명 | 규모구분 | 연도 | 월 | 분양가 | test | extra | |
|---|---|---|---|---|---|---|---|
| 0 | Seoul | 전체 | 2015 | 10 | 5841.0 | True | False |
| 1 | Seoul | 전용면적 60㎡이하 | 2015 | 10 | 5652.0 | True | False |
| 2 | Seoul | 전용면적 60㎡초과 85㎡이하 | 2015 | 10 | 5882.0 | True | False |
| 3 | Seoul | 전용면적 85㎡초과 102㎡이하 | 2015 | 10 | 5721.0 | True | False |
| 4 | Seoul | 전용면적 102㎡초과 | 2015 | 10 | 5879.0 | True | False |
1-a 하지만 원본 데이터에는 반영이 안되어 있음
df2| 지역명 | 규모구분 | 연도 | 월 | 분양가 | test | extra | |
|---|---|---|---|---|---|---|---|
| 0 | Seoul | 전체 | 2015 | 10 | 5841.0 | True | False |
| 1 | Seoul | 전용면적 60㎡이하 | 2015 | 10 | 5652.0 | True | False |
| 2 | Seoul | 전용면적 60㎡초과 85㎡이하 | 2015 | 10 | 5882.0 | True | False |
| 3 | Seoul | 전용면적 85㎡초과 102㎡이하 | 2015 | 10 | 5721.0 | True | False |
| 4 | Seoul | 전용면적 102㎡초과 | 2015 | 10 | 5879.0 | True | False |
| 5 | 인천 | 전체 | 2015 | 10 | 3163.0 | True | NaN |
| 6 | 인천 | 전용면적 60㎡이하 | 2015 | 10 | 3488.0 | True | NaN |
1-b 원본 데이터에 반영을 시키기 위해서는 inplace=True를 적용
df2.dropna(how='any', inplace=True)# NaN 값이 있는 행이 제거됨
df2| 지역명 | 규모구분 | 연도 | 월 | 분양가 | test | extra | |
|---|---|---|---|---|---|---|---|
| 0 | Seoul | 전체 | 2015 | 10 | 5841.0 | True | False |
| 1 | Seoul | 전용면적 60㎡이하 | 2015 | 10 | 5652.0 | True | False |
| 2 | Seoul | 전용면적 60㎡초과 85㎡이하 | 2015 | 10 | 5882.0 | True | False |
| 3 | Seoul | 전용면적 85㎡초과 102㎡이하 | 2015 | 10 | 5721.0 | True | False |
| 4 | Seoul | 전용면적 102㎡초과 | 2015 | 10 | 5879.0 | True | False |
2. NaN 값이 있는 행에 값을 채움
df2 = df1.copy()df2| 지역명 | 규모구분 | 연도 | 월 | 분양가 | test | extra | |
|---|---|---|---|---|---|---|---|
| 0 | Seoul | 전체 | 2015 | 10 | 5841.0 | True | False |
| 1 | Seoul | 전용면적 60㎡이하 | 2015 | 10 | 5652.0 | True | False |
| 2 | Seoul | 전용면적 60㎡초과 85㎡이하 | 2015 | 10 | 5882.0 | True | False |
| 3 | Seoul | 전용면적 85㎡초과 102㎡이하 | 2015 | 10 | 5721.0 | True | False |
| 4 | Seoul | 전용면적 102㎡초과 | 2015 | 10 | 5879.0 | True | False |
| 5 | 인천 | 전체 | 2015 | 10 | 3163.0 | True | NaN |
| 6 | 인천 | 전용면적 60㎡이하 | 2015 | 10 | 3488.0 | True | NaN |
df2.fillna(value=True)| 지역명 | 규모구분 | 연도 | 월 | 분양가 | test | extra | |
|---|---|---|---|---|---|---|---|
| 0 | Seoul | 전체 | 2015 | 10 | 5841.0 | True | False |
| 1 | Seoul | 전용면적 60㎡이하 | 2015 | 10 | 5652.0 | True | False |
| 2 | Seoul | 전용면적 60㎡초과 85㎡이하 | 2015 | 10 | 5882.0 | True | False |
| 3 | Seoul | 전용면적 85㎡초과 102㎡이하 | 2015 | 10 | 5721.0 | True | False |
| 4 | Seoul | 전용면적 102㎡초과 | 2015 | 10 | 5879.0 | True | False |
| 5 | 인천 | 전체 | 2015 | 10 | 3163.0 | True | True |
| 6 | 인천 | 전용면적 60㎡이하 | 2015 | 10 | 3488.0 | True | True |
3. NaN 값이 있는 데이터를 Boolean 값으로 출력
pd.isna(df2)| 지역명 | 규모구분 | 연도 | 월 | 분양가 | test | extra | |
|---|---|---|---|---|---|---|---|
| 0 | False | False | False | False | False | False | False |
| 1 | False | False | False | False | False | False | False |
| 2 | False | False | False | False | False | False | False |
| 3 | False | False | False | False | False | False | False |
| 4 | False | False | False | False | False | False | False |
| 5 | False | False | False | False | False | False | True |
| 6 | False | False | False | False | False | False | True |
연산 (Operation)
df.head()| 지역명 | 규모구분 | 연도 | 월 | 분양가 | test | |
|---|---|---|---|---|---|---|
| 0 | Seoul | 전체 | 2015 | 10 | 5841.0 | True |
| 1 | Seoul | 전용면적 60㎡이하 | 2015 | 10 | 5652.0 | True |
| 2 | Seoul | 전용면적 60㎡초과 85㎡이하 | 2015 | 10 | 5882.0 | True |
| 3 | Seoul | 전용면적 85㎡초과 102㎡이하 | 2015 | 10 | 5721.0 | True |
| 4 | Seoul | 전용면적 102㎡초과 | 2015 | 10 | 5879.0 | True |
열(column) 기준 평균
df.mean()연도 2017.000000
월 6.500000
분양가 3130.001833
test 1.000000
dtype: float64
행(row) 기준 평균
df.mean(1)[:5]0 1966.75
1 1919.50
2 1977.00
3 1936.75
4 1976.25
dtype: float64
df.head()| 지역명 | 규모구분 | 연도 | 월 | 분양가 | test | |
|---|---|---|---|---|---|---|
| 0 | Seoul | 전체 | 2015 | 10 | 5841.0 | True |
| 1 | Seoul | 전용면적 60㎡이하 | 2015 | 10 | 5652.0 | True |
| 2 | Seoul | 전용면적 60㎡초과 85㎡이하 | 2015 | 10 | 5882.0 | True |
| 3 | Seoul | 전용면적 85㎡초과 102㎡이하 | 2015 | 10 | 5721.0 | True |
| 4 | Seoul | 전용면적 102㎡초과 | 2015 | 10 | 5879.0 | True |
행을 2칸 뒤로 밀기
df.shift(2)[:5]| 지역명 | 규모구분 | 연도 | 월 | 분양가 | test | |
|---|---|---|---|---|---|---|
| 0 | NaN | NaN | NaN | NaN | NaN | NaN |
| 1 | NaN | NaN | NaN | NaN | NaN | NaN |
| 2 | Seoul | 전체 | 2015.0 | 10.0 | 5841.0 | True |
| 3 | Seoul | 전용면적 60㎡이하 | 2015.0 | 10.0 | 5652.0 | True |
| 4 | Seoul | 전용면적 60㎡초과 85㎡이하 | 2015.0 | 10.0 | 5882.0 | True |
행을 2칸 당기기
df.shift(-2)[:5]| 지역명 | 규모구분 | 연도 | 월 | 분양가 | test | |
|---|---|---|---|---|---|---|
| 0 | Seoul | 전용면적 60㎡초과 85㎡이하 | 2015.0 | 10.0 | 5882.0 | True |
| 1 | Seoul | 전용면적 85㎡초과 102㎡이하 | 2015.0 | 10.0 | 5721.0 | True |
| 2 | Seoul | 전용면적 102㎡초과 | 2015.0 | 10.0 | 5879.0 | True |
| 3 | 인천 | 전체 | 2015.0 | 10.0 | 3163.0 | True |
| 4 | 인천 | 전용면적 60㎡이하 | 2015.0 | 10.0 | 3488.0 | True |
Broadcasting을 이용한 subtract (빼기)
df1 = df[['연도', '월']]df1.head()| 연도 | 월 | |
|---|---|---|
| 0 | 2015 | 10 |
| 1 | 2015 | 10 |
| 2 | 2015 | 10 |
| 3 | 2015 | 10 |
| 4 | 2015 | 10 |
df1.shape(3570, 2)
s = np.ones(df.shape[0])s.shape(3570,)
df1.head()| 연도 | 월 | |
|---|---|---|
| 0 | 2015 | 10 |
| 1 | 2015 | 10 |
| 2 | 2015 | 10 |
| 3 | 2015 | 10 |
| 4 | 2015 | 10 |
sarray([1., 1., 1., ..., 1., 1., 1.])
df1.sub(s, axis=0).head()| 연도 | 월 | |
|---|---|---|
| 0 | 2014.0 | 9.0 |
| 1 | 2014.0 | 9.0 |
| 2 | 2014.0 | 9.0 |
| 3 | 2014.0 | 9.0 |
| 4 | 2014.0 | 9.0 |
s = np.ones(df1.shape[1])sarray([1., 1.])
df1.sub(s, axis=1).head()| 연도 | 월 | |
|---|---|---|
| 0 | 2014.0 | 9.0 |
| 1 | 2014.0 | 9.0 |
| 2 | 2014.0 | 9.0 |
| 3 | 2014.0 | 9.0 |
| 4 | 2014.0 | 9.0 |
Apply
np.cumsum : cumulative sum의 함수형으로 누적 합을 구하는 함수
df1.apply(np.cumsum)[:10]| 연도 | 월 | |
|---|---|---|
| 0 | 2015 | 10 |
| 1 | 4030 | 20 |
| 2 | 6045 | 30 |
| 3 | 8060 | 40 |
| 4 | 10075 | 50 |
| 5 | 12090 | 60 |
| 6 | 14105 | 70 |
| 7 | 16120 | 80 |
| 8 | 18135 | 90 |
| 9 | 20150 | 100 |
연도 column
x.max() 는 최대값인 2019년도의 2019 x.min() 은 최소값인 2015년도의 2015 2019 - 2015 = 4가 출력
월 column
x.max() 는 최대값인 12 x.min() 은 최소값인 1 12 - 1 = 11이 출력
df1.apply(lambda x: x.max() - x.min())연도 4
월 11
dtype: int64
df1.head()| 연도 | 월 | |
|---|---|---|
| 0 | 2015 | 10 |
| 1 | 2015 | 10 |
| 2 | 2015 | 10 |
| 3 | 2015 | 10 |
| 4 | 2015 | 10 |
값들의 종류별 출력
df1['연도'].value_counts()2017 1020
2018 1020
2016 1020
2019 255
2015 255
Name: 연도, dtype: int64
데이터 합치기 (Data Merge)
df.head()| 지역명 | 규모구분 | 연도 | 월 | 분양가 | test | |
|---|---|---|---|---|---|---|
| 0 | Seoul | 전체 | 2015 | 10 | 5841.0 | True |
| 1 | Seoul | 전용면적 60㎡이하 | 2015 | 10 | 5652.0 | True |
| 2 | Seoul | 전용면적 60㎡초과 85㎡이하 | 2015 | 10 | 5882.0 | True |
| 3 | Seoul | 전용면적 85㎡초과 102㎡이하 | 2015 | 10 | 5721.0 | True |
| 4 | Seoul | 전용면적 102㎡초과 | 2015 | 10 | 5879.0 | True |
left = df[['연도', '월']]left.head()| 연도 | 월 | |
|---|---|---|
| 0 | 2015 | 10 |
| 1 | 2015 | 10 |
| 2 | 2015 | 10 |
| 3 | 2015 | 10 |
| 4 | 2015 | 10 |
right = df[['지역명']]right.head()| 지역명 | |
|---|---|
| 0 | Seoul |
| 1 | Seoul |
| 2 | Seoul |
| 3 | Seoul |
| 4 | Seoul |
1. Concat
part_1 = pd.DataFrame(np.random.randn(3, 4))
part_2 = pd.DataFrame(np.random.randn(4, 4))
part_3 = pd.DataFrame(np.random.randn(5, 4))part_1| 0 | 1 | 2 | 3 | |
|---|---|---|---|---|
| 0 | 1.725924 | 1.841674 | 0.660353 | -2.383965 |
| 1 | -1.950517 | 0.604445 | 1.899723 | 1.510485 |
| 2 | 0.253384 | -1.023495 | 1.177039 | 1.075810 |
part_2| 0 | 1 | 2 | 3 | |
|---|---|---|---|---|
| 0 | -0.000298 | -0.876631 | -0.536867 | 0.793464 |
| 1 | -2.087293 | -2.380273 | 0.328481 | 0.196080 |
| 2 | -0.927580 | 0.052453 | -1.163826 | 0.440285 |
| 3 | -0.028867 | 0.104983 | 0.371043 | -0.985374 |
part_3| 0 | 1 | 2 | 3 | |
|---|---|---|---|---|
| 0 | 0.132537 | 1.236222 | 3.393376 | 1.125493 |
| 1 | 1.257455 | -0.106632 | 0.278487 | -0.535576 |
| 2 | 0.361710 | -0.542086 | 0.380133 | -1.838153 |
| 3 | 1.566501 | 1.465961 | 1.459668 | 0.623596 |
| 4 | 0.907765 | 0.529168 | 0.536374 | 0.347229 |
part = [part_1, part_2, part_3]part[ 0 1 2 3
0 1.725924 1.841674 0.660353 -2.383965
1 -1.950517 0.604445 1.899723 1.510485
2 0.253384 -1.023495 1.177039 1.075810,
0 1 2 3
0 -0.000298 -0.876631 -0.536867 0.793464
1 -2.087293 -2.380273 0.328481 0.196080
2 -0.927580 0.052453 -1.163826 0.440285
3 -0.028867 0.104983 0.371043 -0.985374,
0 1 2 3
0 0.132537 1.236222 3.393376 1.125493
1 1.257455 -0.106632 0.278487 -0.535576
2 0.361710 -0.542086 0.380133 -1.838153
3 1.566501 1.465961 1.459668 0.623596
4 0.907765 0.529168 0.536374 0.347229]
pd.concat(part)| 0 | 1 | 2 | 3 | |
|---|---|---|---|---|
| 0 | 1.725924 | 1.841674 | 0.660353 | -2.383965 |
| 1 | -1.950517 | 0.604445 | 1.899723 | 1.510485 |
| 2 | 0.253384 | -1.023495 | 1.177039 | 1.075810 |
| 0 | -0.000298 | -0.876631 | -0.536867 | 0.793464 |
| 1 | -2.087293 | -2.380273 | 0.328481 | 0.196080 |
| 2 | -0.927580 | 0.052453 | -1.163826 | 0.440285 |
| 3 | -0.028867 | 0.104983 | 0.371043 | -0.985374 |
| 0 | 0.132537 | 1.236222 | 3.393376 | 1.125493 |
| 1 | 1.257455 | -0.106632 | 0.278487 | -0.535576 |
| 2 | 0.361710 | -0.542086 | 0.380133 | -1.838153 |
| 3 | 1.566501 | 1.465961 | 1.459668 | 0.623596 |
| 4 | 0.907765 | 0.529168 | 0.536374 | 0.347229 |
2. Join
Join을 Column(열)을 기준으로 합칠 경우에 on=’합치고자하는 열의 이름’를 자주 사용하게 되는데, 값이 고유하지 않다면, 매우 혼란스러울 수 있다
예시1: key가 고유한 경우
left = pd.DataFrame({'연도': ['2015', '2016', '2017', '2018', '2019'], '월': ['1', '2', '3', '4', '5']})
left| 연도 | 월 | |
|---|---|---|
| 0 | 2015 | 1 |
| 1 | 2016 | 2 |
| 2 | 2017 | 3 |
| 3 | 2018 | 4 |
| 4 | 2019 | 5 |
right = pd.DataFrame({'이름': ['홍길동', '김영희', '이철수', '방탄소년단', 'QUEEN'], '월': ['1', '2', '3', '4', '5']})
right| 이름 | 월 | |
|---|---|---|
| 0 | 홍길동 | 1 |
| 1 | 김영희 | 2 |
| 2 | 이철수 | 3 |
| 3 | 방탄소년단 | 4 |
| 4 | QUEEN | 5 |
left.shape, right.shape((5, 2), (5, 2))
매우 깔끔하게 합쳐진 것을 볼 수 있다
pd.merge(left, right, on='월')| 연도 | 월 | 이름 | |
|---|---|---|---|
| 0 | 2015 | 1 | 홍길동 |
| 1 | 2016 | 2 | 김영희 |
| 2 | 2017 | 3 | 이철수 |
| 3 | 2018 | 4 | 방탄소년단 |
| 4 | 2019 | 5 | QUEEN |
예시2: 중복되는 key가 있을 때 합치려는 경우 (1월을 중복으로 넣어놨음)
left = pd.DataFrame({'연도': ['2015', '2016', '2017', '2018', '2019'], '월': ['1', '1', '3', '4', '5']})
left| 연도 | 월 | |
|---|---|---|
| 0 | 2015 | 1 |
| 1 | 2016 | 1 |
| 2 | 2017 | 3 |
| 3 | 2018 | 4 |
| 4 | 2019 | 5 |
right = pd.DataFrame({'이름': ['홍길동', '김영희', '이철수', '방탄소년단', 'QUEEN'], '월': ['1', '1', '3', '4', '5']})
right| 이름 | 월 | |
|---|---|---|
| 0 | 홍길동 | 1 |
| 1 | 김영희 | 1 |
| 2 | 이철수 | 3 |
| 3 | 방탄소년단 | 4 |
| 4 | QUEEN | 5 |
행이 2개가 더 추가로 합쳐진 모습이다.
pd.merge(left, right, on='월')| 연도 | 월 | 이름 | |
|---|---|---|---|
| 0 | 2015 | 1 | 홍길동 |
| 1 | 2015 | 1 | 김영희 |
| 2 | 2016 | 1 | 홍길동 |
| 3 | 2016 | 1 | 김영희 |
| 4 | 2017 | 3 | 이철수 |
| 5 | 2018 | 4 | 방탄소년단 |
| 6 | 2019 | 5 | QUEEN |
3. Append
test = np.arange(0, 50)
testarray([ 0, 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])
# 1d -> 2d로 변환
test = test.reshape(10, 5)testarray([[ 0, 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]])
test_1 = test[:3]test_1array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])
test_2 = test[3:7]test_2array([[15, 16, 17, 18, 19],
[20, 21, 22, 23, 24],
[25, 26, 27, 28, 29],
[30, 31, 32, 33, 34]])
test_3 = test[7:10]test_3array([[35, 36, 37, 38, 39],
[40, 41, 42, 43, 44],
[45, 46, 47, 48, 49]])
df1 = pd.DataFrame(test_1)
df1| 0 | 1 | 2 | 3 | 4 | |
|---|---|---|---|---|---|
| 0 | 0 | 1 | 2 | 3 | 4 |
| 1 | 5 | 6 | 7 | 8 | 9 |
| 2 | 10 | 11 | 12 | 13 | 14 |
df2 = pd.DataFrame(test_2)
df2| 0 | 1 | 2 | 3 | 4 | |
|---|---|---|---|---|---|
| 0 | 15 | 16 | 17 | 18 | 19 |
| 1 | 20 | 21 | 22 | 23 | 24 |
| 2 | 25 | 26 | 27 | 28 | 29 |
| 3 | 30 | 31 | 32 | 33 | 34 |
df3 = pd.DataFrame(test_3)
df3| 0 | 1 | 2 | 3 | 4 | |
|---|---|---|---|---|---|
| 0 | 35 | 36 | 37 | 38 | 39 |
| 1 | 40 | 41 | 42 | 43 | 44 |
| 2 | 45 | 46 | 47 | 48 | 49 |
df1.append(df2)| 0 | 1 | 2 | 3 | 4 | |
|---|---|---|---|---|---|
| 0 | 0 | 1 | 2 | 3 | 4 |
| 1 | 5 | 6 | 7 | 8 | 9 |
| 2 | 10 | 11 | 12 | 13 | 14 |
| 0 | 15 | 16 | 17 | 18 | 19 |
| 1 | 20 | 21 | 22 | 23 | 24 |
| 2 | 25 | 26 | 27 | 28 | 29 |
| 3 | 30 | 31 | 32 | 33 | 34 |
index가 이상하게 출력되는 부분은 ignore_index=True로 해결할 수 있다
df1.append(df2, ignore_index=True)| 0 | 1 | 2 | 3 | 4 | |
|---|---|---|---|---|---|
| 0 | 0 | 1 | 2 | 3 | 4 |
| 1 | 5 | 6 | 7 | 8 | 9 |
| 2 | 10 | 11 | 12 | 13 | 14 |
| 3 | 15 | 16 | 17 | 18 | 19 |
| 4 | 20 | 21 | 22 | 23 | 24 |
| 5 | 25 | 26 | 27 | 28 | 29 |
| 6 | 30 | 31 | 32 | 33 | 34 |
그룹화 (Grouping)
df.head()| 지역명 | 규모구분 | 연도 | 월 | 분양가 | test | |
|---|---|---|---|---|---|---|
| 0 | Seoul | 전체 | 2015 | 10 | 5841.0 | True |
| 1 | Seoul | 전용면적 60㎡이하 | 2015 | 10 | 5652.0 | True |
| 2 | Seoul | 전용면적 60㎡초과 85㎡이하 | 2015 | 10 | 5882.0 | True |
| 3 | Seoul | 전용면적 85㎡초과 102㎡이하 | 2015 | 10 | 5721.0 | True |
| 4 | Seoul | 전용면적 102㎡초과 | 2015 | 10 | 5879.0 | True |
df.shape(3570, 6)
df.groupby(['지역명', '연도', '월'])['분양가'].agg('sum')지역명 연도 월
Seoul 2015 10 28975.0
11 31977.0
12 31392.0
2016 1 31635.0
2 31559.0
3 32400.0
4 33504.0
5 33185.0
6 33085.0
7 33369.0
8 33174.0
9 33246.0
10 34239.0
11 32672.0
12 33449.0
2017 1 33413.0
2 33202.0
3 32526.0
4 32519.0
5 32536.0
6 33637.0
7 33285.0
8 31812.0
9 33788.0
10 33160.0
11 0.0
12 33973.0
2018 1 33772.0
2 34315.0
3 35647.0
...
충북 2016 10 11276.0
11 11283.0
12 11497.0
2017 1 11588.0
2 11367.0
3 11327.0
4 11136.0
5 11387.0
6 11309.0
7 11309.0
8 11323.0
9 11332.0
10 11343.0
11 0.0
12 11131.0
2018 1 11131.0
2 11435.0
3 12212.0
4 12961.0
5 13028.0
6 12552.0
7 12506.0
8 12506.0
9 12494.0
10 12494.0
11 12425.0
12 12425.0
2019 1 12425.0
2 12158.0
3 12235.0
Name: 분양가, Length: 714, dtype: float64
분양가 column이 현재 int 타입이 아닌 object 타입으로 되어 있기 때문에 연산이 잘 이뤄지지 않음. 따라서 int 타입으로 변경
df.info()<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3570 entries, 0 to 3569
Data columns (total 6 columns):
지역명 3570 non-null object
규모구분 3570 non-null object
연도 3570 non-null int64
월 3570 non-null int64
분양가 3273 non-null float64
test 3570 non-null bool
dtypes: bool(1), float64(1), int64(2), object(2)
memory usage: 143.0+ KB
df.info()<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3570 entries, 0 to 3569
Data columns (total 6 columns):
지역명 3570 non-null object
규모구분 3570 non-null object
연도 3570 non-null int64
월 3570 non-null int64
분양가 3273 non-null float64
test 3570 non-null bool
dtypes: bool(1), float64(1), int64(2), object(2)
memory usage: 143.0+ KB
grouped = df.groupby(['지역명', '연도', '월']).sum()
grouped| 분양가 | test | |||
|---|---|---|---|---|
| 지역명 | 연도 | 월 | ||
| Seoul | 2015 | 10 | 28975.0 | 5.0 |
| 11 | 31977.0 | 5.0 | ||
| 12 | 31392.0 | 5.0 | ||
| 2016 | 1 | 31635.0 | 5.0 | |
| 2 | 31559.0 | 5.0 | ||
| 3 | 32400.0 | 5.0 | ||
| 4 | 33504.0 | 5.0 | ||
| 5 | 33185.0 | 5.0 | ||
| 6 | 33085.0 | 5.0 | ||
| 7 | 33369.0 | 5.0 | ||
| 8 | 33174.0 | 5.0 | ||
| 9 | 33246.0 | 5.0 | ||
| 10 | 34239.0 | 5.0 | ||
| 11 | 32672.0 | 5.0 | ||
| 12 | 33449.0 | 5.0 | ||
| 2017 | 1 | 33413.0 | 5.0 | |
| 2 | 33202.0 | 5.0 | ||
| 3 | 32526.0 | 5.0 | ||
| 4 | 32519.0 | 5.0 | ||
| 5 | 32536.0 | 5.0 | ||
| 6 | 33637.0 | 5.0 | ||
| 7 | 33285.0 | 5.0 | ||
| 8 | 31812.0 | 5.0 | ||
| 9 | 33788.0 | 5.0 | ||
| 10 | 33160.0 | 5.0 | ||
| 11 | 0.0 | 5.0 | ||
| 12 | 33973.0 | 5.0 | ||
| 2018 | 1 | 33772.0 | 5.0 | |
| 2 | 34315.0 | 5.0 | ||
| 3 | 35647.0 | 5.0 | ||
| ... | ... | ... | ... | ... |
| 충북 | 2016 | 10 | 11276.0 | 5.0 |
| 11 | 11283.0 | 5.0 | ||
| 12 | 11497.0 | 5.0 | ||
| 2017 | 1 | 11588.0 | 5.0 | |
| 2 | 11367.0 | 5.0 | ||
| 3 | 11327.0 | 5.0 | ||
| 4 | 11136.0 | 5.0 | ||
| 5 | 11387.0 | 5.0 | ||
| 6 | 11309.0 | 5.0 | ||
| 7 | 11309.0 | 5.0 | ||
| 8 | 11323.0 | 5.0 | ||
| 9 | 11332.0 | 5.0 | ||
| 10 | 11343.0 | 5.0 | ||
| 11 | 0.0 | 5.0 | ||
| 12 | 11131.0 | 5.0 | ||
| 2018 | 1 | 11131.0 | 5.0 | |
| 2 | 11435.0 | 5.0 | ||
| 3 | 12212.0 | 5.0 | ||
| 4 | 12961.0 | 5.0 | ||
| 5 | 13028.0 | 5.0 | ||
| 6 | 12552.0 | 5.0 | ||
| 7 | 12506.0 | 5.0 | ||
| 8 | 12506.0 | 5.0 | ||
| 9 | 12494.0 | 5.0 | ||
| 10 | 12494.0 | 5.0 | ||
| 11 | 12425.0 | 5.0 | ||
| 12 | 12425.0 | 5.0 | ||
| 2019 | 1 | 12425.0 | 5.0 | |
| 2 | 12158.0 | 5.0 | ||
| 3 | 12235.0 | 5.0 |
714 rows × 2 columns
grouped.head()| 분양가 | test | |||
|---|---|---|---|---|
| 지역명 | 연도 | 월 | ||
| Seoul | 2015 | 10 | 28975.0 | 5.0 |
| 11 | 31977.0 | 5.0 | ||
| 12 | 31392.0 | 5.0 | ||
| 2016 | 1 | 31635.0 | 5.0 | |
| 2 | 31559.0 | 5.0 |
grouped.stack()지역명 연도 월
Seoul 2015 10 분양가 28975.0
test 5.0
11 분양가 31977.0
test 5.0
12 분양가 31392.0
test 5.0
2016 1 분양가 31635.0
test 5.0
2 분양가 31559.0
test 5.0
3 분양가 32400.0
test 5.0
4 분양가 33504.0
test 5.0
5 분양가 33185.0
test 5.0
6 분양가 33085.0
test 5.0
7 분양가 33369.0
test 5.0
8 분양가 33174.0
test 5.0
9 분양가 33246.0
test 5.0
10 분양가 34239.0
test 5.0
11 분양가 32672.0
test 5.0
12 분양가 33449.0
test 5.0
...
충북 2018 1 분양가 11131.0
test 5.0
2 분양가 11435.0
test 5.0
3 분양가 12212.0
test 5.0
4 분양가 12961.0
test 5.0
5 분양가 13028.0
test 5.0
6 분양가 12552.0
test 5.0
7 분양가 12506.0
test 5.0
8 분양가 12506.0
test 5.0
9 분양가 12494.0
test 5.0
10 분양가 12494.0
test 5.0
11 분양가 12425.0
test 5.0
12 분양가 12425.0
test 5.0
2019 1 분양가 12425.0
test 5.0
2 분양가 12158.0
test 5.0
3 분양가 12235.0
test 5.0
Length: 1428, dtype: float64
group이 되어 있는 DataFrame을 unstack의 ’레벨’을 조정하여 보여줄 수 있다. 위의 grouped에서 ‘도시’ = level 1, ‘연도’ = level 2, ‘월’
df.head(10)| 지역명 | 규모구분 | 연도 | 월 | 분양가 | test | |
|---|---|---|---|---|---|---|
| 0 | Seoul | 전체 | 2015 | 10 | 5841.0 | True |
| 1 | Seoul | 전용면적 60㎡이하 | 2015 | 10 | 5652.0 | True |
| 2 | Seoul | 전용면적 60㎡초과 85㎡이하 | 2015 | 10 | 5882.0 | True |
| 3 | Seoul | 전용면적 85㎡초과 102㎡이하 | 2015 | 10 | 5721.0 | True |
| 4 | Seoul | 전용면적 102㎡초과 | 2015 | 10 | 5879.0 | True |
| 5 | 인천 | 전체 | 2015 | 10 | 3163.0 | True |
| 6 | 인천 | 전용면적 60㎡이하 | 2015 | 10 | 3488.0 | True |
| 7 | 인천 | 전용면적 60㎡초과 85㎡이하 | 2015 | 10 | 3119.0 | True |
| 8 | 인천 | 전용면적 85㎡초과 102㎡이하 | 2015 | 10 | 3545.0 | True |
| 9 | 인천 | 전용면적 102㎡초과 | 2015 | 10 | 3408.0 | True |
stack & unstack을 활용한 column별 데이터 그룹핑
# level0: 열을 도시별로 출력
grouped.unstack(0)| 분양가 | ... | test | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 지역명 | Seoul | 강원 | 경기 | 경남 | 경북 | 광주 | 대구 | 대전 | 부산 | 세종 | ... | 대전 | 부산 | 세종 | 울산 | 인천 | 전남 | 전북 | 제주 | 충남 | 충북 | |
| 연도 | 월 | |||||||||||||||||||||
| 2015 | 10 | 28975.0 | 10897.0 | 16679.0 | 12739.0 | 11027.0 | 7112.0 | 13147.0 | 9928.0 | 15518.0 | 13207.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 |
| 11 | 31977.0 | 10888.0 | 16494.0 | 12843.0 | 11472.0 | 7119.0 | 13358.0 | 9928.0 | 15846.0 | 13279.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 12 | 31392.0 | 10888.0 | 17104.0 | 12869.0 | 11429.0 | 7360.0 | 14490.0 | 9928.0 | 15806.0 | 13355.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 2016 | 1 | 31635.0 | 10894.0 | 17104.0 | 12698.0 | 11406.0 | 7546.0 | 14805.0 | 9928.0 | 15929.0 | 13355.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 |
| 2 | 31559.0 | 9013.0 | 16831.0 | 12692.0 | 11420.0 | 7546.0 | 14759.0 | 9928.0 | 15982.0 | 13355.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 3 | 32400.0 | 9014.0 | 16958.0 | 12839.0 | 11532.0 | 7661.0 | 14896.0 | 9928.0 | 15915.0 | 13374.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 4 | 33504.0 | 8816.0 | 16848.0 | 13029.0 | 11526.0 | 14268.0 | 14923.0 | 7403.0 | 15886.0 | 13403.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 5 | 33185.0 | 8669.0 | 17932.0 | 13203.0 | 11534.0 | 14284.0 | 14965.0 | 7474.0 | 15828.0 | 13403.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 6 | 33085.0 | 8678.0 | 18269.0 | 13026.0 | 11828.0 | 14319.0 | 15266.0 | 7757.0 | 16167.0 | 13372.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 7 | 33369.0 | 8648.0 | 18315.0 | 12969.0 | 11828.0 | 14329.0 | 15295.0 | 7757.0 | 16409.0 | 13368.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 8 | 33174.0 | 8705.0 | 18250.0 | 12984.0 | 11798.0 | 14293.0 | 15573.0 | 7757.0 | 16594.0 | 13393.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 9 | 33246.0 | 8690.0 | 17479.0 | 12787.0 | 11812.0 | 13853.0 | 15573.0 | 7611.0 | 16611.0 | 13428.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 10 | 34239.0 | 10608.0 | 17852.0 | 12821.0 | 12070.0 | 13862.0 | 15573.0 | 16079.0 | 16489.0 | 13525.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 11 | 32672.0 | 10383.0 | 18362.0 | 12699.0 | 12076.0 | 14208.0 | 17464.0 | 14944.0 | 16427.0 | 13546.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 12 | 33449.0 | 10752.0 | 18254.0 | 12739.0 | 12141.0 | 14224.0 | 17854.0 | 14944.0 | 17100.0 | 13529.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 2017 | 1 | 33413.0 | 10711.0 | 18260.0 | 12745.0 | 12185.0 | 14215.0 | 17917.0 | 14944.0 | 17082.0 | 13529.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 |
| 2 | 33202.0 | 10734.0 | 18571.0 | 12922.0 | 12183.0 | 14215.0 | 17992.0 | 15106.0 | 17080.0 | 13529.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 3 | 32526.0 | 10682.0 | 18838.0 | 12853.0 | 12215.0 | 14119.0 | 18486.0 | 15106.0 | 16971.0 | 13529.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 4 | 32519.0 | 10682.0 | 18849.0 | 12877.0 | 12311.0 | 14392.0 | 18137.0 | 15201.0 | 16970.0 | 13696.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 5 | 32536.0 | 10767.0 | 18200.0 | 12893.0 | 12468.0 | 12005.0 | 18137.0 | 15201.0 | 17252.0 | 13696.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 6 | 33637.0 | 11026.0 | 18379.0 | 13223.0 | 12513.0 | 12049.0 | 17782.0 | 15201.0 | 17374.0 | 13715.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 7 | 33285.0 | 11076.0 | 18630.0 | 13345.0 | 12512.0 | 12013.0 | 16024.0 | 15448.0 | 17479.0 | 13715.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 8 | 31812.0 | 11401.0 | 18853.0 | 13547.0 | 12864.0 | 12031.0 | 15961.0 | 15448.0 | 17782.0 | 13722.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 9 | 33788.0 | 11237.0 | 18872.0 | 14758.0 | 13166.0 | 11797.0 | 15190.0 | 15932.0 | 17697.0 | 13840.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 10 | 33160.0 | 11174.0 | 18806.0 | 13387.0 | 12922.0 | 14490.0 | 15190.0 | 11240.0 | 18048.0 | 13819.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 11 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 12 | 33973.0 | 11736.0 | 18825.0 | 13896.0 | 10165.0 | 11427.0 | 14134.0 | 11091.0 | 18943.0 | 12651.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 2018 | 1 | 33772.0 | 12157.0 | 20740.0 | 13896.0 | 10268.0 | 11422.0 | 14236.0 | 11189.0 | 18943.0 | 12651.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 |
| 2 | 34315.0 | 12346.0 | 20954.0 | 13905.0 | 10268.0 | 11422.0 | 13793.0 | 11334.0 | 18967.0 | 12651.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 3 | 35647.0 | 12800.0 | 20861.0 | 13910.0 | 10174.0 | 11495.0 | 13860.0 | 11334.0 | 18782.0 | 12651.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 4 | 35662.0 | 12260.0 | 20891.0 | 13816.0 | 10121.0 | 11004.0 | 16635.0 | 11514.0 | 18874.0 | 15615.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 5 | 36217.0 | 12333.0 | 21368.0 | 13825.0 | 10574.0 | 11046.0 | 18482.0 | 11514.0 | 18924.0 | 15615.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 6 | 35161.0 | 12317.0 | 21249.0 | 13831.0 | 10619.0 | 11233.0 | 18445.0 | 11514.0 | 19043.0 | 15615.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 7 | 35595.0 | 12434.0 | 21708.0 | 13813.0 | 10702.0 | 11103.0 | 18767.0 | 8383.0 | 19496.0 | 15615.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 8 | 33783.0 | 12577.0 | 22203.0 | 13679.0 | 10500.0 | 11103.0 | 18790.0 | 8383.0 | 19514.0 | 15717.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 9 | 32407.0 | 12590.0 | 22170.0 | 14211.0 | 13177.0 | 11293.0 | 18901.0 | 14108.0 | 20655.0 | 15717.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 10 | 36028.0 | 12667.0 | 22191.0 | 14471.0 | 13401.0 | 9353.0 | 19194.0 | 14067.0 | 20683.0 | 15717.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 11 | 36199.0 | 12611.0 | 22352.0 | 14628.0 | 13492.0 | 9666.0 | 19106.0 | 14067.0 | 20213.0 | 15717.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 12 | 37073.0 | 12349.0 | 22557.0 | 15609.0 | 13492.0 | 9773.0 | 19469.0 | 12149.0 | 20269.0 | 15327.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 2019 | 1 | 37734.0 | 12618.0 | 22750.0 | 15609.0 | 13322.0 | 9831.0 | 20013.0 | 12243.0 | 20269.0 | 15327.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 |
| 2 | 37592.0 | 12618.0 | 22879.0 | 15604.0 | 13430.0 | 9831.0 | 20022.0 | 12243.0 | 20269.0 | 15327.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 3 | 37761.0 | 12706.0 | 22696.0 | 15984.0 | 13536.0 | 9831.0 | 19994.0 | 11718.0 | 20394.0 | 15327.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
42 rows × 34 columns
# level1: 열을 연도별로 출력
grouped.unstack(1)| 분양가 | test | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 연도 | 2015 | 2016 | 2017 | 2018 | 2019 | 2015 | 2016 | 2017 | 2018 | 2019 | |
| 지역명 | 월 | ||||||||||
| Seoul | 1 | NaN | 31635.0 | 33413.0 | 33772.0 | 37734.0 | NaN | 5.0 | 5.0 | 5.0 | 5.0 |
| 2 | NaN | 31559.0 | 33202.0 | 34315.0 | 37592.0 | NaN | 5.0 | 5.0 | 5.0 | 5.0 | |
| 3 | NaN | 32400.0 | 32526.0 | 35647.0 | 37761.0 | NaN | 5.0 | 5.0 | 5.0 | 5.0 | |
| 4 | NaN | 33504.0 | 32519.0 | 35662.0 | NaN | NaN | 5.0 | 5.0 | 5.0 | NaN | |
| 5 | NaN | 33185.0 | 32536.0 | 36217.0 | NaN | NaN | 5.0 | 5.0 | 5.0 | NaN | |
| 6 | NaN | 33085.0 | 33637.0 | 35161.0 | NaN | NaN | 5.0 | 5.0 | 5.0 | NaN | |
| 7 | NaN | 33369.0 | 33285.0 | 35595.0 | NaN | NaN | 5.0 | 5.0 | 5.0 | NaN | |
| 8 | NaN | 33174.0 | 31812.0 | 33783.0 | NaN | NaN | 5.0 | 5.0 | 5.0 | NaN | |
| 9 | NaN | 33246.0 | 33788.0 | 32407.0 | NaN | NaN | 5.0 | 5.0 | 5.0 | NaN | |
| 10 | 28975.0 | 34239.0 | 33160.0 | 36028.0 | NaN | 5.0 | 5.0 | 5.0 | 5.0 | NaN | |
| 11 | 31977.0 | 32672.0 | 0.0 | 36199.0 | NaN | 5.0 | 5.0 | 5.0 | 5.0 | NaN | |
| 12 | 31392.0 | 33449.0 | 33973.0 | 37073.0 | NaN | 5.0 | 5.0 | 5.0 | 5.0 | NaN | |
| 강원 | 1 | NaN | 10894.0 | 10711.0 | 12157.0 | 12618.0 | NaN | 5.0 | 5.0 | 5.0 | 5.0 |
| 2 | NaN | 9013.0 | 10734.0 | 12346.0 | 12618.0 | NaN | 5.0 | 5.0 | 5.0 | 5.0 | |
| 3 | NaN | 9014.0 | 10682.0 | 12800.0 | 12706.0 | NaN | 5.0 | 5.0 | 5.0 | 5.0 | |
| 4 | NaN | 8816.0 | 10682.0 | 12260.0 | NaN | NaN | 5.0 | 5.0 | 5.0 | NaN | |
| 5 | NaN | 8669.0 | 10767.0 | 12333.0 | NaN | NaN | 5.0 | 5.0 | 5.0 | NaN | |
| 6 | NaN | 8678.0 | 11026.0 | 12317.0 | NaN | NaN | 5.0 | 5.0 | 5.0 | NaN | |
| 7 | NaN | 8648.0 | 11076.0 | 12434.0 | NaN | NaN | 5.0 | 5.0 | 5.0 | NaN | |
| 8 | NaN | 8705.0 | 11401.0 | 12577.0 | NaN | NaN | 5.0 | 5.0 | 5.0 | NaN | |
| 9 | NaN | 8690.0 | 11237.0 | 12590.0 | NaN | NaN | 5.0 | 5.0 | 5.0 | NaN | |
| 10 | 10897.0 | 10608.0 | 11174.0 | 12667.0 | NaN | 5.0 | 5.0 | 5.0 | 5.0 | NaN | |
| 11 | 10888.0 | 10383.0 | 0.0 | 12611.0 | NaN | 5.0 | 5.0 | 5.0 | 5.0 | NaN | |
| 12 | 10888.0 | 10752.0 | 11736.0 | 12349.0 | NaN | 5.0 | 5.0 | 5.0 | 5.0 | NaN | |
| 경기 | 1 | NaN | 17104.0 | 18260.0 | 20740.0 | 22750.0 | NaN | 5.0 | 5.0 | 5.0 | 5.0 |
| 2 | NaN | 16831.0 | 18571.0 | 20954.0 | 22879.0 | NaN | 5.0 | 5.0 | 5.0 | 5.0 | |
| 3 | NaN | 16958.0 | 18838.0 | 20861.0 | 22696.0 | NaN | 5.0 | 5.0 | 5.0 | 5.0 | |
| 4 | NaN | 16848.0 | 18849.0 | 20891.0 | NaN | NaN | 5.0 | 5.0 | 5.0 | NaN | |
| 5 | NaN | 17932.0 | 18200.0 | 21368.0 | NaN | NaN | 5.0 | 5.0 | 5.0 | NaN | |
| 6 | NaN | 18269.0 | 18379.0 | 21249.0 | NaN | NaN | 5.0 | 5.0 | 5.0 | NaN | |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 제주 | 7 | NaN | 14122.0 | 21366.0 | 12906.0 | NaN | NaN | 5.0 | 5.0 | 5.0 | NaN |
| 8 | NaN | 14211.0 | 21366.0 | 12906.0 | NaN | NaN | 5.0 | 5.0 | 5.0 | NaN | |
| 9 | NaN | 16407.0 | 11752.0 | 12906.0 | NaN | NaN | 5.0 | 5.0 | 5.0 | NaN | |
| 10 | 9614.0 | 16407.0 | 11752.0 | 12906.0 | NaN | 5.0 | 5.0 | 5.0 | 5.0 | NaN | |
| 11 | 9614.0 | 16461.0 | 0.0 | 16675.0 | NaN | 5.0 | 5.0 | 5.0 | 5.0 | NaN | |
| 12 | 9685.0 | 16510.0 | 15454.0 | 16910.0 | NaN | 5.0 | 5.0 | 5.0 | 5.0 | NaN | |
| 충남 | 1 | NaN | 12017.0 | 12448.0 | 9507.0 | 12773.0 | NaN | 5.0 | 5.0 | 5.0 | 5.0 |
| 2 | NaN | 12035.0 | 12451.0 | 9507.0 | 12994.0 | NaN | 5.0 | 5.0 | 5.0 | 5.0 | |
| 3 | NaN | 11440.0 | 12453.0 | 9507.0 | 13113.0 | NaN | 5.0 | 5.0 | 5.0 | 5.0 | |
| 4 | NaN | 11803.0 | 12500.0 | 9507.0 | NaN | NaN | 5.0 | 5.0 | 5.0 | NaN | |
| 5 | NaN | 11809.0 | 12499.0 | 9871.0 | NaN | NaN | 5.0 | 5.0 | 5.0 | NaN | |
| 6 | NaN | 12048.0 | 12417.0 | 12623.0 | NaN | NaN | 5.0 | 5.0 | 5.0 | NaN | |
| 7 | NaN | 12048.0 | 12420.0 | 12623.0 | NaN | NaN | 5.0 | 5.0 | 5.0 | NaN | |
| 8 | NaN | 12167.0 | 12440.0 | 12774.0 | NaN | NaN | 5.0 | 5.0 | 5.0 | NaN | |
| 9 | NaN | 12168.0 | 12440.0 | 12774.0 | NaN | NaN | 5.0 | 5.0 | 5.0 | NaN | |
| 10 | 11591.0 | 12159.0 | 12569.0 | 12774.0 | NaN | 5.0 | 5.0 | 5.0 | 5.0 | NaN | |
| 11 | 11410.0 | 12488.0 | 0.0 | 12627.0 | NaN | 5.0 | 5.0 | 5.0 | 5.0 | NaN | |
| 12 | 11953.0 | 12513.0 | 9519.0 | 12603.0 | NaN | 5.0 | 5.0 | 5.0 | 5.0 | NaN | |
| 충북 | 1 | NaN | 10518.0 | 11588.0 | 11131.0 | 12425.0 | NaN | 5.0 | 5.0 | 5.0 | 5.0 |
| 2 | NaN | 10518.0 | 11367.0 | 11435.0 | 12158.0 | NaN | 5.0 | 5.0 | 5.0 | 5.0 | |
| 3 | NaN | 10463.0 | 11327.0 | 12212.0 | 12235.0 | NaN | 5.0 | 5.0 | 5.0 | 5.0 | |
| 4 | NaN | 10430.0 | 11136.0 | 12961.0 | NaN | NaN | 5.0 | 5.0 | 5.0 | NaN | |
| 5 | NaN | 10476.0 | 11387.0 | 13028.0 | NaN | NaN | 5.0 | 5.0 | 5.0 | NaN | |
| 6 | NaN | 10681.0 | 11309.0 | 12552.0 | NaN | NaN | 5.0 | 5.0 | 5.0 | NaN | |
| 7 | NaN | 10788.0 | 11309.0 | 12506.0 | NaN | NaN | 5.0 | 5.0 | 5.0 | NaN | |
| 8 | NaN | 10881.0 | 11323.0 | 12506.0 | NaN | NaN | 5.0 | 5.0 | 5.0 | NaN | |
| 9 | NaN | 10886.0 | 11332.0 | 12494.0 | NaN | NaN | 5.0 | 5.0 | 5.0 | NaN | |
| 10 | 10455.0 | 11276.0 | 11343.0 | 12494.0 | NaN | 5.0 | 5.0 | 5.0 | 5.0 | NaN | |
| 11 | 10085.0 | 11283.0 | 0.0 | 12425.0 | NaN | 5.0 | 5.0 | 5.0 | 5.0 | NaN | |
| 12 | 10500.0 | 11497.0 | 11131.0 | 12425.0 | NaN | 5.0 | 5.0 | 5.0 | 5.0 | NaN | |
204 rows × 10 columns
# level2: 열을 연도별로 출력
grouped.unstack(2)| 분양가 | ... | test | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 월 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | ... | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | |
| 지역명 | 연도 | |||||||||||||||||||||
| Seoul | 2015 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 28975.0 | ... | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 5.0 | 5.0 | 5.0 |
| 2016 | 31635.0 | 31559.0 | 32400.0 | 33504.0 | 33185.0 | 33085.0 | 33369.0 | 33174.0 | 33246.0 | 34239.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 2017 | 33413.0 | 33202.0 | 32526.0 | 32519.0 | 32536.0 | 33637.0 | 33285.0 | 31812.0 | 33788.0 | 33160.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 2018 | 33772.0 | 34315.0 | 35647.0 | 35662.0 | 36217.0 | 35161.0 | 35595.0 | 33783.0 | 32407.0 | 36028.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 2019 | 37734.0 | 37592.0 | 37761.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | ... | 5.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | |
| 강원 | 2015 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 10897.0 | ... | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 5.0 | 5.0 | 5.0 |
| 2016 | 10894.0 | 9013.0 | 9014.0 | 8816.0 | 8669.0 | 8678.0 | 8648.0 | 8705.0 | 8690.0 | 10608.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 2017 | 10711.0 | 10734.0 | 10682.0 | 10682.0 | 10767.0 | 11026.0 | 11076.0 | 11401.0 | 11237.0 | 11174.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 2018 | 12157.0 | 12346.0 | 12800.0 | 12260.0 | 12333.0 | 12317.0 | 12434.0 | 12577.0 | 12590.0 | 12667.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 2019 | 12618.0 | 12618.0 | 12706.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | ... | 5.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | |
| 경기 | 2015 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 16679.0 | ... | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 5.0 | 5.0 | 5.0 |
| 2016 | 17104.0 | 16831.0 | 16958.0 | 16848.0 | 17932.0 | 18269.0 | 18315.0 | 18250.0 | 17479.0 | 17852.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 2017 | 18260.0 | 18571.0 | 18838.0 | 18849.0 | 18200.0 | 18379.0 | 18630.0 | 18853.0 | 18872.0 | 18806.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 2018 | 20740.0 | 20954.0 | 20861.0 | 20891.0 | 21368.0 | 21249.0 | 21708.0 | 22203.0 | 22170.0 | 22191.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 2019 | 22750.0 | 22879.0 | 22696.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | ... | 5.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | |
| 경남 | 2015 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 12739.0 | ... | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 5.0 | 5.0 | 5.0 |
| 2016 | 12698.0 | 12692.0 | 12839.0 | 13029.0 | 13203.0 | 13026.0 | 12969.0 | 12984.0 | 12787.0 | 12821.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 2017 | 12745.0 | 12922.0 | 12853.0 | 12877.0 | 12893.0 | 13223.0 | 13345.0 | 13547.0 | 14758.0 | 13387.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 2018 | 13896.0 | 13905.0 | 13910.0 | 13816.0 | 13825.0 | 13831.0 | 13813.0 | 13679.0 | 14211.0 | 14471.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 2019 | 15609.0 | 15604.0 | 15984.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | ... | 5.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | |
| 경북 | 2015 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 11027.0 | ... | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 5.0 | 5.0 | 5.0 |
| 2016 | 11406.0 | 11420.0 | 11532.0 | 11526.0 | 11534.0 | 11828.0 | 11828.0 | 11798.0 | 11812.0 | 12070.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 2017 | 12185.0 | 12183.0 | 12215.0 | 12311.0 | 12468.0 | 12513.0 | 12512.0 | 12864.0 | 13166.0 | 12922.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 2018 | 10268.0 | 10268.0 | 10174.0 | 10121.0 | 10574.0 | 10619.0 | 10702.0 | 10500.0 | 13177.0 | 13401.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 2019 | 13322.0 | 13430.0 | 13536.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | ... | 5.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | |
| 광주 | 2015 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 7112.0 | ... | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 5.0 | 5.0 | 5.0 |
| 2016 | 7546.0 | 7546.0 | 7661.0 | 14268.0 | 14284.0 | 14319.0 | 14329.0 | 14293.0 | 13853.0 | 13862.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 2017 | 14215.0 | 14215.0 | 14119.0 | 14392.0 | 12005.0 | 12049.0 | 12013.0 | 12031.0 | 11797.0 | 14490.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 2018 | 11422.0 | 11422.0 | 11495.0 | 11004.0 | 11046.0 | 11233.0 | 11103.0 | 11103.0 | 11293.0 | 9353.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 2019 | 9831.0 | 9831.0 | 9831.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | ... | 5.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 인천 | 2015 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 16723.0 | ... | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 5.0 | 5.0 | 5.0 |
| 2016 | 16582.0 | 16585.0 | 16577.0 | 18092.0 | 17208.0 | 16567.0 | 16517.0 | 16617.0 | 16289.0 | 16904.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 2017 | 16926.0 | 17011.0 | 17100.0 | 17100.0 | 17497.0 | 17415.0 | 17862.0 | 18171.0 | 18403.0 | 18216.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 2018 | 18346.0 | 18426.0 | 18889.0 | 18889.0 | 18762.0 | 13592.0 | 13592.0 | 13533.0 | 13533.0 | 16773.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 2019 | 18757.0 | 19151.0 | 19585.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | ... | 5.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | |
| 전남 | 2015 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 10400.0 | ... | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 5.0 | 5.0 | 5.0 |
| 2016 | 10252.0 | 10281.0 | 10280.0 | 10275.0 | 10279.0 | 10549.0 | 10550.0 | 10546.0 | 10563.0 | 10648.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 2017 | 10996.0 | 11033.0 | 11021.0 | 11053.0 | 11171.0 | 10938.0 | 10939.0 | 11074.0 | 11074.0 | 11660.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 2018 | 12124.0 | 11798.0 | 11982.0 | 12024.0 | 12026.0 | 12026.0 | 12029.0 | 12029.0 | 12074.0 | 12100.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 2019 | 11972.0 | 12314.0 | 12236.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | ... | 5.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | |
| 전북 | 2015 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 10864.0 | ... | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 5.0 | 5.0 | 5.0 |
| 2016 | 10534.0 | 10535.0 | 10382.0 | 10374.0 | 10400.0 | 10371.0 | 10402.0 | 10407.0 | 10410.0 | 10431.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 2017 | 10951.0 | 10947.0 | 11070.0 | 11192.0 | 11273.0 | 11414.0 | 11500.0 | 11509.0 | 8870.0 | 8752.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 2018 | 11354.0 | 11366.0 | 11345.0 | 12641.0 | 12720.0 | 12720.0 | 12780.0 | 12737.0 | 12737.0 | 12551.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 2019 | 13114.0 | 13229.0 | 13358.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | ... | 5.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | |
| 제주 | 2015 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 9614.0 | ... | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 5.0 | 5.0 | 5.0 |
| 2016 | 9685.0 | 9685.0 | 4628.0 | 13651.0 | 13569.0 | 14122.0 | 14122.0 | 14211.0 | 16407.0 | 16407.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 2017 | 16490.0 | 16453.0 | 16412.0 | 18250.0 | 20348.0 | 20762.0 | 21366.0 | 21366.0 | 11752.0 | 11752.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 2018 | 15557.0 | 15862.0 | 16055.0 | 16055.0 | 16055.0 | 16055.0 | 12906.0 | 12906.0 | 12906.0 | 12906.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 2019 | 16910.0 | 16910.0 | 16910.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | ... | 5.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | |
| 충남 | 2015 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 11591.0 | ... | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 5.0 | 5.0 | 5.0 |
| 2016 | 12017.0 | 12035.0 | 11440.0 | 11803.0 | 11809.0 | 12048.0 | 12048.0 | 12167.0 | 12168.0 | 12159.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 2017 | 12448.0 | 12451.0 | 12453.0 | 12500.0 | 12499.0 | 12417.0 | 12420.0 | 12440.0 | 12440.0 | 12569.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 2018 | 9507.0 | 9507.0 | 9507.0 | 9507.0 | 9871.0 | 12623.0 | 12623.0 | 12774.0 | 12774.0 | 12774.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 2019 | 12773.0 | 12994.0 | 13113.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | ... | 5.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | |
| 충북 | 2015 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 10455.0 | ... | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 5.0 | 5.0 | 5.0 |
| 2016 | 10518.0 | 10518.0 | 10463.0 | 10430.0 | 10476.0 | 10681.0 | 10788.0 | 10881.0 | 10886.0 | 11276.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 2017 | 11588.0 | 11367.0 | 11327.0 | 11136.0 | 11387.0 | 11309.0 | 11309.0 | 11323.0 | 11332.0 | 11343.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 2018 | 11131.0 | 11435.0 | 12212.0 | 12961.0 | 13028.0 | 12552.0 | 12506.0 | 12506.0 | 12494.0 | 12494.0 | ... | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | |
| 2019 | 12425.0 | 12158.0 | 12235.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | ... | 5.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | |
85 rows × 24 columns
Pivot Table
Pivot Table이란?
다시 말해 피벗 테이블이란 여러 데이터 중에서 자신이 원하는 데이터만을 가지고 원하는 행과 열에 데이터를 배치하여 새로운 보고서를 만드는 기능이다.
df.head(10)| 지역명 | 규모구분 | 연도 | 월 | 분양가 | test | |
|---|---|---|---|---|---|---|
| 0 | Seoul | 전체 | 2015 | 10 | 5841.0 | True |
| 1 | Seoul | 전용면적 60㎡이하 | 2015 | 10 | 5652.0 | True |
| 2 | Seoul | 전용면적 60㎡초과 85㎡이하 | 2015 | 10 | 5882.0 | True |
| 3 | Seoul | 전용면적 85㎡초과 102㎡이하 | 2015 | 10 | 5721.0 | True |
| 4 | Seoul | 전용면적 102㎡초과 | 2015 | 10 | 5879.0 | True |
| 5 | 인천 | 전체 | 2015 | 10 | 3163.0 | True |
| 6 | 인천 | 전용면적 60㎡이하 | 2015 | 10 | 3488.0 | True |
| 7 | 인천 | 전용면적 60㎡초과 85㎡이하 | 2015 | 10 | 3119.0 | True |
| 8 | 인천 | 전용면적 85㎡초과 102㎡이하 | 2015 | 10 | 3545.0 | True |
| 9 | 인천 | 전용면적 102㎡초과 | 2015 | 10 | 3408.0 | True |
pd.pivot_table(df, values='분양가', index=['연도','지역명'], columns=['월'])| 월 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 연도 | 지역명 | ||||||||||||
| 2015 | Seoul | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 5795.000000 | 6395.40 | 6278.400000 |
| 강원 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 2179.400000 | 2177.60 | 2177.600000 | |
| 경기 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 3335.800000 | 3298.80 | 3420.800000 | |
| 경남 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 2547.800000 | 2568.60 | 2573.800000 | |
| 경북 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 2205.400000 | 2294.40 | 2285.800000 | |
| 광주 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 2370.666667 | 2373.00 | 2453.333333 | |
| 대구 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 2629.400000 | 2671.60 | 2898.000000 | |
| 대전 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 2482.000000 | 2482.00 | 2482.000000 | |
| 부산 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 3103.600000 | 3169.20 | 3161.200000 | |
| 세종 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 2641.400000 | 2655.80 | 2671.000000 | |
| 울산 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 2831.200000 | 2842.40 | 2842.400000 | |
| 인천 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 3344.600000 | 3316.80 | 3316.800000 | |
| 전남 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 2080.000000 | 2050.40 | 2050.400000 | |
| 전북 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 2172.800000 | 2180.40 | 2110.800000 | |
| 제주 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 2403.500000 | 2403.50 | 2421.250000 | |
| 충남 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 2318.200000 | 2282.00 | 2390.600000 | |
| 충북 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 2091.000000 | 2017.00 | 2100.000000 | |
| 2016 | Seoul | 6327.000000 | 6311.800000 | 6480.000000 | 6700.800000 | 6637.000000 | 6617.000000 | 6673.800000 | 6634.800000 | 6649.20 | 6847.800000 | 6534.40 | 6689.800000 |
| 강원 | 2178.800000 | 2253.250000 | 2253.500000 | 2204.000000 | 2167.250000 | 2169.500000 | 2162.000000 | 2176.250000 | 2172.50 | 2121.600000 | 2076.60 | 2150.400000 | |
| 경기 | 3420.800000 | 3366.200000 | 3391.600000 | 3369.600000 | 3586.400000 | 3653.800000 | 3663.000000 | 3650.000000 | 3495.80 | 3570.400000 | 3672.40 | 3650.800000 | |
| 경남 | 2539.600000 | 2538.400000 | 2567.800000 | 2605.800000 | 2640.600000 | 2605.200000 | 2593.800000 | 2596.800000 | 2557.40 | 2564.200000 | 2539.80 | 2547.800000 | |
| 경북 | 2281.200000 | 2284.000000 | 2306.400000 | 2305.200000 | 2306.800000 | 2365.600000 | 2365.600000 | 2359.600000 | 2362.40 | 2414.000000 | 2415.20 | 2428.200000 | |
| 광주 | 2515.333333 | 2515.333333 | 2553.666667 | 2853.600000 | 2856.800000 | 2863.800000 | 2865.800000 | 2858.600000 | 2770.60 | 2772.400000 | 2841.60 | 2844.800000 | |
| 대구 | 2961.000000 | 2951.800000 | 2979.200000 | 2984.600000 | 2993.000000 | 3053.200000 | 3059.000000 | 3114.600000 | 3114.60 | 3114.600000 | 3492.80 | 3570.800000 | |
| 대전 | 2482.000000 | 2482.000000 | 2482.000000 | 2467.666667 | 2491.333333 | 2585.666667 | 2585.666667 | 2585.666667 | 2537.00 | 3215.800000 | 2988.80 | 2988.800000 | |
| 부산 | 3185.800000 | 3196.400000 | 3183.000000 | 3177.200000 | 3165.600000 | 3233.400000 | 3281.800000 | 3318.800000 | 3322.20 | 3297.800000 | 3285.40 | 3420.000000 | |
| 세종 | 2671.000000 | 2671.000000 | 2674.800000 | 2680.600000 | 2680.600000 | 2674.400000 | 2673.600000 | 2678.600000 | 2685.60 | 2705.000000 | 2709.20 | 2705.800000 | |
| 울산 | 2844.000000 | 2844.000000 | 2889.000000 | 2872.800000 | 2877.400000 | 2866.000000 | 2866.000000 | 2830.600000 | 2830.60 | 2936.200000 | 3142.75 | 3141.750000 | |
| 인천 | 3316.400000 | 3317.000000 | 3315.400000 | 3618.400000 | 3441.600000 | 3313.400000 | 3303.400000 | 3323.400000 | 3257.80 | 3380.800000 | 3387.40 | 3385.200000 | |
| 전남 | 2050.400000 | 2056.200000 | 2056.000000 | 2055.000000 | 2055.800000 | 2109.800000 | 2110.000000 | 2109.200000 | 2112.60 | 2129.600000 | 2180.20 | 2199.200000 | |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 2018 | 경남 | 2779.200000 | 2781.000000 | 2782.000000 | 2763.200000 | 2765.000000 | 2766.200000 | 2762.600000 | 2735.800000 | 2842.20 | 2894.200000 | 2925.60 | 3121.800000 |
| 경북 | 2567.000000 | 2567.000000 | 2543.500000 | 2530.250000 | 2643.500000 | 2654.750000 | 2675.500000 | 2625.000000 | 2635.40 | 2680.200000 | 2698.40 | 2698.400000 | |
| 광주 | 2855.500000 | 2855.500000 | 2873.750000 | 2751.000000 | 2761.500000 | 2808.250000 | 2775.750000 | 2775.750000 | 2823.25 | 3117.666667 | 3222.00 | 3257.666667 | |
| 대구 | 3559.000000 | 3448.250000 | 3465.000000 | 3327.000000 | 3696.400000 | 3689.000000 | 3753.400000 | 3758.000000 | 3780.20 | 3838.800000 | 3821.20 | 3893.800000 | |
| 대전 | 2797.250000 | 2833.500000 | 2833.500000 | 2878.500000 | 2878.500000 | 2878.500000 | 2794.333333 | 2794.333333 | 3527.00 | 3516.750000 | 3516.75 | 4049.666667 | |
| 부산 | 3788.600000 | 3793.400000 | 3756.400000 | 3774.800000 | 3784.800000 | 3808.600000 | 3899.200000 | 3902.800000 | 4131.00 | 4136.600000 | 4042.60 | 4053.800000 | |
| 세종 | 3162.750000 | 3162.750000 | 3162.750000 | 3123.000000 | 3123.000000 | 3123.000000 | 3123.000000 | 3143.400000 | 3143.40 | 3143.400000 | 3143.40 | 3065.400000 | |
| 울산 | 3162.000000 | 3174.000000 | 3174.000000 | 3174.000000 | 3174.000000 | 3125.000000 | 3125.000000 | 3125.000000 | 3125.00 | 2890.000000 | 2890.00 | NaN | |
| 인천 | 3669.200000 | 3685.200000 | 3777.800000 | 3777.800000 | 3752.400000 | 3398.000000 | 3398.000000 | 3383.250000 | 3383.25 | 3354.600000 | 3732.40 | 3725.800000 | |
| 전남 | 2424.800000 | 2359.600000 | 2396.400000 | 2404.800000 | 2405.200000 | 2405.200000 | 2405.800000 | 2405.800000 | 2414.80 | 2420.000000 | 2386.00 | 2407.400000 | |
| 전북 | 2270.800000 | 2273.200000 | 2269.000000 | 2528.200000 | 2544.000000 | 2544.000000 | 2556.000000 | 2547.400000 | 2547.40 | 2510.200000 | 2512.80 | 2622.800000 | |
| 제주 | 3889.250000 | 3965.500000 | 4013.750000 | 4013.750000 | 4013.750000 | 4013.750000 | 3226.500000 | 3226.500000 | 3226.50 | 3226.500000 | 3335.00 | 3382.000000 | |
| 충남 | 2376.750000 | 2376.750000 | 2376.750000 | 2376.750000 | 2467.750000 | 2524.600000 | 2524.600000 | 2554.800000 | 2554.80 | 2554.800000 | 2525.40 | 2520.600000 | |
| 충북 | 2226.200000 | 2287.000000 | 2442.400000 | 2592.200000 | 2605.600000 | 2510.400000 | 2501.200000 | 2501.200000 | 2498.80 | 2498.800000 | 2485.00 | 2485.000000 | |
| 2019 | Seoul | 7546.800000 | 7518.400000 | 7552.200000 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
| 강원 | 2523.600000 | 2523.600000 | 2541.200000 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | |
| 경기 | 4550.000000 | 4575.800000 | 4539.200000 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | |
| 경남 | 3121.800000 | 3120.800000 | 3196.800000 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | |
| 경북 | 2664.400000 | 2686.000000 | 2707.200000 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | |
| 광주 | 3277.000000 | 3277.000000 | 3277.000000 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | |
| 대구 | 4002.600000 | 4004.400000 | 3998.800000 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | |
| 대전 | 4081.000000 | 4081.000000 | 3906.000000 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | |
| 부산 | 4053.800000 | 4053.800000 | 4078.800000 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | |
| 세종 | 3065.400000 | 3065.400000 | 3065.400000 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | |
| 인천 | 3751.400000 | 3830.200000 | 3917.000000 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | |
| 전남 | 2394.400000 | 2462.800000 | 2447.200000 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | |
| 전북 | 2622.800000 | 2645.800000 | 2671.600000 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | |
| 제주 | 3382.000000 | 3382.000000 | 3382.000000 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | |
| 충남 | 2554.600000 | 2598.800000 | 2622.600000 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | |
| 충북 | 2485.000000 | 2431.600000 | 2447.000000 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
84 rows × 12 columns
Categoricals
df.head(10)| 지역명 | 규모구분 | 연도 | 월 | 분양가 | test | |
|---|---|---|---|---|---|---|
| 0 | Seoul | 전체 | 2015 | 10 | 5841.0 | True |
| 1 | Seoul | 전용면적 60㎡이하 | 2015 | 10 | 5652.0 | True |
| 2 | Seoul | 전용면적 60㎡초과 85㎡이하 | 2015 | 10 | 5882.0 | True |
| 3 | Seoul | 전용면적 85㎡초과 102㎡이하 | 2015 | 10 | 5721.0 | True |
| 4 | Seoul | 전용면적 102㎡초과 | 2015 | 10 | 5879.0 | True |
| 5 | 인천 | 전체 | 2015 | 10 | 3163.0 | True |
| 6 | 인천 | 전용면적 60㎡이하 | 2015 | 10 | 3488.0 | True |
| 7 | 인천 | 전용면적 60㎡초과 85㎡이하 | 2015 | 10 | 3119.0 | True |
| 8 | 인천 | 전용면적 85㎡초과 102㎡이하 | 2015 | 10 | 3545.0 | True |
| 9 | 인천 | 전용면적 102㎡초과 | 2015 | 10 | 3408.0 | True |
df['분양가'].describe()count 3273.000000
mean 3130.001833
std 1141.740958
min 1868.000000
25% 2387.000000
50% 2787.000000
75% 3383.000000
max 8191.000000
Name: 분양가, dtype: float64
df['평가'] = 0df.head(10)| 지역명 | 규모구분 | 연도 | 월 | 분양가 | test | 평가 | |
|---|---|---|---|---|---|---|---|
| 0 | Seoul | 전체 | 2015 | 10 | 5841.0 | True | 0 |
| 1 | Seoul | 전용면적 60㎡이하 | 2015 | 10 | 5652.0 | True | 0 |
| 2 | Seoul | 전용면적 60㎡초과 85㎡이하 | 2015 | 10 | 5882.0 | True | 0 |
| 3 | Seoul | 전용면적 85㎡초과 102㎡이하 | 2015 | 10 | 5721.0 | True | 0 |
| 4 | Seoul | 전용면적 102㎡초과 | 2015 | 10 | 5879.0 | True | 0 |
| 5 | 인천 | 전체 | 2015 | 10 | 3163.0 | True | 0 |
| 6 | 인천 | 전용면적 60㎡이하 | 2015 | 10 | 3488.0 | True | 0 |
| 7 | 인천 | 전용면적 60㎡초과 85㎡이하 | 2015 | 10 | 3119.0 | True | 0 |
| 8 | 인천 | 전용면적 85㎡초과 102㎡이하 | 2015 | 10 | 3545.0 | True | 0 |
| 9 | 인천 | 전용면적 102㎡초과 | 2015 | 10 | 3408.0 | True | 0 |
가격대 별 평가
low: 25% = 2387 보다 싼 분양가
mid: 50% = 2387 ~ 3130
high: 75% = 3130 ~ 3383
very high: 75% ~ 100% = 3383 보다 비싼 분양가
np.select를 활용하여 조건에 맞는 값을 대입하기
conditions = [
(df['분양가'] < 2387),
(df['분양가'] >= 2387) & (df['분양가'] < 3130),
(df['분양가'] >= 3130) & (df['분양가'] < 3383),
(df['분양가'] >= 3383),
(df['분양가'] == np.nan)
]
choices = ['저렴', '보통', '비쌈', '매우 비쌈', '-']
df['평가'] = np.select(conditions, choices, default=0)df.head(20)| 지역명 | 규모구분 | 연도 | 월 | 분양가 | test | 평가 | |
|---|---|---|---|---|---|---|---|
| 0 | Seoul | 전체 | 2015 | 10 | 5841.0 | True | 매우 비쌈 |
| 1 | Seoul | 전용면적 60㎡이하 | 2015 | 10 | 5652.0 | True | 매우 비쌈 |
| 2 | Seoul | 전용면적 60㎡초과 85㎡이하 | 2015 | 10 | 5882.0 | True | 매우 비쌈 |
| 3 | Seoul | 전용면적 85㎡초과 102㎡이하 | 2015 | 10 | 5721.0 | True | 매우 비쌈 |
| 4 | Seoul | 전용면적 102㎡초과 | 2015 | 10 | 5879.0 | True | 매우 비쌈 |
| 5 | 인천 | 전체 | 2015 | 10 | 3163.0 | True | 비쌈 |
| 6 | 인천 | 전용면적 60㎡이하 | 2015 | 10 | 3488.0 | True | 매우 비쌈 |
| 7 | 인천 | 전용면적 60㎡초과 85㎡이하 | 2015 | 10 | 3119.0 | True | 보통 |
| 8 | 인천 | 전용면적 85㎡초과 102㎡이하 | 2015 | 10 | 3545.0 | True | 매우 비쌈 |
| 9 | 인천 | 전용면적 102㎡초과 | 2015 | 10 | 3408.0 | True | 매우 비쌈 |
| 10 | 경기 | 전체 | 2015 | 10 | 3138.0 | True | 비쌈 |
| 11 | 경기 | 전용면적 60㎡이하 | 2015 | 10 | 3126.0 | True | 보통 |
| 12 | 경기 | 전용면적 60㎡초과 85㎡이하 | 2015 | 10 | 3239.0 | True | 비쌈 |
| 13 | 경기 | 전용면적 85㎡초과 102㎡이하 | 2015 | 10 | 3496.0 | True | 매우 비쌈 |
| 14 | 경기 | 전용면적 102㎡초과 | 2015 | 10 | 3680.0 | True | 매우 비쌈 |
| 15 | 부산 | 전체 | 2015 | 10 | 3112.0 | True | 보통 |
| 16 | 부산 | 전용면적 60㎡이하 | 2015 | 10 | 2950.0 | True | 보통 |
| 17 | 부산 | 전용면적 60㎡초과 85㎡이하 | 2015 | 10 | 2999.0 | True | 보통 |
| 18 | 부산 | 전용면적 85㎡초과 102㎡이하 | 2015 | 10 | 2957.0 | True | 보통 |
| 19 | 부산 | 전용면적 102㎡초과 | 2015 | 10 | 3500.0 | True | 매우 비쌈 |
df.groupby(by='평가').count()| 지역명 | 규모구분 | 연도 | 월 | 분양가 | test | |
|---|---|---|---|---|---|---|
| 평가 | ||||||
| 0 | 297 | 297 | 297 | 297 | 0 | 297 |
| 매우 비쌈 | 819 | 819 | 819 | 819 | 819 | 819 |
| 보통 | 1285 | 1285 | 1285 | 1285 | 1285 | 1285 |
| 비쌈 | 352 | 352 | 352 | 352 | 352 | 352 |
| 저렴 | 817 | 817 | 817 | 817 | 817 | 817 |
df.sort_values(by='분양가', ascending=False)[:10]| 지역명 | 규모구분 | 연도 | 월 | 분양가 | test | 평가 | |
|---|---|---|---|---|---|---|---|
| 3487 | Seoul | 전용면적 60㎡초과 85㎡이하 | 2019 | 3 | 8191.0 | True | 매우 비쌈 |
| 3402 | Seoul | 전용면적 60㎡초과 85㎡이하 | 2019 | 2 | 8141.0 | True | 매우 비쌈 |
| 3317 | Seoul | 전용면적 60㎡초과 85㎡이하 | 2019 | 1 | 8105.0 | True | 매우 비쌈 |
| 2638 | Seoul | 전용면적 85㎡초과 102㎡이하 | 2018 | 5 | 8098.0 | True | 매우 비쌈 |
| 513 | Seoul | 전용면적 85㎡초과 102㎡이하 | 2016 | 4 | 8096.0 | True | 매우 비쌈 |
| 3232 | Seoul | 전용면적 60㎡초과 85㎡이하 | 2018 | 12 | 7890.0 | True | 매우 비쌈 |
| 1958 | Seoul | 전용면적 85㎡초과 102㎡이하 | 2017 | 9 | 7887.0 | True | 매우 비쌈 |
| 2553 | Seoul | 전용면적 85㎡초과 102㎡이하 | 2018 | 4 | 7823.0 | True | 매우 비쌈 |
| 2468 | Seoul | 전용면적 85㎡초과 102㎡이하 | 2018 | 3 | 7823.0 | True | 매우 비쌈 |
| 3319 | Seoul | 전용면적 102㎡초과 | 2019 | 1 | 7787.0 | True | 매우 비쌈 |
df.dtypes지역명 object
규모구분 object
연도 int64
월 int64
분양가 float64
test bool
평가 object
dtype: object
df['평가'] = df['평가'].astype('category')df.dtypes지역명 object
규모구분 object
연도 int64
월 int64
분양가 float64
test bool
평가 category
dtype: object
df.head(10)| 지역명 | 규모구분 | 연도 | 월 | 분양가 | test | 평가 | |
|---|---|---|---|---|---|---|---|
| 0 | Seoul | 전체 | 2015 | 10 | 5841.0 | True | 매우 비쌈 |
| 1 | Seoul | 전용면적 60㎡이하 | 2015 | 10 | 5652.0 | True | 매우 비쌈 |
| 2 | Seoul | 전용면적 60㎡초과 85㎡이하 | 2015 | 10 | 5882.0 | True | 매우 비쌈 |
| 3 | Seoul | 전용면적 85㎡초과 102㎡이하 | 2015 | 10 | 5721.0 | True | 매우 비쌈 |
| 4 | Seoul | 전용면적 102㎡초과 | 2015 | 10 | 5879.0 | True | 매우 비쌈 |
| 5 | 인천 | 전체 | 2015 | 10 | 3163.0 | True | 비쌈 |
| 6 | 인천 | 전용면적 60㎡이하 | 2015 | 10 | 3488.0 | True | 매우 비쌈 |
| 7 | 인천 | 전용면적 60㎡초과 85㎡이하 | 2015 | 10 | 3119.0 | True | 보통 |
| 8 | 인천 | 전용면적 85㎡초과 102㎡이하 | 2015 | 10 | 3545.0 | True | 매우 비쌈 |
| 9 | 인천 | 전용면적 102㎡초과 | 2015 | 10 | 3408.0 | True | 매우 비쌈 |
df['평가'].head()0 매우 비쌈
1 매우 비쌈
2 매우 비쌈
3 매우 비쌈
4 매우 비쌈
Name: 평가, dtype: category
Categories (5, object): [0, 매우 비쌈, 보통, 비쌈, 저렴]
df['평가'].cat.categories = ['해당없음', '개비쌈', '평균', '쫌비쌈', '쌈']df['평가'].head()0 개비쌈
1 개비쌈
2 개비쌈
3 개비쌈
4 개비쌈
Name: 평가, dtype: category
Categories (5, object): [해당없음, 개비쌈, 평균, 쫌비쌈, 쌈]