用Python Seaborn进行数据可视化
数据可视化是以图片的形式呈现数据。它对数据分析极为重要,主要是因为以数据为中心的Python软件包的奇妙生态系统。而且,它有助于理解数据,不管它有多复杂,通过总结并以简单易懂的格式呈现大量的数据,帮助清晰有效地沟通信息,从而理解数据的意义。
Pandas和Seaborn是其中的一个软件包,使导入和分析数据变得更加容易。在这篇文章中,我们将使用Pandas和Seaborn来分析数据。
Pandas
Pandas提供清理和处理数据的工具。它是最流行的Python库,用于数据分析。在pandas中,一个数据表被称为数据框架。
因此,让我们开始创建Pandas数据框架:
示例 1:
# Python code demonstrate creating
import pandas as pd
# initialise data of lists.
data = {'Name':[ 'Mohe' , 'Karnal' , 'Yrik' , 'jack' ],
'Age':[ 30 , 21 , 29 , 28 ]}
# Create DataFrame
df = pd.DataFrame( data )
# Print the output.
df
输出:
例子2:从系统中加载CSV数据并通过pandas显示。
# import module
import pandas
# load the csv
data = pandas.read_csv("nba.csv")
# show first 5 column
data.head()
输出:
Seaborn
Seaborn是一个了不起的可视化库,用于Python中的统计图形绘制。它建立在matplotlib库的基础上,也与pandas的数据结构紧密结合。
安装
对于Python环境:
pip install seaborn
对于conda环境:
conda install seaborn
让我们用seaborn创建一些基本的绘图:
# Importing libraries
import numpy as np
import seaborn as sns
# Selecting style as white,
# dark, whitegrid, darkgrid
# or ticks
sns.set( style = "white" )
# Generate a random univariate
# dataset
rs = np.random.RandomState( 10 )
d = rs.normal( size = 50 )
# Plot a simple histogram and kde
# with binsize determined automatically
sns.distplot(d, kde = True, color = "g")
输出:
Seaborn:统计数据可视化
Seaborn帮助可视化统计关系,为了了解数据集中的变量是如何相互关联的,以及这种关系是如何依赖于其他变量的,我们进行统计分析。这种统计分析有助于可视化趋势和识别数据集中的各种模式。
这些都是有助于可视化的情节。
- Line Plot
- Scatter Plot
- Box plot
- Point plot
- Count plot
- Violin plot
- Swarm plot
- Bar plot
- KDE Plot
Line plot:
线状图 是最流行的绘制x和y之间关系的图,有可能有几个语义分组。
语法 : sns.lineeplot(x=None, y=None)
参数:
x, y:输入数据变量;必须是数字。可以直接传递数据或引用数据中的列。
让我们用线图和pandas将数据可视化:
示例 1:
# import module
import seaborn as sns
import pandas
# loading csv
data = pandas.read_csv("nba.csv")
# plotting lineplot
sns.lineplot( data['Age'], data['Weight'])
输出:
例子2:使用色调参数来绘制图表。
# import module
import seaborn as sns
import pandas
# read the csv data
data = pandas.read_csv("nba.csv")
# plot
sns.lineplot(data['Age'],data['Weight'], hue =data["Position"])
输出:
Scatter Plot:
散点图 可以使用几个语义分组,这可以帮助在图形中很好地理解对连续/分类数据。它可以画一个二维图。
语法: seaborn.scatterplot(x=None, y=None)
Parameters:
x, y: 输入的数据变量应该是数字。
返回:该方法返回Axes对象,并在其上绘制绘图。
让我们用散点图和pandas将数据可视化:
示例 1:
# import module
import seaborn
import pandas
# load csv
data = pandas.read_csv("nba.csv")
# plotting
seaborn.scatterplot(data['Age'],data['Weight'])
输出:
例子2:使用色调参数来绘制图表。
import seaborn
import pandas
data = pandas.read_csv("nba.csv")
seaborn.scatterplot( data['Age'], data['Weight'], hue =data["Position"])
输出:
Box plot:
箱形图(或箱须图)是通过连续/分类数据的四分位数来描述数字数据组的视觉表现。
箱形图由5个方面组成。
- Minimum
- 第一个四分之一或25%
- 中位数(第二四分位数)或50%。
- 第三四分之一或75%
- Maximum
语法:
seaborn.boxplot(x=None, y=None, hue=None, data=None)
参数:
- x, y, hue:用于绘制长形数据的输入。
- data:用于绘图的数据集。如果没有x和y,这将被解释为宽格式。
返回:它返回绘制有绘图的 Axes 对象。
用Pandas绘制箱形图:
示例 1:
# import module
import seaborn as sns
import pandas
# read csv and plotting
data = pandas.read_csv( "nba.csv" )
sns.boxplot( data['Age'] )
输出:
示例 2:
# import module
import seaborn as sns
import pandas
# read csv and plotting
data = pandas.read_csv( "nba.csv" )
sns.boxplot( data['Age'], data['Weight'])
输出:
Violin Plot:
琴形图类似于boxplot。它显示了一个或多个分类变量的几个定量数据,这样就可以比较这些分布情况。
语法: seaborn.violinplot(x=None, y=None, hue=None, data=None)
参数:
- x, y, hue:用于绘制长形数据的输入。
- data:用于绘图的数据集。
用Pandas绘制小提琴图:
示例 1:
# import module
import seaborn as sns
import pandas
# read csv and plot
data = pandas.read_csv("nba.csv")
sns.violinplot(data['Age'])
输出:
示例 2:
# import module
import seaborn
seaborn.set(style = 'whitegrid')
# read csv and plot
data = pandas.read_csv("nba.csv")
seaborn.violinplot(x ="Age", y ="Weight",data = data)
输出:
Swarm plot:
蜂群图类似于带状图,我们可以针对分类数据画出一个非重叠点的蜂群图。
语法: seaborn.swarmplot(x=None, y=None, hue=None, data=None)
参数:
- x, y, hue:用于绘制长形数据的输入。
- data:用于绘图的数据集。
用Pandas绘制蜂群图:
示例 1:
# import module
import seaborn
seaborn.set(style = 'whitegrid')
# read csv and plot
data = pandas.read_csv( "nba.csv" )
seaborn.swarmplot(x = data["Age"])
输出:
示例 2:
# import module
import seaborn
seaborn.set(style = 'whitegrid')
# read csv and plot
data = pandas.read_csv("nba.csv")
seaborn.swarmplot(x ="Age", y ="Weight",data = data)
输出:
Bar plot:
条形图用每个矩形的高度表示一个数字变量的中心趋势估计值,并用误差条提供该估计值周围的不确定性的一些指示。
语法 : seaborn.barplot(x=None, y=None, hue=None, data=None)
参数 :
- x, y :此参数取数据中的变量名称或矢量数据,用于绘制长形数据的输入。
- hue : (optional) 这个参数取列名,用于颜色编码。
- data : (optional) 此参数采取DataFrame、数组或数组列表,用于绘图的数据集。如果没有x和y,这将被解释为宽格式。否则,它将被视为长格式。
返回 : 返回带有绘图的 Axes 对象。
用Pandas绘制条形图:
示例 1:
# import module
import seaborn
seaborn.set(style = 'whitegrid')
# read csv and plot
data = pandas.read_csv("nba.csv")
seaborn.barplot(x =data["Age"])
输出:
示例 2:
# import module
import seaborn
seaborn.set(style = 'whitegrid')
# read csv and plot
data = pandas.read_csv("nba.csv")
seaborn.barplot(x ="Age", y ="Weight", data = data)
输出:
Point plot:
点图用于显示点估计值和使用散点图字形的置信区间。点图通过散点图点的位置来表示对数字变量中心趋势的估计,并通过误差条对该估计的不确定性提供一些指示。
语法:seaborn.pointplot(x=None, y=None, hue=None, data=None)
参数:
- x, y: 用于绘制长形数据的输入。
- hue: (可选)用于颜色编码的列名。
- data:数据框架作为绘图的数据集。
返回: Axes对象,并在其上绘制情节。
用Pandas绘制点状图:
示例:
# import module
import seaborn
seaborn.set(style = 'whitegrid')
# read csv and plot
data = pandas.read_csv("nba.csv")
seaborn.pointplot(x = "Age", y = "Weight", data = data)
输出:
Count plot:
计数图用于显示每个分类仓中观察值的计数,使用条形图。
返回: Axes对象,并在其上画出了情节。
参数 :
- x, y:该参数取数据中的变量名称或矢量数据,可选,用于绘制长形数据的输入。
- hue : (可选) 这个参数取列名,用于颜色编码。
- data : (optional) 这个参数采取DataFrame、数组或数组列表,用于绘图的数据集。如果没有x和y,这将被解释为宽格式。否则,它被认为是长格式的。
返回:返回绘制有绘图的Axes对象。
用Pandas绘制计数图:
示例:
# import module
import seaborn
seaborn.set(style = 'whitegrid')
# read csv and plot
data = pandas.read_csv("nba.csv")
seaborn.countplot(data["Age"])
输出:
KDE Plot:
KDE图被描述为核心密度估计,用于可视化连续变量的概率密度。它描述了连续变量中不同数值的概率密度。我们也可以为多个样本绘制一个图形,这有助于更有效地进行数据可视化。
语法: seaborn.kdeplot(x=None, *, y=None, vertical=False, palette=None, **kwargs)
参数:
- x, y :向量或数据中的键值
-
vertical : boolean (True or False)
-
data : pandas.DataFrame, numpy.ndarray, mapping, or sequence
用Pandas绘制KDE绘图:
示例 1:
# importing the required libraries
from sklearn import datasets
import pandas as pd
import seaborn as sns
# Setting up the Data Frame
iris = datasets.load_iris()
iris_df = pd.DataFrame(iris.data, columns=['Sepal_Length',
'Sepal_Width', 'Patal_Length', 'Petal_Width'])
iris_df['Target'] = iris.target
iris_df['Target'].replace([0], 'Iris_Setosa', inplace=True)
iris_df['Target'].replace([1], 'Iris_Vercicolor', inplace=True)
iris_df['Target'].replace([2], 'Iris_Virginica', inplace=True)
# Plotting the KDE Plot
sns.kdeplot(iris_df.loc[(iris_df['Target'] =='Iris_Virginica'),
'Sepal_Length'], color = 'b', shade = True, Label ='Iris_Virginica')
输出:
示例 2:
# import module
import seaborn as sns
import pandas
# read top 5 column
data = pandas.read_csv("nba.csv").head()
sns.kdeplot( data['Age'], data['Number'])
输出:
使用seaborn和pandas的双变量和单变量数据
在开始之前,让我们对双变量和单变量数据做一个小小的介绍。
双变量数据:这种类型的数据涉及两个不同的变量。这类数据的分析涉及原因和关系,分析的目的是找出两个变量之间的关系。
单变量数据:这种类型的数据只由**个变量组成。因此,单变量数据的分析是最简单的分析形式,因为信息只涉及到一个变化的数量。它不涉及原因或关系,分析的主要目的是描述数据并找到其中存在的模式。
让我们看看一个双变量数据的例子:
例子1:使用箱形图。
# import module
import seaborn as sns
import pandas
# read csv and plotting
data = pandas.read_csv( "nba.csv" )
sns.boxplot( data['Age'], data['Height'])
输出:
例子2:使用KDE plot。
# import module
import seaborn as sns
import pandas
# read top 5 column
data = pandas.read_csv("nba.csv").head()
sns.kdeplot( data['Age'], data['Weight'])
输出:
让我们看一个单变量数据分布的例子:
例子:使用dist绘图
# import module
import seaborn as sns
import pandas
# read top 5 column
data = pandas.read_csv("nba.csv").head()
sns.distplot( data['Age'])
输出: