中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么用Python分析北京的二手房數據

發布時間:2021-11-25 15:00:24 來源:億速云 閱讀:157 作者:iii 欄目:大數據

這篇文章主要介紹“怎么用Python分析北京的二手房數據”,在日常操作中,相信很多人在怎么用Python分析北京的二手房數據問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么用Python分析北京的二手房數據”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

我們使用Python獲取了鏈家網上北京市16個區的二手房數據。首先導入要使用的數據處理包pandas,可視化工具pyecharts和plotly。

# 導入所需包
import numpy as np 
import pandas as pd 
import matplotlib.pyplot as plt 
import os  

from pyecharts.charts import Pie, Map, Bar, Line, Grid, Page
from pyecharts import options as opts 

import plotly as py 
import plotly.graph_objs as go 
import plotly.express as px

數據讀入

使用循環讀入數據集,然后進行去重處理,查看一下數據集大小,可以看到去重之后一共有4403條數據。

# 讀入數據
file_list = os.listdir('../data/')

df_all = pd.DataFrame() 
for file in file_list:
    file_name = file.split('.')[0]
    df = pd.read_csv(f'../data/{file}')
    df['region_name'] = file_name 
    df_all = df_all.append(df, ignore_index=True) 

# 去重
df_all = df_all.drop_duplicates()
print(df_all.shape)
(33509, 9)

預覽以下數據:

df_all.head(2)

數據預處理

我們對數據集的各個特征進行提取和處理,以便后續的數據分析工作,主要處理工作包含:

  1. title:無需分析,刪除

  2. detail_url:無需分析,刪除

  3. position:維度過細、刪除

  4. houseInfo:提取室、廳、面積、方位、裝修、樓層(高中低)、建筑年份、板塔

  5. followInfo:無需分析,刪除

  6. tag_info:提取是否靠近地鐵

  7. total_price:提取房屋總價

  8. unitPrice:房屋單價

  9. region_name:無需處理

# 刪除列
df_all = df_all.drop(['title', 'detail_url', 'position', 'followInfo'], axis=1)  

# 提取室廳
df_all['halls'] = df_all['houseInfo'].str.split('|').str[0].str.extract(r'(\d+)室')
df_all['bedrooms'] = df_all['houseInfo'].str.split('|').str[0].str.extract(r'\d室(\d+)廳') 
# 提取面積
df_all['area'] = df_all['houseInfo'].str.split('|').str[1].str.extract(r'(\d+.*\d+)平米')
# 提取朝向
df_all['orient'] = df_all['houseInfo'].str.split('|').str[2]
# 提取裝修類型
df_all['decorate_type'] = df_all['houseInfo'].str.split('|').str[3]
# 提取樓層
df_all['floor'] = df_all['houseInfo'].str.split('|').str[4]
# 提取建筑年份
df_all['built_year'] = df_all['houseInfo'].str.split('|').str[5].str.extract(r'(\d+)')
# 提取板塔
df_all['banta'] = df_all['houseInfo'].str.split('|').str[6]
# 刪除houseInfo
df_all = df_all.drop('houseInfo', axis=1) 

# 提取地鐵
df_all['subway'] = [1 if '地鐵' in i else 0 for i in df_all['tag_info']]
# 刪除tag_info
df_all = df_all.drop('tag_info', axis=1)

# 提取總價
df_all['total_price'] = df_all['total_price'].str.extract(r'(\d+)')
df_all['unitPrice'] = df_all['unitPrice'].str.extract(r'(\d+)')

# 空值-直接刪除
df_all = df_all.dropna()

# 轉換數據類型
df_all['total_price'] = df_all['total_price'].astype('int')
df_all['unitPrice'] = df_all['unitPrice'].astype('int')
df_all['halls'] = df_all['halls'].astype('int')
df_all['bedrooms'] = df_all['bedrooms'].astype('int')
df_all['area'] = df_all['area'].astype('float')
df_all['built_year'] = df_all['built_year'].astype('int')
df_all['subway'] = df_all['subway'].astype('int')
df_all.head()

怎么用Python分析北京的二手房數據

進一步處理樓層、建筑年份和房屋朝向字段。

def transform_floor(x):
    if x == '高樓層' or x == '頂層' or x == '上疊':
        return '高層'
    elif x == '低樓層' or x == '底層' or x == '下疊' or x == '1層' or x == '2層' or x == '3層':
        return '低層'
    elif x == '中樓層' or x == '4層' or x == '5層' or x == '6層':
        return '中層' 
    elif x == '地下室':
        return '地下室'
    else:  # 其他歸為高層
        return '高層'  

# floor一般化
df_all['floor_type'] = df_all['floor'].str.replace(r'\(.*?\)', '').str.strip()
df_all['floor_type'] = df_all.floor_type.apply(transform_floor)
df_all = df_all.drop('floor', axis=1) 

# orient-一般化
df_all['orient'] = df_all['orient'].str.extract(r'([\u4e00-\u9fa5])')

# bulit_year
df_all['built_year'] = 2020 - df_all['built_year']

# banta-一般化
df_all['banta'] = df_all.banta.str.strip()
df_all.head()

怎么用Python分析北京的二手房數據

首先我們看到近一年來,北京二手房房價的走勢圖,可以看到有回調的趨勢,目前的均價在每平方米57589的樣子。

北京不同區域的二手房房源數量

那么北京各個區域的二手房源分布如何呢?

怎么用Python分析北京的二手房數據

不同區域的二手房價又是怎樣的呢?西城區一馬當先,以114980元每平米的價格領跑北京的二手房市場。其次,東城區以97295每平米排在第二位。海淀區以85954每平米的價格排在第三位。

代碼如下:

# 產生數據
s_region = df_all.groupby('region_name')['unitPrice'].mean().sort_values(ascending=False) 
x_data = [i+'區' for i in s_region.index.tolist()]
y_data = [round(i) for i in s_region.values.tolist()] 

data_pair = [list(z) for z in zip(x_data, y_data)]

# 地圖
map1 = Map(init_opts=opts.InitOpts(width='1350px', height='750px'))
map1.add('', data_pair, maptype='北京')
map1.set_global_opts(title_opts=opts.TitleOpts(title='北京不同區域的二手房均價(元/平米)'), 
                     visualmap_opts=opts.VisualMapOpts(max_=114979))
map1.render()
# 條形圖
bar2 = Bar(init_opts=opts.InitOpts(width='1350px', height='750px'))
bar2.add_xaxis(x_data)
bar2.add_yaxis('', y_data)
bar2.set_global_opts(title_opts=opts.TitleOpts(title='北京不同區域的二手房均價(元/平米)'), 
                     visualmap_opts=opts.VisualMapOpts(max_=114979))
bar2.render()

北京二手房都處在什么價位

那么在北京買一套二手房到底要花多少錢?接著我們分析了二手房的價位,從圖中可以看到總價在300-500萬內的最多,占比達到35.9%。500-800萬的占比26.54%。300萬以下的占比19.54%。

代碼如下:

bins = [74, 300, 500, 800, 1000, 8299]
bins_label = ['300萬及以下', '300-500萬', '500-800萬', '800-1000萬', '1000萬以上'] 

# 新增字段
df_all['price_cut'] = pd.cut(df_all['total_price'], bins=bins, labels=bins_label) 

price_num = df_all.price_cut.value_counts() 
# 數據對
data_pair = [list(z) for z in zip(price_num.index.tolist(), price_num.values.tolist())]

# 繪制餅圖
pie1 = Pie(init_opts=opts.InitOpts(width='1350px', height='750px'))
pie1.add('', data_pair=data_pair, radius=['30%', '60%'], rosetype='radius')
pie1.set_global_opts(title_opts=opts.TitleOpts(title='北京二手房都處在哪些價位?'), 
                     legend_opts=opts.LegendOpts(orient='vertical', pos_top='15%', pos_left='2%'))
pie1.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}:aegqsqibtmh%"))
pie1.set_colors(['#FF7F0E', '#1F77B4', '#2CA02C', '#D62728', '#946C8B'])
pie1.render()

北京二手房房齡分布

怎么用Python分析北京的二手房數據

那么這些二手房的房齡都有多久了呢?可以看到房齡在20年以上的最多,有10946套占比33.73%,其次房齡在15-20年的有7835套,占比24.15%。5年以內的僅有1441套,占比4.44%。

是否靠近地鐵和房屋單價的關系

怎么用Python分析北京的二手房數據

房屋朝向方面,朝南的自然是最多的,占比達到68.97%。其次是朝東的,占比18.25%。

不同房屋結構的數量分布

怎么用Python分析北京的二手房數據

從散點圖可以看出,房屋的面積和房屋價格呈現正相關,計算皮爾遜相關系數的值為0.67,為強相關。

代碼如下:

# 添加軌跡
fig = px.scatter(df_all, x='area', y='total_price')

fig.update_layout(title='房屋面積和房屋價格的關系(萬元)') 
py.offline.plot(fig, filename='房屋面積和房屋價格的關系.html')

臥室數量和房屋價格的關系

怎么用Python分析北京的二手房數據

客廳和臥室一樣反映在房屋的面積上,客廳 數越多,則房屋總價越高。

代碼如下:

# 合并
df_all['halls'] = [i if i<=4 else '5及以上' for i in df_all['halls']]
df_all['halls'] = df_all.halls.astype('str')

# 添加數據
y1 = df_all[df_all['halls']=='1']['total_price'].values
y2 = df_all[df_all['halls']=='2']['total_price'].values
y3 = df_all[df_all['halls']=='3']['total_price'].values
y4 = df_all[df_all['halls']=='4']['total_price'].values
y5 = df_all[df_all['halls']=='5及以上']['total_price'].values

# 實例Figure
fig = go.Figure() 

# 添加軌跡
fig.add_trace(trace=go.Box(y=y1, name='1廳'))
fig.add_trace(trace=go.Box(y=y2, name='2廳'))
fig.add_trace(trace=go.Box(y=y3, name='3廳'))
fig.add_trace(trace=go.Box(y=y4, name='4廳'))
fig.add_trace(trace=go.Box(y=y5, name='5廳及以上'))

# 配置項
fig.update_layout(title='客廳數量和房屋價格的關系(萬元)')
py.offline.plot(fig, filename='客廳數量和房屋價格的關系.html')

到此,關于“怎么用Python分析北京的二手房數據”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

定兴县| 同仁县| 西和县| 云霄县| 门源| 静安区| 聊城市| 武强县| 曲靖市| 上思县| 教育| 家居| 济源市| 和政县| 东光县| 自贡市| 邯郸市| 广德县| 茌平县| 当雄县| 白河县| 海晏县| 固原市| 额敏县| 雅江县| 利津县| 曲阜市| 湖南省| 修水县| 泊头市| 北票市| 渭源县| 靖宇县| 金阳县| 集安市| 潼关县| 岑巩县| 军事| 永福县| 迁安市| 潢川县|