plot()
plot()是 Pandas 中最常用的绘图函数之一,它可以绘制多种类型的图表,如折线图、柱状图、散点图等。常用参数:
-
kind:指定要绘制的图表类型,可选值包括 ‘line’(折线图,默认)、‘bar’(柱状图)、‘barh’(水平柱状图)、‘hist’(直方图)、‘scatter’(散点图)等。
-
x 和 y:指定要在图表中使用的数据列,其中 x 是横轴数据列,y 是纵轴数据列。
-
title:设置图表的标题。
-
xlabel 和 ylabel:设置横轴和纵轴的标签。
-
color:设置图表的颜色。
-
legend:控制是否显示图例。
-
figsize:设置图表的尺寸。
-
grid:控制是否显示网格线。
折线图
import numpy as np
import pandas as pd
from pandas import DataFrame, Series
s = Series(data=np.random.randint(0, 10, size=10))
s
"""
0 8
1 6
2 9
3 2
4 1
5 4
6 3
7 0
8 6
9 9
dtype: int32
"""
# series画图, 默认以series的index作为x轴数据, values作为y轴数据.
# 默认画折线图, 折线图反映趋势.
s.plot(title='Sales Trend')
<AxesSubplot:title={'center':'Sales Trend'}>
index = ['悟空', '悟饭', '悟天', '武神']
columns = ['语文', '数学', '英语']
data = np.random.randint(0, 150, size=(4, 3))
df = DataFrame(index=index, columns=columns, data=data)
df
语文 | 数学 | 英语 | |
---|---|---|---|
悟空 | 90 | 112 | 138 |
悟饭 | 113 | 24 | 5 |
悟天 | 57 | 139 | 5 |
武神 | 62 | 47 | 6 |
import matplotlib.pyplot as plt
# matplotlib默认不能正常显示中文的.
# 如果要显示中文, 要更改字体
plt.rcParams['font.sans-serif'] = 'SimHei'
# 在中文字体下, 默认的负号, 会显示不正常
plt.rcParams['axes.unicode_minus'] = False
# dataframe是按照每一列去画一个折线图.
# ylim=(-100, 150) y轴范围
df.plot(xlabel='name', ylabel='score',ylim=(-100, 150))
<AxesSubplot:xlabel='name', ylabel='score'>
柱状图
柱状图用来比大小. 也叫做条形图
# kind = 'bar'/'barh' 柱状图
df.plot(kind='bar')
<AxesSubplot:>
# kind='barh' 水平直方图
df.plot(kind='barh')
<AxesSubplot:>
散点图
# 绘制散点图
df.plot(kind='scatter', x='语文', y='数学', title='成绩散点图')
<AxesSubplot:title={'center':'成绩散点图'}, xlabel='语文', ylabel='数学'>
bar()
是 Pandas 中用于绘制柱状图的函数,它可以接受一系列参数来自定义柱状图的样式和属性
区别plot()的特殊参数:
- rot: 旋转 x 轴标签的角度。
# 创建示例数据
data = {'城市': ['北京', '上海', '广州', '深圳'],
'人口': [2154, 2423, 1404, 1303]}
df = pd.DataFrame(data)
# 绘制柱状图
pt = df.plot(kind='bar', x='城市', y='人口', xlabel='city', ylabel='人口', color='skyblue', title='中国主要城市人口')
# 设置 x 轴标签旋转角度为45度
pt.set_xticklabels(df['城市'], rotation=45)
# 显示图例
pt.legend(['人口'])
# 显示图表
plt.show()
hist() 绘制直方图的函数
区别plot()的特殊参数:
- bins: 指定直方图的柱子数量或柱子的边界值。可以是一个整数,表示柱子的数量,也可以是一个数组,表示柱子的边界值。
- range: 指定直方图的取值范围。
- density: 是否将直方图的频数转换为频率。
data = [10, 15, 20, 30, 30, 35, 40, 45, 50, 55, 60, 65, 70]
# 绘制直方图,density=True将频数转换为频率
plt.hist(data, bins=5, range=(0, 100), color='skyblue', edgecolor='black', density=True)
# 设置标题和标签
plt.title('分数分布直方图(频率)')
plt.xlabel('分数')
plt.ylabel('频率')
# 显示图表
plt.show()
scatter()
scatter() 绘制散点图的函数,它可以接受一系列参数来自定义散点图的样式和属性。
区别plot()的特殊参数:
- s: 指定散点的大小。
- c: 指定散点的颜色。
- marker: 指定散点的标记样式。
- alpha: 指定散点的透明度。
data = {
'x': [1, 2, 3, 4, 5],
'y': [10, 15, 7, 12, 8],
'label': ['A', 'B', 'C', 'D', 'E']
}
df = pd.DataFrame(data)
# 绘制散点图
# c='red' 指定了散点的颜色为红色
# marker='o' 指定了散点的标记样式为圆形,
# alpha=0.5 指定了散点的透明度为 0.5
plt.scatter(df['x'], df['y'], s=100, c='red', marker='o', alpha=0.5)
# 设置标题和标签
plt.title('散点图示例')
plt.xlabel('X')
plt.ylabel('Y')
# 显示图表
plt.show()
boxplot() 绘制箱线图
boxplot()它可以用于可视化数据的分布情况和离群值。
区别plot()的特殊参数:
- by: 指定一个列名,用于按照该列的值进行分组,并绘制多个箱线图。
- column: 指定一个列名,用于选择要绘制箱线图的列。
- ax: 指定一个 Matplotlib 的 Axes 对象,用于绘制箱线图的子图。
- notch: 是否绘制凹口箱线图。
- sym: 指定离群值的显示样式。
- vert: 是否将箱线图垂直显示。
- patch_artist: 是否使用填充颜色绘制箱线图。
- meanline: 是否绘制均值线。
- showfliers: 是否显示离群值。
- showmeans: 是否显示均值。
- showbox: 是否显示箱体。
- showcaps: 是否显示箱线的边界线。
- showwhiskers: 是否显示须线。
- whis: 指定须线的长度。
np.random.seed(1)
data = {
'Category': np.random.choice(['A', 'B', 'C'], size=100),
'Value': np.random.normal(loc=0, scale=1, size=100)
}
# 创建 DataFrame
df = pd.DataFrame(data)
# 根据Category列的值进行分组,并绘制每个分组的 "Value" 列的箱线图。
df.boxplot(column='Value', by='Category')
<AxesSubplot:title={'center':'Value'}, xlabel='Category'>
# 绘制凹口箱线图,凹口箱线图可以用于比较两个或多个分组之间的差异
df.boxplot(column='Value', by='Category', notch=True)
<AxesSubplot:title={'center':'Value'}, xlabel='Category'>
# 将离群值显示为红色的叉号
# vert=False 将箱线图水平显示
# patch_artist=True 使用填充颜色绘制箱线图
df.boxplot(column='Value', by='Category', sym='rx', vert=False, patch_artist=True)
<AxesSubplot:title={'center':'Value'}, xlabel='Category'>
bp = df.boxplot(column='Value', by='Category')
# 设置 x 轴标签
bp.set_xticklabels(['Group 1', 'Group 2', 'Group 3'])
# 显示图形
plt.show()