Data 분석을 위해서는 pandas는 당연히 기본입니다.
문법이 어렵거나 하지 않아서 코딩을 전혀 해보지 않은 사람들도 pandas를 활용하여 손쉽게 데이터 분석을 할 수 있도록 만들어 놓은 library 입니다.
pandas의 기본 문법을 pandas에서 제공하는 10 minutes to pandas 따라서 해보면서 한 번 기초적인 분석을 해보도록 하겠습니다.
더욱 자세한 API Documentation 은 https://pandas.pydata.org/docs/reference/index.html에 있습니다.
데이터 준비하기
활용한 데이터는 전국 신규 민간 아파트 분양가격 동향이라는 공공데이터 포탈에서 .csv로 다운로드 받은 데이터 입니다. 자료는 언제든 최신 csv로 다운로드 받으실 수 있습니다.
여기서 간혹 csv파일을 못불러오는 에러가 뜨는 경우가 있는데, csv 파일 타입을 반드시 utf-8 csv 파일 타입으로 변경을 해야 제대로 pandas에서 불러올 수 있으며, excel로 먼저 파일을 여신 후에 “다른 이름으로 저장” -> UTF-8 CSV 로 저장하시면 제대로 불러올 수 있습니다.
pandas module import
import pandas as pd
import numpy as np
csv파일을 불러오기
df = pd.read_csv('./data/house_price_2019_03.csv')
살펴보기
|
지역명 |
규모구분 |
연도 |
월 |
분양가격(㎡) |
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 |
|
지역명 |
규모구분 |
연도 |
월 |
분양가격(㎡) |
3565 |
제주 |
전체 |
2019 |
3 |
3424 |
3566 |
제주 |
전용면적 60㎡이하 |
2019 |
3 |
3804 |
3567 |
제주 |
전용면적 60㎡초과 85㎡이하 |
2019 |
3 |
3504 |
3568 |
제주 |
전용면적 85㎡초과 102㎡이하 |
2019 |
3 |
3226 |
3569 |
제주 |
전용면적 102㎡초과 |
2019 |
3 |
2952 |
열의 이름 바꾸기
df=df.rename(columns={'분양가격(㎡)':'분양가'})
|
지역명 |
규모구분 |
연도 |
월 |
분양가 |
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 |
data type 보기
지역명 object
규모구분 object
연도 int64
월 int64
분양가 object
dtype: object
|
지역명 |
규모구분 |
연도 |
월 |
분양가 |
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['분양가'] = df['분양가'].convert_objects(convert_numeric=True)
지역명 object
규모구분 object
연도 int64
월 int64
분양가 float64
dtype: object
|
지역명 |
규모구분 |
연도 |
월 |
분양가 |
0 |
서울 |
전체 |
2015 |
10 |
5841.0 |
1 |
서울 |
전용면적 60㎡이하 |
2015 |
10 |
5652.0 |
2 |
서울 |
전용면적 60㎡초과 85㎡이하 |
2015 |
10 |
5882.0 |
3 |
서울 |
전용면적 85㎡초과 102㎡이하 |
2015 |
10 |
5721.0 |
4 |
서울 |
전용면적 102㎡초과 |
2015 |
10 |
5879.0 |
numpy array로 변환하기
array([['서울', '전체', 2015, 10, 5841.0],
['서울', '전용면적 60㎡이하', 2015, 10, 5652.0],
['서울', '전용면적 60㎡초과 85㎡이하', 2015, 10, 5882.0],
...,
['제주', '전용면적 60㎡초과 85㎡이하', 2019, 3, 3504.0],
['제주', '전용면적 85㎡초과 102㎡이하', 2019, 3, 3226.0],
['제주', '전용면적 102㎡초과', 2019, 3, 2952.0]], dtype=object)
(array(['서울', '전체', 2015, 10, 5841.0], dtype=object),
array(['서울', '전용면적 60㎡이하', 2015, 10, 5652.0], dtype=object))
간단한 통계 보기
|
연도 |
월 |
분양가 |
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 하기 (축 변환하기)
|
지역명 |
규모구분 |
연도 |
월 |
분양가 |
0 |
서울 |
전체 |
2015 |
10 |
5841.0 |
1 |
서울 |
전용면적 60㎡이하 |
2015 |
10 |
5652.0 |
2 |
서울 |
전용면적 60㎡초과 85㎡이하 |
2015 |
10 |
5882.0 |
|
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
정렬
|
지역명 |
규모구분 |
연도 |
월 |
분양가 |
0 |
서울 |
전체 |
2015 |
10 |
5841.0 |
1 |
서울 |
전용면적 60㎡이하 |
2015 |
10 |
5652.0 |
2 |
서울 |
전용면적 60㎡초과 85㎡이하 |
2015 |
10 |
5882.0 |
3 |
서울 |
전용면적 85㎡초과 102㎡이하 |
2015 |
10 |
5721.0 |
4 |
서울 |
전용면적 102㎡초과 |
2015 |
10 |
5879.0 |
1. Index 정렬
# 내림차순 정렬
df.sort_index(axis=0, ascending=False)[:5]
|
지역명 |
규모구분 |
연도 |
월 |
분양가 |
3569 |
제주 |
전용면적 102㎡초과 |
2019 |
3 |
2952.0 |
3568 |
제주 |
전용면적 85㎡초과 102㎡이하 |
2019 |
3 |
3226.0 |
3567 |
제주 |
전용면적 60㎡초과 85㎡이하 |
2019 |
3 |
3504.0 |
3566 |
제주 |
전용면적 60㎡이하 |
2019 |
3 |
3804.0 |
3565 |
제주 |
전체 |
2019 |
3 |
3424.0 |
# 오름차순 정렬
df.sort_index(axis=0, ascending=True)[:5]
|
지역명 |
규모구분 |
연도 |
월 |
분양가 |
0 |
서울 |
전체 |
2015 |
10 |
5841.0 |
1 |
서울 |
전용면적 60㎡이하 |
2015 |
10 |
5652.0 |
2 |
서울 |
전용면적 60㎡초과 85㎡이하 |
2015 |
10 |
5882.0 |
3 |
서울 |
전용면적 85㎡초과 102㎡이하 |
2015 |
10 |
5721.0 |
4 |
서울 |
전용면적 102㎡초과 |
2015 |
10 |
5879.0 |
2. Value 정렬
# 지역명 별로 정렬
df.sort_values(by='지역명')[:5]
|
지역명 |
규모구분 |
연도 |
월 |
분양가 |
1831 |
강원 |
전용면적 60㎡이하 |
2017 |
7 |
2167.0 |
896 |
강원 |
전용면적 60㎡이하 |
2016 |
8 |
2073.0 |
895 |
강원 |
전체 |
2016 |
8 |
2098.0 |
215 |
강원 |
전체 |
2015 |
12 |
2171.0 |
216 |
강원 |
전용면적 60㎡이하 |
2015 |
12 |
2292.0 |
# 연도 별로 정렬
df.sort_values(by='연도')[:5]
|
지역명 |
규모구분 |
연도 |
월 |
분양가 |
0 |
서울 |
전체 |
2015 |
10 |
5841.0 |
162 |
경남 |
전용면적 60㎡초과 85㎡이하 |
2015 |
11 |
2322.0 |
163 |
경남 |
전용면적 85㎡초과 102㎡이하 |
2015 |
11 |
2980.0 |
164 |
경남 |
전용면적 102㎡초과 |
2015 |
11 |
3043.0 |
165 |
제주 |
전체 |
2015 |
11 |
2232.0 |
선택 (Selection)
1. Column 이름으로 선택
0 서울
1 서울
2 서울
3 서울
4 서울
Name: 지역명, dtype: object
0 2015
1 2015
2 2015
3 2015
4 2015
Name: 연도, dtype: int64
2. Index 선택
# index 0 부터 5 미만까지 선택
# index 지정시 : 기준으로 왼쪽은 포함, : 기준으로 오른쪽은 미만
df[0:5]
|
지역명 |
규모구분 |
연도 |
월 |
분양가 |
0 |
서울 |
전체 |
2015 |
10 |
5841.0 |
1 |
서울 |
전용면적 60㎡이하 |
2015 |
10 |
5652.0 |
2 |
서울 |
전용면적 60㎡초과 85㎡이하 |
2015 |
10 |
5882.0 |
3 |
서울 |
전용면적 85㎡초과 102㎡이하 |
2015 |
10 |
5721.0 |
4 |
서울 |
전용면적 102㎡초과 |
2015 |
10 |
5879.0 |
|
지역명 |
규모구분 |
연도 |
월 |
분양가 |
3565 |
제주 |
전체 |
2019 |
3 |
3424.0 |
3566 |
제주 |
전용면적 60㎡이하 |
2019 |
3 |
3804.0 |
3567 |
제주 |
전용면적 60㎡초과 85㎡이하 |
2019 |
3 |
3504.0 |
3568 |
제주 |
전용면적 85㎡초과 102㎡이하 |
2019 |
3 |
3226.0 |
3569 |
제주 |
전용면적 102㎡초과 |
2019 |
3 |
2952.0 |
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을 활용한 인덱스 지정 선택
|
지역명 |
규모구분 |
연도 |
월 |
분양가 |
0 |
서울 |
전체 |
2015 |
10 |
5841.0 |
1 |
서울 |
전용면적 60㎡이하 |
2015 |
10 |
5652.0 |
2 |
서울 |
전용면적 60㎡초과 85㎡이하 |
2015 |
10 |
5882.0 |
3 |
서울 |
전용면적 85㎡초과 102㎡이하 |
2015 |
10 |
5721.0 |
4 |
서울 |
전용면적 102㎡초과 |
2015 |
10 |
5879.0 |
# df.iloc과 동작방식은 동일하지만, 범위 지정은 불가
df.iat[2, 1]
지역명 서울
규모구분 전용면적 60㎡초과 85㎡이하
연도 2015
월 10
분양가 5882
Name: 2, dtype: object
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. 범위 조건 지정 선택
|
지역명 |
규모구분 |
연도 |
월 |
분양가 |
3566 |
제주 |
전용면적 60㎡이하 |
2019 |
3 |
3804.0 |
3567 |
제주 |
전용면적 60㎡초과 85㎡이하 |
2019 |
3 |
3504.0 |
3568 |
제주 |
전용면적 85㎡초과 102㎡이하 |
2019 |
3 |
3226.0 |
3569 |
제주 |
전용면적 102㎡초과 |
2019 |
3 |
2952.0 |
5-a. df.연도 와 df[‘연도’] 의 column 지정방식은 동일하다
|
지역명 |
규모구분 |
연도 |
월 |
분양가 |
3315 |
서울 |
전체 |
2019 |
1 |
7600.0 |
3316 |
서울 |
전용면적 60㎡이하 |
2019 |
1 |
7400.0 |
3317 |
서울 |
전용면적 60㎡초과 85㎡이하 |
2019 |
1 |
8105.0 |
3318 |
서울 |
전용면적 85㎡초과 102㎡이하 |
2019 |
1 |
6842.0 |
3319 |
서울 |
전용면적 102㎡초과 |
2019 |
1 |
7787.0 |
|
지역명 |
규모구분 |
연도 |
월 |
분양가 |
3315 |
서울 |
전체 |
2019 |
1 |
7600.0 |
3316 |
서울 |
전용면적 60㎡이하 |
2019 |
1 |
7400.0 |
3317 |
서울 |
전용면적 60㎡초과 85㎡이하 |
2019 |
1 |
8105.0 |
3318 |
서울 |
전용면적 85㎡초과 102㎡이하 |
2019 |
1 |
6842.0 |
3319 |
서울 |
전용면적 102㎡초과 |
2019 |
1 |
7787.0 |
Copy로 복사
|
지역명 |
규모구분 |
연도 |
월 |
분양가 |
0 |
서울 |
전체 |
2015 |
10 |
5841.0 |
1 |
서울 |
전용면적 60㎡이하 |
2015 |
10 |
5652.0 |
2 |
서울 |
전용면적 60㎡초과 85㎡이하 |
2015 |
10 |
5882.0 |
3 |
서울 |
전용면적 85㎡초과 102㎡이하 |
2015 |
10 |
5721.0 |
4 |
서울 |
전용면적 102㎡초과 |
2015 |
10 |
5879.0 |
|
지역명 |
규모구분 |
연도 |
월 |
분양가 |
0 |
서울 |
전체 |
2015 |
10 |
5841.0 |
1 |
서울 |
전용면적 60㎡이하 |
2015 |
10 |
5652.0 |
2 |
서울 |
전용면적 60㎡초과 85㎡이하 |
2015 |
10 |
5882.0 |
3 |
서울 |
전용면적 85㎡초과 102㎡이하 |
2015 |
10 |
5721.0 |
4 |
서울 |
전용면적 102㎡초과 |
2015 |
10 |
5879.0 |
값 지정
# 지역명 == 서울 인 지역만 선택
df.loc[df['지역명']=='서울','지역명'][:10]
0 서울
1 서울
2 서울
3 서울
4 서울
85 서울
86 서울
87 서울
88 서울
89 서울
Name: 지역명, dtype: object
# 지역명 == 서울 인 지역을 Seoul로 변경(값을 set)
df.loc[df['지역명']=='서울','지역명'] = 'Seoul'
|
지역명 |
규모구분 |
연도 |
월 |
분양가 |
0 |
Seoul |
전체 |
2015 |
10 |
5841.0 |
1 |
Seoul |
전용면적 60㎡이하 |
2015 |
10 |
5652.0 |
2 |
Seoul |
전용면적 60㎡초과 85㎡이하 |
2015 |
10 |
5882.0 |
3 |
Seoul |
전용면적 85㎡초과 102㎡이하 |
2015 |
10 |
5721.0 |
4 |
Seoul |
전용면적 102㎡초과 |
2015 |
10 |
5879.0 |
reindex를 통한 지정 행과 새로운 열을 추가하여 새로운 dataframe으로 생성
df1 = df.reindex(index=df.index[:7], columns=list(df.columns) + ['extra'])
|
지역명 |
규모구분 |
연도 |
월 |
분양가 |
extra |
0 |
Seoul |
전체 |
2015 |
10 |
5841.0 |
NaN |
1 |
Seoul |
전용면적 60㎡이하 |
2015 |
10 |
5652.0 |
NaN |
2 |
Seoul |
전용면적 60㎡초과 85㎡이하 |
2015 |
10 |
5882.0 |
NaN |
3 |
Seoul |
전용면적 85㎡초과 102㎡이하 |
2015 |
10 |
5721.0 |
NaN |
4 |
Seoul |
전용면적 102㎡초과 |
2015 |
10 |
5879.0 |
NaN |
5 |
인천 |
전체 |
2015 |
10 |
3163.0 |
NaN |
6 |
인천 |
전용면적 60㎡이하 |
2015 |
10 |
3488.0 |
NaN |
df1.loc[:4, 'extra'] = False
|
지역명 |
규모구분 |
연도 |
월 |
분양가 |
extra |
0 |
Seoul |
전체 |
2015 |
10 |
5841.0 |
False |
1 |
Seoul |
전용면적 60㎡이하 |
2015 |
10 |
5652.0 |
False |
2 |
Seoul |
전용면적 60㎡초과 85㎡이하 |
2015 |
10 |
5882.0 |
False |
3 |
Seoul |
전용면적 85㎡초과 102㎡이하 |
2015 |
10 |
5721.0 |
False |
4 |
Seoul |
전용면적 102㎡초과 |
2015 |
10 |
5879.0 |
False |
5 |
인천 |
전체 |
2015 |
10 |
3163.0 |
NaN |
6 |
인천 |
전용면적 60㎡이하 |
2015 |
10 |
3488.0 |
NaN |
빈 데이터 처리
|
지역명 |
규모구분 |
연도 |
월 |
분양가 |
extra |
0 |
Seoul |
전체 |
2015 |
10 |
5841.0 |
False |
1 |
Seoul |
전용면적 60㎡이하 |
2015 |
10 |
5652.0 |
False |
2 |
Seoul |
전용면적 60㎡초과 85㎡이하 |
2015 |
10 |
5882.0 |
False |
3 |
Seoul |
전용면적 85㎡초과 102㎡이하 |
2015 |
10 |
5721.0 |
False |
4 |
Seoul |
전용면적 102㎡초과 |
2015 |
10 |
5879.0 |
False |
5 |
인천 |
전체 |
2015 |
10 |
3163.0 |
NaN |
6 |
인천 |
전용면적 60㎡이하 |
2015 |
10 |
3488.0 |
NaN |
1. NaN 값이 있는 행을 제거
|
지역명 |
규모구분 |
연도 |
월 |
분양가 |
extra |
0 |
Seoul |
전체 |
2015 |
10 |
5841.0 |
False |
1 |
Seoul |
전용면적 60㎡이하 |
2015 |
10 |
5652.0 |
False |
2 |
Seoul |
전용면적 60㎡초과 85㎡이하 |
2015 |
10 |
5882.0 |
False |
3 |
Seoul |
전용면적 85㎡초과 102㎡이하 |
2015 |
10 |
5721.0 |
False |
4 |
Seoul |
전용면적 102㎡초과 |
2015 |
10 |
5879.0 |
False |
1-a 하지만 원본 데이터에는 반영이 안되어 있음
|
지역명 |
규모구분 |
연도 |
월 |
분양가 |
extra |
0 |
Seoul |
전체 |
2015 |
10 |
5841.0 |
False |
1 |
Seoul |
전용면적 60㎡이하 |
2015 |
10 |
5652.0 |
False |
2 |
Seoul |
전용면적 60㎡초과 85㎡이하 |
2015 |
10 |
5882.0 |
False |
3 |
Seoul |
전용면적 85㎡초과 102㎡이하 |
2015 |
10 |
5721.0 |
False |
4 |
Seoul |
전용면적 102㎡초과 |
2015 |
10 |
5879.0 |
False |
5 |
인천 |
전체 |
2015 |
10 |
3163.0 |
NaN |
6 |
인천 |
전용면적 60㎡이하 |
2015 |
10 |
3488.0 |
NaN |
1-b 원본 데이터에 반영을 시키기 위해서는 inplace=True를 적용
df2.dropna(how='any', inplace=True)
|
지역명 |
규모구분 |
연도 |
월 |
분양가 |
extra |
0 |
Seoul |
전체 |
2015 |
10 |
5841.0 |
False |
1 |
Seoul |
전용면적 60㎡이하 |
2015 |
10 |
5652.0 |
False |
2 |
Seoul |
전용면적 60㎡초과 85㎡이하 |
2015 |
10 |
5882.0 |
False |
3 |
Seoul |
전용면적 85㎡초과 102㎡이하 |
2015 |
10 |
5721.0 |
False |
4 |
Seoul |
전용면적 102㎡초과 |
2015 |
10 |
5879.0 |
False |
2. NaN 값이 있는 행에 값을 채움
|
지역명 |
규모구분 |
연도 |
월 |
분양가 |
extra |
0 |
Seoul |
전체 |
2015 |
10 |
5841.0 |
False |
1 |
Seoul |
전용면적 60㎡이하 |
2015 |
10 |
5652.0 |
False |
2 |
Seoul |
전용면적 60㎡초과 85㎡이하 |
2015 |
10 |
5882.0 |
False |
3 |
Seoul |
전용면적 85㎡초과 102㎡이하 |
2015 |
10 |
5721.0 |
False |
4 |
Seoul |
전용면적 102㎡초과 |
2015 |
10 |
5879.0 |
False |
5 |
인천 |
전체 |
2015 |
10 |
3163.0 |
NaN |
6 |
인천 |
전용면적 60㎡이하 |
2015 |
10 |
3488.0 |
NaN |
|
지역명 |
규모구분 |
연도 |
월 |
분양가 |
extra |
0 |
Seoul |
전체 |
2015 |
10 |
5841.0 |
False |
1 |
Seoul |
전용면적 60㎡이하 |
2015 |
10 |
5652.0 |
False |
2 |
Seoul |
전용면적 60㎡초과 85㎡이하 |
2015 |
10 |
5882.0 |
False |
3 |
Seoul |
전용면적 85㎡초과 102㎡이하 |
2015 |
10 |
5721.0 |
False |
4 |
Seoul |
전용면적 102㎡초과 |
2015 |
10 |
5879.0 |
False |
5 |
인천 |
전체 |
2015 |
10 |
3163.0 |
True |
6 |
인천 |
전용면적 60㎡이하 |
2015 |
10 |
3488.0 |
True |
3. NaN 값이 있는 데이터를 Boolean 값으로 출력
|
지역명 |
규모구분 |
연도 |
월 |
분양가 |
extra |
0 |
False |
False |
False |
False |
False |
False |
1 |
False |
False |
False |
False |
False |
False |
2 |
False |
False |
False |
False |
False |
False |
3 |
False |
False |
False |
False |
False |
False |
4 |
False |
False |
False |
False |
False |
False |
5 |
False |
False |
False |
False |
False |
True |
6 |
False |
False |
False |
False |
False |
True |
연산 (Operation)
|
지역명 |
규모구분 |
연도 |
월 |
분양가 |
0 |
Seoul |
전체 |
2015 |
10 |
5841.0 |
1 |
Seoul |
전용면적 60㎡이하 |
2015 |
10 |
5652.0 |
2 |
Seoul |
전용면적 60㎡초과 85㎡이하 |
2015 |
10 |
5882.0 |
3 |
Seoul |
전용면적 85㎡초과 102㎡이하 |
2015 |
10 |
5721.0 |
4 |
Seoul |
전용면적 102㎡초과 |
2015 |
10 |
5879.0 |
열(column) 기준 평균
연도 2017.000000
월 6.500000
분양가 3130.001833
dtype: float64
행(row) 기준 평균
0 2622.000000
1 2559.000000
2 2635.666667
3 2582.000000
4 2634.666667
dtype: float64
|
지역명 |
규모구분 |
연도 |
월 |
분양가 |
0 |
Seoul |
전체 |
2015 |
10 |
5841.0 |
1 |
Seoul |
전용면적 60㎡이하 |
2015 |
10 |
5652.0 |
2 |
Seoul |
전용면적 60㎡초과 85㎡이하 |
2015 |
10 |
5882.0 |
3 |
Seoul |
전용면적 85㎡초과 102㎡이하 |
2015 |
10 |
5721.0 |
4 |
Seoul |
전용면적 102㎡초과 |
2015 |
10 |
5879.0 |
행을 2칸 뒤로 밀기
|
지역명 |
규모구분 |
연도 |
월 |
분양가 |
0 |
NaN |
NaN |
NaN |
NaN |
NaN |
1 |
NaN |
NaN |
NaN |
NaN |
NaN |
2 |
Seoul |
전체 |
2015.0 |
10.0 |
5841.0 |
3 |
Seoul |
전용면적 60㎡이하 |
2015.0 |
10.0 |
5652.0 |
4 |
Seoul |
전용면적 60㎡초과 85㎡이하 |
2015.0 |
10.0 |
5882.0 |
행을 2칸 당기기
|
지역명 |
규모구분 |
연도 |
월 |
분양가 |
0 |
Seoul |
전용면적 60㎡초과 85㎡이하 |
2015.0 |
10.0 |
5882.0 |
1 |
Seoul |
전용면적 85㎡초과 102㎡이하 |
2015.0 |
10.0 |
5721.0 |
2 |
Seoul |
전용면적 102㎡초과 |
2015.0 |
10.0 |
5879.0 |
3 |
인천 |
전체 |
2015.0 |
10.0 |
3163.0 |
4 |
인천 |
전용면적 60㎡이하 |
2015.0 |
10.0 |
3488.0 |
Broadcasting을 이용한 subtract (빼기)
|
연도 |
월 |
0 |
2015 |
10 |
1 |
2015 |
10 |
2 |
2015 |
10 |
3 |
2015 |
10 |
4 |
2015 |
10 |
|
연도 |
월 |
0 |
2015 |
10 |
1 |
2015 |
10 |
2 |
2015 |
10 |
3 |
2015 |
10 |
4 |
2015 |
10 |
array([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])
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())
|
연도 |
월 |
0 |
2015 |
10 |
1 |
2015 |
10 |
2 |
2015 |
10 |
3 |
2015 |
10 |
4 |
2015 |
10 |
값들의 종류별 출력
2017 1020
2018 1020
2016 1020
2019 255
2015 255
Name: 연도, dtype: int64
데이터 합치기 (Data Merge)
|
지역명 |
규모구분 |
연도 |
월 |
분양가 |
0 |
Seoul |
전체 |
2015 |
10 |
5841.0 |
1 |
Seoul |
전용면적 60㎡이하 |
2015 |
10 |
5652.0 |
2 |
Seoul |
전용면적 60㎡초과 85㎡이하 |
2015 |
10 |
5882.0 |
3 |
Seoul |
전용면적 85㎡초과 102㎡이하 |
2015 |
10 |
5721.0 |
4 |
Seoul |
전용면적 102㎡초과 |
2015 |
10 |
5879.0 |
|
연도 |
월 |
0 |
2015 |
10 |
1 |
2015 |
10 |
2 |
2015 |
10 |
3 |
2015 |
10 |
4 |
2015 |
10 |
|
지역명 |
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))
|
0 |
1 |
2 |
3 |
0 |
-0.528271 |
0.720859 |
-0.722125 |
-0.899108 |
1 |
-0.047759 |
-1.242737 |
0.365917 |
0.487562 |
2 |
0.704220 |
-1.756446 |
-0.115087 |
-0.553400 |
|
0 |
1 |
2 |
3 |
0 |
1.238083 |
-0.430535 |
-0.676987 |
0.895199 |
1 |
1.286559 |
0.940526 |
-0.511938 |
0.821484 |
2 |
2.192235 |
0.472074 |
-0.302693 |
-0.353570 |
3 |
0.762386 |
-0.034152 |
0.778173 |
0.017409 |
|
0 |
1 |
2 |
3 |
0 |
-2.012103 |
-0.190446 |
-0.316163 |
-1.409107 |
1 |
-1.895678 |
0.214685 |
-0.774698 |
-1.046805 |
2 |
1.441786 |
1.363821 |
0.234136 |
-0.427928 |
3 |
-1.298646 |
-0.715675 |
0.028136 |
0.929860 |
4 |
0.767976 |
1.208685 |
0.212538 |
2.206161 |
part = [part_1, part_2, part_3]
[ 0 1 2 3
0 -0.528271 0.720859 -0.722125 -0.899108
1 -0.047759 -1.242737 0.365917 0.487562
2 0.704220 -1.756446 -0.115087 -0.553400,
0 1 2 3
0 1.238083 -0.430535 -0.676987 0.895199
1 1.286559 0.940526 -0.511938 0.821484
2 2.192235 0.472074 -0.302693 -0.353570
3 0.762386 -0.034152 0.778173 0.017409,
0 1 2 3
0 -2.012103 -0.190446 -0.316163 -1.409107
1 -1.895678 0.214685 -0.774698 -1.046805
2 1.441786 1.363821 0.234136 -0.427928
3 -1.298646 -0.715675 0.028136 0.929860
4 0.767976 1.208685 0.212538 2.206161]
|
0 |
1 |
2 |
3 |
0 |
-0.528271 |
0.720859 |
-0.722125 |
-0.899108 |
1 |
-0.047759 |
-1.242737 |
0.365917 |
0.487562 |
2 |
0.704220 |
-1.756446 |
-0.115087 |
-0.553400 |
0 |
1.238083 |
-0.430535 |
-0.676987 |
0.895199 |
1 |
1.286559 |
0.940526 |
-0.511938 |
0.821484 |
2 |
2.192235 |
0.472074 |
-0.302693 |
-0.353570 |
3 |
0.762386 |
-0.034152 |
0.778173 |
0.017409 |
0 |
-2.012103 |
-0.190446 |
-0.316163 |
-1.409107 |
1 |
-1.895678 |
0.214685 |
-0.774698 |
-1.046805 |
2 |
1.441786 |
1.363821 |
0.234136 |
-0.427928 |
3 |
-1.298646 |
-0.715675 |
0.028136 |
0.929860 |
4 |
0.767976 |
1.208685 |
0.212538 |
2.206161 |
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 |
매우 깔끔하게 합쳐진 것을 볼 수 있다
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)
test
array([ 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)
array([[ 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]])
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])
array([[15, 16, 17, 18, 19],
[20, 21, 22, 23, 24],
[25, 26, 27, 28, 29],
[30, 31, 32, 33, 34]])
array([[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 |
|
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)
|
지역명 |
규모구분 |
연도 |
월 |
분양가 |
0 |
Seoul |
전체 |
2015 |
10 |
5841.0 |
1 |
Seoul |
전용면적 60㎡이하 |
2015 |
10 |
5652.0 |
2 |
Seoul |
전용면적 60㎡초과 85㎡이하 |
2015 |
10 |
5882.0 |
3 |
Seoul |
전용면적 85㎡초과 102㎡이하 |
2015 |
10 |
5721.0 |
4 |
Seoul |
전용면적 102㎡초과 |
2015 |
10 |
5879.0 |
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 타입으로 변경
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3570 entries, 0 to 3569
Data columns (total 5 columns):
지역명 3570 non-null object
규모구분 3570 non-null object
연도 3570 non-null int64
월 3570 non-null int64
분양가 3273 non-null float64
dtypes: float64(1), int64(2), object(2)
memory usage: 139.5+ KB
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3570 entries, 0 to 3569
Data columns (total 5 columns):
지역명 3570 non-null object
규모구분 3570 non-null object
연도 3570 non-null int64
월 3570 non-null int64
분양가 3273 non-null float64
dtypes: float64(1), int64(2), object(2)
memory usage: 139.5+ KB
grouped = df.groupby(['지역명', '연도', '월']).sum()
grouped
|
|
|
분양가 |
지역명 |
연도 |
월 |
|
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 |
714 rows × 1 columns
|
|
|
분양가 |
지역명 |
연도 |
월 |
|
Seoul |
2015 |
10 |
28975.0 |
11 |
31977.0 |
12 |
31392.0 |
2016 |
1 |
31635.0 |
2 |
31559.0 |
지역명 연도 월
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
Length: 714, dtype: float64
group이 되어 있는 DataFrame을 unstack의 ‘레벨’을 조정하여 보여줄 수 있다.
위의 grouped에서 ‘도시’ = level 1, ‘연도’ = level 2, ‘월’
|
지역명 |
규모구분 |
연도 |
월 |
분양가 |
0 |
Seoul |
전체 |
2015 |
10 |
5841.0 |
1 |
Seoul |
전용면적 60㎡이하 |
2015 |
10 |
5652.0 |
2 |
Seoul |
전용면적 60㎡초과 85㎡이하 |
2015 |
10 |
5882.0 |
3 |
Seoul |
전용면적 85㎡초과 102㎡이하 |
2015 |
10 |
5721.0 |
4 |
Seoul |
전용면적 102㎡초과 |
2015 |
10 |
5879.0 |
5 |
인천 |
전체 |
2015 |
10 |
3163.0 |
6 |
인천 |
전용면적 60㎡이하 |
2015 |
10 |
3488.0 |
7 |
인천 |
전용면적 60㎡초과 85㎡이하 |
2015 |
10 |
3119.0 |
8 |
인천 |
전용면적 85㎡초과 102㎡이하 |
2015 |
10 |
3545.0 |
9 |
인천 |
전용면적 102㎡초과 |
2015 |
10 |
3408.0 |
stack & unstack을 활용한 column별 데이터 그룹핑
# level0: 열을 도시별로 출력
grouped.unstack(0)
|
|
분양가 |
|
지역명 |
Seoul |
강원 |
경기 |
경남 |
경북 |
광주 |
대구 |
대전 |
부산 |
세종 |
울산 |
인천 |
전남 |
전북 |
제주 |
충남 |
충북 |
연도 |
월 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015 |
10 |
28975.0 |
10897.0 |
16679.0 |
12739.0 |
11027.0 |
7112.0 |
13147.0 |
9928.0 |
15518.0 |
13207.0 |
14156.0 |
16723.0 |
10400.0 |
10864.0 |
9614.0 |
11591.0 |
10455.0 |
11 |
31977.0 |
10888.0 |
16494.0 |
12843.0 |
11472.0 |
7119.0 |
13358.0 |
9928.0 |
15846.0 |
13279.0 |
14212.0 |
16584.0 |
10252.0 |
10902.0 |
9614.0 |
11410.0 |
10085.0 |
12 |
31392.0 |
10888.0 |
17104.0 |
12869.0 |
11429.0 |
7360.0 |
14490.0 |
9928.0 |
15806.0 |
13355.0 |
14212.0 |
16584.0 |
10252.0 |
10554.0 |
9685.0 |
11953.0 |
10500.0 |
2016 |
1 |
31635.0 |
10894.0 |
17104.0 |
12698.0 |
11406.0 |
7546.0 |
14805.0 |
9928.0 |
15929.0 |
13355.0 |
14220.0 |
16582.0 |
10252.0 |
10534.0 |
9685.0 |
12017.0 |
10518.0 |
2 |
31559.0 |
9013.0 |
16831.0 |
12692.0 |
11420.0 |
7546.0 |
14759.0 |
9928.0 |
15982.0 |
13355.0 |
14220.0 |
16585.0 |
10281.0 |
10535.0 |
9685.0 |
12035.0 |
10518.0 |
3 |
32400.0 |
9014.0 |
16958.0 |
12839.0 |
11532.0 |
7661.0 |
14896.0 |
9928.0 |
15915.0 |
13374.0 |
14445.0 |
16577.0 |
10280.0 |
10382.0 |
4628.0 |
11440.0 |
10463.0 |
4 |
33504.0 |
8816.0 |
16848.0 |
13029.0 |
11526.0 |
14268.0 |
14923.0 |
7403.0 |
15886.0 |
13403.0 |
14364.0 |
18092.0 |
10275.0 |
10374.0 |
13651.0 |
11803.0 |
10430.0 |
5 |
33185.0 |
8669.0 |
17932.0 |
13203.0 |
11534.0 |
14284.0 |
14965.0 |
7474.0 |
15828.0 |
13403.0 |
14387.0 |
17208.0 |
10279.0 |
10400.0 |
13569.0 |
11809.0 |
10476.0 |
6 |
33085.0 |
8678.0 |
18269.0 |
13026.0 |
11828.0 |
14319.0 |
15266.0 |
7757.0 |
16167.0 |
13372.0 |
14330.0 |
16567.0 |
10549.0 |
10371.0 |
14122.0 |
12048.0 |
10681.0 |
7 |
33369.0 |
8648.0 |
18315.0 |
12969.0 |
11828.0 |
14329.0 |
15295.0 |
7757.0 |
16409.0 |
13368.0 |
14330.0 |
16517.0 |
10550.0 |
10402.0 |
14122.0 |
12048.0 |
10788.0 |
8 |
33174.0 |
8705.0 |
18250.0 |
12984.0 |
11798.0 |
14293.0 |
15573.0 |
7757.0 |
16594.0 |
13393.0 |
14153.0 |
16617.0 |
10546.0 |
10407.0 |
14211.0 |
12167.0 |
10881.0 |
9 |
33246.0 |
8690.0 |
17479.0 |
12787.0 |
11812.0 |
13853.0 |
15573.0 |
7611.0 |
16611.0 |
13428.0 |
14153.0 |
16289.0 |
10563.0 |
10410.0 |
16407.0 |
12168.0 |
10886.0 |
10 |
34239.0 |
10608.0 |
17852.0 |
12821.0 |
12070.0 |
13862.0 |
15573.0 |
16079.0 |
16489.0 |
13525.0 |
14681.0 |
16904.0 |
10648.0 |
10431.0 |
16407.0 |
12159.0 |
11276.0 |
11 |
32672.0 |
10383.0 |
18362.0 |
12699.0 |
12076.0 |
14208.0 |
17464.0 |
14944.0 |
16427.0 |
13546.0 |
12571.0 |
16937.0 |
10901.0 |
10430.0 |
16461.0 |
12488.0 |
11283.0 |
12 |
33449.0 |
10752.0 |
18254.0 |
12739.0 |
12141.0 |
14224.0 |
17854.0 |
14944.0 |
17100.0 |
13529.0 |
12567.0 |
16926.0 |
10996.0 |
10899.0 |
16510.0 |
12513.0 |
11497.0 |
2017 |
1 |
33413.0 |
10711.0 |
18260.0 |
12745.0 |
12185.0 |
14215.0 |
17917.0 |
14944.0 |
17082.0 |
13529.0 |
12567.0 |
16926.0 |
10996.0 |
10951.0 |
16490.0 |
12448.0 |
11588.0 |
2 |
33202.0 |
10734.0 |
18571.0 |
12922.0 |
12183.0 |
14215.0 |
17992.0 |
15106.0 |
17080.0 |
13529.0 |
12572.0 |
17011.0 |
11033.0 |
10947.0 |
16453.0 |
12451.0 |
11367.0 |
3 |
32526.0 |
10682.0 |
18838.0 |
12853.0 |
12215.0 |
14119.0 |
18486.0 |
15106.0 |
16971.0 |
13529.0 |
12572.0 |
17100.0 |
11021.0 |
11070.0 |
16412.0 |
12453.0 |
11327.0 |
4 |
32519.0 |
10682.0 |
18849.0 |
12877.0 |
12311.0 |
14392.0 |
18137.0 |
15201.0 |
16970.0 |
13696.0 |
13210.0 |
17100.0 |
11053.0 |
11192.0 |
18250.0 |
12500.0 |
11136.0 |
5 |
32536.0 |
10767.0 |
18200.0 |
12893.0 |
12468.0 |
12005.0 |
18137.0 |
15201.0 |
17252.0 |
13696.0 |
13210.0 |
17497.0 |
11171.0 |
11273.0 |
20348.0 |
12499.0 |
11387.0 |
6 |
33637.0 |
11026.0 |
18379.0 |
13223.0 |
12513.0 |
12049.0 |
17782.0 |
15201.0 |
17374.0 |
13715.0 |
13217.0 |
17415.0 |
10938.0 |
11414.0 |
20762.0 |
12417.0 |
11309.0 |
7 |
33285.0 |
11076.0 |
18630.0 |
13345.0 |
12512.0 |
12013.0 |
16024.0 |
15448.0 |
17479.0 |
13715.0 |
13217.0 |
17862.0 |
10939.0 |
11500.0 |
21366.0 |
12420.0 |
11309.0 |
8 |
31812.0 |
11401.0 |
18853.0 |
13547.0 |
12864.0 |
12031.0 |
15961.0 |
15448.0 |
17782.0 |
13722.0 |
13217.0 |
18171.0 |
11074.0 |
11509.0 |
21366.0 |
12440.0 |
11323.0 |
9 |
33788.0 |
11237.0 |
18872.0 |
14758.0 |
13166.0 |
11797.0 |
15190.0 |
15932.0 |
17697.0 |
13840.0 |
13217.0 |
18403.0 |
11074.0 |
8870.0 |
11752.0 |
12440.0 |
11332.0 |
10 |
33160.0 |
11174.0 |
18806.0 |
13387.0 |
12922.0 |
14490.0 |
15190.0 |
11240.0 |
18048.0 |
13819.0 |
12438.0 |
18216.0 |
11660.0 |
8752.0 |
11752.0 |
12569.0 |
11343.0 |
11 |
0.0 |
0.0 |
0.0 |
0.0 |
0.0 |
0.0 |
0.0 |
0.0 |
0.0 |
0.0 |
0.0 |
0.0 |
0.0 |
0.0 |
0.0 |
0.0 |
0.0 |
12 |
33973.0 |
11736.0 |
18825.0 |
13896.0 |
10165.0 |
11427.0 |
14134.0 |
11091.0 |
18943.0 |
12651.0 |
6324.0 |
18309.0 |
11923.0 |
11354.0 |
15454.0 |
9519.0 |
11131.0 |
2018 |
1 |
33772.0 |
12157.0 |
20740.0 |
13896.0 |
10268.0 |
11422.0 |
14236.0 |
11189.0 |
18943.0 |
12651.0 |
6324.0 |
18346.0 |
12124.0 |
11354.0 |
15557.0 |
9507.0 |
11131.0 |
2 |
34315.0 |
12346.0 |
20954.0 |
13905.0 |
10268.0 |
11422.0 |
13793.0 |
11334.0 |
18967.0 |
12651.0 |
6348.0 |
18426.0 |
11798.0 |
11366.0 |
15862.0 |
9507.0 |
11435.0 |
3 |
35647.0 |
12800.0 |
20861.0 |
13910.0 |
10174.0 |
11495.0 |
13860.0 |
11334.0 |
18782.0 |
12651.0 |
6348.0 |
18889.0 |
11982.0 |
11345.0 |
16055.0 |
9507.0 |
12212.0 |
4 |
35662.0 |
12260.0 |
20891.0 |
13816.0 |
10121.0 |
11004.0 |
16635.0 |
11514.0 |
18874.0 |
15615.0 |
6348.0 |
18889.0 |
12024.0 |
12641.0 |
16055.0 |
9507.0 |
12961.0 |
5 |
36217.0 |
12333.0 |
21368.0 |
13825.0 |
10574.0 |
11046.0 |
18482.0 |
11514.0 |
18924.0 |
15615.0 |
6348.0 |
18762.0 |
12026.0 |
12720.0 |
16055.0 |
9871.0 |
13028.0 |
6 |
35161.0 |
12317.0 |
21249.0 |
13831.0 |
10619.0 |
11233.0 |
18445.0 |
11514.0 |
19043.0 |
15615.0 |
6250.0 |
13592.0 |
12026.0 |
12720.0 |
16055.0 |
12623.0 |
12552.0 |
7 |
35595.0 |
12434.0 |
21708.0 |
13813.0 |
10702.0 |
11103.0 |
18767.0 |
8383.0 |
19496.0 |
15615.0 |
6250.0 |
13592.0 |
12029.0 |
12780.0 |
12906.0 |
12623.0 |
12506.0 |
8 |
33783.0 |
12577.0 |
22203.0 |
13679.0 |
10500.0 |
11103.0 |
18790.0 |
8383.0 |
19514.0 |
15717.0 |
6250.0 |
13533.0 |
12029.0 |
12737.0 |
12906.0 |
12774.0 |
12506.0 |
9 |
32407.0 |
12590.0 |
22170.0 |
14211.0 |
13177.0 |
11293.0 |
18901.0 |
14108.0 |
20655.0 |
15717.0 |
6250.0 |
13533.0 |
12074.0 |
12737.0 |
12906.0 |
12774.0 |
12494.0 |
10 |
36028.0 |
12667.0 |
22191.0 |
14471.0 |
13401.0 |
9353.0 |
19194.0 |
14067.0 |
20683.0 |
15717.0 |
5780.0 |
16773.0 |
12100.0 |
12551.0 |
12906.0 |
12774.0 |
12494.0 |
11 |
36199.0 |
12611.0 |
22352.0 |
14628.0 |
13492.0 |
9666.0 |
19106.0 |
14067.0 |
20213.0 |
15717.0 |
5780.0 |
18662.0 |
11930.0 |
12564.0 |
16675.0 |
12627.0 |
12425.0 |
12 |
37073.0 |
12349.0 |
22557.0 |
15609.0 |
13492.0 |
9773.0 |
19469.0 |
12149.0 |
20269.0 |
15327.0 |
0.0 |
18629.0 |
12037.0 |
13114.0 |
16910.0 |
12603.0 |
12425.0 |
2019 |
1 |
37734.0 |
12618.0 |
22750.0 |
15609.0 |
13322.0 |
9831.0 |
20013.0 |
12243.0 |
20269.0 |
15327.0 |
0.0 |
18757.0 |
11972.0 |
13114.0 |
16910.0 |
12773.0 |
12425.0 |
2 |
37592.0 |
12618.0 |
22879.0 |
15604.0 |
13430.0 |
9831.0 |
20022.0 |
12243.0 |
20269.0 |
15327.0 |
0.0 |
19151.0 |
12314.0 |
13229.0 |
16910.0 |
12994.0 |
12158.0 |
3 |
37761.0 |
12706.0 |
22696.0 |
15984.0 |
13536.0 |
9831.0 |
19994.0 |
11718.0 |
20394.0 |
15327.0 |
0.0 |
19585.0 |
12236.0 |
13358.0 |
16910.0 |
13113.0 |
12235.0 |
# level1: 열을 연도별로 출력
grouped.unstack(1)
|
|
분양가 |
|
연도 |
2015 |
2016 |
2017 |
2018 |
2019 |
지역명 |
월 |
|
|
|
|
|
Seoul |
1 |
NaN |
31635.0 |
33413.0 |
33772.0 |
37734.0 |
2 |
NaN |
31559.0 |
33202.0 |
34315.0 |
37592.0 |
3 |
NaN |
32400.0 |
32526.0 |
35647.0 |
37761.0 |
4 |
NaN |
33504.0 |
32519.0 |
35662.0 |
NaN |
5 |
NaN |
33185.0 |
32536.0 |
36217.0 |
NaN |
6 |
NaN |
33085.0 |
33637.0 |
35161.0 |
NaN |
7 |
NaN |
33369.0 |
33285.0 |
35595.0 |
NaN |
8 |
NaN |
33174.0 |
31812.0 |
33783.0 |
NaN |
9 |
NaN |
33246.0 |
33788.0 |
32407.0 |
NaN |
10 |
28975.0 |
34239.0 |
33160.0 |
36028.0 |
NaN |
11 |
31977.0 |
32672.0 |
0.0 |
36199.0 |
NaN |
12 |
31392.0 |
33449.0 |
33973.0 |
37073.0 |
NaN |
강원 |
1 |
NaN |
10894.0 |
10711.0 |
12157.0 |
12618.0 |
2 |
NaN |
9013.0 |
10734.0 |
12346.0 |
12618.0 |
3 |
NaN |
9014.0 |
10682.0 |
12800.0 |
12706.0 |
4 |
NaN |
8816.0 |
10682.0 |
12260.0 |
NaN |
5 |
NaN |
8669.0 |
10767.0 |
12333.0 |
NaN |
6 |
NaN |
8678.0 |
11026.0 |
12317.0 |
NaN |
7 |
NaN |
8648.0 |
11076.0 |
12434.0 |
NaN |
8 |
NaN |
8705.0 |
11401.0 |
12577.0 |
NaN |
9 |
NaN |
8690.0 |
11237.0 |
12590.0 |
NaN |
10 |
10897.0 |
10608.0 |
11174.0 |
12667.0 |
NaN |
11 |
10888.0 |
10383.0 |
0.0 |
12611.0 |
NaN |
12 |
10888.0 |
10752.0 |
11736.0 |
12349.0 |
NaN |
경기 |
1 |
NaN |
17104.0 |
18260.0 |
20740.0 |
22750.0 |
2 |
NaN |
16831.0 |
18571.0 |
20954.0 |
22879.0 |
3 |
NaN |
16958.0 |
18838.0 |
20861.0 |
22696.0 |
4 |
NaN |
16848.0 |
18849.0 |
20891.0 |
NaN |
5 |
NaN |
17932.0 |
18200.0 |
21368.0 |
NaN |
6 |
NaN |
18269.0 |
18379.0 |
21249.0 |
NaN |
... |
... |
... |
... |
... |
... |
... |
제주 |
7 |
NaN |
14122.0 |
21366.0 |
12906.0 |
NaN |
8 |
NaN |
14211.0 |
21366.0 |
12906.0 |
NaN |
9 |
NaN |
16407.0 |
11752.0 |
12906.0 |
NaN |
10 |
9614.0 |
16407.0 |
11752.0 |
12906.0 |
NaN |
11 |
9614.0 |
16461.0 |
0.0 |
16675.0 |
NaN |
12 |
9685.0 |
16510.0 |
15454.0 |
16910.0 |
NaN |
충남 |
1 |
NaN |
12017.0 |
12448.0 |
9507.0 |
12773.0 |
2 |
NaN |
12035.0 |
12451.0 |
9507.0 |
12994.0 |
3 |
NaN |
11440.0 |
12453.0 |
9507.0 |
13113.0 |
4 |
NaN |
11803.0 |
12500.0 |
9507.0 |
NaN |
5 |
NaN |
11809.0 |
12499.0 |
9871.0 |
NaN |
6 |
NaN |
12048.0 |
12417.0 |
12623.0 |
NaN |
7 |
NaN |
12048.0 |
12420.0 |
12623.0 |
NaN |
8 |
NaN |
12167.0 |
12440.0 |
12774.0 |
NaN |
9 |
NaN |
12168.0 |
12440.0 |
12774.0 |
NaN |
10 |
11591.0 |
12159.0 |
12569.0 |
12774.0 |
NaN |
11 |
11410.0 |
12488.0 |
0.0 |
12627.0 |
NaN |
12 |
11953.0 |
12513.0 |
9519.0 |
12603.0 |
NaN |
충북 |
1 |
NaN |
10518.0 |
11588.0 |
11131.0 |
12425.0 |
2 |
NaN |
10518.0 |
11367.0 |
11435.0 |
12158.0 |
3 |
NaN |
10463.0 |
11327.0 |
12212.0 |
12235.0 |
4 |
NaN |
10430.0 |
11136.0 |
12961.0 |
NaN |
5 |
NaN |
10476.0 |
11387.0 |
13028.0 |
NaN |
6 |
NaN |
10681.0 |
11309.0 |
12552.0 |
NaN |
7 |
NaN |
10788.0 |
11309.0 |
12506.0 |
NaN |
8 |
NaN |
10881.0 |
11323.0 |
12506.0 |
NaN |
9 |
NaN |
10886.0 |
11332.0 |
12494.0 |
NaN |
10 |
10455.0 |
11276.0 |
11343.0 |
12494.0 |
NaN |
11 |
10085.0 |
11283.0 |
0.0 |
12425.0 |
NaN |
12 |
10500.0 |
11497.0 |
11131.0 |
12425.0 |
NaN |
204 rows × 5 columns
# level2: 열을 연도별로 출력
grouped.unstack(2)
|
|
분양가 |
|
월 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
지역명 |
연도 |
|
|
|
|
|
|
|
|
|
|
|
|
Seoul |
2015 |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
28975.0 |
31977.0 |
31392.0 |
2016 |
31635.0 |
31559.0 |
32400.0 |
33504.0 |
33185.0 |
33085.0 |
33369.0 |
33174.0 |
33246.0 |
34239.0 |
32672.0 |
33449.0 |
2017 |
33413.0 |
33202.0 |
32526.0 |
32519.0 |
32536.0 |
33637.0 |
33285.0 |
31812.0 |
33788.0 |
33160.0 |
0.0 |
33973.0 |
2018 |
33772.0 |
34315.0 |
35647.0 |
35662.0 |
36217.0 |
35161.0 |
35595.0 |
33783.0 |
32407.0 |
36028.0 |
36199.0 |
37073.0 |
2019 |
37734.0 |
37592.0 |
37761.0 |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
강원 |
2015 |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
10897.0 |
10888.0 |
10888.0 |
2016 |
10894.0 |
9013.0 |
9014.0 |
8816.0 |
8669.0 |
8678.0 |
8648.0 |
8705.0 |
8690.0 |
10608.0 |
10383.0 |
10752.0 |
2017 |
10711.0 |
10734.0 |
10682.0 |
10682.0 |
10767.0 |
11026.0 |
11076.0 |
11401.0 |
11237.0 |
11174.0 |
0.0 |
11736.0 |
2018 |
12157.0 |
12346.0 |
12800.0 |
12260.0 |
12333.0 |
12317.0 |
12434.0 |
12577.0 |
12590.0 |
12667.0 |
12611.0 |
12349.0 |
2019 |
12618.0 |
12618.0 |
12706.0 |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
경기 |
2015 |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
16679.0 |
16494.0 |
17104.0 |
2016 |
17104.0 |
16831.0 |
16958.0 |
16848.0 |
17932.0 |
18269.0 |
18315.0 |
18250.0 |
17479.0 |
17852.0 |
18362.0 |
18254.0 |
2017 |
18260.0 |
18571.0 |
18838.0 |
18849.0 |
18200.0 |
18379.0 |
18630.0 |
18853.0 |
18872.0 |
18806.0 |
0.0 |
18825.0 |
2018 |
20740.0 |
20954.0 |
20861.0 |
20891.0 |
21368.0 |
21249.0 |
21708.0 |
22203.0 |
22170.0 |
22191.0 |
22352.0 |
22557.0 |
2019 |
22750.0 |
22879.0 |
22696.0 |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
경남 |
2015 |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
12739.0 |
12843.0 |
12869.0 |
2016 |
12698.0 |
12692.0 |
12839.0 |
13029.0 |
13203.0 |
13026.0 |
12969.0 |
12984.0 |
12787.0 |
12821.0 |
12699.0 |
12739.0 |
2017 |
12745.0 |
12922.0 |
12853.0 |
12877.0 |
12893.0 |
13223.0 |
13345.0 |
13547.0 |
14758.0 |
13387.0 |
0.0 |
13896.0 |
2018 |
13896.0 |
13905.0 |
13910.0 |
13816.0 |
13825.0 |
13831.0 |
13813.0 |
13679.0 |
14211.0 |
14471.0 |
14628.0 |
15609.0 |
2019 |
15609.0 |
15604.0 |
15984.0 |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
경북 |
2015 |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
11027.0 |
11472.0 |
11429.0 |
2016 |
11406.0 |
11420.0 |
11532.0 |
11526.0 |
11534.0 |
11828.0 |
11828.0 |
11798.0 |
11812.0 |
12070.0 |
12076.0 |
12141.0 |
2017 |
12185.0 |
12183.0 |
12215.0 |
12311.0 |
12468.0 |
12513.0 |
12512.0 |
12864.0 |
13166.0 |
12922.0 |
0.0 |
10165.0 |
2018 |
10268.0 |
10268.0 |
10174.0 |
10121.0 |
10574.0 |
10619.0 |
10702.0 |
10500.0 |
13177.0 |
13401.0 |
13492.0 |
13492.0 |
2019 |
13322.0 |
13430.0 |
13536.0 |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
광주 |
2015 |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
7112.0 |
7119.0 |
7360.0 |
2016 |
7546.0 |
7546.0 |
7661.0 |
14268.0 |
14284.0 |
14319.0 |
14329.0 |
14293.0 |
13853.0 |
13862.0 |
14208.0 |
14224.0 |
2017 |
14215.0 |
14215.0 |
14119.0 |
14392.0 |
12005.0 |
12049.0 |
12013.0 |
12031.0 |
11797.0 |
14490.0 |
0.0 |
11427.0 |
2018 |
11422.0 |
11422.0 |
11495.0 |
11004.0 |
11046.0 |
11233.0 |
11103.0 |
11103.0 |
11293.0 |
9353.0 |
9666.0 |
9773.0 |
2019 |
9831.0 |
9831.0 |
9831.0 |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
인천 |
2015 |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
16723.0 |
16584.0 |
16584.0 |
2016 |
16582.0 |
16585.0 |
16577.0 |
18092.0 |
17208.0 |
16567.0 |
16517.0 |
16617.0 |
16289.0 |
16904.0 |
16937.0 |
16926.0 |
2017 |
16926.0 |
17011.0 |
17100.0 |
17100.0 |
17497.0 |
17415.0 |
17862.0 |
18171.0 |
18403.0 |
18216.0 |
0.0 |
18309.0 |
2018 |
18346.0 |
18426.0 |
18889.0 |
18889.0 |
18762.0 |
13592.0 |
13592.0 |
13533.0 |
13533.0 |
16773.0 |
18662.0 |
18629.0 |
2019 |
18757.0 |
19151.0 |
19585.0 |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
전남 |
2015 |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
10400.0 |
10252.0 |
10252.0 |
2016 |
10252.0 |
10281.0 |
10280.0 |
10275.0 |
10279.0 |
10549.0 |
10550.0 |
10546.0 |
10563.0 |
10648.0 |
10901.0 |
10996.0 |
2017 |
10996.0 |
11033.0 |
11021.0 |
11053.0 |
11171.0 |
10938.0 |
10939.0 |
11074.0 |
11074.0 |
11660.0 |
0.0 |
11923.0 |
2018 |
12124.0 |
11798.0 |
11982.0 |
12024.0 |
12026.0 |
12026.0 |
12029.0 |
12029.0 |
12074.0 |
12100.0 |
11930.0 |
12037.0 |
2019 |
11972.0 |
12314.0 |
12236.0 |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
전북 |
2015 |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
10864.0 |
10902.0 |
10554.0 |
2016 |
10534.0 |
10535.0 |
10382.0 |
10374.0 |
10400.0 |
10371.0 |
10402.0 |
10407.0 |
10410.0 |
10431.0 |
10430.0 |
10899.0 |
2017 |
10951.0 |
10947.0 |
11070.0 |
11192.0 |
11273.0 |
11414.0 |
11500.0 |
11509.0 |
8870.0 |
8752.0 |
0.0 |
11354.0 |
2018 |
11354.0 |
11366.0 |
11345.0 |
12641.0 |
12720.0 |
12720.0 |
12780.0 |
12737.0 |
12737.0 |
12551.0 |
12564.0 |
13114.0 |
2019 |
13114.0 |
13229.0 |
13358.0 |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
제주 |
2015 |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
9614.0 |
9614.0 |
9685.0 |
2016 |
9685.0 |
9685.0 |
4628.0 |
13651.0 |
13569.0 |
14122.0 |
14122.0 |
14211.0 |
16407.0 |
16407.0 |
16461.0 |
16510.0 |
2017 |
16490.0 |
16453.0 |
16412.0 |
18250.0 |
20348.0 |
20762.0 |
21366.0 |
21366.0 |
11752.0 |
11752.0 |
0.0 |
15454.0 |
2018 |
15557.0 |
15862.0 |
16055.0 |
16055.0 |
16055.0 |
16055.0 |
12906.0 |
12906.0 |
12906.0 |
12906.0 |
16675.0 |
16910.0 |
2019 |
16910.0 |
16910.0 |
16910.0 |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
충남 |
2015 |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
11591.0 |
11410.0 |
11953.0 |
2016 |
12017.0 |
12035.0 |
11440.0 |
11803.0 |
11809.0 |
12048.0 |
12048.0 |
12167.0 |
12168.0 |
12159.0 |
12488.0 |
12513.0 |
2017 |
12448.0 |
12451.0 |
12453.0 |
12500.0 |
12499.0 |
12417.0 |
12420.0 |
12440.0 |
12440.0 |
12569.0 |
0.0 |
9519.0 |
2018 |
9507.0 |
9507.0 |
9507.0 |
9507.0 |
9871.0 |
12623.0 |
12623.0 |
12774.0 |
12774.0 |
12774.0 |
12627.0 |
12603.0 |
2019 |
12773.0 |
12994.0 |
13113.0 |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
충북 |
2015 |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
10455.0 |
10085.0 |
10500.0 |
2016 |
10518.0 |
10518.0 |
10463.0 |
10430.0 |
10476.0 |
10681.0 |
10788.0 |
10881.0 |
10886.0 |
11276.0 |
11283.0 |
11497.0 |
2017 |
11588.0 |
11367.0 |
11327.0 |
11136.0 |
11387.0 |
11309.0 |
11309.0 |
11323.0 |
11332.0 |
11343.0 |
0.0 |
11131.0 |
2018 |
11131.0 |
11435.0 |
12212.0 |
12961.0 |
13028.0 |
12552.0 |
12506.0 |
12506.0 |
12494.0 |
12494.0 |
12425.0 |
12425.0 |
2019 |
12425.0 |
12158.0 |
12235.0 |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
85 rows × 12 columns
Pivot Table
Pivot Table이란?
다시 말해 피벗 테이블이란 여러 데이터 중에서 자신이 원하는 데이터만을 가지고 원하는 행과 열에 데이터를 배치하여 새로운 보고서를 만드는 기능이다.
|
지역명 |
규모구분 |
연도 |
월 |
분양가 |
0 |
Seoul |
전체 |
2015 |
10 |
5841.0 |
1 |
Seoul |
전용면적 60㎡이하 |
2015 |
10 |
5652.0 |
2 |
Seoul |
전용면적 60㎡초과 85㎡이하 |
2015 |
10 |
5882.0 |
3 |
Seoul |
전용면적 85㎡초과 102㎡이하 |
2015 |
10 |
5721.0 |
4 |
Seoul |
전용면적 102㎡초과 |
2015 |
10 |
5879.0 |
5 |
인천 |
전체 |
2015 |
10 |
3163.0 |
6 |
인천 |
전용면적 60㎡이하 |
2015 |
10 |
3488.0 |
7 |
인천 |
전용면적 60㎡초과 85㎡이하 |
2015 |
10 |
3119.0 |
8 |
인천 |
전용면적 85㎡초과 102㎡이하 |
2015 |
10 |
3545.0 |
9 |
인천 |
전용면적 102㎡초과 |
2015 |
10 |
3408.0 |
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
|
지역명 |
규모구분 |
연도 |
월 |
분양가 |
0 |
Seoul |
전체 |
2015 |
10 |
5841.0 |
1 |
Seoul |
전용면적 60㎡이하 |
2015 |
10 |
5652.0 |
2 |
Seoul |
전용면적 60㎡초과 85㎡이하 |
2015 |
10 |
5882.0 |
3 |
Seoul |
전용면적 85㎡초과 102㎡이하 |
2015 |
10 |
5721.0 |
4 |
Seoul |
전용면적 102㎡초과 |
2015 |
10 |
5879.0 |
5 |
인천 |
전체 |
2015 |
10 |
3163.0 |
6 |
인천 |
전용면적 60㎡이하 |
2015 |
10 |
3488.0 |
7 |
인천 |
전용면적 60㎡초과 85㎡이하 |
2015 |
10 |
3119.0 |
8 |
인천 |
전용면적 85㎡초과 102㎡이하 |
2015 |
10 |
3545.0 |
9 |
인천 |
전용면적 102㎡초과 |
2015 |
10 |
3408.0 |
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
|
지역명 |
규모구분 |
연도 |
월 |
분양가 |
평가 |
0 |
Seoul |
전체 |
2015 |
10 |
5841.0 |
0 |
1 |
Seoul |
전용면적 60㎡이하 |
2015 |
10 |
5652.0 |
0 |
2 |
Seoul |
전용면적 60㎡초과 85㎡이하 |
2015 |
10 |
5882.0 |
0 |
3 |
Seoul |
전용면적 85㎡초과 102㎡이하 |
2015 |
10 |
5721.0 |
0 |
4 |
Seoul |
전용면적 102㎡초과 |
2015 |
10 |
5879.0 |
0 |
5 |
인천 |
전체 |
2015 |
10 |
3163.0 |
0 |
6 |
인천 |
전용면적 60㎡이하 |
2015 |
10 |
3488.0 |
0 |
7 |
인천 |
전용면적 60㎡초과 85㎡이하 |
2015 |
10 |
3119.0 |
0 |
8 |
인천 |
전용면적 85㎡초과 102㎡이하 |
2015 |
10 |
3545.0 |
0 |
9 |
인천 |
전용면적 102㎡초과 |
2015 |
10 |
3408.0 |
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)
|
지역명 |
규모구분 |
연도 |
월 |
분양가 |
평가 |
0 |
Seoul |
전체 |
2015 |
10 |
5841.0 |
매우 비쌈 |
1 |
Seoul |
전용면적 60㎡이하 |
2015 |
10 |
5652.0 |
매우 비쌈 |
2 |
Seoul |
전용면적 60㎡초과 85㎡이하 |
2015 |
10 |
5882.0 |
매우 비쌈 |
3 |
Seoul |
전용면적 85㎡초과 102㎡이하 |
2015 |
10 |
5721.0 |
매우 비쌈 |
4 |
Seoul |
전용면적 102㎡초과 |
2015 |
10 |
5879.0 |
매우 비쌈 |
5 |
인천 |
전체 |
2015 |
10 |
3163.0 |
비쌈 |
6 |
인천 |
전용면적 60㎡이하 |
2015 |
10 |
3488.0 |
매우 비쌈 |
7 |
인천 |
전용면적 60㎡초과 85㎡이하 |
2015 |
10 |
3119.0 |
보통 |
8 |
인천 |
전용면적 85㎡초과 102㎡이하 |
2015 |
10 |
3545.0 |
매우 비쌈 |
9 |
인천 |
전용면적 102㎡초과 |
2015 |
10 |
3408.0 |
매우 비쌈 |
10 |
경기 |
전체 |
2015 |
10 |
3138.0 |
비쌈 |
11 |
경기 |
전용면적 60㎡이하 |
2015 |
10 |
3126.0 |
보통 |
12 |
경기 |
전용면적 60㎡초과 85㎡이하 |
2015 |
10 |
3239.0 |
비쌈 |
13 |
경기 |
전용면적 85㎡초과 102㎡이하 |
2015 |
10 |
3496.0 |
매우 비쌈 |
14 |
경기 |
전용면적 102㎡초과 |
2015 |
10 |
3680.0 |
매우 비쌈 |
15 |
부산 |
전체 |
2015 |
10 |
3112.0 |
보통 |
16 |
부산 |
전용면적 60㎡이하 |
2015 |
10 |
2950.0 |
보통 |
17 |
부산 |
전용면적 60㎡초과 85㎡이하 |
2015 |
10 |
2999.0 |
보통 |
18 |
부산 |
전용면적 85㎡초과 102㎡이하 |
2015 |
10 |
2957.0 |
보통 |
19 |
부산 |
전용면적 102㎡초과 |
2015 |
10 |
3500.0 |
매우 비쌈 |
df.groupby(by='평가').count()
|
지역명 |
규모구분 |
연도 |
월 |
분양가 |
평가 |
|
|
|
|
|
0 |
297 |
297 |
297 |
297 |
0 |
매우 비쌈 |
819 |
819 |
819 |
819 |
819 |
보통 |
1285 |
1285 |
1285 |
1285 |
1285 |
비쌈 |
352 |
352 |
352 |
352 |
352 |
저렴 |
817 |
817 |
817 |
817 |
817 |
df.sort_values(by='분양가', ascending=False)[:10]
|
지역명 |
규모구분 |
연도 |
월 |
분양가 |
평가 |
3487 |
Seoul |
전용면적 60㎡초과 85㎡이하 |
2019 |
3 |
8191.0 |
매우 비쌈 |
3402 |
Seoul |
전용면적 60㎡초과 85㎡이하 |
2019 |
2 |
8141.0 |
매우 비쌈 |
3317 |
Seoul |
전용면적 60㎡초과 85㎡이하 |
2019 |
1 |
8105.0 |
매우 비쌈 |
2638 |
Seoul |
전용면적 85㎡초과 102㎡이하 |
2018 |
5 |
8098.0 |
매우 비쌈 |
513 |
Seoul |
전용면적 85㎡초과 102㎡이하 |
2016 |
4 |
8096.0 |
매우 비쌈 |
3232 |
Seoul |
전용면적 60㎡초과 85㎡이하 |
2018 |
12 |
7890.0 |
매우 비쌈 |
1958 |
Seoul |
전용면적 85㎡초과 102㎡이하 |
2017 |
9 |
7887.0 |
매우 비쌈 |
2553 |
Seoul |
전용면적 85㎡초과 102㎡이하 |
2018 |
4 |
7823.0 |
매우 비쌈 |
2468 |
Seoul |
전용면적 85㎡초과 102㎡이하 |
2018 |
3 |
7823.0 |
매우 비쌈 |
3319 |
Seoul |
전용면적 102㎡초과 |
2019 |
1 |
7787.0 |
매우 비쌈 |
지역명 object
규모구분 object
연도 int64
월 int64
분양가 float64
평가 object
dtype: object
df['평가'] = df['평가'].astype('category')
지역명 object
규모구분 object
연도 int64
월 int64
분양가 float64
평가 category
dtype: object
|
지역명 |
규모구분 |
연도 |
월 |
분양가 |
평가 |
0 |
Seoul |
전체 |
2015 |
10 |
5841.0 |
매우 비쌈 |
1 |
Seoul |
전용면적 60㎡이하 |
2015 |
10 |
5652.0 |
매우 비쌈 |
2 |
Seoul |
전용면적 60㎡초과 85㎡이하 |
2015 |
10 |
5882.0 |
매우 비쌈 |
3 |
Seoul |
전용면적 85㎡초과 102㎡이하 |
2015 |
10 |
5721.0 |
매우 비쌈 |
4 |
Seoul |
전용면적 102㎡초과 |
2015 |
10 |
5879.0 |
매우 비쌈 |
5 |
인천 |
전체 |
2015 |
10 |
3163.0 |
비쌈 |
6 |
인천 |
전용면적 60㎡이하 |
2015 |
10 |
3488.0 |
매우 비쌈 |
7 |
인천 |
전용면적 60㎡초과 85㎡이하 |
2015 |
10 |
3119.0 |
보통 |
8 |
인천 |
전용면적 85㎡초과 102㎡이하 |
2015 |
10 |
3545.0 |
매우 비쌈 |
9 |
인천 |
전용면적 102㎡초과 |
2015 |
10 |
3408.0 |
매우 비쌈 |
0 매우 비쌈
1 매우 비쌈
2 매우 비쌈
3 매우 비쌈
4 매우 비쌈
Name: 평가, dtype: category
Categories (5, object): [0, 매우 비쌈, 보통, 비쌈, 저렴]
df['평가'].cat.categories = ['해당없음', '개비쌈', '평균', '쫌비쌈', '쌈']
0 개비쌈
1 개비쌈
2 개비쌈
3 개비쌈
4 개비쌈
Name: 평가, dtype: category
Categories (5, object): [해당없음, 개비쌈, 평균, 쫌비쌈, 쌈]
댓글남기기