前言:本文是学习网易微专业的《python全栈工程师》 中的《数据分析 - 机器学习工程师》专题的课程笔记,欢迎学习交流。
bar
%matplotlib inline
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
data = [2, 10, 4, 8, 6] # 表示柱子的高度
position = [1, 2, 3, 4, 5] # 表示柱子在横坐标的位置
plt.bar(x=position, height=data)
运行结果:(默认每个柱子的中线对应着横坐标的数字)
matplotlib
详细参考资料:
https://matplotlib.org/3.1.1/api/_as_gen/matplotlib.pyplot.bar.html
使用示例二:(更多参数的使用)
data = [2, 10, 4, 8, 6]
position = [1, 2, 3, 4, 5]
labels = ['Pejing', 'Soochow', 'Hongkang', 'Tsingtao', 'Canton']
plt.bar(x=position, height=data, width=0.4,
color='gb', edgecolor='r', linestyle='--',
linewidth=3, hatch='x', tick_label=labels)
说明:
1).width
表示柱子的宽度,默认为0.8
2).color
表示柱子的填充颜色,此处gb
表示green
和blue
3).edgecolor
表示每个柱子的边线的颜色
4).linestyle
表示柱子边线的线型
5).linewidth
表示边线的宽度
6).hatch
表示内填充,此处x
表示填充类似x
的图形
7).tick_label
表示刻度标识,如果不设置,则使用前面的x=position
示例三:
position = range(1, 6)
a = np.random.random(5) # 随机生成柱子的高度
b = np.random.random(5) # 随机生成柱子的高度
plt.bar(position, a, label='a', color='b')
plt.bar(position, b, bottom=a, label='b', color='r')
plt.legend(loc=0)
boxplot
np.random.seed(12345)
data = pd.DataFrame(np.random.rand(5, 4), columns=["A", "B", "C", "D"])
data
bp = plt.plt.boxplot(data['B'])
说明:
1.最上面的横线表示特征的最大值
2.最下面的横线表示特征的最小值
3.箱子里的红线表示中位数
4.箱子的顶部横线表示上四分位数
5.箱子的底部横线表示下四分位数
关于箱线图的四分位数,可以参考这篇文章:四分位数 箱线图
箱线图的统计类似前面学过的describe()
统计:
data.describe()
补充:
DataFrame
对象也有针对mathplotlib
的接口:
bp = data.boxplot(sym='r*', vert=False, meanline=False, showmens=True)
说明:
1.sym
表示离心值的形状,即异常点的形状
2.vert
表示是否垂直,False
则表示箱线图是横着的
3.meanline
表示是否用线的形式表示均值,默认用点表示
4.showmeans
表示是否显示平均值
关于DataFrame.boxplot
的知识点,可以参考这篇文章:python 使用dataframe.boxplot画图中的问题
pie
x = [2, 4, 6, 8]
fig, ax = plt.subplots()
labels = ['A', 'B', 'C', 'D'] # 每个扇面的标识
colors = ['red', 'yellow', 'blue', 'green'] # 每个扇面的颜色
explode = (0, 0.1, 0, 0) # 扇面的偏移程度
ax.pie(x, explode=explode, labels=labels, colors=colors, autopct='%1.1f%%', shadow=True, startangle=90, radius=1.2)
ax.set(aspect="equal", title="Pie")
说明:
1.autopct
表示扇面上显示的百分比的格式
2.shadow
:是否显示饼状图的阴影
3.startangle
:第一个扇形开始的角度。90
表示从正上方开始
4.radius
:半径的大小
hist
datas = np.random.randn(100000)
hs = plt.hist(datas)
import matplotlib.mlab as mlab
fig = plt.figure()
mu = 100 # 平均值
sigma = 15 # 标准差
x = mu + sigma * np.random.randn(10000)
from scipy.stats import norm # 增加了这一行
num_bins = 50
n, bins, patches = plt.hist(x, num_bins, normed=True, facecolor='blue', alpha=0.5)
# 绘制正太分布曲线
y = norm.pdf(bins, mu, sigma) # 这行跟老师的不一样
plt.plot(bins, y, 'r--')
说明:
采用mlab
中的normpdf
生成正太分布曲线,但是发现mlab
中这个属性已经移除了,
报错信息:
module 'matplotlib.mlab' has no attribute 'normpdf'
,
使用norm.pdf
为替代的方式
绘制这些图的基本思想都是一样的,除了使用matplotlib
,对于DataFrame
对象而言,也有针对matplotlib
的接口,也可以把绘图的函数看作是DataFrame
的方法。
在具体的绘图中,还是得多关注它们的官方文档。