原标题:python数据可视化-相互关系及分布
撰文 Yotsunoha
编辑 袁老师
数据可视化是对数据初步和直观的判断。
使用统计模型来估计两个的观测值之间的简单关系是非常有帮助的。seaborn本身并不是统计分析的工具包。要获得与回归模型的拟合相关的定量度量,应使用statsmodels。但是,seaborn的目标是通过可视化方式快速而轻松地浏览数据集。
一、单变量分布
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
sns.set(color_codes=True)
data = pd.read_csv("演示数据-副本.csv")
sns.distplot(data['cr_mean']);
sns.kdeplot(data['age'], shade=True);
二、数据相互关系
sns.jointplot(x="bun_mean", y="cr_mean", data=data, kind="reg");
上面这张图可以看到变量的各自分布情况及相互关系。
sns.jointplot(x="bun_mean", y="cr_mean", data=data,kind="kde");
上面这张图是核密度估计
g = sns.jointplot(x="bun_mean", y="cr_mean", data=data, kind="kde", color="m")
g.plot_joint(plt.scatter, c="g", s=30, linewidth=1, marker="+")
g.ax_joint.collections[0].set_alpha(0);
这张图是核密度并加上了数据分布情况
三、不同分层下的数据相互关系
sns.lmplot(x="bun_mean", y="cr_mean", data=data,hue="rrt");
图中rrt=0代表没有进行肾替代治疗,rrt=1代表进行了肾替代治疗。需要进行肾替代治疗的患者可能具有更高的cr值。
sns.lmplot(x="rdw_mean", y="aps", data=data,hue="survival", col="rrt");
图中survival=0代表生存,=1代表死亡。在未进行rrt治疗的患者中,aps评分和rdw可能能够预测患者是否会发生死亡。
sns.lmplot(x= "bun_mean", y= "cr_mean", data= data,hue= "survival", col= "rrt",row= "aki");
这组患者中未发生aki的患者很少进行rrt治疗(aki=0/rrt=0),但在发生aki的患者中进行rrt治疗似乎并没有降低死亡率(aki=1/rrt=1),需要进一步分析发生死亡的原因。
以上都是图示的结果,具体的相互关系分析,还需要结合临床并选用合适的回归模型进行回归分析。例如lasso,ols,wls,逐步回归等都可以用来筛选变量。
参考网站:
seaborn: statistical data visualization — seaborn 0.10.1 documentation
https://seaborn.pydata.org/index.html
责任编辑: