本系列文章md笔记(已分享)次要探讨人工智能相干常识。次要内容包含,理解机器学习定义以及利用场景,把握机器学习根底环境的装置和应用,把握利用罕用的科学计算库对数据进行展现、剖析,学会应用jupyter notebook平台实现代码编写运行,利用Matplotlib的基本功能实现图形显示,利用Matplotlib实现多图显示,利用Matplotlib实现不同画图品种,学习Numpy运算速度上的劣势,晓得Numpy的数组内存块格调,理解Numpy与Pandas的不同,学习Pandas的应用,利用crosstab和pivot_table实现穿插表与透视表,利用Pandas实现数据的读取和存储,并且理解残缺机器学习我的项目的流程。
全套笔记代码自取gitee仓库:
请移步这里获取文档和代码
感兴趣的小伙伴能够自取哦,欢送大家点赞转发~
共 7 章,33 子模块
Matplotlib
学习指标
- 利用Matplotlib的基本功能实现图形显示
- 利用Matplotlib实现多图显示
- 利用Matplotlib实现不同画图品种
3.2 根底绘图性能 — 以折线图为例
学习指标
指标
- 把握给图形增加辅助性能(如:标注、x,y轴名称、题目等)
- 晓得图形的保留
- 晓得如何屡次plot绘制图形
- 晓得如何多个坐标系显示图形
- 晓得折线图的利用场景
1 欠缺原始折线图 — 给图形增加辅助性能
为了更好地了解所有根底绘图性能,咱们通过天气温度变动的绘图来交融所有的根底API应用
需要:画出某城市11点到12点1小时内每分钟的温度变动折线图,温度范畴在15度~18度
成果:
1.1 筹备数据并画出初始折线图
import matplotlib.pyplot as pltimport random # 画出温度变动图 # 0.筹备x, y坐标的数据 x = range(60)y_shanghai = [random.uniform(15, 18) for i in x] # 1.创立画布 plt.figure(figsize=(20, 8), dpi=80) # 2.绘制折线图 plt.plot(x, y_shanghai) # 3.显示图像 plt.show()
1.2 增加自定义x,y刻度
- plt.xticks(x, **kwargs)
x:要显示的刻度值
- plt.yticks(y, **kwargs)
y:要显示的刻度值
# 减少以下两行代码 # 结构x轴刻度标签 x_ticks_label = ["11点{}分".format(i) for i in x] # 结构y轴刻度 y_ticks = range(40) # 批改x,y轴坐标的刻度显示 plt.xticks(x[::5], x_ticks_label[::5])plt.yticks(y_ticks[::5])
如果没有解决过中文问题的话,会显示这个样子:
1.3 中文显示问题解决
解决方案一:
下载中文字体(黑体,看准零碎版本)
- 步骤一:下载 SimHei 字体(或者其余的反对中文显示的字体也行)
步骤二:装置字体
- linux下:拷贝字体到 usr/share/fonts 下:
sudo cp ~/SimHei.ttf /usr/share/fonts/SimHei.ttf
- windows和mac下:双击装置
- 步骤三:删除~/.matplotlib中的缓存文件
cd ~/.matplotlibrm -r *
- 步骤四:批改配置文件matplotlibrc
vi ~/.matplotlib/matplotlibrc
将文件内容批改为:
font.family : sans-seriffont.sans-serif : SimHeiaxes.unicode_minus : False
解决方案二:
在Python脚本中动静设置matplotlibrc,这样也能够防止因为更改配置文件而造成的麻烦,具体代码如下:
from pylab import mpl # 设置显示中文字体 mpl.rcParams["font.sans-serif"] = ["SimHei"]
有时候,字体更改后,会导致坐标轴中的局部字符无奈失常显示,此时须要更改axes.unicode_minus参数:
# 设置失常显示符号 mpl.rcParams["axes.unicode_minus"] = False
1.4 增加网格显示
为了更加分明地察看图形对应的值
plt.grid(True, linestyle='--', alpha=0.5)
1.5 增加形容信息
增加x轴、y轴形容信息及题目
通过fontsize参数能够批改图像中字体的大小
plt.xlabel("工夫")plt.ylabel("温度")plt.title("中午11点0分到12点之间的温度变动图示", fontsize=20)
1.6 图像保留
# 保留图片到指定门路 plt.savefig("test.png")
- 留神:plt.show()会开释figure资源,如果在显示图像之后保留图片将只能保留空图片。
残缺代码:
import matplotlib.pyplot as pltimport randomfrom pylab import mpl # 设置显示中文字体 mpl.rcParams["font.sans-serif"] = ["SimHei"] # 设置失常显示符号 mpl.rcParams["axes.unicode_minus"] = False # 0.筹备数据 x = range(60)y_shanghai = [random.uniform(15, 18) for i in x] # 1.创立画布 plt.figure(figsize=(20, 8), dpi=100) # 2.绘制图像 plt.plot(x, y_shanghai) # 2.1 增加x,y轴刻度 # 结构x,y轴刻度标签 x_ticks_label = ["11点{}分".format(i) for i in x]y_ticks = range(40) # 刻度显示 plt.xticks(x[::5], x_ticks_label[::5])plt.yticks(y_ticks[::5]) # 2.2 增加网格显示 plt.grid(True, linestyle="--", alpha=0.5) # 2.3 增加形容信息 plt.xlabel("工夫")plt.ylabel("温度")plt.title("中午11点--12点某城市温度变动图", fontsize=20) # 2.4 图像保留 plt.savefig("./test.png") # 3.图像显示 plt.show()
2 在一个坐标系中绘制多个图像
2.1 屡次plot
需要:再增加一个城市的温度变动
收集到北京当天温度变动状况,温度在1度到3度。怎么去增加另一个在同一坐标系当中的不同图形,其实很简略只须要再次plot即可,然而须要辨别线条,如下显示
# 减少北京的温度数据 y_beijing = [random.uniform(1, 3) for i in x] # 绘制折线图 plt.plot(x, y_shanghai) # 应用屡次plot能够画多个折线 plt.plot(x, y_beijing, color='r', linestyle='--')
咱们仔细观察,用到了两个新的中央,一个是对于不同的折线展现成果,一个是增加图例。
2.2 设置图形格调
色彩字符 | 格调字符 |
---|---|
r 红色 | - 实线 |
g 绿色 | - - 虚线 |
b 蓝色 | -. 点划线 |
w 红色 | : 点虚线 |
c 青色 | ' ' 留空、空格 |
m 洋红 | |
y 黄色 | |
k 彩色 |
2.3 显示图例
- 留神:如果只在plt.plot()中设置label还不能最终显示出图例,还须要通过plt.legend()将图例显示进去。
# 绘制折线图 plt.plot(x, y_shanghai, label="上海") # 应用屡次plot能够画多个折线 plt.plot(x, y_beijing, color='r', linestyle='--', label="北京") # 显示图例 plt.legend(loc="best")
Location String | Location Code |
---|---|
'best' | 0 |
'upper right' | 1 |
'upper left' | 2 |
'lower left' | 3 |
'lower right' | 4 |
'right' | 5 |
'center left' | 6 |
'center right' | 7 |
'lower center' | 8 |
'upper center' | 9 |
'center' | 10 |
残缺代码:
# 0.筹备数据 x = range(60)y_shanghai = [random.uniform(15, 18) for i in x]y_beijing = [random.uniform(1,3) for i in x] # 1.创立画布 plt.figure(figsize=(20, 8), dpi=100) # 2.绘制图像 plt.plot(x, y_shanghai, label="上海")plt.plot(x, y_beijing, color="r", linestyle="--", label="北京") # 2.1 增加x,y轴刻度 # 结构x,y轴刻度标签 x_ticks_label = ["11点{}分".format(i) for i in x]y_ticks = range(40) # 刻度显示 plt.xticks(x[::5], x_ticks_label[::5])plt.yticks(y_ticks[::5]) # 2.2 增加网格显示 plt.grid(True, linestyle="--", alpha=0.5) # 2.3 增加形容信息 plt.xlabel("工夫")plt.ylabel("温度")plt.title("中午11点--12点某城市温度变动图", fontsize=20) # 2.4 图像保留 plt.savefig("./test.png") # 2.5 增加图例 plt.legend(loc=0) # 3.图像显示 plt.show()
2.4 练一练
练习屡次plot流程(从下面复制代码,到本人电脑,确保每人环境能够失常运行),
同时明确每个过程执行实现的具体成果
3 多个坐标系显示— plt.subplots(面向对象的画图办法)
如果咱们想要将上海和北京的天气图显示在同一个图的不同坐标系当中,成果如下:
能够通过subplots函数实现(旧的版本中有subplot,应用起来不不便),举荐subplots函数
- matplotlib.pyplot.subplots(nrows=1, ncols=1, **fig_kw) 创立一个带有多个axes(坐标系/绘图区)的图
Parameters: nrows, ncols : 设置有几行几列坐标系 int, optional, default: 1, Number of rows/columns of the subplot grid.Returns: fig : 图对象axes : 返回相应数量的坐标系设置题目等办法不同: set_xticks set_yticks set_xlabel set_ylabel
对于axes子坐标系的更多办法:参考https://matplotlib.org/api/axes_api.html#matplotlib.axes.Axes
- 留神:plt.函数名()相当于面向过程的画图办法,axes.set_办法名()相当于面向对象的画图办法。
# 0.筹备数据 x = range(60)y_shanghai = [random.uniform(15, 18) for i in x]y_beijing = [random.uniform(1, 5) for i in x] # 1.创立画布 # plt.figure(figsize=(20, 8), dpi=100) fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(20, 8), dpi=100) # 2.绘制图像 # plt.plot(x, y_shanghai, label="上海") # plt.plot(x, y_beijing, color="r", linestyle="--", label="北京") axes[0].plot(x, y_shanghai, label="上海")axes[1].plot(x, y_beijing, color="r", linestyle="--", label="北京") # 2.1 增加x,y轴刻度 # 结构x,y轴刻度标签 x_ticks_label = ["11点{}分".format(i) for i in x]y_ticks = range(40) # 刻度显示 # plt.xticks(x[::5], x_ticks_label[::5]) # plt.yticks(y_ticks[::5]) axes[0].set_xticks(x[::5])axes[0].set_yticks(y_ticks[::5])axes[0].set_xticklabels(x_ticks_label[::5])axes[1].set_xticks(x[::5])axes[1].set_yticks(y_ticks[::5])axes[1].set_xticklabels(x_ticks_label[::5]) # 2.2 增加网格显示 # plt.grid(True, linestyle="--", alpha=0.5) axes[0].grid(True, linestyle="--", alpha=0.5)axes[1].grid(True, linestyle="--", alpha=0.5) # 2.3 增加形容信息 # plt.xlabel("工夫") # plt.ylabel("温度") # plt.title("中午11点--12点某城市温度变动图", fontsize=20) axes[0].set_xlabel("工夫")axes[0].set_ylabel("温度")axes[0].set_title("中午11点--12点某城市温度变动图", fontsize=20)axes[1].set_xlabel("工夫")axes[1].set_ylabel("温度")axes[1].set_title("中午11点--12点某城市温度变动图", fontsize=20) # # 2.4 图像保留 plt.savefig("./test.png") # # 2.5 增加图例 # plt.legend(loc=0) axes[0].legend(loc=0)axes[1].legend(loc=0) # 3.图像显示 plt.show()
4 折线图的利用场景
- 出现公司产品(不同区域)每天沉闷用户数
- 出现app每天下载数量
- 出现产品新性能上线后,用户点击次数随工夫的变动
拓展:画各种数学函数图像
- 留神:plt.plot()除了能够画折线图,也能够用于画各种数学函数图像
代码:
import numpy as np # 0.筹备数据 x = np.linspace(-10, 10, 1000)y = np.sin(x) # 1.创立画布 plt.figure(figsize=(20, 8), dpi=100) # 2.绘制函数图像 plt.plot(x, y) # 2.1 增加网格显示 plt.grid() # 3.显示图像 plt.show()
5 小结
增加x,y轴刻度【晓得】
- plt.xticks()
- plt.yticks()
- 留神:在传递进去的第一个参数必须是数字,不能是字符串,如果是字符串吗,须要进行替换操作
增加网格显示【晓得】
- plt.grid(linestyle="--", alpha=0.5)
增加形容信息【晓得】
- plt.xlabel()
- plt.ylabel()
- plt.title()
图像保留【晓得】
- plt.savefig("门路")
屡次plot【理解】
- 间接进行增加就OK
显示图例【晓得】
- plt.legend(loc="best")
- 留神:肯定要在plt.plot()外面设置一个label,如果不设置,没法显示
多个坐标系显示【理解】
- plt.subplots(nrows=, ncols=)
折线图的利用【晓得】
- 1.利用于察看数据的变动
- 2.可是画出一些数学函数图像