Python数据分析 - 机器学习笔记:第一章数据分析 - 1.4.4.其他统计图

前言:本文是学习网易微专业的《python全栈工程师》 中的《数据分析 - 机器学习工程师》专题的课程笔记,欢迎学习交流。

一、课程目标

  • 柱形图
  • 箱线图
  • 饼图
  • 直方图

二、详情解读

2.1.柱形图

函数: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)

运行结果:(默认每个柱子的中线对应着横坐标的数字)
Python数据分析 - 机器学习笔记:第一章数据分析 - 1.4.4.其他统计图_第1张图片
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)

运行结果:
Python数据分析 - 机器学习笔记:第一章数据分析 - 1.4.4.其他统计图_第2张图片

说明:
1).width表示柱子的宽度,默认为0.8
2).color表示柱子的填充颜色,此处gb表示greenblue
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)

运行结果:
Python数据分析 - 机器学习笔记:第一章数据分析 - 1.4.4.其他统计图_第3张图片

2.2.箱线图

函数:boxplot

Python数据分析 - 机器学习笔记:第一章数据分析 - 1.4.4.其他统计图_第4张图片

np.random.seed(12345)
data = pd.DataFrame(np.random.rand(5, 4), columns=["A", "B", "C", "D"])
data

运行结果:
Python数据分析 - 机器学习笔记:第一章数据分析 - 1.4.4.其他统计图_第5张图片
下面开始绘制箱线图:

bp = plt.plt.boxplot(data['B'])

Python数据分析 - 机器学习笔记:第一章数据分析 - 1.4.4.其他统计图_第6张图片

说明:
1.最上面的横线表示特征的最大值
2.最下面的横线表示特征的最小值
3.箱子里的红线表示中位数
4.箱子的顶部横线表示上四分位数
5.箱子的底部横线表示下四分位数

关于箱线图的四分位数,可以参考这篇文章:四分位数 箱线图

箱线图的统计类似前面学过的describe()统计:

data.describe()

Python数据分析 - 机器学习笔记:第一章数据分析 - 1.4.4.其他统计图_第7张图片
补充:
DataFrame对象也有针对mathplotlib的接口:

bp = data.boxplot(sym='r*', vert=False, meanline=False, showmens=True)

Python数据分析 - 机器学习笔记:第一章数据分析 - 1.4.4.其他统计图_第8张图片

说明:
1.sym表示离心值的形状,即异常点的形状
2.vert表示是否垂直,False则表示箱线图是横着的
3.meanline表示是否用线的形式表示均值,默认用点表示
4.showmeans表示是否显示平均值

关于DataFrame.boxplot的知识点,可以参考这篇文章:python 使用dataframe.boxplot画图中的问题

2.3.饼图

函数: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")

运行结果:
Python数据分析 - 机器学习笔记:第一章数据分析 - 1.4.4.其他统计图_第9张图片

说明:
1.autopct表示扇面上显示的百分比的格式
2.shadow:是否显示饼状图的阴影
3.startangle:第一个扇形开始的角度。90表示从正上方开始
4.radius:半径的大小

2.4.直方图

函数:hist
datas = np.random.randn(100000)
hs = plt.hist(datas)

运行结果:
Python数据分析 - 机器学习笔记:第一章数据分析 - 1.4.4.其他统计图_第10张图片
使用更多参数的直方图:

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--')

结果如图所示:
Python数据分析 - 机器学习笔记:第一章数据分析 - 1.4.4.其他统计图_第11张图片

说明:
采用mlab中的normpdf生成正太分布曲线,但是发现mlab中这个属性已经移除了,
报错信息:
module 'matplotlib.mlab' has no attribute 'normpdf'
使用norm.pdf为替代的方式

三、课程小结

  • 01 柱形图
  • 02 箱线图
  • 03 饼图
  • 04 直方图

绘制这些图的基本思想都是一样的,除了使用matplotlib,对于DataFrame对象而言,也有针对matplotlib的接口,也可以把绘图的函数看作是DataFrame的方法。

在具体的绘图中,还是得多关注它们的官方文档

你可能感兴趣的:(Python全栈工程师学习笔记,python绘制统计图,柱形图,箱线图,饼图,直方图)