数据可视化

可视化工具

可视化工具有如下几种,seaborn可以看作对matplotlib的高级封装;Plotly可以制作可交互的图片;Bokeh同样也是制作可交互的图片;ggplot是R包ggplot2的python版本,绘制静态图片;Graph visualization with NetworkX用于绘制图数据结构的包。

类别变量可视化

类别变量可视化使用seaborn的catplot函数,可以绘制类别的散点图(stripplot, swarmplot),类别分布图(boxplot, violinplot, boxenplot),类别估计图(pointplot, barplot, countplot)

stripplot

catplot kind参数的默认值就是stripplot

1
2
3
4
5
6
7
8
9
10
"""
total_bill tip sex smoker day time size
0 16.99 1.01 Female No Sun Dinner 2
1 10.34 1.66 Male No Sun Dinner 3
2 21.01 3.50 Male No Sun Dinner 3
3 23.68 3.31 Male No Sun Dinner 2
4 24.59 3.61 Female No Sun Dinner 4
"""
tips = sns.load_dataset("tips")
sns.catplot(x="day", y="total_bill", data=tips);


使用jitter参数控制每个类别的宽度。

1
sns.catplot(x="day", y="total_bill", jitter=False, data=tips);

swarmplot

swarmplot把数据按树形展开,防止重叠,并体现出了数据的分布。类似于琴图。

1
sns.catplot(x="day", y="total_bill", hue="sex", kind="swarm", data=tips);

使用order参数,传入一个list,可以控制类别的先后顺序。

boxplot

关于箱型图,箱型图包括中位数,上四分位数,下四分位数,上限,下限,异常点。分位距IQR=Q3-Q1,异常值是大于Q3+1.5IQR或者小于Q1-1.5IQR范围内的值。

1
sns.catplot(x="day", y="total_bill", kind="box", data=tips);

boxenplot

相对于boxplot,boxenplot展示了更多的信息。

1
2
3
diamonds = sns.load_dataset("diamonds")
sns.catplot(x="color", y="price", kind="boxen",
data=diamonds.sort_values("color"));

violinplot

琴图结合了箱型图和核密度估计

1
2
sns.catplot(x="total_bill", y="day", hue="time",
kind="violin", data=tips);

barplot

1
2
titanic = sns.load_dataset("titanic")
sns.catplot(x="sex", y="survived", hue="class", kind="bar", data=titanic);

pointplot

pointplot 在barplot的基础上比较了不同类之间的大小

1
sns.catplot(x="sex", y="survived", hue="class", kind="point", data=titanic);