12 분 소요

import warnings
warnings.filterwarnings('ignore')
from IPython.display import Image
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'NanumGothicCoding'
plt.rcParams['font.size'] = 15
import matplotlib as mpl
mpl.rcParams['axes.unicode_minus'] = False
import seaborn as sns
# !pip install plotnine  # 시각화 라이브러리 => R에 시각화 하는 방법과 유사하게 시각화 한다.
# !pip install missingno # 누락값(결측치)을 시각화 하는 라이브러리
from plotnine import *
import missingno as msno
# 데이터 다운로드 => https://www.data.go.kr/dataset/3035522/fileData.do
# 2015년 10월부터 2018년 7월까지 주택 분양 보증을 받아서 분양한 전체 민간 아파트 신규 분양가격 동향
# 현재 화면에 보이는 소스 프로그램의 위치(경로)를 보여준다.
%pwd
'D:\\kookgi_11gi\\PythonBigData\\workspace'
# 현재 화면에 보이는 소스 프로그램의 위치에 저장된 파일 목록을 보여준다.
# 현재 폴더 아래에 위치한 폴더에 저장된 파일 목록을 보고싶다면 '%ls 폴더이름'으로 실행한다.
%ls data
 D 드라이브의 볼륨에는 이름이 없습니다.
 볼륨 일련 번호: 4089-A2ED

 D:\kookgi_11gi\PythonBigData\workspace\data 디렉터리

2021-11-08  오전 11:19    <DIR>          .
2021-11-08  오전 11:19    <DIR>          ..
2020-03-24  오후 10:45           326,362 a_new_hope.txt
2020-03-24  오후 10:09           148,570 alice.txt
2020-03-24  오후 11:22           416,516 alice_color.png
2020-03-24  오후 10:09             7,339 alice_mask.png
2021-11-03  오후 01:42               587 concat.zip
2018-09-05  오전 11:23                61 concat_1.csv
2018-09-05  오전 11:23                61 concat_2.csv
2018-09-05  오전 11:23                69 concat_3.csv
2018-09-05  오전 11:23             5,796 country_timeseries.csv
2018-09-05  오전 11:23            83,637 gapminder.tsv
2020-03-25  오전 12:30            99,957 korea_mask.jpg
2021-11-04  오전 09:28             1,063 merge.zip
2018-09-05  오전 11:23               984 pew.csv
2020-06-17  오후 03:09           131,206 preSale_2018_6.csv
2018-09-05  오전 11:23               442 scientists.csv
2021-09-15  오후 08:08            45,122 Seattle2014.csv
2020-03-24  오후 10:46            12,601 stormtrooper_mask.png
2018-09-05  오전 11:23               128 survey_person.csv
2018-09-05  오전 11:23                78 survey_site.csv
2018-09-05  오전 11:23               413 survey_survey.csv
2018-09-05  오전 11:23               177 survey_visited.csv
2020-03-25  오전 12:45            26,392 wordData.txt
2021-11-08  오전 11:19            28,146 분양가.zip
2020-06-17  오후 03:09           131,206 전국_평균_분양가격_2018.6월_.csv
              24개 파일           1,466,913 바이트
               2개 디렉터리  958,804,938,752 바이트 남음
# read_csv() 함수로 읽어들이는 csv 파일이 한글 인코딩 문제로 에러가 발생되서 읽어오지 못할 경우가 있다.
# pd.read_csv('./data/전국_평균_분양가격_2018.6월_.csv') # 이 문장에서 에러가 발생된다면 아래와 같이 실행한다.
# pd.read_csv('./data/전국_평균_분양가격_2018.6월_.csv', encoding='euc-kr', engine='python')
pre_sale = pd.read_csv('./data/preSale_2018_6.csv')
pre_sale.shape
(2805, 5)
pre_sale.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
pre_sale.tail()
지역명 규모구분 연도 분양가격(㎡)
2800 제주 전체 2018 6 3925
2801 제주 전용면적 60㎡이하 2018 6 5462
2802 제주 전용면적 60㎡초과 85㎡이하 2018 6 3639
2803 제주 전용면적 85㎡초과 102㎡이하 2018 6 NaN
2804 제주 전용면적 102㎡초과 2018 6 3029
# dtypes 속성이나 info() 함수를 이용해서 데이터프레임을 구성하는 데이터 타입을 확인하고 필요하다면 데이터 타입을 변경한다.
pre_sale.dtypes
지역명        object
규모구분       object
연도          int64
월           int64
분양가격(㎡)    object
dtype: object
pre_sale.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 2805 entries, 0 to 2804
Data columns (total 5 columns):
 #   Column   Non-Null Count  Dtype 
---  ------   --------------  ----- 
 0   지역명      2805 non-null   object
 1   규모구분     2805 non-null   object
 2   연도       2805 non-null   int64 
 3   월        2805 non-null   int64 
 4   분양가격(㎡)  2674 non-null   object
dtypes: int64(2), object(3)
memory usage: 109.7+ KB
# 연도와 월은 연산에 사용할 데이터가 아니라 구분에 사용되는 데이터이므로 문자열 형태로 변환한다.
pre_sale['연도'] = pre_sale['연도'].astype(str)
pre_sale['월'] = pre_sale['월'].astype(str)
pre_sale.dtypes
지역명        object
규모구분       object
연도         object
월          object
분양가격(㎡)    object
dtype: object
# 분양가격 데이터 타입을 숫자로 변경하고 평당분양가격을 계산한다.
# pre_sale['분양가격(㎡)'] = pre_sale['분양가격(㎡)'].astype(float)
# to_numeric() 함수의 error 속성을 coerce로 지정하면 오류가 발생된 데이터를 누락값으로 변경한다.
pre_sale['분양가격(㎡)'] = pd.to_numeric(pre_sale['분양가격(㎡)'], errors='coerce')
pre_sale['평당분양가격'] = pre_sale['분양가격(㎡)'] * 3.3
pre_sale.dtypes
지역명         object
규모구분        object
연도          object
월           object
분양가격(㎡)    float64
평당분양가격     float64
dtype: object
pre_sale.head()
지역명 규모구분 연도 분양가격(㎡) 평당분양가격
0 서울 전체 2015 10 5841.0 19275.3
1 서울 전용면적 60㎡이하 2015 10 5652.0 18651.6
2 서울 전용면적 60㎡초과 85㎡이하 2015 10 5882.0 19410.6
3 서울 전용면적 85㎡초과 102㎡이하 2015 10 5721.0 18879.3
4 서울 전용면적 102㎡초과 2015 10 5879.0 19400.7
# isnull() 또는 isna() 함수와 sum() 함수를 사용해서 누락값이 존재하는가 확인하기
print(pre_sale.isnull().sum())
print(pre_sale.isna().sum())
지역명          0
규모구분         0
연도           0
월            0
분양가격(㎡)    223
평당분양가격     223
dtype: int64
지역명          0
규모구분         0
연도           0
월            0
분양가격(㎡)    223
평당분양가격     223
dtype: int64
# missingno 라이브러리로 그래프를 그려서 누락값 확인하기 => 중간 중간에 흰색으로 보이는 부분이 누락값이다.
msno.matrix(pre_sale, figsize=[10, 6])
plt.show()

output_14_0

# 2017년 데이터만 추출한다.
pre_sale_2017 = pre_sale[pre_sale['연도'] == '2017']
pre_sale_2017
지역명 규모구분 연도 분양가격(㎡) 평당분양가격
1275 서울 전체 2017 1 6450.0 21285.0
1276 서울 전용면적 60㎡이하 2017 1 6662.0 21984.6
1277 서울 전용면적 60㎡초과 85㎡이하 2017 1 6500.0 21450.0
1278 서울 전용면적 85㎡초과 102㎡이하 2017 1 7030.0 23199.0
1279 서울 전용면적 102㎡초과 2017 1 6771.0 22344.3
... ... ... ... ... ... ...
2290 제주 전체 2017 12 3578.0 11807.4
2291 제주 전용면적 60㎡이하 2017 12 5380.0 17754.0
2292 제주 전용면적 60㎡초과 85㎡이하 2017 12 3467.0 11441.1
2293 제주 전용면적 85㎡초과 102㎡이하 2017 12 NaN NaN
2294 제주 전용면적 102㎡초과 2017 12 3029.0 9995.7

1020 rows × 6 columns

pre_sale['지역명'].value_counts() # 시도별 데이터가 동일하게 저장되어 있다.
전북    165
전남    165
울산    165
경북    165
서울    165
제주    165
충북    165
광주    165
강원    165
경남    165
부산    165
충남    165
인천    165
경기    165
대구    165
대전    165
세종    165
Name: 지역명, dtype: int64
pre_sale['규모구분'].value_counts() # 규모구분별 데이터가 동일하게 저장되어 있다.
전체                   561
전용면적 60㎡초과 85㎡이하     561
전용면적 60㎡이하           561
전용면적 102㎡초과          561
전용면적 85㎡초과 102㎡이하    561
Name: 규모구분, dtype: int64

전국 평균 분양 가격

# pd.options.display.float_format 속성을 사용해서 데이터프레임에 저장된 숫자 데이터가 화면에 표시될 출력 서식을 지정할 수 있다.
# 출력서식 {:,.1f}는 천 단위마다 ','를 출력하고 '.'뒤의 숫자만큼 소수점 아래 자리수를 표현한다.
# 'f'를 붙이지 않으면 실수가 'e'를 사용하는 지수 형태로 표현된다.
pd.options.display.float_format = '{:,.1f}'.format
# describe() 함수로 데이터프레임에 저장된 숫자 데이터의 요약 통계량을 확인 할 수 있다.
pre_sale.groupby(pre_sale['연도']).describe()
분양가격(㎡) 평당분양가격
count mean std min 25% 50% 75% max count mean std min 25% 50% 75% max
연도
2015 243.0 2,788.7 976.9 1,868.0 2,225.0 2,516.0 3,025.5 7,092.0 243.0 9,202.7 3,223.6 6,164.4 7,342.5 8,302.8 9,984.1 23,403.6
2016 984.0 2,934.2 1,071.4 1,900.0 2,282.0 2,672.0 3,148.5 8,096.0 984.0 9,683.0 3,535.8 6,270.0 7,530.6 8,817.6 10,390.0 26,716.8
2017 899.0 3,139.5 1,107.6 1,976.0 2,365.0 2,849.0 3,456.0 7,887.0 899.0 10,360.5 3,655.0 6,520.8 7,804.5 9,401.7 11,404.8 26,027.1
2018 456.0 3,299.4 1,199.3 2,076.0 2,470.5 2,912.5 3,647.2 8,098.0 456.0 10,888.1 3,957.7 6,850.8 8,152.6 9,611.2 12,035.9 26,723.4
# describe() 함수 실행 결과에 'T' 속성을 지정하면 요약 통계량이 전치되서 수직 방향으로 출력된다.
pre_sale.groupby(pre_sale['연도']).describe().T 
연도 2015 2016 2017 2018
분양가격(㎡) count 243.0 984.0 899.0 456.0
mean 2,788.7 2,934.2 3,139.5 3,299.4
std 976.9 1,071.4 1,107.6 1,199.3
min 1,868.0 1,900.0 1,976.0 2,076.0
25% 2,225.0 2,282.0 2,365.0 2,470.5
50% 2,516.0 2,672.0 2,849.0 2,912.5
75% 3,025.5 3,148.5 3,456.0 3,647.2
max 7,092.0 8,096.0 7,887.0 8,098.0
평당분양가격 count 243.0 984.0 899.0 456.0
mean 9,202.7 9,683.0 10,360.5 10,888.1
std 3,223.6 3,535.8 3,655.0 3,957.7
min 6,164.4 6,270.0 6,520.8 6,850.8
25% 7,342.5 7,530.6 7,804.5 8,152.6
50% 8,302.8 8,817.6 9,401.7 9,611.2
75% 9,984.1 10,390.0 11,404.8 12,035.9
max 23,403.6 26,716.8 26,027.1 26,723.4
pre_sale.groupby(pre_sale.연도).describe().T 
연도 2015 2016 2017 2018
분양가격(㎡) count 243.0 984.0 899.0 456.0
mean 2,788.7 2,934.2 3,139.5 3,299.4
std 976.9 1,071.4 1,107.6 1,199.3
min 1,868.0 1,900.0 1,976.0 2,076.0
25% 2,225.0 2,282.0 2,365.0 2,470.5
50% 2,516.0 2,672.0 2,849.0 2,912.5
75% 3,025.5 3,148.5 3,456.0 3,647.2
max 7,092.0 8,096.0 7,887.0 8,098.0
평당분양가격 count 243.0 984.0 899.0 456.0
mean 9,202.7 9,683.0 10,360.5 10,888.1
std 3,223.6 3,535.8 3,655.0 3,957.7
min 6,164.4 6,270.0 6,520.8 6,850.8
25% 7,342.5 7,530.6 7,804.5 8,152.6
50% 8,302.8 8,817.6 9,401.7 9,611.2
75% 9,984.1 10,390.0 11,404.8 12,035.9
max 23,403.6 26,716.8 26,027.1 26,723.4

전국 규모별 평균 분양 가격

# pivot_table(values, index[, columns, aggfunc, fill_value])
# values: 통계 함수를 적용할 데이터프레임의 열을 지정한다.
# index: 그룹화의 첫 번째 기준으로 사용되는 피벗 테이블로 가져올 데이터프레임의 열을 지정한다. => 행 데이터
# columns: 그룹화의 두 번째 기준으로 사용되는 피벗 테이블로 가져올 데이터프레임의 열을 지정한다. => 열 데이터
# aggfunc: index와 columns로 그룹화된 values에 적용할 함수를 지정한다. => 기본값은 평균을 계산하는 함수 mean 이다.
# fill_value: NaN을 대체할 값을 지정한다. => 주로 0을 사용한다.
pre_sale.pivot_table('평당분양가격', '규모구분', '연도')
연도 2015 2016 2017 2018
규모구분
전용면적 102㎡초과 9,837.2 10,388.7 11,334.5 11,259.8
전용면적 60㎡이하 8,951.5 9,398.9 10,246.1 10,957.3
전용면적 60㎡초과 85㎡이하 8,891.8 9,296.0 9,825.0 10,438.1
전용면적 85㎡초과 102㎡이하 9,518.5 10,122.4 10,540.4 11,456.8
전체 8,893.0 9,293.0 9,901.3 10,560.3
# 규모구분이 전체로 되어있는 금액으로면 연도별 변동 금액을 살펴보자
# 규모구분이 전체인 데이터만 추출한다.
region_year_all = pre_sale[pre_sale['규모구분'] == '전체']
region_year_all
지역명 규모구분 연도 분양가격(㎡) 평당분양가격
0 서울 전체 2015 10 5,841.0 19,275.3
5 인천 전체 2015 10 3,163.0 10,437.9
10 경기 전체 2015 10 3,138.0 10,355.4
15 부산 전체 2015 10 3,112.0 10,269.6
20 대구 전체 2015 10 2,682.0 8,850.6
... ... ... ... ... ... ...
2780 전북 전체 2018 6 2,326.0 7,675.8
2785 전남 전체 2018 6 2,356.0 7,774.8
2790 경북 전체 2018 6 2,631.0 8,682.3
2795 경남 전체 2018 6 2,695.0 8,893.5
2800 제주 전체 2018 6 3,925.0 12,952.5

561 rows × 6 columns

# regoin_year = region_year_all.pivot_table('평당분양가격', '지역명', '연도')
region_year = region_year_all.pivot_table('평당분양가격', '지역명', '연도').reset_index()
print(region_year.columns)
print(region_year.columns.name)
region_year.columns.name = ''
print(region_year.columns)
region_year
Index(['지역명', '2015', '2016', '2017', '2018'], dtype='object', name='연도')
연도
Index(['지역명', '2015', '2016', '2017', '2018'], dtype='object', name='')
지역명 2015 2016 2017 2018
0 강원 7,159.9 7,011.1 7,126.8 7,642.8
1 경기 10,377.4 11,220.0 11,850.0 12,854.0
2 경남 7,585.6 7,847.9 8,119.8 8,894.0
3 경북 7,170.9 7,360.7 7,794.9 8,261.6
4 광주 8,052.0 8,898.7 9,463.5 9,629.9
5 대구 9,232.3 10,310.0 11,455.8 11,651.7
6 대전 8,098.2 8,501.6 9,044.7 9,588.7
7 부산 10,307.0 10,429.9 11,577.9 12,709.9
8 서울 19,725.2 20,663.5 21,375.9 22,299.2
9 세종 8,750.5 8,860.5 9,135.3 10,381.8
10 울산 10,052.9 10,208.6 11,345.1 10,440.6
11 인천 10,484.1 10,532.5 10,736.7 11,218.4
12 전남 6,317.3 6,488.6 7,187.7 7,794.1
13 전북 6,703.4 6,417.9 7,057.8 7,552.1
14 제주 7,405.2 9,129.2 10,830.9 12,740.8
15 충남 7,114.8 7,330.7 7,456.2 7,972.8
16 충북 6,645.1 6,770.2 6,762.6 7,893.1

전국 지역별 평당분양가격 변동 금액

region_year['변동금액'] = region_year['2018'] - region_year['2015']
region_year
지역명 2015 2016 2017 2018 변동금액
0 강원 7,159.9 7,011.1 7,126.8 7,642.8 482.9
1 경기 10,377.4 11,220.0 11,850.0 12,854.0 2,476.6
2 경남 7,585.6 7,847.9 8,119.8 8,894.0 1,308.4
3 경북 7,170.9 7,360.7 7,794.9 8,261.6 1,090.7
4 광주 8,052.0 8,898.7 9,463.5 9,629.9 1,577.9
5 대구 9,232.3 10,310.0 11,455.8 11,651.7 2,419.4
6 대전 8,098.2 8,501.6 9,044.7 9,588.7 1,490.5
7 부산 10,307.0 10,429.9 11,577.9 12,709.9 2,403.0
8 서울 19,725.2 20,663.5 21,375.9 22,299.2 2,574.0
9 세종 8,750.5 8,860.5 9,135.3 10,381.8 1,631.3
10 울산 10,052.9 10,208.6 11,345.1 10,440.6 387.7
11 인천 10,484.1 10,532.5 10,736.7 11,218.4 734.3
12 전남 6,317.3 6,488.6 7,187.7 7,794.1 1,476.8
13 전북 6,703.4 6,417.9 7,057.8 7,552.1 848.7
14 제주 7,405.2 9,129.2 10,830.9 12,740.8 5,335.6
15 충남 7,114.8 7,330.7 7,456.2 7,972.8 858.0
16 충북 6,645.1 6,770.2 6,762.6 7,893.1 1,248.0
# print(region_year['변동금액'].max())
# print(np.max(region_year['변동금액']))
max_delta_price = np.max(region_year['변동금액'])
print('2015년부터 2018년까지 분양가는 계속 상승했으며, 상승금액이 가장 큰 지역은 제주로 상승액은 평당 {:,.1f} 이다.'.
      format(max_delta_price))
2015년부터 2018년까지 분양가는 계속 상승했으며, 상승금액이 가장 큰 지역은 제주로 상승액은 평당 5,335.6 이다.
min_delta_price = np.min(region_year['변동금액'])
min_delta_price
387.7499999999982
mean_delta_price = np.mean(region_year['변동금액'])
mean_delta_price
1667.276470588235

plotnine 패키지를 이용한 시각화

# 전국 지역별 평균 분양 가격 시각화
# ggplot(데이터프레임, aes(x='x축 데이터', y='y축 데이터', fill='범례'))
# geom_bar(stat='identity'): 막대 그래프, position 옵션을 지정하지 않으면 누적 막대그래프가 작성되고 'dodge'로 지정하면 일반
# 막대 그래프가 작성된다.
ggplot(region_year_all, aes(x='지역명', y='평당분양가격', fill='연도')) \
    + geom_bar(stat='identity', position='dodge') \
    + ggtitle('2015 ~ 2018년 신규 민간 아파트 분양 가격') \
    + theme(text=element_text(family='NanumGothicCoding'), figure_size=[10, 6])

output_33_0

<ggplot: (-9223371876932408660)>
(ggplot(region_year_all, aes(x='지역명', y='평당분양가격', fill='연도'))
    + geom_bar(stat='identity', position='dodge')
    + ggtitle('2015 ~ 2018년 신규 민간 아파트 분양 가격')
    + theme(text=element_text(family='NanumGothicCoding'), figure_size=[10, 6]))

output_34_0

<ggplot: (159922603752)>
# 규모별 지역별 평당분양가격 합계
pre_sale.pivot_table('평당분양가격', '규모구분', '지역명', sum)
지역명 강원 경기 경남 경북 광주 대구 대전 부산 서울 세종 울산 인천 전남 전북 제주 충남 충북
규모구분
전용면적 102㎡초과 251,862.6 435,246.9 295,092.6 274,744.8 269,910.3 393,699.9 171,388.8 402,675.9 705,104.4 296,280.6 249,361.2 428,904.3 241,589.7 249,381.0 302,606.7 271,256.7 252,813.0
전용면적 60㎡이하 229,911.0 393,587.7 266,250.6 244,675.2 229,336.8 360,112.5 282,097.2 341,002.2 703,220.1 253,984.5 224,119.5 347,298.6 223,360.5 229,878.0 382,206.0 248,707.8 222,436.5
전용면적 60㎡초과 85㎡이하 230,914.2 372,794.4 258,815.7 245,028.3 293,092.8 348,450.3 280,919.1 356,330.7 662,966.7 295,584.3 340,827.3 342,998.7 222,182.4 219,789.9 317,047.5 239,484.3 224,594.7
전용면적 85㎡초과 102㎡이하 182,688.0 384,918.6 314,694.6 219,407.1 176,625.9 227,924.4 234,973.2 351,063.9 758,844.9 294,726.3 115,193.1 361,142.1 251,446.8 232,158.3 236,359.2 236,662.8 260,637.3
전체 229,864.8 373,246.5 259,614.3 245,153.7 292,818.9 347,341.5 283,338.0 359,696.7 676,067.7 295,356.6 340,101.3 343,256.1 222,644.4 220,073.7 327,350.1 239,167.5 222,924.9
# 규모별 지역별 평당분양가격 합계 시각화
ggplot(pre_sale, aes(x='지역명', y='평당분양가격', fill='규모구분')) \
    + geom_bar(stat='identity', position='dodge') \
    + ggtitle('규모별 신규 민간 아파트 분양가격') \
    + theme(text=element_text(family='NanumGothicCoding'), figure_size=[10, 6])

output_36_0

<ggplot: (159923720673)>
# 위의 그래프를 지역별로 보자
ggplot(pre_sale, aes(x='연도', y='평당분양가격', fill='규모구분')) \
    + geom_bar(stat='identity', position='dodge') \
    + facet_wrap('지역명') \
    + ggtitle('규모별 신규 민간 아파트 분양가격') \
    + theme(text=element_text(family='NanumGothicCoding'), figure_size=[18, 10], axis_text_x=element_text(rotation=45))

output_37_0

<ggplot: (-9223371876934239842)>
# boxplot을 그려보자
ggplot(pre_sale, aes(x='지역명', y='평당분양가격', fill='규모구분')) \
    + geom_boxplot() \
    + ggtitle('규모별 신규 민간 아파트 분양가격') \
    + theme(text=element_text(family='NanumGothicCoding'), figure_size=[10, 6])

output_38_0

<ggplot: (159922671494)>
# 사업 규모가 가장 큰 서울
pre_sale_seoul = pre_sale[pre_sale['지역명'] == '서울']
pre_sale_seoul
지역명 규모구분 연도 분양가격(㎡) 평당분양가격
0 서울 전체 2015 10 5,841.0 19,275.3
1 서울 전용면적 60㎡이하 2015 10 5,652.0 18,651.6
2 서울 전용면적 60㎡초과 85㎡이하 2015 10 5,882.0 19,410.6
3 서울 전용면적 85㎡초과 102㎡이하 2015 10 5,721.0 18,879.3
4 서울 전용면적 102㎡초과 2015 10 5,879.0 19,400.7
... ... ... ... ... ... ...
2720 서울 전체 2018 6 6,694.0 22,090.2
2721 서울 전용면적 60㎡이하 2018 6 7,232.0 23,865.6
2722 서울 전용면적 60㎡초과 85㎡이하 2018 6 6,739.0 22,238.7
2723 서울 전용면적 85㎡초과 102㎡이하 2018 6 7,591.0 25,050.3
2724 서울 전용면적 102㎡초과 2018 6 6,905.0 22,786.5

165 rows × 6 columns

ggplot(pre_sale_seoul, aes(x='연도', y='평당분양가격', fill='규모구분')) \
    + geom_boxplot() \
    + ggtitle('규모별 신규 민간 아파트 분양가격') \
    + theme(text=element_text(family='NanumGothicCoding'), figure_size=[10, 6])

output_40_0

<ggplot: (-9223371876932144170)>
# 분양가 차이가 가장 큰 제주
pre_sale_jeju = pre_sale[pre_sale['지역명'] == '제주']
pre_sale_jeju
지역명 규모구분 연도 분양가격(㎡) 평당분양가격
80 제주 전체 2015 10 2,232.0 7,365.6
81 제주 전용면적 60㎡이하 2015 10 nan nan
82 제주 전용면적 60㎡초과 85㎡이하 2015 10 2,225.0 7,342.5
83 제주 전용면적 85㎡초과 102㎡이하 2015 10 2,583.0 8,523.9
84 제주 전용면적 102㎡초과 2015 10 2,574.0 8,494.2
... ... ... ... ... ... ...
2800 제주 전체 2018 6 3,925.0 12,952.5
2801 제주 전용면적 60㎡이하 2018 6 5,462.0 18,024.6
2802 제주 전용면적 60㎡초과 85㎡이하 2018 6 3,639.0 12,008.7
2803 제주 전용면적 85㎡초과 102㎡이하 2018 6 nan nan
2804 제주 전용면적 102㎡초과 2018 6 3,029.0 9,995.7

165 rows × 6 columns

ggplot(pre_sale_jeju, aes(x='연도', y='평당분양가격', fill='규모구분')) \
    + geom_boxplot() \
    + ggtitle('규모별 신규 민간 아파트 분양가격') \
    + theme(text=element_text(family='NanumGothicCoding'), figure_size=[10, 6])

output_42_0

<ggplot: (159920748401)>
# 분양가 차이가 가장 작은 울산
pre_sale_ulsan = pre_sale[pre_sale['지역명'] == '울산']
pre_sale_ulsan
지역명 규모구분 연도 분양가격(㎡) 평당분양가격
35 울산 전체 2015 10 3,053.0 10,074.9
36 울산 전용면적 60㎡이하 2015 10 2,422.0 7,992.6
37 울산 전용면적 60㎡초과 85㎡이하 2015 10 3,040.0 10,032.0
38 울산 전용면적 85㎡초과 102㎡이하 2015 10 2,951.0 9,738.3
39 울산 전용면적 102㎡초과 2015 10 2,690.0 8,877.0
... ... ... ... ... ... ...
2755 울산 전체 2018 6 3,125.0 10,312.5
2756 울산 전용면적 60㎡이하 2018 6 nan nan
2757 울산 전용면적 60㎡초과 85㎡이하 2018 6 3,125.0 10,312.5
2758 울산 전용면적 85㎡초과 102㎡이하 2018 6 nan nan
2759 울산 전용면적 102㎡초과 2018 6 nan nan

165 rows × 6 columns

ggplot(pre_sale_ulsan, aes(x='연도', y='평당분양가격', fill='규모구분')) \
    + geom_boxplot() \
    + ggtitle('규모별 신규 민간 아파트 분양가격') \
    + theme(text=element_text(family='NanumGothicCoding'), figure_size=[10, 6])

output_44_0

<ggplot: (159922955952)>

태그:

카테고리:

업데이트:

댓글남기기