大家好,我是欧K~
本期利用Python分析「杭州二手房数据」,看看:杭州市各区二手房数量、二手房价格分布、户型分布、年份分布、小区分布等,希望对大家有所帮助,如有疑问或者需要改进的地方可以联系小编。
Pandas — 数据处理
Pyecharts — 数据可视化
import pandas as pd
from pyecharts.charts import *
from pyecharts import options as opts
import warnings
warnings.filterwarnings('ignore')
2.1 读取数据
df = pd.read_excel("./二手房数据.xlsx")
2.2 过滤数据
df1 = df.copy()
df1 = df1[df1['房屋信息'].str.contains('年')]
names = ['拱墅', '西湖', '滨江', '上城', '临平', '余杭', '萧山', '富阳', '桐庐', '临安', '淳安','建德', '钱塘']
new_names = ['拱墅区', '西湖区', '滨江区', '上城区', '临平区', '余杭区', '萧山区', '富阳区', '桐庐县', '临安市', '淳安县','建德市', '萧山区']
2.4 地址处理
df1['小区'] = df1['地址'].str.split(' ', n=2 ,expand=True)[1]
2.5 房屋信息处理
df1['房屋信息'].str.split('|',expand=True)
df1['面积(㎡)'] = df1['面积'].apply(lambda x: re.findall(r'\d+', x)[0])
2.7 楼层处理
df1['楼层'] = df1['楼层'].apply(lambda x: re.findall(r'\d+', x)[0])
2.8 年份处理
df1['年份'] = df1['年份'].apply(lambda x: re.findall(r'\d+', x)[0])
2.9 房价处理
df1['总价(万)'] = df1['房价'].apply(lambda x: re.findall(r'\d+', x)[0])
2.10 删除不用的列
df1 = df1.drop(['房屋信息','房价','联系人','面积', '地址','地铁'],axis=1)
2.11 数据类型转换
for col in ['楼层','年份', '卧室', '客厅', '面积(㎡)','总价(万)','单价(元/㎡)']:
df1[col] = df1[col].astype('int')
2.12 查看数据信息
df1.info()
def get_chart():
chart = (
Map()
.add("",
[list(z) for z in zip(x_data, y_data)],
"杭州",
)
.set_global_opts(
title_opts=opts.TitleOpts(
title="1-各行政区二手房数量地图",
subtitle=subtitle,
pos_top="2%",
pos_left="center",
),
visualmap_opts=opts.VisualMapOpts(
pos_left='3%',
)
)
)
萧山区、拱墅区、西湖区、上城区、临安区的二手房数量要高于其他城区。
东部二手房数量高于西部地区。
def get_chart2():
chart = (
Bar()
.add_xaxis(x_data)
.add_yaxis("", y_data)
.set_global_opts(
title_opts=opts.TitleOpts(
title="2-各行政区二手房数量",
pos_top='2%',
pos_left="center",
),
visualmap_opts=opts.VisualMapOpts(is_show=False),
)
)
return chart
上城区、滨江区二手房均价在600万以上,富阳区、淳安县、拱墅区均价在500万以上。
def get_chart():
chart = (
Pie()
.add("",
sorted_by_value,
)
.set_global_opts(
title_opts=opts.TitleOpts(
title="4-户型占比分布",
pos_top='2%',
pos_left="center",
),
visualmap_opts=opts.VisualMapOpts(
is_show=False,
),
)
.set_series_opts(
label_opts=opts.LabelOpts(
formatter="{b}: {d}%",
)
)
)
3室2厅户型的二手房共1905套,占比约45%。 4室2厅户型的二手房共876套,占比约20%。 2室2厅户型的二手房共509套,占比约12%。 3室2厅、4室2厅、2室2厅户型的二手房,占比约77%。
3.5 楼层数量分布
def get_chart3():
chart = (
Pie()
.add("", [list(z) for z in zip(x_data, y_data)])
.set_global_opts(
title_opts=opts.TitleOpts(
title="5-出行团体占比",
pos_top='2%',
pos_left="center"
),
legend_opts=opts.LegendOpts(is_show=False),
visualmap_opts=opts.VisualMapOpts(is_show=False,),
)
.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {d}%"))
)
return chart
7层、8层、12层、19层的二手房数量明显高于其他楼层。 除此之外的二手房楼层分布,高层的数量比低层的多,也就是说出售低层房屋的住户较高层少。
90%以上的二手房朝向都是南向、南北向的。
def get_chart():
chart = (
Scatter()
.add_xaxis(x_data)
.add_yaxis(
"",
y_data,
label_opts=opts.LabelOpts(is_show=False)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title="7-面积-总价分布",
pos_top='2%',
pos_left="center"
),
visualmap_opts=opts.VisualMapOpts(
is_show=False
),
)
)
呈现面积越大,房价越高的走势,基本符合二手房市场的现状。
def get_chart4():
chart = (
WordCloud()
.add("",words,word_size_range=[10,50])
.set_global_opts(
title_opts=opts.TitleOpts(
title='8-旅游行程景点词云',
pos_top='2%',
pos_left="center",
),
legend_opts=opts.LegendOpts(is_show=False),
visualmap_opts=opts.VisualMapOpts(is_show=False),
)
)
return chart
近10年的房屋出售数量普遍不较高,尤其是2018年和2020年的房屋出售数量超过400套,房屋建设年限算是比较短的了。
3.9 小区房价词云
def get_chart():
chart = (
WordCloud()
.add("",words,word_size_range=[10,50])
.set_global_opts(
title_opts=opts.TitleOpts(
title='9-小区房价词云',
pos_top='2%',
pos_left="center",
),
visualmap_opts=opts.VisualMapOpts(
is_show=False
),
)
)
👉 公众号后台回复【可视化项目源码】获取全部代码+数据
以上就是本期为大家整理的全部内容了,喜欢的朋友可以点赞、点在看也可以分享让更多人知道。
往期推荐
源码下载 | 【01-50】Pthon可视化系列文章资源(源码+数据)
可视化 | Flask+Mysql+Echarts 豆瓣电影Top250数据分析系统
53 | 基于Lasso回归和随机森林的上海链家二手房房价预测
52 | 基于KNN近邻和随机森林模型对用户转化进行分析与预测
Pandas+Pyecharts | 全国热门旅游景点数据分析可视化
可视化 | 分享一套Flask+Pyecharts可视化模板
用Python分析了3W+《独行月球》影评数据,看看观众们怎么说~