python带你对北京二手房进行数据分析,看看大概都什么价位
创始人
2024-03-15 10:01:35
0

前言

嗨喽~大家好呀,这里是魔王呐 ❤ ~!

今天我们的目的想必大家看标题就能明白了~

准备

首先,我们要提前准备好数据

然后打开我们的数据分析工具: Jupyter

代码及效果展示

导入模块

# 导入做数据处理的模块pandas
import pandas as pd
# 导入绘图模块pyecharts,*号代表模块里面的所有图形
from pyecharts.charts import *
from pyecharts import options as opts

数据处理

1.读取数据

导入数据

设置编码encoding='gbk'

设置解释器为engine='python'

df = pd.read_csv('二手房数据.csv', encoding='gbk', engine='python')
df

=

2.查看表格数据描述

describe可以直接计算数值类型数据的平均值,标准差

df.describe()

3.查看表格是否有数据缺失

通过isnull查找出包含缺失值的字段

然后进行求和,计算每一列的缺失数据的数量

df.isnull().sum()

可以看到电梯数据缺失8257行

4.查看电梯列共有几种值

通过unique可以统计数据里面出现了几种值

方便后面进行填充

df['电梯'].unique()

5.缺失值填充

用“未知”填充缺失值

缺失值的处理方式有两种

第一种删除,第二种填补

  • 缺失值少,就直接删除

  • 缺失值多,就进行填补

这里缺失值占比较多,所以进行填补

df['电梯'].fillna('未知',inplace=True)
# 填补之后查看是否还有缺失值
df.isnull().sum()

6.查看房屋朝向数据

查看朝向值的种类

df['朝向'].unique()

朝向数据包含了‘西南’和‘南西’两个方向,将其合并为一个方向‘西南’:

# replace(被替换的值,替换后的值):
df['朝向'] = df['朝向'].str.replace('南西','西南')
df['朝向'].unique()

可以看到,丰台、朝阳、海淀、昌平在售的房源数量最多,高达12000多套,占了总量的1/2

🎯 博主文章素材、解答、源码、教程领取处:点击

Pyecharts可视化

1.统计各城区二手房数据

# 这里我们要用到分组
g = df.groupby('市区')
df_region = g.count()['小区']
region = df_region.index.tolist()
count = df_region.values.tolist()
df_region

1.各城区二手房数量北京市地图
# 各城区二手房数量北京市地图
new = [x + '区' for x in region]
m = (Map().add('北京市', [list(z) for z in zip(new, count)], '北京').set_global_opts(title_opts=opts.TitleOpts(title='北京市二手房各区分布'),visualmap_opts=opts.VisualMapOpts(max_=3000),))
m.render_notebook()

2.各城区二手房数量-平均价格柱状图
df_price = g.mean()['价格(万元)']
df_price = round(df_price,2)
price = df_price.values.tolist()
bar = (Bar().add_xaxis(region).add_yaxis('数量',count,label_opts=opts.LabelOpts(is_show=True)).extend_axis(yaxis=opts.AxisOpts(name='价格(万元)',type_='value',min_=200,max_=900,interval=100,axislabel_opts=opts.LabelOpts(formatter='{value}'))).set_global_opts(title_opts=opts.TitleOpts(title='各城区二手房数量-平均价格柱状图'),tooltip_opts=opts.TooltipOpts(is_show=True, trigger="axis", axis_pointer_type="cross"),xaxis_opts=opts.AxisOpts(type_="category",axispointer_opts=opts.AxisPointerOpts(is_show=True, type_="shadow"),),yaxis_opts=opts.AxisOpts(name='数量',axistick_opts=opts.AxisTickOpts(is_show=True),splitline_opts=opts.SplitLineOpts(is_show=False),))
)
line2 = (Line().add_xaxis(xaxis_data=region).add_yaxis(series_name="价格",yaxis_index=1,y_axis=price,label_opts=opts.LabelOpts(is_show=True),z=10)
)
bar.overlap(line2)
grid = Grid()
grid.add(bar, opts.GridOpts(pos_left="5%", pos_right="20%"), is_control_axis_index=True)
grid.render_notebook()

3.二手房价格最低Top15
top_price = df.sort_values(by='价格(万元)')[:15]
top_price

area0 = top_price['小区'].values.tolist()
count = top_price['价格(万元)'].values.tolist()bar = (Bar().add_xaxis(area0).add_yaxis('数量', count, category_gap='50%').set_global_opts(yaxis_opts=opts.AxisOpts(name='价格(万元)'),xaxis_opts=opts.AxisOpts(name='数量'),datazoom_opts=opts.DataZoomOpts(type_='slider'))
)
bar.render_notebook()

4 二手房总价与面积散点图
s = (Scatter().add_xaxis(df['面积(㎡)'].values.tolist()).add_yaxis('',df['价格(万元)'].values.tolist()).set_global_opts(xaxis_opts=opts.AxisOpts(type_='value'))
)
s.render_notebook()

5.房屋朝向饼图
g = df.groupby('朝向')
g.count()['小区']

df_direction =  g.count()['小区']
df_direction

directions = df_direction.index.tolist()
count = df_direction.values.tolist()c1 = (Pie(init_opts=opts.InitOpts(width='800px', height='600px',)).add('',[list(z) for z in zip(directions, count)],radius=['20%', '60%'],center=['40%', '50%'],
#         rosetype="radius",label_opts=opts.LabelOpts(is_show=True),)    .set_global_opts(title_opts=opts.TitleOpts(title='房屋朝向占比',pos_left='33%',pos_top="5%"),legend_opts=opts.LegendOpts(type_="scroll", pos_left="80%",pos_top="25%",orient="vertical")).set_series_opts(label_opts=opts.LabelOpts(formatter='{b}:{c} ({d}%)'),position="outside"))
c1.render_notebook()

6.装修情况/有无电梯玫瑰图
g1 = df.groupby('装修情况')
g1.count()['小区']
g2 = df.groupby('电梯')
g2.count()['小区']

df_fitment =  g1.count()['小区']
df_direction =  g2.count()['小区']
df_fitment

fitment = df_fitment.index.tolist()
count1 = df_fitment.values.tolist()directions = df_direction.index.tolist()
count2 = df_direction.values.tolist()bar = (Bar().add_xaxis(fitment).add_yaxis('', count1, category_gap = '50%').reversal_axis().set_series_opts(label_opts=opts.LabelOpts(position='right'))    .set_global_opts(xaxis_opts=opts.AxisOpts(name='数量'),title_opts=opts.TitleOpts(title='装修情况/有无电梯玫瑰图(组合图)',pos_left='33%',pos_top="5%"),legend_opts=opts.LegendOpts(type_="scroll", pos_left="90%",pos_top="58%",orient="vertical"))
)c2 = (Pie(init_opts=opts.InitOpts(width='800px', height='600px',)).add('',[list(z) for z in zip(directions, count2)],radius=['10%', '30%'],center=['75%', '65%'],rosetype="radius",label_opts=opts.LabelOpts(is_show=True),)    .set_global_opts(title_opts=opts.TitleOpts(title='有/无电梯',pos_left='33%',pos_top="5%"),legend_opts=opts.LegendOpts(type_="scroll", pos_left="90%",pos_top="15%",orient="vertical")).set_series_opts(label_opts=opts.LabelOpts(formatter='{b}:{c} \n ({d}%)'),position="outside"))bar.overlap(c2)
bar.render_notebook()

7.二手房楼层分布柱状图
g = df.groupby('楼层')
df_floor = g.count()['小区']
df_floor

floor = df_floor.index.tolist()
count = df_floor.values.tolist()
bar = (Bar().add_xaxis(floor).add_yaxis('数量', count).set_global_opts(title_opts=opts.TitleOpts(title='二手房楼层分布柱状缩放图'),yaxis_opts=opts.AxisOpts(name='数量'),xaxis_opts=opts.AxisOpts(name='楼层'),datazoom_opts=opts.DataZoomOpts(type_='slider'))
)
bar.render_notebook()

8.房屋面积分布柱状图
area_level = [0, 50, 100, 150, 200, 250, 300, 350, 400, 1500]    
label_level = ['小于50', '50-100', '100-150', '150-200', '200-250', '250-300', '300-350', '350-400', '大于400']    
jzmj_cut = pd.cut(df['面积(㎡)'], area_level, labels=label_level)        
df_area = jzmj_cut.value_counts()
df_area

area = df_area.index.tolist()
count = df_area.values.tolist()bar = (Bar().add_xaxis(area).add_yaxis('数量', count).reversal_axis().set_series_opts(label_opts=opts.LabelOpts(position="right")).set_global_opts(title_opts=opts.TitleOpts(title='房屋面积分布纵向柱状图'),yaxis_opts=opts.AxisOpts(name='面积(㎡)'),xaxis_opts=opts.AxisOpts(name='数量'),)
)
bar.render_notebook()

结论

丰台、朝阳、海淀、昌平在售的房源数量最多,高达12000多套,占了总量的1/2。

东城区、西城区和海淀区二手房平均售价最高,均在800万元以上。

二手房面积多集中于0-400平米,价格在0-3000万元居多。

房屋朝向约50%是坐北朝南的

推荐往期文章

🎯 博主所有文章素材、解答、源码、教程领取处:点击

对python感兴趣的小伙伴也可以看一下博主其他相关文章哦~

python小介绍:

python是什么?工作前景如何?怎么算有基础?爬数据违法嘛?。。

python数据分析前景:

用python分析“数据分析”到底值不值得学习,以及学完之后大概能拿到多少工资

python基础自测题:

Python 800 道习题 (°ー°〃) 测试你学废了嘛

最后推荐一套Python视频给大家,希望对大家有所帮助:

全套教程!你和大佬只有一步之遥【python教程】

尾语

要成功,先发疯,下定决心往前冲!

学习是需要长期坚持的,一步一个脚印地走向未来!

未来的你一定会感谢今天学习的你。

—— 心灵鸡汤

本文章到这里就结束啦~感兴趣的小伙伴可以复制代码去试试哦 😝

👇问题解答 · 源码获取 · 技术交流 · 抱团学习请联系👇

相关内容

热门资讯

【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
ChatGPT 怎么用最新详细... ChatGPT 以其强大的信息整合和对话能力惊艳了全球,在自然语言处理上面表现出了惊人...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...