zoukankan      html  css  js  c++  java
  • B站14天数据分析笔记6次课笔记

    1.Matplotlib 基础

    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    

    默认matplotlib.pyplot不会显示图像 需要plt.show()
    但再ipython 可以将图像直接插入到notebook中不需要show

    • %matplotlib notebook
    • %matplotlib inline

    plt.plot()函数

    普通线性图

    plt.plot([1,2,3,4])
    plt.ylabel('y')
    plt.xlabel('x')
    

    请添加图片描述

    基本用法

    • 指定x,y plt.plot(x,y)
    • 默认参数
    plt.plot([1,2,3,4],[1,4,9,16])
    plt.show()
    

    请添加图片描述

    字符参数

    • 表示颜色
    • 表示 线/点 类型的字符参数
    #红色圆点
    plt.plot([1,2,3,4],[1,4,9,16],'g *')
    plt.show()
    

    请添加图片描述

    指定坐标轴axis显示范围

    plt.axis([xmin,xmax,ymin,ymax])

    plt.plot([1,2,3,4],[1,4,9,16],'g *')
    plt.axis([0,8,0,20])
    plt.show()
    

    请添加图片描述

    plot传入numpy数组

    • 一个途中画出多条线
    t = np.arange(0.,5.,0.2)
    plt.plot(t,t,'r--',
             t,t**2,'b s',
             t,t**3,'g ^')
    plt.show()
    

    请添加图片描述

    线条属性

    • 线宽linewidth 颜色color
    x = np.linspace(-np.pi,np.pi)#-3.14到3.14
    y=np.sin(x)
    plt.plot(x,y,linewidth = 4.0,color='r')
    plt.show()
    

    请添加图片描述

    plt.plot()返回值设置线条属性

    plot函数返回Line2D对象的列表

    • line1,line2为两个Line2D对象
      line1,line2 = plt.plot(x1,y1,x2,y2)
    • 三个
      lines = plt.plot(x1,y1,x2,y2,x3,y3)
    line1,line2 = plt.plot(x,y,'r-',x,y+1,'g-')
    line1.set_antialiased(False)
    plt.show()
    

    请添加图片描述

    plt.setp() 修改线条性质

    line = plt.plot(x,y)
    #plt.setp(line,color='g',linewidth = 4)
    plt.setp(line,'color','r','linewidth',4)
    

    请添加图片描述

    子图

    • figure()产生指定编号num的图
      plt.figure(num)
      figure(1) 可以省略
      -subplot生成多个子图
      plt.sunplot(numrows,numcols,fignum) 行列啥意思??
      numrows*numcols<10 plt.sunplot(211)等价 plt.sunplot(2,1,1) 超过则参数错误
    def f(t):
        return np.exp(-t)*np.cos(2*np.pi*t)
    
    t1 = np.arange(0.0,5.0,0.1)
    t2 = np.arange(0.0,2.0,0.02)
    
    plt.figure(figsize=(10,6))
    plt.subplot(211)
    plt.plot(t1,f(t1),'bo',t2,f(t2),'k')
    
    plt.subplot(212)
    plt.plot(t2,np.cos(2*np.pi*t2),'r--')
    

    请添加图片描述

    电影数据绘图

    import warnings
    warnings.filterwarnings('ignore')
    plt.rcParams['font.sans-serif'] = ['SimHei']#字体 黑体解决中文乱码
    plt.rcParams['axes.unicode_minus'] = False #负号啥的 正常显示
    df = pd.read_excel('movie_data3.xlsx')
    df.head(0)
    

    请添加图片描述

    每个国家地区电影数量的柱状图 bar chart

    data = df['产地'].value_counts()
    data
    

    请添加图片描述

    #x y axis
    x = data.index
    y = data.values
    plt.figure(figsize=(10,6))
    plt.bar(x,y,color='g')
    plt.title('各个国家或者地区电影数量',fontsize=20)
    plt.xlabel('国家或者地区',fontsize=16)
    plt.ylabel('电影数量',fontsize=16,rotation=0)
    plt.tick_params(labelsize=14) #横轴和纵轴标记的字体大小
    plt.xticks(rotation=90)
    for a,b in zip(x,y):
        plt.text(a,b+10,b,fontsize=10,ha='center',va='bottom') #前两个的参数:文本的位置 b被选定的参数 字体 水平对齐 垂直对齐
        
    plt.grid()
    plt.show()
    

    请添加图片描述

    每年上映电影数量的曲线图

    曲线图/折线图 发展变化趋势
    xlabel ylabel title text指定位置防止文字 特殊符号使用Tex语法$$

    data=df['年代'].value_counts()
    data=data.sort_index()[:-1]
    data
    

    请添加图片描述
    每隔一定距离 几个点取样 进行标注 使用循环

    x=data.index
    y=data.values
    plt.plot(x,y,color='b')
    plt.title('每年电影数量',fontsize=20)
    plt.ylabel('电影数量        ',fontsize=18,rotation=0)
    plt.xlabel('年份',fontsize=18)
    for a,b in zip(x[::10],y[::10]):
        plt.text(a,b+10,b,ha='center',va='bottom',fontsize=10)
    
    plt.annotate('2012年最大值',xy=(2012,data[2012]),xytext=(2025,2100),arrowprops=dict(facecolor='black',edgecolor='red'))
    plt.text(1980,1000,'电影数量爆发期')
    plt.show()
    

    请添加图片描述

    电影长度的绘制饼图 分类不多的 Sector

    函数原型 pie(x,explode)

    x 每一块比例 归不归一无所谓
    labels
    showdow
    labeldistance
    starting

    data = pd.cut(df['时长'],[0,60,90,110,1000]).value_counts()
    data
    y=data.values
    #y=y/sum(y)
    plt.figure(figsize=(7,7))
    plt.title('电影时长比例',fontsize=15)
    patches,l_text,p_text = plt.pie(y,labels=data.index,autopct='%.1f %%',colors='bygr',startangle=90)
    for i in p_text:
        i.set_size(15)
        i.set_color('white')
    plt.legend()
    plt.show()
    

    请添加图片描述

    电影评分你频率分布直方图

    连续变量的概率分布 可归一化

    plt.figure(figsize=(10,6))
    plt.hist(df['评分'],bins=20,edgecolor='black',alpha=0.5)
    plt.show()
    

    请添加图片描述

  • 相关阅读:
    Eclipse上Maven环境配置使用 (全)
    Eclipse查看Servlet源码
    Eclipse中在xml文件中,ctrl+左键的快捷键,点击class定位,不生效
    注意事项
    项目路径问题
    springmvc配置文件<context:component-scan>
    向eclipse的JavaWeb项目中导入jar包
    用eclipse创建动态web项目手动生成web.xml方法
    WEB后台认证机制
    mui项目中如何使用原生JavaScript代替jquery来操作dom
  • 原文地址:https://www.cnblogs.com/most-silence/p/15495351.html
Copyright © 2011-2022 走看看