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()
参考文档:
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()