Python数据可视化与案例分析
立即解锁
发布时间: 2025-08-22 01:48:50 阅读量: 1 订阅数: 2 


Python数据分析与统计学入门指南
# Python数据可视化与案例分析
## 1. Seaborn绘图函数介绍
### 1.1 lmplot
lmplot是regplot和facet grid的组合,它可以展示两个连续变量在不同参数值下的关系。例如,使用以下代码可以绘制不同`Survived`和`Sex`条件下`Age`和`Fare`的关系:
```python
sns.lmplot(x='Age',y='Fare',row='Survived',data=titanic,col='Sex')
```
regplot和lmplot的区别如下:
| 函数 | 接受参数 | 作用对象 |
| ---- | ---- | ---- |
| regplot | 仅两个变量 | 坐标轴对象 |
| lmplot | 多个变量 | 图形对象 |
### 1.2 Strip plot
Strip plot类似于散点图,但它是将一个分类变量和一个连续变量进行绘图。例如,使用以下代码可以绘制`Survived`和`Age`的strip plot:
```python
sns.stripplot(x='Survived',y='Age',data=titanic)
```
### 1.3 Swarm plot
Swarm plot与strip plot类似,但它的点不会重叠,能更好地展示连续变量的分布。例如:
```python
sns.swarmplot(x='Survived',y='Age',data=titanic)
```
### 1.4 Catplot
Catplot是strip plot和facet grid的组合,可以通过指定`row`、`col`或`hue`参数,将一个连续变量与多个分类变量进行绘图。默认生成strip plot,也可以通过`kind`参数更改绘图类型。例如:
```python
sns.catplot(x='Survived',y='Age',col='Survived',row='Sex',data=titanic)
```
### 1.5 Pair plot
Pair plot展示数据集中所有可能变量对之间的双变量关系。使用以下代码可以自动绘制数据集中所有变量的pair plot:
```python
sns.pairplot(data=titanic)
```
### 1.6 Joint plot
Joint plot展示两个变量之间的关系以及它们各自的分布。例如:
```python
sns.jointplot(x='Fare',y='Age',data=titanic)
```
## 2. 可视化相关总结
### 2.1 可视化库
Python中有三个用于可视化的库:Matplotlib(基于Matlab)、Pandas和Seaborn。
### 2.2 绘图前的准备
在绘图前,需要确定要绘制的变量类型和数量。对于分类变量,可以使用条形图和饼图;对于连续变量,可以使用直方图和散点图。
### 2.3 Matplotlib接口
Matplotlib有两种绘图接口:
- 状态接口:使用`pyplot`类,跟踪该类对象的当前状态。
- 面向对象接口:使用对象层次结构表示绘图的各个元素,并使用这些对象进行绘图。
### 2.4 Pandas绘图
Pandas的`plot`函数使用Matplotlib作为后端,通过改变传递的参数可以轻松绘制各种图形,体现了多态性。
### 2.5 Seaborn
Seaborn也使用Matplotlib作为后端,通过更改默认参数,减少了对图形元素进行聚合、标注和颜色编码的需求,还能可视化多个变量。
## 3. 可视化复习练习
### 3.1 变量与绘图选择
| 变量情况 | 适用绘图 |
| ---- | ---- |
| 一个分类变量 | 计数图 |
| 一个连续变量 | 直方图、核密度估计 |
| 两个连续变量 | 散点图、折线图 |
| 三个或更多连续变量 | 热力图 |
| 一个连续和一个分类变量 | strip plot、swarm plot、条形图 |
| 两个连续和两个或更多分类变量 | catplot、facet grid、lmplot |
### 3.2 函数匹配
| 函数 | 描述 |
| ---- | ---- |
| Facet grid | 连续变量在分类参数网格上的绘图 |
| Catplot | 分类网格和strip plot的组合 |
| Swarm plot | 一个连续和一个分类变量的绘图,点不重叠 |
| Pair plot | 展示所有可能变量对之间的关系和单个变量的分布 |
| Violin plot | 箱线图和核密度估计的组合 |
### 3.3 Pandas可视化
Pandas使用`plot`方法和`kind`参数创建各种图形,需要数据为宽格式或聚合形式,默认不进行聚合,需要使用`value_counts`方法进行聚合。
### 3.4 显示图形的魔法命令
使用`%matplotlib inline`可以在Matplotlib和Pandas中内联显示图形。
### 3.5 坐标轴对象
“axes”指的是子图或绘图区域,是图形对象的一部分,一个图形可以包含多个子图。
### 3.6 热力图参数设置
- 相关矩阵:使用`df.corr()`生成表示相关矩阵的DataFrame。
- 颜色映射:使用`cmap`参数。
- 显示相关程度的数值:使用`annot`参数(`annot=True`)。
### 3.7 Iris数据集绘图
```python
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
import pandas as pd
data=load_iris()
iris=pd.DataFrame(data=data.data,columns=data.feature_names)
iris['species']=data.target
iris['species']=iris['species'].map({0:'setosa',1:'versicolor',2:'virginica'})
iris['species'].value_counts().plot(kind='bar')
fig=plt.figure(figsize=(10,5))
ax1=fig.add_subplot(121)
iris.plot(kind='scatter',x='petal length (cm)',y='petal width (cm)',ax=ax1)
ax1.set_title("Petal length vs width")
ax1.set_xlabel("Petal length")
ax1.set_ylabel("Petal width")
ax2=fig.add_subplot(122)
iris.plot(kind='scatter',x='sepal length (cm)',y='sepal width (cm)',ax=ax2)
ax2.set_xlabel("Sepal length")
ax2.set_ylabel("Sepal width")
ax2.set_title("Sepal length vs width")
fig.subplots_adjust(wspace=1)
```
### 3.8 Tips数据集绘图
```python
import seaborn as sns
tips = sns.load_dataset("tips")
sns.catplot(x='smoker',y='total_bill',row='time',col='sex',data=tips)
g=sns.FacetGrid(tips,row='sex',col='smoker')
g.map(plt.scatter,'tip','total_bill')
```
##
0
0
复制全文
相关推荐









