【Day22-图表】文不如表,表不如图——使用seaborn一行透过图表观察资料!

我们人类是视觉的动物,因此在面对非常大量的资料的时候有一个合适、快速、有效的视觉化方法绝对是非常有必要的。所以今天就来简单介绍几个在做资料分析的时候最基础的几个图表吧

绘图神器seaborn

虽然它其实也是基於mathplotlib核心开发的,而且一般python在学习的过程中也几乎都是先学到mathpoltlib,不过我还是强烈建议在可以的情况下尽量优先用seaborn,因为它

就 很 好看。

ggplot2对於R来说让资料视觉化提升到了一个新的境界,python也不能每次都画太丑的图你说是吧?

范例资料——某校109年GPA成绩

df = pd.read_excel("GPA.xlsx")
df["Department"] = df["科号"].apply(lambda x: re.search("[A-Z]+", x)[0]) # 取出系所为连续字母
df["GPA"] = df["平均值"].apply(lambda x: re.search("[\d\.]+", x)[0]).apply(float) # 取出数字并转换型态
df["var"] = df["标准差"].apply(lambda x: re.search("[\d\.]+", x)[0]).apply(float)
df

df2 = df[df["Department"].isin(["EE", "PHYS", "MATH", "ECON"])] # 筛选一下资料好做举例

观察一变数的分布情况——盒装图、小提琴图

盒状图

盒装图会显示的资讯有

  • 全值范围:最大值、最小值
  • 中位数
  • 中间半数资料范围:第一、第三四分位数

因此很适合让我们检视看看是否有离群值,或是资料分布是否过於集中/分散

# 盒状图
sns.boxplot(x=df2["Department"], y=df2["GPA"])

小提琴图

小提琴图和盒状图很类似,只是比起离散的几个数据点资料,更多了资料在不通过值时候的密度(即那个值的时候有多少资料)

sns.violinplot(x=df2["Department"], y=df2["GPA"])

观察二变数的相关趋势——散布图、趋势线

当我们要同时观察两个以上的变数的时候,我们所能详细观察的资料就通常不会像一维资料一样细,但这个时候我们反而是会比较重视两个变数之间的关系,因此散布图就是一个很好的工具,而同时我们可以加上趋势线来辅助我们判断

# 分布图
sns.regplot(x=df2["GPA"], y=df2["var"],ci=10)

观察多变数之间的潜在关系——平行座标图

有的时候我们的资料会有很多组的变数,你需要大概的看一下这些变数之间的关系,但又不需要到去画出Correlation那麽细,这个时候平行座标图绝对是你的好选择

from pandas.plotting import parallel_coordinates
iris = sns.load_dataset('iris') # 换个资料范例用iris
parallel_coordinates(iris, 'species')
plt.show()

最後放张梗图打完收工


在最初看到这种图的时候真的挺震惊的,有一种「啊原来还能这样玩啊」的感觉XD


<<:  如何让 Grid 显示关联式 SQL 查询的资料 - day22

>>:  [2021铁人赛 Day22] picoCTF 2019 Game 游玩介绍

Day 25:获取位置经纬度

本篇文章同步发表在 HKT 线上教室 部落格,线上影音教学课程已上架至 Udemy 和 Youtu...

第05天 - 一些些的Bootstrap、CSS

1.首先是 Bootstrap 的用法,其实就是 【1.引入它 ; 2.复制它】 引入的部分在【第0...

EP17 - 容器化你的 Django 专案

昨天我们简单介绍什麽是容器, 今天我们要开始实战, 将你的 Django Portal, 逐步包装成...

[DAY 26]随机组队功能

公会成员平均在线成员人数有90位,但实际在discord频道活跃人数不到20位 为了让非活跃在线人数...

[Day 09] 资料和资料之间的一对多关联

透过 DAO 方式存取资料,除了用传统的 join 方式处理资料表之间的关联外,也可以直接从物件之间...