서울특별시 부동산 실거래 API 활용 불러오기
1. 서울특별시 부동산 XML 형태 가져오기
1-1. 라이브러리 설치
# 라이브러리 가져오기
import lxml
import requests
from bs4 import BeautifulSoup
import pandas as pd
import time
import math
1-2. 인증키와 URL 가져오기
service_key = ''
url = f'http://openapi.seoul.go.kr:8088/{service_key}/xml/tbLnOpendataRtmsV/1/5/'
print(url)
http://openapi.seoul.go.kr:8088/596a6f71646a616e37305945544979/xml/tbLnOpendataRtmsV/1/5/
1-3. 데이터 요청
req = requests.get(url)
req.content
b'<?xml version="1.0" encoding="UTF-8"?>\n<tbLnOpendataRtmsV>\n<list_total_count>2664624</list_total_count>\n<RESULT>\n<CODE>INFO-000</CODE>\n<MESSAGE>\xec\xa0\x95\xec\x83\x81 \xec\xb2\x98\xeb\xa6\xac\xeb\x90\x98\xec\x97\x88\xec\x8a\xb5\xeb\x8b\x88\xeb\x8b\xa4</MESSAGE>\n</RESULT>\n<row>\n<ACC_YEAR>2023</ACC_YEAR>\n<SGG_CD>11500</SGG_CD>\n<SGG_NM>\xea\xb0\x95\xec\x84\x9c\xea\xb5\xac</SGG_NM>\n<BJDONG_CD>10300</BJDONG_CD>\n<BJDONG_NM>\xed\x99\x94\xea\xb3\xa1\xeb\x8f\x99</BJDONG_NM>\n<LAND_GBN>1</LAND_GBN>\n<LAND_GBN_NM>\xeb\x8c\x80\xec\xa7\x80</LAND_GBN_NM>\n<BONBEON>0851</BONBEON>\n<BUBEON>0033</BUBEON>\n<BLDG_NM>SK\xed\x8c\x8c\xed\x81\xac\xeb\xa6\xac\xec\x9b\x80(851-33)</BLDG_NM>\n<DEAL_YMD>20230609</DEAL_YMD>\n<OBJ_AMT>29500</OBJ_AMT>\n<BLDG_AREA>26.12</BLDG_AREA>\n<TOT_AREA>15.910000</TOT_AREA>\n<FLOOR>3</FLOOR>\n<RIGHT_GBN/>\n<CNTL_YMD/>\n<BUILD_YEAR>2022</BUILD_YEAR>\n<HOUSE_TYPE>\xec\x97\xb0\xeb\xa6\xbd\xeb\x8b\xa4\xec\x84\xb8\xeb\x8c\x80</HOUSE_TYPE>\n<REQ_GBN>\xec\xa7\x81\xea\xb1\xb0\xeb\x9e\x98</REQ_GBN>\n<RDEALER_LAWDNM/>\n</row>\n<row>\n<ACC_YEAR>2023</ACC_YEAR>\n<SGG_CD>11215</SGG_CD>\n<SGG_NM>\xea\xb4\x91\xec\xa7\x84\xea\xb5\xac</SGG_NM>\n<BJDONG_CD>10700</BJDONG_CD>\n<BJDONG_NM>\xed\x99\x94\xec\x96\x91\xeb\x8f\x99</BJDONG_NM>\n<LAND_GBN>1</LAND_GBN>\n<LAND_GBN_NM>\xeb\x8c\x80\xec\xa7\x80</LAND_GBN_NM>\n<BONBEON>0111</BONBEON>\n<BUBEON>0012</BUBEON>\n<BLDG_NM/>\n<DEAL_YMD>20230609</DEAL_YMD>\n<OBJ_AMT>26500</OBJ_AMT>\n<BLDG_AREA>16.88</BLDG_AREA>\n<TOT_AREA>29.900000</TOT_AREA>\n<FLOOR>3</FLOOR>\n<RIGHT_GBN/>\n<CNTL_YMD/>\n<BUILD_YEAR>2021</BUILD_YEAR>\n<HOUSE_TYPE>\xec\x98\xa4\xed\x94\xbc\xec\x8a\xa4\xed\x85\x94</HOUSE_TYPE>\n<REQ_GBN>\xec\xa4\x91\xea\xb0\x9c\xea\xb1\xb0\xeb\x9e\x98</REQ_GBN>\n<RDEALER_LAWDNM>\xec\x84\x9c\xec\x9a\xb8 \xec\xa4\x91\xea\xb5\xac</RDEALER_LAWDNM>\n</row>\n<row>\n<ACC_YEAR>2023</ACC_YEAR>\n<SGG_CD>11500</SGG_CD>\n<SGG_NM>\xea\xb0\x95\xec\x84\x9c\xea\xb5\xac</SGG_NM>\n<BJDONG_CD>10300</BJDONG_CD>\n<BJDONG_NM>\xed\x99\x94\xea\xb3\xa1\xeb\x8f\x99</BJDONG_NM>\n<LAND_GBN>1</LAND_GBN>\n<LAND_GBN_NM>\xeb\x8c\x80\xec\xa7\x80</LAND_GBN_NM>\n<BONBEON>0105</BONBEON>\n<BUBEON>0020</BUBEON>\n<BLDG_NM>(105-20)</BLDG_NM>\n<DEAL_YMD>20230609</DEAL_YMD>\n<OBJ_AMT>24000</OBJ_AMT>\n<BLDG_AREA>62.64</BLDG_AREA>\n<TOT_AREA>36.690000</TOT_AREA>\n<FLOOR>3</FLOOR>\n<RIGHT_GBN/>\n<CNTL_YMD/>\n<BUILD_YEAR>2011</BUILD_YEAR>\n<HOUSE_TYPE>\xec\x97\xb0\xeb\xa6\xbd\xeb\x8b\xa4\xec\x84\xb8\xeb\x8c\x80</HOUSE_TYPE>\n<REQ_GBN>\xec\xa4\x91\xea\xb0\x9c\xea\xb1\xb0\xeb\x9e\x98</REQ_GBN>\n<RDEALER_LAWDNM>\xec\x84\x9c\xec\x9a\xb8 \xea\xb0\x95\xec\x84\x9c\xea\xb5\xac</RDEALER_LAWDNM>\n</row>\n<row>\n<ACC_YEAR>2023</ACC_YEAR>\n<SGG_CD>11500</SGG_CD>\n<SGG_NM>\xea\xb0\x95\xec\x84\x9c\xea\xb5\xac</SGG_NM>\n<BJDONG_CD>10300</BJDONG_CD>\n<BJDONG_NM>\xed\x99\x94\xea\xb3\xa1\xeb\x8f\x99</BJDONG_NM>\n<LAND_GBN>1</LAND_GBN>\n<LAND_GBN_NM>\xeb\x8c\x80\xec\xa7\x80</LAND_GBN_NM>\n<BONBEON>0851</BONBEON>\n<BUBEON>0033</BUBEON>\n<BLDG_NM>SK\xed\x8c\x8c\xed\x81\xac\xeb\xa6\xac\xec\x9b\x80(851-33)</BLDG_NM>\n<DEAL_YMD>20230609</DEAL_YMD>\n<OBJ_AMT>30500</OBJ_AMT>\n<BLDG_AREA>28.54</BLDG_AREA>\n<TOT_AREA>17.060000</TOT_AREA>\n<FLOOR>2</FLOOR>\n<RIGHT_GBN/>\n<CNTL_YMD/>\n<BUILD_YEAR>2022</BUILD_YEAR>\n<HOUSE_TYPE>\xec\x97\xb0\xeb\xa6\xbd\xeb\x8b\xa4\xec\x84\xb8\xeb\x8c\x80</HOUSE_TYPE>\n<REQ_GBN>\xec\xa7\x81\xea\xb1\xb0\xeb\x9e\x98</REQ_GBN>\n<RDEALER_LAWDNM/>\n</row>\n<row>\n<ACC_YEAR>2023</ACC_YEAR>\n<SGG_CD>11470</SGG_CD>\n<SGG_NM>\xec\x96\x91\xec\xb2\x9c\xea\xb5\xac</SGG_NM>\n<BJDONG_CD>10300</BJDONG_CD>\n<BJDONG_NM>\xec\x8b\xa0\xec\x9b\x94\xeb\x8f\x99</BJDONG_NM>\n<LAND_GBN>1</LAND_GBN>\n<LAND_GBN_NM>\xeb\x8c\x80\xec\xa7\x80</LAND_GBN_NM>\n<BONBEON>0410</BONBEON>\n<BUBEON>0026</BUBEON>\n<BLDG_NM>\xed\x9c\xb4\xeb\xa8\xbc\xed\x8c\x8c\xed\x81\xac\xed\x83\x80\xec\x9a\xb4(410-26)</BLDG_NM>\n<DEAL_YMD>20230609</DEAL_YMD>\n<OBJ_AMT>16000</OBJ_AMT>\n<BLDG_AREA>29.2</BLDG_AREA>\n<TOT_AREA>21.960000</TOT_AREA>\n<FLOOR>2</FLOOR>\n<RIGHT_GBN/>\n<CNTL_YMD/>\n<BUILD_YEAR>2011</BUILD_YEAR>\n<HOUSE_TYPE>\xec\x97\xb0\xeb\xa6\xbd\xeb\x8b\xa4\xec\x84\xb8\xeb\x8c\x80</HOUSE_TYPE>\n<REQ_GBN>\xec\xa4\x91\xea\xb0\x9c\xea\xb1\xb0\xeb\x9e\x98</REQ_GBN>\n<RDEALER_LAWDNM>\xec\x84\x9c\xec\x9a\xb8 \xec\x96\x91\xec\xb2\x9c\xea\xb5\xac</RDEALER_LAWDNM>\n</row>\n</tbLnOpendataRtmsV>\n'
soup = BeautifulSoup(req.content, "lxml") # XML 파싱
print(soup)
<?xml version="1.0" encoding="UTF-8"?><html><body><tblnopendatartmsv>
<list_total_count>2664624</list_total_count>
<result>
<code>INFO-000</code>
<message>정상 처리되었습니다</message>
</result>
<row>
<acc_year>2023</acc_year>
<sgg_cd>11500</sgg_cd>
<sgg_nm>강서구</sgg_nm>
<bjdong_cd>10300</bjdong_cd>
<bjdong_nm>화곡동</bjdong_nm>
<land_gbn>1</land_gbn>
<land_gbn_nm>대지</land_gbn_nm>
<bonbeon>0851</bonbeon>
<bubeon>0033</bubeon>
<bldg_nm>SK파크리움(851-33)</bldg_nm>
<deal_ymd>20230609</deal_ymd>
<obj_amt>29500</obj_amt>
<bldg_area>26.12</bldg_area>
<tot_area>15.910000</tot_area>
<floor>3</floor>
<right_gbn></right_gbn>
<cntl_ymd></cntl_ymd>
<build_year>2022</build_year>
<house_type>연립다세대</house_type>
<req_gbn>직거래</req_gbn>
<rdealer_lawdnm></rdealer_lawdnm>
</row>
<row>
<acc_year>2023</acc_year>
<sgg_cd>11215</sgg_cd>
<sgg_nm>광진구</sgg_nm>
<bjdong_cd>10700</bjdong_cd>
<bjdong_nm>화양동</bjdong_nm>
<land_gbn>1</land_gbn>
<land_gbn_nm>대지</land_gbn_nm>
<bonbeon>0111</bonbeon>
<bubeon>0012</bubeon>
<bldg_nm></bldg_nm>
<deal_ymd>20230609</deal_ymd>
<obj_amt>26500</obj_amt>
<bldg_area>16.88</bldg_area>
<tot_area>29.900000</tot_area>
<floor>3</floor>
<right_gbn></right_gbn>
<cntl_ymd></cntl_ymd>
<build_year>2021</build_year>
<house_type>오피스텔</house_type>
<req_gbn>중개거래</req_gbn>
<rdealer_lawdnm>서울 중구</rdealer_lawdnm>
</row>
<row>
<acc_year>2023</acc_year>
<sgg_cd>11500</sgg_cd>
<sgg_nm>강서구</sgg_nm>
<bjdong_cd>10300</bjdong_cd>
<bjdong_nm>화곡동</bjdong_nm>
<land_gbn>1</land_gbn>
<land_gbn_nm>대지</land_gbn_nm>
<bonbeon>0105</bonbeon>
<bubeon>0020</bubeon>
<bldg_nm>(105-20)</bldg_nm>
<deal_ymd>20230609</deal_ymd>
<obj_amt>24000</obj_amt>
<bldg_area>62.64</bldg_area>
<tot_area>36.690000</tot_area>
<floor>3</floor>
<right_gbn></right_gbn>
<cntl_ymd></cntl_ymd>
<build_year>2011</build_year>
<house_type>연립다세대</house_type>
<req_gbn>중개거래</req_gbn>
<rdealer_lawdnm>서울 강서구</rdealer_lawdnm>
</row>
<row>
<acc_year>2023</acc_year>
<sgg_cd>11500</sgg_cd>
<sgg_nm>강서구</sgg_nm>
<bjdong_cd>10300</bjdong_cd>
<bjdong_nm>화곡동</bjdong_nm>
<land_gbn>1</land_gbn>
<land_gbn_nm>대지</land_gbn_nm>
<bonbeon>0851</bonbeon>
<bubeon>0033</bubeon>
<bldg_nm>SK파크리움(851-33)</bldg_nm>
<deal_ymd>20230609</deal_ymd>
<obj_amt>30500</obj_amt>
<bldg_area>28.54</bldg_area>
<tot_area>17.060000</tot_area>
<floor>2</floor>
<right_gbn></right_gbn>
<cntl_ymd></cntl_ymd>
<build_year>2022</build_year>
<house_type>연립다세대</house_type>
<req_gbn>직거래</req_gbn>
<rdealer_lawdnm></rdealer_lawdnm>
</row>
<row>
<acc_year>2023</acc_year>
<sgg_cd>11470</sgg_cd>
<sgg_nm>양천구</sgg_nm>
<bjdong_cd>10300</bjdong_cd>
<bjdong_nm>신월동</bjdong_nm>
<land_gbn>1</land_gbn>
<land_gbn_nm>대지</land_gbn_nm>
<bonbeon>0410</bonbeon>
<bubeon>0026</bubeon>
<bldg_nm>휴먼파크타운(410-26)</bldg_nm>
<deal_ymd>20230609</deal_ymd>
<obj_amt>16000</obj_amt>
<bldg_area>29.2</bldg_area>
<tot_area>21.960000</tot_area>
<floor>2</floor>
<right_gbn></right_gbn>
<cntl_ymd></cntl_ymd>
<build_year>2011</build_year>
<house_type>연립다세대</house_type>
<req_gbn>중개거래</req_gbn>
<rdealer_lawdnm>서울 양천구</rdealer_lawdnm>
</row>
</tblnopendatartmsv>
</body></html>
c:\Users\YONSAI\anaconda4\lib\site-packages\bs4\builder\__init__.py:545: XMLParsedAsHTMLWarning:
It looks like you're parsing an XML document using an HTML parser. If this really is an HTML document (maybe it's XHTML?), you can ignore or filter this warning. If it's XML, you should know that using an XML parser will be more reliable. To parse this document as XML, make sure you have the lxml package installed, and pass the keyword argument `features="xml"` into the BeautifulSoup constructor.
1-4 데이터 가공
years = soup.find_all('acc_year') # 접수년월
sgg_cds = soup.find_all('sgg_cd') # 자치구코드
sgg_nms = soup.find_all('sgg_nm') # 자치구명
bjdong_cds = soup.find_all('bjdong_cd') # 법정동코드
bjdong_nms = soup.find_all('bjdong_nm') # 법정동명
land_gbns = soup.find_all('land_gbn') # 지번구분
land_gbn_nms = soup.find_all('land_gbn_nm') # 지번구분명
land_gbn_nms = soup.find_all('land_gbn_nm') # 지번구분명
bonbeons = soup.find_all('bonbeon') # 본번
bubeons = soup.find_all('bubeon') # 부번
bldg_nms = soup.find_all('bldg_nm') # 건물명
deal_ymds = soup.find_all('deal_ymd') # 계약일
obj_amts = soup.find_all('obj_amt') # 물건금액(만원)
bldg_areas = soup.find_all('bldg_area') # 건물면적(㎡)
tot_areas = soup.find_all('tot_area') # 토지면적(㎡)
floors = soup.find_all('floor') # 층
right_gbns = soup.find_all('right_gbn') # 권리구분
cntl_ymds = soup.find_all('cntl_ymd') # 취소일
build_years = soup.find_all('build_years') # 건축년도
house_types = soup.find_all('house_type') # 건물용도
req_gbn = soup.find_all('req_gbn') # 신고구분
rdealer_lawdnms = soup.find_all('rdealer_lawdnm') # 신고한 개업공인중개사 시군구명
# 반복문 활용
year_list = []
sgg_cd_list = []
bldg_nm_list = []
obj_amt_list = []
house_type_list = []
rdealer_lawdnm_list = []
for year, sgg_cd, bldg_nm, obj_amt, house_type, rdealer_lawdnm in zip(years, sgg_cds, bldg_nms, obj_amts, house_types, rdealer_lawdnms):
year_list.append(year.get_text())
sgg_cd_list.append(sgg_cd.get_text())
bldg_nm_list.append(bldg_nm.get_text())
obj_amt_list.append(obj_amt.get_text())
house_type_list.append(house_type.get_text())
rdealer_lawdnm_list.append(rdealer_lawdnm.get_text())
df = pd.DataFrame({
"acc_year": year_list,
"sgg_cd": sgg_cd_list,
"bldg_nm" : bldg_nm_list,
"obj_amt": obj_amt_list,
"house_type" : house_type_list,
"rdealer_lawdnm": rdealer_lawdnm_list
})
df
| acc_year | sgg_cd | bldg_nm | obj_amt | house_type | rdealer_lawdnm | |
|---|---|---|---|---|---|---|
| 0 | 2023 | 11500 | SK파크리움(851-33) | 29500 | 연립다세대 | |
| 1 | 2023 | 11215 | 26500 | 오피스텔 | 서울 중구 | |
| 2 | 2023 | 11500 | (105-20) | 24000 | 연립다세대 | 서울 강서구 |
| 3 | 2023 | 11500 | SK파크리움(851-33) | 30500 | 연립다세대 | |
| 4 | 2023 | 11470 | 휴먼파크타운(410-26) | 16000 | 연립다세대 | 서울 양천구 |
2. JSON 형태 가져오기
service_key = '596a6f71646a616e37305945544979'
url = f'http://openapi.seoul.go.kr:8088/{service_key}/json/tbLnOpendataRtmsV/1/5/'
print(url)
http://openapi.seoul.go.kr:8088/596a6f71646a616e37305945544979/json/tbLnOpendataRtmsV/1/5/
req = requests.get(url)
content = req.json() # HTTP 요청의 본문을 JSON 형식으로 파싱하여 해당 데이터를 변환
content
{'tbLnOpendataRtmsV': {'list_total_count': 2664624,
'RESULT': {'CODE': 'INFO-000', 'MESSAGE': '정상 처리되었습니다'},
'row': [{'ACC_YEAR': '2023',
'SGG_CD': '11500',
'SGG_NM': '강서구',
'BJDONG_CD': '10300',
'BJDONG_NM': '화곡동',
'LAND_GBN': '1',
'LAND_GBN_NM': '대지',
'BONBEON': '0851',
'BUBEON': '0033',
'BLDG_NM': 'SK파크리움(851-33)',
'DEAL_YMD': '20230609',
'OBJ_AMT': '29500',
'BLDG_AREA': 26.12,
'TOT_AREA': 15.91,
'FLOOR': 3.0,
'RIGHT_GBN': '',
'CNTL_YMD': '',
'BUILD_YEAR': '2022',
'HOUSE_TYPE': '연립다세대',
'REQ_GBN': '직거래',
'RDEALER_LAWDNM': ''},
{'ACC_YEAR': '2023',
'SGG_CD': '11215',
'SGG_NM': '광진구',
'BJDONG_CD': '10700',
'BJDONG_NM': '화양동',
'LAND_GBN': '1',
'LAND_GBN_NM': '대지',
'BONBEON': '0111',
'BUBEON': '0012',
'BLDG_NM': '',
'DEAL_YMD': '20230609',
'OBJ_AMT': '26500',
'BLDG_AREA': 16.88,
'TOT_AREA': 29.9,
'FLOOR': 3.0,
'RIGHT_GBN': '',
'CNTL_YMD': '',
'BUILD_YEAR': '2021',
'HOUSE_TYPE': '오피스텔',
'REQ_GBN': '중개거래',
'RDEALER_LAWDNM': '서울 중구'},
{'ACC_YEAR': '2023',
'SGG_CD': '11500',
'SGG_NM': '강서구',
'BJDONG_CD': '10300',
'BJDONG_NM': '화곡동',
'LAND_GBN': '1',
'LAND_GBN_NM': '대지',
'BONBEON': '0105',
'BUBEON': '0020',
'BLDG_NM': '(105-20)',
'DEAL_YMD': '20230609',
'OBJ_AMT': '24000',
'BLDG_AREA': 62.64,
'TOT_AREA': 36.69,
'FLOOR': 3.0,
'RIGHT_GBN': '',
'CNTL_YMD': '',
'BUILD_YEAR': '2011',
'HOUSE_TYPE': '연립다세대',
'REQ_GBN': '중개거래',
'RDEALER_LAWDNM': '서울 강서구'},
{'ACC_YEAR': '2023',
'SGG_CD': '11500',
'SGG_NM': '강서구',
'BJDONG_CD': '10300',
'BJDONG_NM': '화곡동',
'LAND_GBN': '1',
'LAND_GBN_NM': '대지',
'BONBEON': '0851',
'BUBEON': '0033',
'BLDG_NM': 'SK파크리움(851-33)',
'DEAL_YMD': '20230609',
'OBJ_AMT': '30500',
'BLDG_AREA': 28.54,
'TOT_AREA': 17.06,
'FLOOR': 2.0,
'RIGHT_GBN': '',
'CNTL_YMD': '',
'BUILD_YEAR': '2022',
'HOUSE_TYPE': '연립다세대',
'REQ_GBN': '직거래',
'RDEALER_LAWDNM': ''},
{'ACC_YEAR': '2023',
'SGG_CD': '11470',
'SGG_NM': '양천구',
'BJDONG_CD': '10300',
'BJDONG_NM': '신월동',
'LAND_GBN': '1',
'LAND_GBN_NM': '대지',
'BONBEON': '0410',
'BUBEON': '0026',
'BLDG_NM': '휴먼파크타운(410-26)',
'DEAL_YMD': '20230609',
'OBJ_AMT': '16000',
'BLDG_AREA': 29.2,
'TOT_AREA': 21.96,
'FLOOR': 2.0,
'RIGHT_GBN': '',
'CNTL_YMD': '',
'BUILD_YEAR': '2011',
'HOUSE_TYPE': '연립다세대',
'REQ_GBN': '중개거래',
'RDEALER_LAWDNM': '서울 양천구'}]}}
df = pd.DataFrame(content['tbLnOpendataRtmsV']['row'])
df
| ACC_YEAR | SGG_CD | SGG_NM | BJDONG_CD | BJDONG_NM | LAND_GBN | LAND_GBN_NM | BONBEON | BUBEON | BLDG_NM | ... | OBJ_AMT | BLDG_AREA | TOT_AREA | FLOOR | RIGHT_GBN | CNTL_YMD | BUILD_YEAR | HOUSE_TYPE | REQ_GBN | RDEALER_LAWDNM | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 2023 | 11500 | 강서구 | 10300 | 화곡동 | 1 | 대지 | 0851 | 0033 | SK파크리움(851-33) | ... | 29500 | 26.12 | 15.91 | 3.0 | 2022 | 연립다세대 | 직거래 | |||
| 1 | 2023 | 11215 | 광진구 | 10700 | 화양동 | 1 | 대지 | 0111 | 0012 | ... | 26500 | 16.88 | 29.90 | 3.0 | 2021 | 오피스텔 | 중개거래 | 서울 중구 | |||
| 2 | 2023 | 11500 | 강서구 | 10300 | 화곡동 | 1 | 대지 | 0105 | 0020 | (105-20) | ... | 24000 | 62.64 | 36.69 | 3.0 | 2011 | 연립다세대 | 중개거래 | 서울 강서구 | ||
| 3 | 2023 | 11500 | 강서구 | 10300 | 화곡동 | 1 | 대지 | 0851 | 0033 | SK파크리움(851-33) | ... | 30500 | 28.54 | 17.06 | 2.0 | 2022 | 연립다세대 | 직거래 | |||
| 4 | 2023 | 11470 | 양천구 | 10300 | 신월동 | 1 | 대지 | 0410 | 0026 | 휴먼파크타운(410-26) | ... | 16000 | 29.20 | 21.96 | 2.0 | 2011 | 연립다세대 | 중개거래 | 서울 양천구 |
5 rows × 21 columns
3. 시각화
# 라이브러리 설치
import plotly.express as px
fig = px.bar(df, x = 'BONBEON', y = 'BLDG_AREA') # 건물 면적 시각화
fig.update_layout(
xaxis_title = '본번',
yaxis_title = '건물면적(㎡)'
)
fig.show()
import plotly.graph_objects as go
# Figure 생성
fig = go.Figure()
# Bar Trace 추가
fig.add_trace(go.Bar(x = df['BONBEON'], y = df['BLDG_AREA']))
fig.show()
댓글남기기