基于Python的北京市某平台二手房数据分析
前言:用pandas进行数据处理,pyecharts对处理后的数据进行可视化分析市面上二手房各项基本特征及房源分布情况,探索二手房大数据背后的规律。
一、数据处理
1.读取数据
import pandas as pd
df = pd.read_csv('二手房数据.csv', encoding ='gb18030',index_col=False)
df.head()
2. 数据概览
了解一下数据的基本情况,共23677条数据。电梯列有缺失,只有15422条数据。
df.info()
3. 查看电梯列共有几种值
df['电梯'].unique()
除有电梯,无电梯,还有空值、几个错值需要处理。
4.缺失值填充
df['电梯'].fillna('未知', inplace=True)
df.isnull().sum()
填充完毕后,查看是否还有空值,结果显示没有。
用“未知”代替该列中的错乱值。
df['电梯'].replace(['81','0','3室1厅','2室1厅','光熙家园一期','京师吉地'],'未知',inplace=True)
df['电梯'].unique()
5.移除重复值
df.duplicated().sum()可以查看重复值的数量,没移除前共1318条重复值,移除后重复值为0。
df.drop_duplicates(keep='first',inplace=True)
df.duplicated().sum()
6.数据规整
把部分字段格式转换成float格式,并把含有空值的行删除。
col=['面积(㎡)','价格(万元)']
df[col]=df[col].astype(float)
df['单价']=df['价格(万元)']/df['面积(㎡)']
df=df.dropna(how='all',axis=0)
df.dtypes
查看各列的数据类型如下。
二、数据可视化及分析
df.info()
对22359套房源数据进行分析,得出结论。
1.二手房房价
北京市整体
从箱型分布看出,全市二手房源的房价主要分布在400-1200万元/套左右,平均租金为609万元/套。
plt.figure(figsize=(6, 10))
ax = plt.subplot()
sns.boxenplot(y='价格(万元)', data=df,width=0.5)
ax.set_ylabel('价格(万元)', fontsize=15)
ax.set_title('二手房源房价分布', fontsize=18)
各城区二手房数量-平均价格柱状图
图1=plt.subplot(111)
图1.bar(df['市区'].unique(),df['市区'].value_counts(sort=False),color='red')
x=图1.get_xticks()
y=df.groupby(['市区'],sort=False)['价格(万元)'].mean().round(2)
图2=图1.twinx()
图2.plot(x,y,color='k',marker='o')
for a, b in zip (x,y):
plt.text(a, b, b, ha='center', va='bottom', fontsize=14)
图1.set_ylabel('数量')
图2.set_ylabel('价格(万元)')
plt.tight_layout()
可以看出,东城区、西城区和海淀区二手房平均售价最高,均在800万元以上。朝阳区、海淀区、丰台区、昌平区的二手房源数量居多。
二手房总价与面积散点图
面积越大,圆点越大;价格越高,颜色越浅。
plt.scatter(df['价格(万元)'].round(2),df['面积(㎡)'].round(2),s=df['面积(㎡)'].round(2),c=df['价格(万元)'].round(2))
plt.ylabel('面积(㎡)')
plt.xlabel('价格(万元)')
plt.tight_layout()
2.房源特征
从22359条信息来看房源的基本特征:
常见的朝向有朝西、朝南北、朝东西、朝西南。
精装修的房源占比较多,为47.73%。
有电梯的房源占比为39.08%。
plt.subplot(221)
plt.pie(x=df['朝向'].value_counts(),labels=tuple(df['朝向'].unique()),autopct='%.2f%%')
plt.subplot(222)
plt.pie(x=df['装修情况'].value_counts(),labels=tuple(df['装修情况'].unique()),autopct='%.2f%%')
plt.subplot(223)
plt.pie(x=df['电梯'].value_counts(),labels=tuple(df['电梯'].unique()),autopct='%.2f%%')
plt.tight_layout()
三、总结
本次的北京某平台二手房数据分析python实战,在通过数据清洗、可视化探索后,得出了一些小结论。
作者:THE WINNER TAKES IT AII