数据处理基础之统计方法和可视化图表构建

1.对某一列的几种属性进行统计,例如下面统计数据中Survived列的0,1属性,和pclass的1,2,3三种属性。

import pandas as pd
import numpy as np
from pandas import Series,DataFrame
#设置数据显示过程
import  matplotlib.pyplot as plt
data_train=pd.read_csv("/home/mocas/kaggle/titanic_com/train.csv") ##乘客数据
##建立画布
fig=plt.figure(1)##定义画布

fig.set(alpha=0.2)##alpha代表透明度,控制透明度,0为完全透明,1为不透明
plt.subplot2grid((2,3),(0,0)) ##分格展示,利用跨度显示,分成2行,3列,第一幅图是0,0
train["Survived"].value_counts() ##对survived列进行分类统计
data_train.Survived.value_counts().plot(kind='bar')# 柱状图,series绘图
plt.title("获救情况,(1为获救)")
plt.ylabel("人数")

#对Pclass列进行统计
plt.subplot2grid((2,3),(0,1))
train["Pclass"].value_counts()
data_train.Pclass.value_counts().plot(kind="bar")
plt.title("乘客等级分布")
plt.ylabel("人数")
plt.show()

2.对某列的特定属性变量进行统计,比如对Pclass列中的survived的人数进行统计

import pandas as pd
import numpy as np
from pandas import Series,DataFrame
#设置数据显示过程
import  matplotlib.pyplot as plt

##比如统计age列的各Pclass的特征属性
plt.subplot2grid((2,3),(1,0),colspan=2)##绘制密度图
data_train.Age[data_train.Pclass == 1].plot(kind='kde')
data_train.Age[data_train.Pclass == 2].plot(kind='kde')
data_train.Age[data_train.Pclass == 3].plot(kind='kde')
plt.xlabel("年龄")
plt.ylabel("密度")
plt.title("各等级乘客的年龄分布")
plt.legend(("头等舱","2等舱","3等舱"),loc="best") ##loc表示图例位置
plt.show()

#看看各乘客等级的获救情况,查看Pclass列的survivd的属性
fig2=plt.figure(2) ##这个会增加一个画布,
fig2.set(alpha=0.2)
Survived_0 = data_train.Pclass[data_train.Survived == 0].value_counts()
Survived_1 = data_train.Pclass[data_train.Survived == 1].value_counts()
df=pd.DataFrame({u'获救':Survived_1, u'未获救':Survived_0})
df.plot(kind="bar",stacked=True) ##注意哪个才是x轴,分类依据,stacked堆叠条形图
plt.xlabel(u"乘客等级")
plt.ylabel(u"人数")
plt.title("各等级乘客获救情况")
#plt.show()

##统计survived列里面sex为female,并且pclass!=3的数值,并绘图
ax1=fig.add_subplot(141)
data_train.Survived[data_train.Sex=="female"][data_train.Pclass!=3].value_counts().plot(kind='bar', label="female highclass", color='#FA2479')
ax1.set_xticklabels([u"获救", u"未获救"], rotation=0)
ax1.legend([u"女性/高级舱"], loc='best')

也可以通过groupby进行处理统计可视化

import pandas as pd
import  matplotlib.pyplot as plt
import seaborn as sns
##进一步观察数据与结果的关系,利用相关性分析
pclass_relate=train.groupby(['Pclass'])['Pclass','Survived'].mean() ##与下面的groupby的使用等效
# print(group_relate)
train[['Pclass','Survived']].groupby(['Pclass']).mean().plot(kind='bar') ##等效于data.plot.bar(),柱状图

3.对某列的特定属性变量进行分类综合统计,比如统计embarked列的survived两种属性进行综合统计

Survived_0 = data_train.Embarked[data_train.Survived == 0].value_counts() ##统计列中的特定属性
Survived_1 = data_train.Embarked[data_train.Survived == 1].value_counts()
df=pd.DataFrame({u'获救':Survived_1, u'未获救':Survived_0}) ##转换成series数据
df.plot(kind='bar', stacked=True) ##绘制堆叠数据图
plt.title(u"各登录港口乘客的获救情况")
plt.xlabel(u"登录港口")
plt.ylabel(u"人数")

更简单的方法是利用sns的countplot

fig=plt.figure()
sns.countplot('Embarked',hue='Survived',data=train)

也可以通过如下sns.map绘图

import pandas as pd
import  matplotlib.pyplot as plt
import seaborn as sns
g = sns.FacetGrid(train, col='Survived') 
g.map(plt.hist, 'Age', bins=20)

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值