「目录」
绘图和可视化
Plotting and Visualization
9.1 => matplotlib
9.2 => pandas和seaborn绘图
-------> 线型图
-------> 柱状图
-------> 直方图和密度图
-------> 散布图或点图
-------> 分面网格(facet grid)和类型数据
散布图或点图
昨天标题写错了...每次出错都是发出去了以后才发现...无语。
点图和散布图是观察两个一维数据序列之间的关系的有效手段。
然后这里我没有选取原书作者给的数据集,我自己找了一个更有趣点数据集,是Kaggle上房价预测的数据集
先读取这个csv文件,然后打印前十行
house_price = pd.read_csv(r'./house_price.csv')
house_price[:10]
然后选择了几项和房价相关的属性,'LotFrontage':距离街道的直线距离,'LotArea':地皮面积,'SalePrice':销售价格这几列,通过dropna方法丢掉了所有为空的行,并且这里只选择了地皮面积小于20000平方英尺的房子,有个别房子太大了,超过20万平方英尺的都有,因为数量太少又偏离其他的太多,就过滤掉了:
data = house_price[['LotFrontage', 'LotArea', 'SalePrice']].dropna()
data = data[data['LotArea']<20000]
data.head()
先看一下地皮面积的分布,主要分布在10000平方英尺附近。
plt.figure()
sns.distplot(data['LotArea'], bins=50)
然后是距离街道的直线距离的分布:
plt.figure()
sns.distplot(data['LotFrontage'], bins=50, color='g')
最后看一下房价的分布
plt.figure()
sns.distplot(data['SalePrice'], bins=50, color='red')
这里我们用seaborn绘制散点图,X轴是地皮面积,Y轴是房价,散点的颜色color为橘色,透明度alpha为0.3:
plt.figure()
sns.scatterplot('LotArea', 'SalePrice', data=data, color='orange', alpha=0.3)
我们可以看到在地皮面积10000平方英尺左右,房价在100000到200000左右的点最密集。
seaborn的regplot方法,可以在画散点图的同时,再加上一条线性回归的线:
plt.figure()
sns.regplot('LotArea', 'SalePrice', data=data, color='orange', scatter_kws={'alpha':0.2})
所以的确是地皮面积越大,房价越贵的(虽然好像是废话,但就当验证了嘛)
sns.pairplot可以观察一组变量的散点图(散点图矩阵scatter plot matrix),对角线上是每个变量的直方图或密度估计,别的位置则是变量间的散点图:
sns.pairplot(data, plot_kws={'alpha':0.2})
就这样吧,BYE-BYE!!
往期回顾
Stay hungry, stay foolish