数据分析:是用适当的方法收集来的大量数据进行分析,帮助人们作出判断,以便采取适当的行动。
数据分析的重要性:python数据科学的基础,是机器学习课程的基础。
一、matplotlib
matplotlib使用的流程:
- 明确问题
- 选择图形的呈现方式
- 准备数据
- 绘图和图形完善
1、matplotlib是什么
matplotlib:最流行的python底层绘图库,主要做数据可视化图表,名字取材于MATLAB,模仿MATLAB构建
2、matplotlib优势
(1)能将数据进行可视化,更直观的呈现
(2)使数据更加客观,更具说服力
3、matplotlib基础要素
模块:from matplotlib import pyplot as plt ——> 导入pyplot模块
注:使用matplotlib前需要先安装 Numpy
from matplotlib import pyplot as plt
def myPlot():
"""
记录一天内每个两个小时的温度
:return:
"""
x = range(2, 26, 2)
y = [15, 13, 14.5, 17, 20, 26, 26, 24, 22, 18, 15, 13]
#绘图
plt.plot(x, y)
#展示图形
plt.show()
return None
if __name__ == "__main__":
myPlot()
4、图形定制化API
plt.figure(figsize = (20, 8), dpi = 80) | 窗口,用于展示图片 | 1、figure图形的意思,这里指我们画的图, 2、通过实例化一个figure并且传递参数,能够在后台自动使用该figure实例; 3、在图像模糊的时候可以传入dpi参数,让图片更加清晰 4、figsize:指定图片的大小 5、linewidth:指定显示的线的宽度 6、linestyle:指定线条显示的风格,如:虚线 linestyle="--" |
plt.plot(x, y, label="标签名",color="颜色",linestyle='--', linewidth=数字, alpha=数字) | 绘制图形 | label:指定标签名; color:线条颜色;linestyle:线条风格;linewidth:线条宽度 |
plt.savefig("存放路径") | 保存照片 | 1、可以保存为矢量图格式(SVG),放大无锯齿 注意:保存图片必须放在绘图之后,否则是空白图 |
plt.xticks(x)/yticks(Y) | 设置X/Y刻度 | 注:改变步长即可 range(起始,结束,步长) |
plt.xlabel(标签名,fontpropreties=...) | 设置X轴标题 | fontpropreties=...,指定字体对象,用于解决中文不支持问题 |
plt.ylabel(标签名,fontpropreties=...) | 设置Y轴标题 | |
plt.title(标题名,fontproperties=...) | 设置图标总的标题 | |
plt.grid(alpha=...) | 设置图表网格 | alpha:透明度【0~1】0不明显,1明显 |
plt.legend(prop=...,loc=...) | 添加图例,指定当前曲线指代谁 | prop=..指定使用的字体,loc指定图例的位置 |
from matplotlib import pyplot as plt
def myPlot():
"""
记录一天内每隔两个小时的温度
:return:
"""
x = range(2, 26, 2)
y = [15, 13, 14.5, 17, 20, 26, 26, 24, 22, 18, 15, 13]
#设置图片大小
plt.figure(figsize=(20, 8), dpi=80)
#绘图
plt.plot(x, y)
#设置x轴刻度,2~24,间隔0.5
_xtick_labels = [i/2 for i in range(4, 49)] #快速生成列表
plt.xticks(_xtick_labels[::3]) #列表取步长 ::步长
plt.show()
return None
if __name__ == "__main__":
myPlot()
5、matplotlib设置中文显示
为什么无法显示中文?
matplotlib默认不支持中文字符,因为默认的英文字体无法显示汉字
查看Linux/Mac下面支持的字体:
fc-list命令:查看支持的字体
fc-list :lang=zh 命令:查看支持的中文(冒号前面有空格)
如何修改matplotlib的默认字体?
(1)通过matplotlib.rc可以修改,具体方法参见源码(Windows/Linux) 注:ctrl+b跳到源码(pycharm)
(2)通过matplotlib下的font_manager(模块)可以解决(Windows/Linux/mac) 推荐使用
下面就使用第二种做法做演示:
from matplotlib import pyplot as plt
import random
from matplotlib import font_manager
#设置字体的方式,fname指定为系统中可使用字体的路径
my_font = font_manager.FontProperties(fname="C:/Windows/Fonts/HGSS1_CNKI.TTF")
def myPlot():
"""
绘制从10点到12点两个小时内每分钟的气温情况
:return: None
"""
x = range(0, 120)
y = [random.randint(20, 35) for i in range(120)]
#设置图片大小
plt.figure(figsize=(20, 8), dpi=80)
#绘图
plt.plot(x, y)
#设置X轴,显示字符串
_x = list(x)[::10]
_xtick_labels = ["10点{}分".format(i) for i in range(60)]
_xtick_labels += ["11点{}分".format(i) for i in range(60)]
#rotation数据旋转度数
plt.xticks(_x, _xtick_labels[::10], rotation=45, fontproperties=my_font) #(刻度数,数据数量)取步长,数据和字符串一一对应
#展示
plt.show()
return None
if __name__ == "__main__":
myPlot()
另附:Windows下查找可用字体的方法:cmd + fonts
6、matplotlib绘制多次图形和不同图形的差异介绍和总结
绘制多次图形,只需要使用plot方法多次,分别指定不同的Y轴信息即可
from matplotlib import pyplot as plt
from matplotlib import font_manager
#统计两个人从11岁到30岁获奖的情况,分析两人的发展走势
my_font = font_manager.FontProperties(fname="C:/Windows/Fonts/HGSS1_CNKI.TTF")
y_1 = [1, 0, 1, 1, 2, 4, 3, 2, 3, 4, 4, 5, 6, 5, 4, 3, 3, 1, 1, 1]
y_2 = [1, 0, 3, 1, 2, 2, 3, 3, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1]
x = range(11, 31)
def myDeal():
"""
分析发展走势
:return: None
"""
#设置图片格式
plt.figure(figsize=(20, 8), dpi=80)
#绘图
plt.plot(x, y_1, label="甲")
plt.plot(x, y_2, label="乙")
#设置X轴,显示字符串
_xtick_labels = ["{}岁".format(i) for i in x]
plt.xticks(x, _xtick_labels, fontproperties=my_font)
plt.yticks(range(0, 9))
#绘制网格
plt.grid(alpha=0.3)
#添加图例,展示图例需要加入label
plt.legend(prop=my_font)
#展示
plt.show()
return None
if __name__ == "__main__":
myDeal()
复杂图形案例,可以查看matplotlib官网中复杂的案例,有代码实现。