目的:本篇给大家介绍一个数据分析的初级项目,目的是通过项目了解如何使用Python进行简单的数据分析。
数据源:博主通过爬虫采集的链家全网北京二手房数据(公众号后台回复 二手房数据 便可获取)。
数据初探
首先导入要使用的科学计算包numpy
,pandas
,可视化matplotlib
,seaborn
,以及机器学习包sklearn
。
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib as mpl
import matplotlib.pyplot as plt
from IPython.display import display
plt.style.use("fivethirtyeight")
sns.set_style({'font.sans-serif':['simhei','Arial']})
%matplotlib inline
# 检查Python版本
from sys import version_info
if version_info.major != 3:
raise Exception('请使用Python 3 来完成此项目')
复制代码
然后导入数据,并进行初步的观察,这些观察包括了解数据特征的缺失值,异常值,以及大概的描述性统计。
# 导入链家二手房数据
lianjia_df = pd.read_csv('lianjia.csv')
display(lianjia_df.head(n=2))
复制代码
初步观察到一共有11
个特征变量,Price
在这里是我们的目标变量,然后我们继续深入观察一下。
# 检查缺失值情况
lianjia_df.info()
复制代码
发现了数据集一共有23677
条数据,其中Elevator
特征有明显的缺失值。
lianjia_df.describe()
复制代码
上面结果给出了特征值是数值的一些统计值,包括平均数,标准差,中位数,最小值,最大值,25%分位数,75%分位数。这些统计结果简单直接,对于初始了解一个特征好坏非常有用,比如我们观察到 Size 特征
的最大值为1019平米,最小值为2平米,那么我们就要思考这个在实际中是不是存在的,如果不存在没有意义,那么这个数据就是一个异常值,会严重影响模型的性能。
当然,这只是初步观察,后续我们会用数据可视化来清晰的展示,并证实我们的猜测。
# 添加新特征房屋均价
df = lianjia_df.copy()
df['PerPrice'] = lianjia_df['Price']/lianjia_df['Size']
# 重新摆放列位置
columns = ['Region', 'District', 'Garden', 'Layout', 'Floor', 'Year', 'Size', 'Elevator', 'Direction', 'Renovation'