📜  使用 Seaborn 和 Pandas 创建时间序列图(1)

📅  最后修改于: 2023-12-03 15:22:16.665000             🧑  作者: Mango

使用 Seaborn 和 Pandas 创建时间序列图

简介

在数据分析中,时间序列图被广泛应用于可视化时间上的变化和趋势分析。Seaborn 是一个 Python 可视化库,它提供了一些常用的时间序列图类型和美观的样式。Pandas 是一个数据处理库,其 DataFrame 和 Series 对象具有时间序列数据类型,可以直接与 Seaborn 进行配合使用,方便地创建时间序列图。

本文将介绍如何使用 Seaborn 和 Pandas 创建时间序列图。

准备工作

首先,我们需要安装 Seaborn 和 Pandas 库。可以使用以下命令进行安装:

pip install seaborn pandas
创建时间序列图
利用 Pandas 生成示例数据

首先,我们可以使用 Pandas 生成时间序列数据。下面的代码中,我们创建了一个时间序列索引,并生成了一些随机数据。

import pandas as pd
import numpy as np

np.random.seed(0)
dates = pd.date_range('1/1/2000', periods=1000)
data = np.random.randn(1000)
ts = pd.Series(data, index=dates)
绘制折线图

利用 Seaborn 的 lineplot() 函数,我们可以绘制时间序列的折线图。下面的代码中,我们将 Pandas 时间序列索引的日期作为 x 轴,数据作为 y 轴,绘制了一条折线。

import seaborn as sns
import matplotlib.pyplot as plt

sns.set(style="darkgrid")
sns.lineplot(x=ts.index, y=ts.values)
plt.show()

使用 Markdown 显示代码:

```python
import seaborn as sns
import matplotlib.pyplot as plt

sns.set(style="darkgrid")
sns.lineplot(x=ts.index, y=ts.values)
plt.show()

### 绘制柱状图

Seaborn 的 `barplot()` 函数可以绘制时间序列的柱状图。下面的代码中,我们将 Pandas 时间序列索引的日期作为 x 轴,数据作为 y 轴,绘制了柱状图。由于数据较多,我们可以使用 `resample()` 对数据进行重新采样,以便于图表更加清晰和易于理解。

```python
ts_resample = ts.resample('M').mean()
sns.set(style="darkgrid")
sns.barplot(x=ts_resample.index, y=ts_resample.values, color='b')
plt.show()

使用 Markdown 显示代码:

```python
ts_resample = ts.resample('M').mean()
sns.set(style="darkgrid")
sns.barplot(x=ts_resample.index, y=ts_resample.values, color='b')
plt.show()

### 绘制气泡图

Seaborn 的 `scatterplot()` 函数可以绘制时间序列的气泡图。下面的代码中,我们将 Pandas 时间序列索引的日期作为 x 轴,数据作为 y 轴,数据的数值作为气泡的大小,绘制了气泡图。

```python
ts_data = pd.DataFrame(index=ts.index)
ts_data['value'] = ts.values
ts_data['date'] = ts.index
ts_data['size'] = ts_data['value'].apply(lambda x: abs(x)) * 100
sns.set(style="darkgrid")
sns.scatterplot(x="date", y="value", size="size", data=ts_data)
plt.show()

使用 Markdown 显示代码:

```python
ts_data = pd.DataFrame(index=ts.index)
ts_data['value'] = ts.values
ts_data['date'] = ts.index
ts_data['size'] = ts_data['value'].apply(lambda x: abs(x)) * 100
sns.set(style="darkgrid")
sns.scatterplot(x="date", y="value", size="size", data=ts_data)
plt.show()

## 结论

通过 Seaborn 和 Pandas 的配合使用,我们可以方便地创建各种时间序列图,帮助分析数据的趋势和变化。Seaborn 的美观样式和丰富的可视化功能,能够让我们更加直观地理解数据。