匠心精神 - 良心品质腾讯认可的专业机构-IT人的高薪实战学院

咨询电话:4000806560

用Python快速实现数据可视化

用Python快速实现数据可视化

数据可视化是目前数据分析、商业智能、机器学习等领域中不可或缺的一个环节,它可以让我们更清晰地认识数据,发现数据中的规律、异常等信息,对于决策制定、问题解决等方面都能起到极大的帮助。在Python中,有很多优秀的数据可视化库,如matplotlib、seaborn、plotly等,能够满足我们大部分的需求。本篇文章将基于matplotlib和seaborn,向大家介绍如何用Python快速实现数据可视化。

一、引入数据

数据的来源有很多,如从文件中读取、从API中获取、从数据库中获取等。为了演示方便,我们将使用一个自带的数据集Iris,这个数据集包含了三个类别的鸢尾花的花萼长度、花萼宽度、花瓣长度和花瓣宽度四个变量。我们首先需要先安装matplotlib和seaborn这两个库:

```python
!pip install matplotlib seaborn
```

然后就可以引入数据集并查看其基本信息了:

```python
import seaborn as sns
iris = sns.load_dataset('iris')
print(iris.head())
print(iris.info())
```

输出结果如下:

```
   sepal_length  sepal_width  petal_length  petal_width species
0           5.1          3.5           1.4          0.2  setosa
1           4.9          3.0           1.4          0.2  setosa
2           4.7          3.2           1.3          0.2  setosa
3           4.6          3.1           1.5          0.2  setosa
4           5.0          3.6           1.4          0.2  setosa

RangeIndex: 150 entries, 0 to 149
Data columns (total 5 columns):
 #   Column        Non-Null Count  Dtype  
---  ------        --------------  -----  
 0   sepal_length  150 non-null    float64
 1   sepal_width   150 non-null    float64
 2   petal_length  150 non-null    float64
 3   petal_width   150 non-null    float64
 4   species       150 non-null    object 
dtypes: float64(4), object(1)
memory usage: 6.0+ KB
```

可以看到,该数据集中包含了150个样本,分别有花萼长度、花萼宽度、花瓣长度和花瓣宽度四个变量,其中species为分类变量,共有三个类别。

二、单变量数据可视化

当我们想要了解一个单一的变量的分布情况时,可以使用直方图(histogram)或密度图(density plot)来展示该变量的分布情况。在matplotlib中,我们可以使用hist函数来绘制直方图,使用kde函数来绘制密度图;在seaborn中,我们可以使用distplot函数来同时展示直方图和密度图。

例如,我们想要了解花萼长度这一变量的分布情况,可以使用如下代码进行可视化:

```python
import matplotlib.pyplot as plt
sns.distplot(iris['sepal_length'], bins=20)
plt.show()
```

输出结果如下:

![花萼长度直方图和密度图.png](https://i.loli.net/2021/08/19/M8Ywfk5qC76pbGD.png)

可以看到,花萼长度的分布大致呈正态分布,其中一些样本的花萼长度小于4厘米,另一些样本的花萼长度大于7厘米。我们还可以使用rugplot函数来为每个样本增加一条垂直的游程,以便更好地查看样本的密度。例如,我们可以使用如下代码进行可视化:

```python
sns.distplot(iris['sepal_length'], bins=20, kde=False, rug=True)
plt.show()
```

输出结果如下:

![花萼长度直方图和rugplot.png](https://i.loli.net/2021/08/19/JAsvHbM8q1TC5L9.png)

可以看到,rugplot可以更加清晰地展示每个样本的分布情况,但同时也更加复杂。

三、双变量数据可视化

当我们想要了解两个变量之间的关系时,可以使用散点图(scatter plot)或热力图(heatmap)来展示它们之间的关系。在matplotlib中,我们可以使用scatter函数来绘制散点图,使用pcolor或imshow函数来绘制热力图;在seaborn中,我们可以使用jointplot函数来绘制散点图和分布图的组合,使用heatmap函数来绘制热力图。

例如,我们想要了解花萼长度和花萼宽度这两个变量之间的关系,可以使用如下代码进行可视化:

```python
sns.jointplot(x='sepal_length', y='sepal_width', data=iris, kind='scatter')
plt.show()
```

输出结果如下:

![花萼长度和花萼宽度散点图.png](https://i.loli.net/2021/08/19/e8LkqPb1cRXgpJ5.png)

可以看到,花萼长度和花萼宽度之间存在一定的负相关关系,即花萼长度越大,花萼宽度就越小。我们还可以使用kind参数来指定图形类型,如kind='kde'可以绘制核密度估计图,kind='hex'可以绘制六边形图。

另外,当我们想要了解多个变量之间的关系时,可以使用pairplot函数来展示它们之间的关系。例如,我们可以使用如下代码进行可视化:

```python
sns.pairplot(data=iris, hue='species')
plt.show()
```

输出结果如下:

![多变量关系图.png](https://i.loli.net/2021/08/19/6jxYQKag9tbhGZB.png)

可以看到,不同的花种之间存在着不同的属性关系,其中setosa与versicolor和virginica之间的区别较为明显,可以通过花瓣长度和花瓣宽度来进行区分。

四、小结

本篇文章基于matplotlib和seaborn介绍了如何使用Python快速实现数据可视化,包括单变量数据可视化、双变量数据可视化和多变量数据可视化等方面。数据可视化是数据分析、商业智能、机器学习等领域中不可或缺的一个环节,可以帮助我们更好地认识数据、发现信息和规律,并通过图形化的方式进行展示、交流和决策。在实践中,我们还需要结合具体的问题和场景来选择合适的可视化工具和技术,并进行针对性的优化和改进。