Rui Qin
Data visualization is an important part of data analysis. In STATW 5702, we learned how to create graphs of data by ggplot2, a data visualization package in R. Likewise, there are some libraries in Python able to do the same job as ggplot2. Seaborn is a data visualization tool based on Python library, matplotlib. Like ggplot2 in R, seaborn can create multiple kinds of statistical graphs for exploratory and explanatory purpose. In this file I will show some examples of graphs that we have learnt in class and I will use three languages, English, Chinese, and Japanese, to briefly explain them.
数据可视化是数据分析中非常重要的一部分。课上,我们学习并掌握了R语言中通过ggplot2绘制统计图表。Python中也有同样的数据可视化库包括matplotlib和seaborn。他们均可以将数据框中的数据以图标的形式表现出来,以此达到数据分析的目的。这里我将用seaborn展示几组课上学过的常用图表绘制方法。
データ可視化はデータ解析にとってとても重要なんです。クラスでggplot2とRを利用し、統計グラフを作るのが勉強しました。同様に、Pythonのデータ可視化ライブラリもあります。よく使われるのはmatplotlibとseabornです。ggplot2のように、seabornは色々な統計グラフを作れます。これから、私はseabornの使い方を説明したいと思います。
There are two ways to install seaborn:
seaborn可通过两种方式安装:
seabornのインストール方法は二つあります:
#Import libraries
#导入可视化库
#ライブラリの準備
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn import datasets
#Load iris and penguins data
#导入数据
#データの準備
df = datasets.load_iris(as_frame=True).data
df["class"] = datasets.load_iris(as_frame=True).target.replace([0, 1, 2], ["Setosa", "Versicolour", "Virginica"])
df_2 = sns.load_dataset("penguins")
#Adjust size of plots
#调整图表大小
#グラフのサイズを変える
plt.rcParams["figure.figsize"] = (12,8)
Often data scientists would like to know distributions of continuous variables. Histogram is one of the most widely used tools that visually present distributions of data.
通常我们需要知道变量的分布情况。直方图有着能直观地呈现变量分布的优点,所以我们经常采用以分析连续变量。
連続変数の分布状況直にをあらわせるので、柱図表はよく使われています。
#Set style
#设置风格
#スタイルのセッティング
sns.set_style("dark")
#create histogram
#绘制直方图
#柱図表を作ります
sns.histplot(x = df["sepal length (cm)"])
<AxesSubplot:xlabel='sepal length (cm)', ylabel='Count'>
#create histogram
#绘制直方图
#柱図表を作ります
sns.histplot(y = df["sepal length (cm)"])
<AxesSubplot:xlabel='Count', ylabel='sepal length (cm)'>
#create histogram
#绘制直方图
#柱図表を作ります
sns.histplot(x = df["sepal length (cm)"], binwidth = 1)
<AxesSubplot:xlabel='sepal length (cm)', ylabel='Count'>
#create histogram
#绘制直方图
#柱図表を作ります
sns.histplot(x = df["sepal length (cm)"], cumulative = True)
<AxesSubplot:xlabel='sepal length (cm)', ylabel='Count'>
To show correlation between continuous variables, we use scatterplot in exploratory analysis.
散点图可用之判断两连续变量之间的关系。
散布図によって、二つの連続変数の関係を見えます。
#create scatterplot
#绘制散点图
#散布図を作ります
sns.scatterplot(x = df["sepal length (cm)"], y = df["sepal width (cm)"])
<AxesSubplot:xlabel='sepal length (cm)', ylabel='sepal width (cm)'>
#create scatterplot
#绘制散点图
#散布図を作ります
sns.scatterplot(x = df["sepal length (cm)"], y = df["sepal width (cm)"], hue = df["class"])
<AxesSubplot:xlabel='sepal length (cm)', ylabel='sepal width (cm)'>
#create scatterplot
#绘制散点图
#散布図を作ります
sns.scatterplot(x = df["sepal length (cm)"], y = df["sepal width (cm)"], style = df["class"])
<AxesSubplot:xlabel='sepal length (cm)', ylabel='sepal width (cm)'>
#create scatterplot matrix
#绘制散点图矩阵
#散布図行列を作ります
sns.pairplot(df, hue = "class")
<seaborn.axisgrid.PairGrid at 0x27ac4264c48>
Compared to histogram and scatterplot, Boxplot is better at showing median, range, and outliers.
相较于直方图与散点图, 箱型图能更好地展示中位数,间距,以及异常值。
柱図表と散布図より、箱ひげ図の方が中央値と範囲と外れ値を見やすいです。
#create boxplot
#绘制箱型图
#箱ひげ図を描きます
sns.boxplot(x = "class", y = "sepal length (cm)", data = df)
<AxesSubplot:xlabel='class', ylabel='sepal length (cm)'>
It's said that boxplot fails to show distribution of variables. Hence, we could use violin plot.
然而,箱型图难以描绘出变量的分布情况。因此我们使用小提琴图弥补这一缺陷。
箱ひげ図が変数の分布状況描けないと言ったから、バイオリン図を使います。
#create violin plot
#绘制小提琴图
#バイオリン図を作ります
sns.violinplot(x = "class", y = "sepal length (cm)", data = df)
<AxesSubplot:xlabel='class', ylabel='sepal length (cm)'>
For categorical data, we can use bar chart.
使用柱状图以展示分类数据。
棒グラフで、カテゴリ変数を解析します。
#create bar chart
#绘制柱状图
#棒グラフを作ります
sns.countplot(df_2.species)
<AxesSubplot:xlabel='species', ylabel='count'>
#Create a bar chart faceted by sex variable in penguins data
#通过性别分类,绘制两张柱状图
#性別にわけて、二つのグラフを作ります
grid = sns.FacetGrid(col = "sex", data = df_2, height = 5)
#Change value of height to adjust plot size
#调整图表大小
#グラフのサイズを変えます
grid.map(sns.countplot, "species")
<seaborn.axisgrid.FacetGrid at 0x27ac69ec448>
#create bar chart
#绘制柱状图
#棒グラフを作ります
sns.countplot(x = df_2.species, hue = df_2.sex)
<AxesSubplot:xlabel='species', ylabel='count'>
There are five styles to choose in seaborn: darkgrid, whitegrid, dark, white, and ticks. According to different exploratory or explanatory purposes, different styles can be chosen so that graphs are easy to understand.
seaborn中总共有五种风格可供选择:darkgrid, whitegrid, dark, white, 和ticks。根据不同情况,可以选择不同的风格确保表格清晰易懂。
seabornの中に、スタイルは五つあります:darkgridとwhitegridとdarkとwhiteとticks。スタイルを選んで、グランを理解やすくします。
#Present four styles used in seaborn
#展示四种图表风格
#四つのスタイルのグラフを作ります
fig = plt.figure()
gs = plt.GridSpec(2, 2)
with sns.axes_style("darkgrid"):
ax = fig.add_subplot(gs[0, 0])
sns.scatterplot(x = df["sepal length (cm)"], y = df["sepal width (cm)"])
with sns.axes_style("dark"):
ax = fig.add_subplot(gs[0, 1])
sns.scatterplot(x = df["sepal length (cm)"], y = df["sepal width (cm)"])
with sns.axes_style("whitegrid"):
ax = fig.add_subplot(gs[1, 0])
sns.scatterplot(x = df["sepal length (cm)"], y = df["sepal width (cm)"])
with sns.axes_style("white"):
ax = fig.add_subplot(gs[1, 1])
sns.scatterplot(x = df["sepal length (cm)"], y = df["sepal width (cm)"])
plt.show()