前言
嗨喽~大家好呀,这里是魔王呐 ❤ ~!
今天我们的目的想必大家看标题就能明白了~
准备
首先,我们要提前准备好数据
然后打开我们的数据分析工具: 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.查看表格是否有数据缺失
通过isnul
l查找出包含缺失值的字段
然后进行求和,计算每一列的缺失数据的数量
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教程】
尾语
要成功,先发疯,下定决心往前冲!
学习是需要长期坚持的,一步一个脚印地走向未来!
未来的你一定会感谢今天学习的你。
—— 心灵鸡汤
本文章到这里就结束啦~感兴趣的小伙伴可以复制代码去试试哦 😝