基于pandas和seaborn进行数据可视化以及相关性分析

本博客学习pandas数据结构和seabon,以kaggle数据集为例,完成数据可视化以及相关性分析。数据总共12列,其中Survived列为target属性(y属性)。

加载原始数据

train_data = pd.read_csv('../datas/train.csv')  # train set
print train_data.head()

可视化相关性矩阵

计算各个属性的线性相关性,颜色越深相关性越大,并将与Survived相关性排序打印。

hitmapTemp = train_data[['Pclass','Age','SibSp','Parch','Fare','Survived']]
hitmapData = hitmapTemp.corr()
f, ax = plt.subplots(figsize=(12, 12))
sns.heatmap(hitmapData, vmax=1, square=True)
plt.savefig('./figs/Correlation-Matrix.png')
hitmap_dict = hitmapData['Survived'].to_dict()
del hitmap_dict['Survived']
print("List the numerical features decendingly by their correlation with Sale Price:\n")
for ele in sorted(hitmap_dict.items(), key = lambda x: -abs(x[1])):

相关性矩阵
Pclass : -0.338481035961
Fare : 0.257306522385
Parch : 0.0816294070835
Age : -0.0772210945722
SibSp : -0.0353224988857

具体分析Pclass特征

  • 统计Pclass特征每个值的个数
print train_data['Pclass'].value_counts()

3 491
1 216
2 184
Name: Pclass, dtype: int64

  • 统计Pclass属性与Survived属性之间关系
print train_data[['Pclass', 'Survived']].groupby(['Pclass'], as_index=False).mean().sort_values(by='Survived', ascending=False)

Pclass Survived
0 1 0.629630
1 2 0.472826
2 3 0.242363

  • Pclass- Age 画盒图
plt.figure(figsize = (12, 6))
sns.boxplot(x = 'Pclass', y = 'Age',  data = train_data)
xt = plt.xticks(rotation=45)
plt.show()

这里写图片描述
从图中我们可以看出级别越高,年纪也高

  • Age, Surviverd 画回归图
plt.figure(figsize = (12, 6))
sns.regplot(x = 'Age', y = 'Survived', data = train_data)
plt.title('Age')
plt.show()

这里写图片描述
从图片我们大概可以看出,Age与Survived成反比例关系,也就是年纪越大存活概率越小。

  • (Class,Sex) Vs Age矩阵条形分布图
# (Class,Sex) Vs Age 分布图
plt.figure(figsize = (12, 6))
grid = sns.FacetGrid(train_data, row='Pclass', col='Sex', size=2.2, aspect=1.6)
grid.map(plt.hist, 'Age', bins=10) # 将Age分为10段的bins
grid.add_legend()
plt.show()

这里写图片描述

  • Class Vs Age 矩阵分布图(指行或者列)
plt.figure(figsize = (12, 6))
grid = sns.FacetGrid(train_data, col='Pclass', size=2.2, aspect=1.6)
grid.map(plt.hist, 'Age', bins=10) # 将Age分为10段的bins
grid.add_legend()
plt.show()

这里写图片描述

  • Class Vs Age Survived 矩阵散点图
plt.figure(figsize = (12, 6))
grid = sns.FacetGrid(train_data, col='Pclass', size=2.2, aspect=1.6) #确定几个图形的分布
grid.map(plt.scatter, 'Age','Survived')
grid.add_legend()
plt.show()

这里写图片描述

总结

pandas数据结构可以方便实现数据预处理,包括基本元素统计、均值、缺失值以及过滤,加上seaborn和matplotlib实现数据相关性分析以及特征可视化分析。

  • 2
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值