机器学习入门-数据分析入门-第一天

数据分析入门

第一天 参考视频

一、Jupyter使用

(一)优点
  1. 展示数据方便

  2. 可以分块运行代码

(二)模式
  1. 编辑模式:在单元格(cell)里面操作

  2. 命令模式:操作单元格

(三)快捷键
  1. 命令模式:

    Shift-Enter : 运行本单元,选中下个单元

    Ctrl-Enter : 运行本单元,停留在本单元

    A : 在上方插入新单元

    B : 在下方插入新单元

    D,D : 删除选中的单元(双击D)

    Enter : 转入编辑模式

  2. 编辑模式

    Tab : 代码补全或缩进

    Ctrl-A : 全选

    Ctrl-Z : 撤销

    Ctrl-/ : 注释

    Ctrl-鼠标点击:多光标操作

二、Matplotlib(Matrix Plot Library)

(一)用途及优点
  1. 专用于开发2D图表

  2. 以渐进、交互式方式实现数据可视化

(二)Matplotlib三层结构
  1. 容器层

    画板层Canvas

    画布层Figure(plt.figure())

    绘图区/坐标系axes(axis,一个画布可以有多个绘图区,plt.subfplots())

  2. 辅助显示层

    坐标轴、刻度、图例等

  3. 图像层

    图像

(三)折线图
  1. 基本绘图方法

    import matplotlib.pyplot as plt
    %matplotlib inline
    import random
    
    #需求:......
    
    #1.准备数据
    x=range(60)
    y_first=[random.uniform(15,18) for i in x] # 第一根线
    y_second=[random.uniform(1,3) for i in x] # 第二根线
    
    #2.创建画布
    plt.figure(figsize=(20,8),dpi=80)
    
    #3.绘制图像
    plt.plot(x,y_first,color="r",linestyle="--",label="SHanghai") # 第一根线
    plt.plot(x,y_second,color="b",linestyle="-.",label="Beijing") # 第二根线
    
    # 显示图例
    plt.legend()
    # 修改x、y刻度
    x_label = ["11H{}m".format(i) for i in x] #中文显示有问题 解决方法不管了
    plt.xticks(x[::5],x_label[::5])
    # plt.yticks(range(0,40,5))
    plt.yticks(range(40)[::5])
    # 添加网格线
    plt.grid(linestyle="--",alpha=0.5)
    # 添加标题、坐标轴标签
    plt.xlabel("Time")
    plt.ylabel("Temperature")
    plt.title("You Shoule Say Sth.")
    
    #4.保存图像
    # path = "C:/Users/ABC/Desktop/figure.png"
    # plt.savefig(path)
    
    #5.显示图像
    plt.show() #此语句会释放figure资源,如果在此语句后保存图像,将得到空白图
    
  2. 多个坐标系显示-plt.subplots(面向对象的画图方法)

    import matplotlib.pyplot as plt
    %matplotlib inline
    import random
    
    #需求:......
    
    # 1.准备数据
    x=range(60)
    y_first = [random.uniform(15,18) for i in x] # 第一根线
    y_second = [random.uniform(1,3) for i in x] # 第二根线
    
    # 2.创建画布
    # plt.figure(figsize=(20,8),dpi=80)
    figure,axes = plt.subplots(nrows=1,ncols=2,figsize=(20,8),dpi=80)
    
    # 3.绘制图像
    axes[0].plot(x,y_first,color="r",linestyle="--",label="SHanghai") # 第一根线
    axes[1].plot(x,y_second,color="b",linestyle="-.",label="Beijing") # 第二根线
    
    # 显示图例
    axes[0].legend()
    axes[1].legend()
    # 修改x、y刻度
    x_label = ["11H{}m".format(i) for i in x] # 中文显示有问题 解决方法不管了
    axes[0].set_xticks(x[::8])
    axes[0].set_xticklabels(x_label[::8])
    axes[0].set_yticks(range(40)[::5])
    axes[1].set_xticks(x[::8])
    axes[1].set_xticklabels(x_label[::8])
    axes[1].set_yticks(range(40)[::5])
    # 添加网格线
    axes[0].grid(linestyle="--",alpha=0.5)
    axes[1].grid(linestyle="--",alpha=0.5)
    # 添加标题、坐标轴标签
    axes[0].set_xlabel("Time")
    axes[0].set_ylabel("Temperature")
    axes[0].set_title("Shanghai")
    axes[1].set_xlabel("Time")
    axes[1].set_ylabel("Temperature")
    axes[1].set_title("Beijing")
    
    # 4.保存图像
    # path = "C:/Users/ABC/Desktop/figure.png"
    # plt.savefig(path)
    
    # 5.显示图像
    plt.show() # 此语句会释放figure资源,如果在此语句后保存图像,将得到空白图
    
  3. 折线图的应用场景

    某事物、某指标随时间的变化状况
    拓展:画各种数学函数图像

(四)各种图型
  1. 折线图 plot - 变化状况(拓展:画各种数学函数图像)

    画法见上面

  2. 散点图 scatter - 关系/规律

    import matplotlib.pyplot as plt
    %matplotlib inline
    import random
    # 相比于折线图,plot改成scatter即可,少了画线这一步
    
    # 1.准备数据
    movie_names = ["The Intern","Me Before You","The Jungle Book","Room","The Martian","Like Sunday, Like Rain"]
    tickets = [int(random.uniform(30001,60000)) for i in movie_names]
    
    # 2.创建画布
    plt.figure(figsize=(20,8),dpi=80)
    
    # 3.绘制图像
    plt.scatter(movie_names,tickets)
    
    # 4.显示图像
    plt.show()
    
  3. 柱状图 bar - 统计/对比

    # 显示单个柱状图
    import matplotlib.pyplot as plt
    %matplotlib inline
    import random
    
    # 柱状图,对比不同电影票数
    
    # 1.准备数据
    # movie_names = ["The Intern","Me Before You","The Jungle Book","Room","The Martian","Like Sunday, Like Rain"]
    movie_names = ["The","Me","Jungle","Room","Martian","Sunday"]
    tickets = [int(random.uniform(30001,60000)) for i in movie_names]
    
    # 2.创建画布
    plt.figure(figsize=(20,8),dpi=80)
    
    # 3.绘制图像
    x_ticks = range(len(movie_names))
    plt.bar(x_ticks,tickets,color=['b','r','g','y','c','m'])
    # 修改刻度
    # plt.xticks = (x_ticks,movie_names) # 不知道为什么刻度标签显示不出来
    
    plt.xticks(x_ticks,movie_names) # 这是个函数,用等于当然显示不出来,垃圾jupyter,这函数也不显示清楚些,连个doc都没有
    # 添加标题
    plt.title("Movie Tickets")
    # 添加网格
    plt.grid(linestyle="--",alpha=0.5)
    
    # 4.显示图像
    plt.show()
    
    # 显示多个柱状图
    import matplotlib.pyplot as plt
    %matplotlib inline
    import random
    
    # 柱状图,对比不同电影票数
    
    # 1.准备数据
    # movie_names = ["The Intern","Me Before You","The Jungle Book","Room","The Martian","Like Sunday, Like Rain"]
    movie_name = ["Lighting","Justice","Travel"]
    
    first_day = [10587,10062,1275]
    first_weekend = [36224,34479,11830]
    
    # 2.创建画布
    plt.figure(figsize=(20,8),dpi=80)
    
    # 3.绘制图像
    plt.bar(range(3),first_day,width=0.2,label="first_day")
    plt.bar([(i+0.2) for i in range(3)],first_weekend,width=0.2,label="first_weekend") # 让柱状图偏移0.2,不然与上面重叠
    # 修改刻度
    plt.xticks([(i+0.1) for i in range(3)],movie_name) # 让刻度偏移0.1,不然显示在左边不好看
    # 添加标题
    plt.title("Movie Tickets")
    # 添加网格
    plt.grid(linestyle="--",alpha=0.5)
    # 显示图例
    plt.legend()
    
    # 4.显示图像
    plt.show()
    
  4. 直方图 histogram - 分布状况

    (1)直方图相关概念

    ​ 组数(长度):在统计数据时,我们把数据按照不同的范围分成几个组,分成的组的个数称为组数

    ​ 组距(宽度):每一组两个端点的差

    ​ 已知 最高175.5 最矮150.5 组距5

    ​ 求组数:(175.5 - 150.5) / 5 = 5

    (2)直方图与柱状图对比

    ​ ① 直方图展示数据的分布,柱状图比较数据的大小。

    ​ ② 直方图X轴为定量数据,柱状图X轴为分类数据。

    ​ ③ 直方图柱子无间隔,柱状图柱子有间隔

    ​ ④ 直方图柱子宽度(组距)可不一,柱状图柱子宽度(分类)须一致

    (3)直方图绘制

    import matplotlib.pyplot as plt
    %matplotlib inline
    import random
    
    # 直方图,电影时长分布图
    # 1.准备数据
    time = [int(random.uniform(80,150)) for i in range(250)]
    
    # 2.创建画布
    plt.figure(figsize=(20,8),dpi=80)
    
    # 3.绘制图像
    distance = 2 # 组距
    group_num = (max(time) - min(time)) // distance # 组数
    
    plt.hist(time, bins=group_num, density=True) # density频度,怎么解决网格线和直方图柱子不对齐问题?
    
    # 修改刻度
    plt.xticks(range(min(time),max(time) + 2,distance)) # 左闭右开注意加上distance
    
    # 添加标题
    plt.title("Movie Duration")
    # 添加网格
    plt.grid(linestyle="--",alpha=0.5)
    # 添加x、y描述信息
    plt.xlabel("Movie Duration")
    plt.ylabel("Movie Quantity")
    
    # 4.显示图像
    plt.show()
    
  5. 饼图 pie π - 占比(类别超过9个不建议使用,可用柱状图)

    import matplotlib.pyplot as plt
    %matplotlib inline
    
    # 直方图,电影时长分布图
    # 1.准备数据
    movie_names = ["The Intern","Me Before You","The Jungle Book","Room","The Martian","Like Sunday, Like Rain"]
    place_count = [60605,54536,45819,28243,12370,7654]
    
    # 2.创建画布
    plt.figure(figsize=(20,8),dpi=80)
    
    # 3.绘制图像
    plt.pie(place_count, labels=movie_names, colors=['b','r','g','y','c','m'], autopct="%1.2f%%") # autopct百分比显示格式,%%转义为一个%
    
    # 保持x、y轴比例 默认就是这个,不用写此句
    plt.axis("equal")
    
    # 显示图例
    plt.legend()
    
    # 4.显示图像
    plt.show()
    

你可能感兴趣的:(机器学习,机器学习,数据分析)