Logo
Section 1 / 5

直方图与样式表

让我们学习如何创建和设计直方图。

导入

直方图与样式表

让我们学习如何创建和设计直方图。

在本节课中,我们将学习如何使用 pandas 进行数据可视化。我们已经探索了 pandas 在数据分析方面的强大功能,现在让我们来了解 pandas 内置的数据可视化能力。利用 pandas,我们可以快速生成外观不错的图表。这一功能基于 matplotlib 构建,并已集成到 pandas 中,便于直接使用。

生成 DataFrame

我们先创建两个随机的 DataFrame 来进行本节课的学习。

注意:虽然可以使用 seaborn 提供的内置 DataFrame,但手动创建 DataFrame 能帮助我们巩固之前所学的知识。

df1 DataFrame 示例

以下示例展示如何通过 df1 生成 DataFrame:

1# 首先导入必要的库 2import numpy as np 3import pandas as pd 4# 使用 pandas 的 date_range 函数 5# periods = 500,表示生成 500 个时间点(天) 6dates = pd.date_range('1/1/2000', periods=500) 7 8# 设置随机种子,确保每次运行结果一致 9np.random.seed(42) # 可尝试取消设置种子或更换数值,观察结果差异! 10 11# 使用 rand() 生成一个序列 12col_D = np.random.rand(500) 13 14# 使用 numpy 的 randn() 生成标准正态分布数据 15data1 = np.random.randn(500,3) # (500,3) 指定所需数组形状 16 17# randn(500,3) 表示生成 500×3 的二维数组 18df1 = pd.DataFrame(data=data1, index=dates, columns=['A', 'B', 'C']) 19df1['D'] = col_D # 回顾一下 pandas 数据分析部分中如何向 DataFrame 添加新列! 20print(df1.head())

df2 DataFrame 示例

以下示例展示如何通过 df2 生成 DataFrame:

1# 首先导入必要的库 2import numpy as np 3import pandas as pd 4# rand(20,3) 表示生成 20×3 的二维数组 5 6# 设置随机种子,确保结果可复现 7np.random.seed(42) # 可尝试取消设置种子或更换数值,观察结果差异! 8 9data2 = np.random.rand(20,3) 10col = ['X', 'Y', 'Z'] 11df2 = pd.DataFrame(data=data2, columns=col) 12print(df2.head())

直方图(Histogram)

有了 DataFrame 后,我们从最简单的直方图开始。获取直方图有两种方式:

  1. DataFrame.hist()
  2. DataFrame.plot(kind='hist')

下面我们尝试这两种方法。

使用 DataFrame.hist() 绘制直方图的代码如下:

1df1['A'].hist(bins=30) 2# 注意:底层仍使用 matplotlib 实现

也可以通过指定 kind 参数绘制:

1# 使用 kind 参数绘图 2df1['A'].plot(kind='hist', bins=30) 3# 若对整个数据集绘图 4# df1.plot(kind='hist', bins=30)

样式表(Style Sheets)

Matplotlib 提供了样式表功能,可用于美化图表。常用的样式包括 ggplot、bmh、fivethirtyeight 等。这些样式定义了一组统一的绘图风格规则,使所有图表看起来更加协调一致,提升专业感。下面我们重新绘制之前的直方图,并先应用一种样式。

使用 ggplot 样式:

1import matplotlib.pyplot as plt 2plt.style.use('ggplot') 3df1['A'].hist(bins=30) 4# 注意:底层仍使用 matplotlib 实现

接下来尝试其他可用样式。

"bmh"

调用 bmh 样式并重新绘制直方图:

1plt.style.use('bmh') 2df1['A'].hist(bins=30) 3# 注意:底层仍使用 matplotlib 实现

"dark_background"

切换为 dark_background 样式并重绘:

1plt.style.use('dark_background') 2df1['A'].hist(bins=30) 3# 注意:底层仍使用 matplotlib 实现

"fivethirtyeight"

最后使用 fivethirtyeight 样式重新绘制:

1plt.style.use('fivethirtyeight') 2df1['A'].hist(bins=30) 3# 注意:底层仍使用 matplotlib 实现

Python 核心知识

图表类型