项目分享目的:在学习完Numpy,Pandas,matplotlib后,熟练运用它们的最好方法就是实践并总结。在下面的分享中,我会将每一步进行分析与代码展示,
希望能对大家有所帮助。
项目名称:链家二手房数据分析
项目概述:本项目主要利用上面提到的三个工具进行数据的处理,从不同的维度对北京各区二手房市场情况进行可视化分析,为后续
数据挖掘建模预测房价打好基础。
分析步骤:工具库导入--->数据加载--->数据清洗--->数据可视化分析
导包
# 数据分析三剑客
import numpy as np
import seaborn as sns
import pandas as pd
from pandas import Series,DataFrame
import matplotlib.pyplot as plt
sns.set_style({'font.sans-serif':['simhei','Arial']})
%matplotlib inline
# 设置忽略警告
import warnings
warnings.filterwarnings('ignore')
# 设置全局字体
plt.rcParams['font.sans-serif'] = 'Songti SC'
plt.rcParams['axes.unicode_minus'] = False
数据载入
lj_data = pd.read_csv('./lianjia.csv')
display(lj_data.head(),lj_data.shape)
display(lj_data.info(),lj_data.describe())
'''
通过观察:
1. Elevator列存在严重的数据缺失情况
2. Size列最小值为2平米,最大值为1019平米,跟据常识,初步判断为异常值
'''
'''
观察发现:
1. ID属性对于本次分析没有什么意义,所以可以将其移除;
2. 由于房屋单价分析起来比较方便,简单使用总价/面积即可得到,所以增加一列PerPrice(只用于分析,不是预测特征);
3. 原数据属性的顺序比较杂乱,所以可以调整一下。
'''
# 添加 PerPrice(单位均价) 列
df = lj_data.copy()
df['PerPrice'] = (lj_data['Price']/lj_data['Size']).round(2)
# 重新摆放列位置
columns = ['Region','District','Garden','Layout','Floor','Year','Size','Elevator',
'Direction','Renovation','PerPrice','Price']
df = pd.DataFrame(df,columns = columns)
# 重新查看数据集
df.head(3)
# 对二手房区域分组,对比二手房数量和每平米房价
df_house_count = df.groupby('Region')['Price'].count().sort_values(ascending = False).to_frame().reset_index()
df_house_mean = df.groupby('Region')['PerPrice'].mean().sort_values(ascending = False).to_frame().reset_index()
# display(df_house_count.head(2),df_house_mean.head(2))