import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns #统计绘图
from sklearn.preprocessing import StandardScaler
from scipy.stats import norm
from scipy import stats #统计
import warnings
warnings.filterwarnings('ignore')
#画图直接显示
%matplotlib inline
读取CSV数据
df_train = pd.read_csv('Ch3-HousePrice-train.csv')
#数据.columns 输出各列名称 分析有哪些数据,
df_train.columns
#describe函数用来数据的快速统计汇总
df_train['SalePrice'].describe()
统计值变量说明:
count:数量统计,此列共有多少有效值
unipue:不同的值有多少个
std:标准差
min:最小值
25%:四分之一分位数
50%:二分之一分位数
75%:四分之三分位数
max:最大值
mean:均值
#SalePrice频度分布图
sns.distplot(df_train['Saleprice'])
#show skewness and Kurtosis 偏态和峰度
print("Skewness : %f " % df_train['SalePrice'].skew())
print("Kurtosis : %f " % df_train['SalePrice'].kurt())
偏态:
偏度定义中包括正态分布(偏度=0),右偏分布(也叫正偏分布,其偏度>0),左偏分布(也叫负偏分布,其偏度<0)。
峰度:峰度包括正态分布(峰度值=3),厚尾(峰度值>3),瘦尾(峰度值<3)
#scatter plot Grlivearea / SalePrice
var = 'GrLivArea'
#pd.concat 函数 可以将数据根据不同的轴作简单的融合 axis = 0-->代表行 axis = 1 --> 代表列
data = pd.concat([df_train['SalePrice'],df_train[var]],axis = 1)
data.plot.scatter(x = var, y = 'SalePrice',ylim = (0,800000));
【pandas数据合并之一文弄懂pd.concat() - 知乎 (zhihu.com)】
#Saleprice / totalbsmtsf 散点图
var = 'TotalBsmtSF'
data = pd.concat([df_train['SalePrice'],df_train[var]],axis = 1)
data.plot.scatter(x = var, y = 'SalePrice',ylim = (0,800000))
绘图函数plt.scatter( ),它用于散点图的绘制
(1)基本参数讲解
- x, y → 散点的坐标
- s → 散点的面积
- c → 散点的颜色(默认值为蓝色,'b',其余颜色同plt.plot( ))
- marker → 散点样式(默认值为实心圆,'o',其余样式同plt.plot( ))
- alpha → 散点透明度([0, 1]之间的数,0表示完全透明,1则表示完全不透明)
- linewidths →散点的边缘线宽
- edgecolors → 散点的边缘颜色
这里为了生成点的坐标,用到了numpy中的随机数生成器 np.random.rand(d0, d1, ..., dn)
- rand( )函数根据给定维度生成[0,1)之间的随机数据(包含0,不包含1)
- dn表示生成数据的维度
- 返回值为指定维度的array
(2)高级参数讲解
- cmap → 指的是matplotlib.colors.Colormap,相当于多个调色盘的合集
- norm、vmin、vmax → 散点颜色亮度设置
#box plot overallqual / saleprice
var = 'OverallQual'
data = pd.concat([df_train['SalePrice'],df_train['OverallQual']],axis = 1)
f,ax = plt.subplots(figsize = (8,6)) #subplots 创建一个画像(figure)和一组子图(subplots)。
fig = sns.boxplot(x = var,y = 'SalePrice',data = data)
fig.axis (ymin = 0,ymax = 800000)
#saleprice / yearbuilt 箱线图
var = 'YearBuilt'
data = pd.concat([df_train['SalePrice'],df_train['YearBuilt']],axis = 1)
f, ax = plt.subplots(figsize = (25,10))
fig = sns.boxplot(x = var,y = 'SalePrice',data = data)
fig.axis(ymin = 0,yamx = 800000)
plt.xticks(rotation = 90) #x轴标签 转90度
#correlation matrix 相关矩阵
corrmat = df_train.corr()
f ,ax = plt.subplots(figsize = (12,9))
sns.heatmap(corrmat,vmax = 8,square = True,cmap = 'hot')
#房价的相关性矩阵
k = 10
cols = corrmat.nlargest(k,'SalePrice')['SalePrice'].index #取出与saleprice相关性最大的十项
cm = np.corrcoef(df_train[cols].values.T) #相关系数
sns.set(font_scale = 1.25)
hm = sns.heatmap(cm,cbar = True,annot = True,square = True ,fmt = '.2f',annot_kws = {'size': 10},yticklabels = cols.values,xticklabels = cols.values)
plt.show()
基于房屋数据的房价相关性分析(含python代码)_python房产数据分析代码_99.99%的博客-CSDN博客