Pandas 是一个强大的 Python 库,用于处理和分析数据。它提供了一系列数据可视化工具,可以创建直观、信息丰富的图表和图形。数据可视化是通过内置绘图功能实现的,这主要依赖于 Matplotlib 库。Pandas 提供了一种直观且简便的方式来快速生成各种类型的图表,从而帮助分析和解释数据。

1、Pandas 的绘图功能

Pandas 内置的绘图功能进行数据可视化是一种快速且有效的方法,它主要依赖于 Matplotlib 库。Pandas 提供了多种绘图类型,适用于不同的数据分析和可视化需求。

1)折线图

使用plot()绘制拆线图,常用参数如下,

参数

描述

x

一维数组或列表,表示数据点的横坐标。

y

一维数组或列表,表示数据点的纵坐标。

color

指定线条颜色,可以是字符串颜色名或 RGB 颜色值。

linewidth

指定线条宽度。

linestyle

指定线条样式,例如 - (实线)、 -- (虚线)、 -. (点划线) 等。

marker

指定数据点标记形状,例如 o (圆)、 x (叉)、 * (星) 等。

markersize

指定数据点标记大小。

label

指定用于图例的标签。

2)绘制散点图

使用scatter()绘制散点图,常用参数如下,

参数

描述

x

一维数组或列表,表示数据点的横坐标。

y

一维数组或列表,表示数据点的纵坐标。

c

指定数据点颜色,可以是字符串颜色名、RGB 颜色值或一维数组。

s

指定数据点大小,可以是单个值或一维数组。

marker

指定数据点形状,例如 o (圆)、 x (叉)、 * (星) 等。

alpha

指定数据点透明度,取值范围为 0.0 (完全透明) 到 1.0 (完全不透明)。

edgecolors

指定数据点边缘颜色,可以是字符串颜色名、RGB 颜色值或一维数组。

linewidths

指定数据点边缘宽度,可以是单个值或一维数组。

3)绘制直方图

使用hist()绘制直方图,常用参数如下,

参数

描述

x

一维数组或列表,表示数据点。

bins

指定直方图的柱状图数量,默认为 10。

range

指定直方图的绘制范围,例如 (min_value, max_value)。

histtype

指定直方图的类型,例如 'bar' (柱状图)、 'step' (阶梯图) 等。

color

指定直方图柱状图的颜色,可以是字符串颜色名、RGB 颜色值或一维数组。

alpha

指定直方图柱状图的透明度,取值范围为 0.0 (完全透明) 到 1.0 (完全不透明)。

edgecolor

指定直方图柱状图边缘的颜色,可以是字符串颜色名、RGB 颜色值或一维数组。

linewidth

指定直方图柱状图边缘的宽度。

4)绘制条形图

使用hist()绘制条形图,常用参数如下,

参数

描述

x

x轴的标签或位置。

y

y轴的标签或位置。

figsize

图形大小(英寸),例如 (10, 5)。

color

各个条形的颜色。

title

图表的标题。

legend

布尔值,表示是否显示或隐藏图例。

stacked

布尔值,表示是否创建堆叠条形图。

width

条形的宽度(浮点数,通常介于0到1之间)。

align

条形的对齐方式('center' 或 'edge')。

rot

刻度的旋转角度(例如,45代表45度)。

grid

布尔值,表示是否显示或隐藏网格。

fontsize

刻度标签的字体大小。

edgecolor

条形边缘的颜色。

error_kw

错误条的关键字参数(字典形式)。

log

布尔值,表示是否将y轴设置为对数刻度。

5)绘制箱图

使用box()绘制箱图,常用参数如下,

参数

描述

column

要绘制的列的名称或名称列表。

by

用于分组的列的名称,用于创建分组箱线图。

ax

用于绘制图表的 Matplotlib 轴对象。

fontsize

轴标签的字体大小。

rot

轴标签的旋转度数。

grid

布尔值,指定是否显示网格线。

figsize

图表的大小(英寸),例如 (10, 5)。

layout

箱线图的布局,例如 (2, 3) 表示 2 行 3 列。

return_type

返回类型,可以是 'axes' 或 'dict'。

vert

布尔值,指定箱线图是垂直还是水平显示。

patch_artist

布尔值,指定是否用 Artist 来绘制箱体,可以更改箱体样式。

meanline

布尔值,指定是否显示均值线。

showmeans

布尔值,指定是否显示均值。

showcaps

布尔值,指定是否显示须(whisker)的上下顶帽(caps)。

whis

指定须(whisker)的范围,可以是数值或字符串,如 1.5 或 'range'。

6)使用示例

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

# 创建示例 DataFrame
df = pd.DataFrame(np.random.randn(10, 4), columns=list('ABCD'))

# 绘制折线图
df.plot(color='red', linestyle='--', marker='o', markersize=10, label='数据1')
plt.show()

# 绘制条形图
df.plot.bar(color='skyblue', figsize=(8, 6), title='Bar Chart Example', legend=False, rot=0, grid=True)
plt.show()

# 绘制直方图
df.plot.hist(alpha=0.7,bins=20, edgecolor='black')
plt.show()

# 绘制散点图
df.plot.scatter(x='A', y='B', s=50, marker='o', alpha=0.8, edgecolors='black', linewidths=1)
plt.show()

# 绘制箱线图
df.plot.box( grid=True, figsize=(8, 6), vert=False, patch_artist=True)
plt.show()

参考文档:

Python Pandas 绘制图表

https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.plot.html

https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.plot.bar.html

https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.hist.html

https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.plot.scatter.html

https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.plot.box.html

2、Pandas 与 Matplotlib 集成

Pandas 的数据可视化功能与 Matplotlib 和 Seaborn 等库紧密集成,提供了丰富的数据可视化选项。

1)Matplotlib

Pandas 绘图实际上是在 Matplotlib 的基础上构建的,因此可以轻松地使用 Matplotlib 的功能来自定义 Pandas 图表。

import pandas as pd
import matplotlib.pyplot as plt

data = {'Year': [2015, 2016, 2017, 2018, 2019],
        'Sales': [200, 300, 400, 500, 600]}
df = pd.DataFrame(data)

# 使用 Pandas 绘图
df.plot(x='Year', y='Sales', kind='line')
ax = df.plot()
# 使用 Matplotlib 定制图表
ax.set_title('title cjavapy')
ax.set_xlabel('Year')
ax.set_ylabel('Sales')
plt.show()

3、Pandas 与 Seaborn 集成

Seaborn 是一个基于 Matplotlib 的 Python 数据可视化库,提供了一种更高级别的接口,专门用于绘制统计图形。它与 Pandas 结合得非常好,可以直接使用 Pandas 的 DataFrame 进行绘图。它提供了一系列预定义的样式和主题,可以快速创建美观的图表。Seaborn 的图表风格比较现代,适合用于学术论文或商业报告等场合。

1)安装Seaborn

pip install Seaborn 

2)直方图(Histogram)

常用参数:

参数

描述

data

数据源,DataFrame 或数组。

x

水平轴的列名称。

y

垂直轴的列名称(通常只使用 x 或 y 中的一个)。

hue

用于分类的列,生成不同类别的颜色区分。

bins

柱子的数量或边界序列。

binwidth

每个柱子的宽度(会覆盖 bins 设置)。

binrange

分箱范围(x轴或y轴)。

stat

数据表示的统计方法(例如,'count', 'frequency')。

cumulative

布尔值,如果为 True,则绘制累积直方图。

kde

布尔值,如果为 True,则添加核密度估计图。

element

绘图元素类型(例如,'bars', 'step')。

fill

布尔值,如果为 True,则填充柱子颜色。

multiple

多个直方图的叠加方式(例如,'layer', 'stack')。

color

直方图的颜色。

palette

不同类别的颜色调色板。

使用示例:

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# 创建示例数据
df = pd.DataFrame({'data': [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]})

# 绘制直方图
sns.histplot(df['data'],bins=4, color='blue', kde=True)
plt.show()

2)散点图(Scatter Plot)

常用参数:

data

数据源,DataFrame 或数组。

x

水平轴的列名称。

y

垂直轴的列名称。

hue

用于分类的列,生成不同类别的颜色区分的散点图。

style

用于分类,为不同类别的点指定不同的标记样式。

size

用于指定散点的大小的列,大小随列值变化。

sizes

散点的大小范围,例如 (20, 200)。

palette

不同类别的颜色调色板。

alpha

点的透明度,范围从 0 到 1。

legend

图例的显示方式,例如 'brief'、'full' 或 False(不显示)。

ax

用于绘制的 Matplotlib 轴对象。

使用示例:

import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt

# 创建示例数据
df = pd.DataFrame({'x': [1, 2, 3, 4], 'y': [4, 3, 2, 1]})

# 绘制散点图
sns.scatterplot(x='x', y='y', data=df, size='x', sizes=(20, 200))
plt.show()

3)热图(Heatmap)

常用参数:

参数

描述

data

数据源,DataFrame 或二维数组。

vmin

颜色映射的最小值。

vmax

颜色映射的最大值。

cmap

热图的颜色映射方案。

center

色彩条中心的值。

annot

布尔值或矩形数据集,表示是否在热图中显示数据值。

fmt

注释文本的字符串格式代码(如果 annot 为 True)。

linewidths

分隔每个单元格的线宽。

linecolor

分隔每个单元格的线颜色。

cbar

布尔值,表示是否绘制颜色条。

cbar_kws

颜色条的关键字参数。

square

布尔值,表示是否将每个热图单元格设置为正方形。

xticklabels

x轴的标签。

yticklabels

y轴的标签。

mask

布尔数组或DataFrame,用于隐藏热图的某些部分。

使用示例:

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

# 创建示例数据
data = np.random.rand(4, 4)
df = pd.DataFrame(data, columns=['a', 'b', 'c', 'd'])

# 绘制热图
sns.heatmap(df, annot=True, cmap='coolwarm')
plt.show()

推荐文档