机器学习-数据科学库(HM)_第1节_介绍 & matplotlib折线图

机器学习-数据科学库(HM)_第1节_介绍 & matplotlib折线图

  • 数据分析的介绍
    • 为什么要学习数据分析?
    • 什么是数据分析?
    • 数据分析的流程
  • matplotlib
    • matplotlib的安装
    • matplotlib折线图
      • 为什么学习matplotlib
      • 什么是matplotlib
      • matplotlib基本要点
      • matplotlib折线图的实现
      • 调整x轴和y轴的刻度
        • 数字刻度
        • 字符串刻度
      • 设置中文显示
      • 给图添加描述信息
      • 绘制网格
      • 绘制多次图形
        • 自定义绘制图形的风格
      • matplotlib绘制折线图总结
      • 折线图的更多应用场景
    • matplotlib绘制其他图形
      • 对比常用统计图

数据分析的介绍

为什么要学习数据分析?

  • python数据科学的基础:pandas、numpy、爬虫
  • 机器学习课程的基础

什么是数据分析?

  • 数据分析是用适当的方法对收集来的大量数据进行分析,帮助人们做出判断,以便采取适当行动。

数据分析的流程

  • 提出问题
  • 准备数据
  • 整理、分析数据
  • 获得结论
  • 成果可视化

matplotlib

matplotlib的安装

  • 用anaconda:conda install matplotlib

matplotlib折线图

为什么学习matplotlib

  • 能将数据进行可视化,更直观的呈现
  • 是数据更加客观、更有说服力

什么是matplotlib

  • matplotlib:最流行的Python底层会图库,主要做数据可视化图表,名字取材于MATAB,模仿MATLAB构建

matplotlib基本要点

  • 每个红色的点是坐标,把5个点的坐标连成一条线,组成了一个折线图。
  • 时间的长度和气温的个数应该是一样的。
    机器学习-数据科学库(HM)_第1节_介绍 & matplotlib折线图_第1张图片

matplotlib折线图的实现

from matplotlib import pyplot as plt
# import matplotlib.pyplot as plt

# 设置图片大小、清晰度
fig = plt.figure(figsize=(20, 8), dpi=80)	# figsize设置图片大小;dpi: dot per inch像素,越大越清晰

# x轴和y轴的数据一起组成了所有要绘制出的坐标
	# 分别是(2,15), (4,13), (6,14.5) ......
x = range(2, 26, 2)	# 数据在x轴的位置,是一个可迭代对象。
y = [15, 13, 14.5, 17, 20, 25, 26, 26, 24, 22, 18, 15]	# 数据在y轴的位置,是一个可迭代对象。
# 传入x和y,通过plot绘制出折线图
plt.plot(x, y)	

# 此处可以调整x轴、y轴的刻度,详细见下面section

# 保存图片,可以储存为svg这种矢量图格式,放大不会有锯齿
plt.savefig("./sig_size.pnd")
# 在执行程序的时候展示图像
plt.show()	

机器学习-数据科学库(HM)_第1节_介绍 & matplotlib折线图_第2张图片

调整x轴和y轴的刻度

数字刻度

# 设置x轴的刻度
plt.xticks(x)	# 间隔为2
"""
# 间隔为1
plt.xticks(range(2, 25))	

# 间隔为0.5
_xtick_labels = [i/2 for i in range(4, 49)]
plt.xticks(_xtick_labels)
"""

# 设置y轴的刻度
plt.yticks(range(min(y), max(y)+1))

字符串刻度

  • 在之前设置x轴、y轴时传入的是数字,matplotlib会自动将这些数字绘制在轴的单位上。
  • 如果用字符串来绘制轴的单位,则需要将数字和这些字符串一一对应。
# 用字符串来绘制轴的单位
_x = list(x)[::10]	# 取一个步长,防止轴单位过于密集
_xtick_labels = ["hello.{}".format(i) for i in _x]
plt.xticks(_x, _xtick_labels)


# 用字符串来绘制x轴10点00分 -- 11点59分
_xtick_labels = ["10点{}分".format(i) for i in range(60)]
_xtick_labels += ["11点{}分".format(i) for i in range(60)]
# 需要取步长使数字和字符串一一对应,数据的长度一样
plt.xticks(list(x)[::3], _xtick_labels[::3], rotation=270)		# rotation逆时针旋转的角度
  • 但这样子是不显示中文的

设置中文显示

  • 查看linux/mac下面支持的字体:
    • fc-list:查看支持的字体
    • fc-list :lang=zh:查看支持的中文(冒号前面有空格)
  • 查看windows下面支持的字体:
    • 搜索字体查看
  • 修改matplotlib的默认字体:
    • 通过matplotlib.rc可以修改(具体方法ctrl+b查看源代码)(windows/linux)
      import matplotlib
      # windws和linux设置字体的方式
      	# 方法一
      font = {
               'family' : 'MicroSoft YaHei',
              'weight': 'bold',
              'size': 'larger'}
      matplotlib.rc("font",**font)
      
      	# 方法二
      matplotlib.rc("font",family='MicroSoft YaHei',weight="bold")
      
    • 通过matplotlib 下的font_manager可以解决(windows/linux/mac)
      # windows、linux和mac设置字体的方式
      from matplotlib import font_manager
      my_font = font_manager.FontProperties(fname="/System/Library/Fonts/PingFang.ttc")	# fname传入字体安装的位置
      ......
      plt.xticks(list(x)[::3],_xtick_labels[::3],rotation=45,fontproperties=my_font)
      

给图添加描述信息

# 沿用之前的设置
plt.xlabel("时间",fontproperties=my_font)
plt.ylabel("温度 单位(℃)",fontproperties=my_font)
plt.title("10点到12点每分钟的气温变化情况",fontproperties=my_font)

绘制网格

# 沿用之前的设置
	# alpha设置网格的透明度:0~1,1是完全不透明
plt.grid(alpha=0.4)	

绘制多次图形

  • 假设大家在30岁的时候,根据自己的实际情况,统计出来了你和你同桌各自从11岁到30岁每年交的女(男)朋友的数量如列表a和b,请在一个图中绘制出该数据的折线图,以便比较自己和同桌20年间的差异,同时分析每年交女(男)朋友的数量走势
    a = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
    b = [1,0,3,1,2,2,3,3,2,1 ,2,1,1,1,1,1,1,1,1,1]

    要求:
    y轴表示个数
    x轴表示岁数,比如11岁,12岁等

    # coding=utf-8
    from matplotlib import pyplot as plt
    from matplotlib import font_manager
    
    my_font = font_manager.FontProperties(fname="/System/Library/Fonts/PingFang.ttc")
    
    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)
    
    #设置图形大小
    plt.figure(figsize=(20,8),dpi=80)
    
    # 绘制图像名称、颜色
    	# color= 可以跟颜色名称、代号
    	# linestyle="--" 函数的画线会变成点
    	# plt.plot(x,y_1,label="自己",color="orange")
    plt.plot(x,y_1,label="自己",color="#F08080")
    plt.plot(x,y_2,label="同桌",color="#DB7093",linestyle="--")
    
    #设置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.4,linestyle=':')
    
    # 添加图例,每条线是干什么的
    	# prop=my_font:为了让图例显示中文,只有在这里是prop,其他地方都是fontproperties
    	# loc="upper left":把图例发那个刀右上角,可以用文字或者数字来设置
    plt.legend(prop=my_font,loc="upper left")
    
    plt.show()
    

自定义绘制图形的风格

plt.plot(
	x, 
	y, 
	color = "r" 	# 线条颜色
	linestyle = "--"# 线条风格
	linewidth = 5	# 线条粗细
	alpha = 0.5 	# 透明度

)

机器学习-数据科学库(HM)_第1节_介绍 & matplotlib折线图_第3张图片

matplotlib绘制折线图总结

  • 绘制了折线图(plt.plot)
  • 设置了图片的大小和分辨率(plt.figure)
  • 实现了图片的保存(plt.savefig)
  • 设置了xy轴上的刻度和字符串(xticks)
  • 解决了刻度稀疏和密集的问题(xticks)
  • 设置了标题,xy轴的lable(title,xlable,ylable)
  • 设置了字体(font_manager. fontProperties,matplotlib.rc)
  • 在一个图上绘制多个图形(plt多次plot即可)
  • 为不同的图形添加图例

机器学习-数据科学库(HM)_第1节_介绍 & matplotlib折线图_第4张图片

折线图的更多应用场景

  • 呈现公司产品(不同区域)每天活跃用户数
  • 呈现app每天下载数量
  • 呈现产品新功能上线后,用户点击次数随时间的变化
  • 呈现员工每天上下班时间

matplotlib绘制其他图形

  • 可以取matplotlib具体查看绘制其他的图像的代码。
  • matplotlib能够绘制折线图,散点图,柱状图,直方图,箱线图,饼图等

对比常用统计图

  • 折线图:以折线的上升或下降来表示统计数量的增减变化的统计图

    • 特点:能够显示数据的变化趋势,反映事物的变化情况。(变化)
      机器学习-数据科学库(HM)_第1节_介绍 & matplotlib折线图_第5张图片
  • 直方图:由一系列高度不等的纵向条纹或线段表示数据分布的情况。 一般用横轴表示数据范围,纵轴表示分布情况。

    • 特点:绘制连续性的数据,展示一组或者多组数据的分布状况(统计)
      机器学习-数据科学库(HM)_第1节_介绍 & matplotlib折线图_第6张图片
  • 条形图:排列在工作表的列或行中的数据可以绘制到条形图中。

    • 特点:绘制连离散的数据,能够一眼看出各个数据的大小,比较数据之间的差别。(统计)
      机器学习-数据科学库(HM)_第1节_介绍 & matplotlib折线图_第7张图片
  • 散点图:用两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间是否存在某种关联或总结坐标点的分布模式。

    • 特点:判断变量之间是否存在数量关联趋势,展示离群点(分布规律)
      机器学习-数据科学库(HM)_第1节_介绍 & matplotlib折线图_第8张图片

你可能感兴趣的:(机器学习-数据科学库(HM),python,数据可视化,可视化)