200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 利用Python对链家网北京二手房进行简单数据分析

利用Python对链家网北京二手房进行简单数据分析

时间:2021-10-19 10:05:34

相关推荐

利用Python对链家网北京二手房进行简单数据分析

#首先我用爬虫获取到了链家二手房的一万多条信息,我在爬去的时候对空置进行了处理

本文主要讲述如何通过pandas对爬虫下来的链家数据进行相应的二手房数据分析,主要分析内容包括各个区,各个小区的房源信息情况

#导入主要的模块import pandas as pdimport numpy as npimport matplotlib.pyplot as plt#读取数据house = pd.read_csv(r'C:\Users\cz\Desktop\fang.csv',names=['id','title','link','community','housetype','direction','floor','region','totalprice','followinfo','unitprice','acreage','frequency'])

#然后查看是否有数据

#获取总价格全五的数据house.sort_values('totalprice',ascending=False).head(5)

#结果

#字符串的处理

# 将字符串转换成数字主要用于处理面积的数据def data_adj(area_data, str):#判断‘平米’在不在这个数据里 if str in area_data :#用find()函数查找字符串的索引位置,方便截取 return float(area_data[0 : area_data.find(str)]) else : return None#把字符串里的平米去掉house['acreage'] = house['acreage'].apply(data_adj,str = '平米')

处理后结果如下(我只截取前五个数据太大了)

0 134.111 70.792 122.863 119.734 58.955 78.54

接下来我来计算所有户型的个数,然后用图像展示出来

#计算户型的所占的个数,用到value_counts(),排序也给你做好了,你可以清楚的看到所占的个数housetype = house['housetype'].value_counts()

#结果

2室1厅42513室1厅17663室2厅12681室1厅10112室2厅 7554室2厅 4781室0厅 1764室1厅 1395室2厅 961房间1卫 412房间1卫 325室3厅 321室2厅 304室3厅 273房间1卫 253房间2卫 246室2厅 233室3厅 183室0厅 155室1厅 152室0厅 144房间2卫 86室3厅 85房间2卫 74房间1卫 55房间3卫 54房间3卫 32室3厅 35室4厅 37室2厅 31房间0卫 29室3厅 19室1厅 14室4厅 111房间3卫 16房间3卫 17室1厅 16房间4卫 16室6厅 16室1厅 17室3厅 18室2厅 16室4厅 1Name: housetype, dtype: int64

#我们把图像话出来,有于后面的小数据比较多我就展示了前10个的信息

有于matplotlib不显示中文我在网上查了些资料,得到的解决方案就是加两行代码

from pylab import mplmpl.rcParams['font.sans-serif'] = ['FangSong'] # 指定默认字体mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题#设置画布asd,sdf = plt.subplots(1,1,dpi=200)#获取前10条数据housetype.head(10).plot(kind='bar',x='housetype',y='size',title='户型数量分布',ax=sdf)plt.legend(['数量'])plt.show()

#图像展示结果,有图像可以清楚的看到数量分布情况

#图片的下载

#下载图片plt.savefig(r"C:\Users\cz\Desktop\housetype.jpg")

#户型和关注人数分布

#户型和关注人数分布type_interest_group = house['followinfo'].groupby(house['housetype']).agg([('户型', 'count'), ('关注人数', 'sum')])

#获取户型数量大于50 的数据ti_sort = type_interest_group[type_interest_group['户型'] > 50 ].sort_values(by='户型')

#结果

#图像展示

#画图asd,sdf = plt.subplots(1,1,dpi=150)ti_sort.plot(kind='barh',alpha=0.7,grid=True,ax=sdf)plt.title('二手房户型和关注人数分布') plt.ylabel('户型') plt.show()

#户型与看房次数

#户型和看房次数数分布type_interest_num = house['frequency'].groupby(house['housetype']).agg([('户型', 'count'), ('看房次数', 'sum')])ti_sort = type_interest_num[type_interest_num['户型'] > 50 ].sort_values(by='户型')#画图asd,sdf = plt.subplots(1,1,dpi=150)ti_sort.plot(kind='barh',alpha=0.7,grid=True,ax=sdf)plt.title('二手房户型和看房次数')plt.ylabel('户型') plt.show()

在售面积分布

area_level = [0, 50, 100, 150, 200, 250, 300, 500] label_level = ['小于50', '50-100', '100-150', '150-200', '200-250', '250-300', '300-350']#算出所面积在哪个区间are_cut = pd.cut(house['acreage'],area_level,label_level)#计算面积在所设置的区间的数量acreage = are_cut.value_counts()acreage

#画图

asd,sdf = plt.subplots(1,1,dpi=150)acreage.plot(kind='bar',rot=30,alpha=0.4,grid=True,ax=sdf)plt.title('二手房面积分布') plt.xlabel('面积') plt.legend(['数量']) plt.show()

#算出个个区域的平均房价

#各个区房源均价region =house.groupby('region').mean()['unitprice']

#画图

asd,sdf = plt.subplots(1,1,dpi=150)region.plot(kind='bar',x='region',y='unitprice', title='各个区域房源均价',ax=sdf)plt.show()

#区域房源分布量

#各个区域房源数量排序region_num = house.groupby('region').size().sort_values(ascending=False)

#画图

region_num = house.groupby('region').size().sort_values(ascending=False)asd,sdf = plt.subplots(1,1,dpi=150)region_num.plot(kind='bar',x='region',y='size',title='各个区域房源数量分布',ax=sdf)plt.legend(['数量'])plt.show()

#北京在售面积最小二手房house.sort_values('acreage').iloc[0,:]

#结果

id 9933title 西城区 荣丰小区 一起开间 满五年 总价低link/ershoufang/101102783824...community 荣丰housetype1室0厅direction 东floor26region西城totalprice290followinfo 61unitprice 151357acreage 19.16frequency 41Name: 9019, dtype: object

#小区房源数量

# 各个区域小区房源数量community_num =house.groupby('community').size().sort_values(ascending=False)#画图asd,sdf = plt.subplots(1,1,dpi=150)#取前十五个community_num.head(15).plot(kind='bar',x='community',y='size',title='各个小区数量',ax=sdf)plt.legend(['数量'])plt.show()

各个小区房源均价

#各个小区的房源均价community_mean = house.groupby('community').mean()['unitprice'].sort_values(ascending=False)#画图asd,sdf = plt.subplots(1,1,dpi=150)#前10 条community_mean.head(10).plot(kind='bar',x='community',y='mean',title='各个小区房源均价',ax=sdf)plt.legend(['均价'])plt.show()

#各个小区的关注人数

#个个小区看房人数community_fsum = house['frequency'].groupby(house['community']).agg([('小区', 'count'), ('看房次数', 'sum')])commnuity_count = community_fsum[community_fsum['小区'] >30].sort_values(by='小区')#画图asd,sdf = plt.subplots(1,1,dpi=150)commnuity_count.plot(kind='barh',ax=sdf)plt.title('各个小区看房人数')plt.show()

#如有错误请指出,谢谢!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。