Pandas怎么做数据可视化?

文章导读
Previous Quiz Next 数据可视化在数据分析中扮演着重要角色,它帮助您以图形方式表示数据,以便更好地理解数据并识别模式。然而,Pandas 库主要用于数据操作和分析,但它也通过 Python 的 Matplotlib 库支持提供了数据可视化功能。
📋 目录
  1. A 为可视化设置环境
  2. B Pandas 基本绘图方法
  3. C Pandas 中可用的图表类型
  4. D 直方图
  5. E 箱线图
  6. F 面积图
  7. G 散点图
  8. H 饼图
A A

Python Pandas - 可视化



Previous
Quiz
Next

数据可视化在数据分析中扮演着重要角色,它帮助您以图形方式表示数据,以便更好地理解数据并识别模式。然而,Pandas 库主要用于数据操作和分析,但它也通过 Python 的 Matplotlib 库支持提供了数据可视化功能。

在 Python 中,Pandas 库提供了一个基本方法 .plot(),用于生成各种可视化图表,以及不同的专用绘图方法。这些可视化工具建立在 Python 的 Matplotlib 库之上,提供灵活性和自定义选项。

在幕后,Pandas 生成的每个图表实际上都是一个 Matplotlib 对象。这种集成允许用户利用 Matplotlib 的广泛自定义选项来微调 Pandas 生成的图表。

在本教程中,我们将学习使用 Pandas 数据结构进行数据可视化的基础知识。

为可视化设置环境

在学习 Pandas 数据可视化之前,我们应确保已安装 Matplotlib 库。以下是安装 Matplotlib 库的命令 −

pip install pandas matplotlib

导入库

除了 import pandas as pd 之外,您还需要导入 Matplotlib 的函数式接口,以显示、自定义和保存图表,使用以下命令 −

import matplotlib.pyplot as plt

显示图表

Jupyter Notebook 或 IPython shell 等环境中,图表通常会在生成时自动显示。然而,在标准的 Python scriptshell 中,这不会自动发生。要在这种环境中显式显示图表,我们需要调用以下命令 −

plt.show()

此命令会在 GUI 窗口中渲染 Matplotlib figure 对象。

Pandas 基本绘图方法

Pandas 库为 Series 和 DataFrame 对象提供了名为 plot() 的基本绘图方法,用于绘制各种类型的图表。此方法是 matplotlib plt.plot() 方法的一个简单封装。

语法

以下是 Pandas .plot() 方法的语法 −

DataFrame.plot(*args, **kwargs)

其中,

  • kind: 指定图表类型(默认:'line')。

  • *args:

  • **kwargs:

示例

以下是使用 Pandas plot() 方法绘制随机 DataFrame 数据的示例。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 创建一个随机 DataFrame 
df = pd.DataFrame(np.random.randn(10,4),index=pd.date_range('1/1/2000',
   periods=10), columns=list('ABCD'))

# 绘制 DataFrame
df.plot()
plt.show()

输出 如下 −

Basic Plotting

如果 index 包含日期,则 pandas .plot() 方法会调用 Matplotlib 的 gca().autofmt_xdate() 来格式化 x 轴标签。

我们还可以使用 xy 关键字来绘制一列相对于另一列。

Pandas 中可用的图表类型

Pandas 通过 kind 参数或专用绘图方法支持多种图表类型。以下是不同绘图方法的概述 −

图表类型kind 值专用方法使用场景
折线图'line'.line()可视化时间或序列上的趋势。
柱状图'bar'.bar()比较各类别间的数量。
水平柱状图'barh'.barh()与柱状图相同,但为水平方向。
直方图'hist'.hist()可视化数值数据的分布。
箱线图'box'.box()总结数据分布和异常值。
面积图'area'.area()使用累积数据突出趋势。
散点图'scatter'.scatter()两个变量之间的关系,仅适用于 DataFrame。
六边形分箱图'hexbin'.hexbin()可视化二维数据密度,仅适用于 DataFrame。
密度图'kde' 或 'density'.kde() 或 .density()平滑数据分布(核密度估计)。
饼图'pie'.pie()圆形图中的比例数据。

示例:使用 plot() 方法绘制柱状图

现在让我们通过创建一个柱状图来了解柱状图是什么。柱状图可以按以下方式创建 −

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 创建一个随机 DataFrame 
df = pd.DataFrame(np.random.rand(10,4), columns=['a','b','c','d'])

# 绘制柱状图
df.plot(kind='bar')
plt.show()

输出 如下 −

Bar Plot

要生成堆叠柱状图,请传入 stacked=True

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 创建一个随机 DataFrame 
df = pd.DataFrame(np.random.rand(10,4), columns=['a','b','c','d'])

# 绘制堆叠柱状图
df.plot(kind='bar', stacked=True)
plt.show()

输出 如下 −

Stacked Bar Plot

要获取水平柱状图,请使用 barh 选项 −

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 创建一个随机 DataFrame 
df = pd.DataFrame(np.random.rand(10,4), columns=['a','b','c','d'])

# 绘制水平柱状图
df.plot(kind='barh', stacked=True)
plt.show()

输出 如下 −

Horizontal Bar Plot

直方图

可以使用 plot() 方法的 hist 选项绘制直方图。我们可以指定 bin 的数量。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 创建一个随机 DataFrame 
df = pd.DataFrame({'a':np.random.randn(1000)+1,'b':np.random.randn(1000),
'c':np.random.randn(1000) - 1}, columns=['a', 'b', 'c'])

df.plot(kind='hist', bins=20)
plt.show()

输出 如下 −

Histograms using plot.hist()

箱线图

可以通过为 Series 和 DataFrame 对象调用 'box' 选项来绘制箱线图,以可视化每列中的值分布。

例如,以下是一个箱线图,代表在 [0,1) 区间上均匀随机变量的 5 次试验,每次 10 个观测值。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 创建一个随机 DataFrame 
df = pd.DataFrame(np.random.rand(10, 5), columns=['A', 'B', 'C', 'D', 'E'])

df.plot(kind='box')
plt.show()

输出 如下 −

Box Plots

面积图

可以使用 plot(kind='area') 选项创建面积图。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 创建一个随机 DataFrame 
df = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd'])
df.plot(kind='area')

plt.show()

输出 如下 −

Area Plot

散点图

可以使用 plot(kind='scatter') 选项创建散点图。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 创建一个随机 DataFrame 
df = pd.DataFrame(np.random.rand(50, 4), columns=['a', 'b', 'c', 'd'])
df.plot(kind='scatter', x='a', y='b')

plt.show()

输出 如下 −

Scatter Plot

饼图

可以使用 plot(kind='pie') 选项创建饼图。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 创建一个随机 DataFrame 
df = pd.DataFrame(3 * np.random.rand(4), index=['a', 'b', 'c', 'd'], columns=['x'])
df.plot(kind='pie', subplots=True)

plt.show()

输出 如下 −

Pie Chart