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()
    

    请添加图片描述

  • 相关阅读:
    -bash: fork: Cannot allocate memory 问题的处理
    Docker top 命令
    docker常见问题修复方法
    The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)
    What's the difference between encoding and charset?
    hexcode of é î Latin-1 Supplement
    炉石Advanced rulebook
    炉石bug反馈
    Sidecar pattern
    SQL JOIN
  • 原文地址:https://www.cnblogs.com/most-silence/p/15495351.html
Copyright © 2011-2022 走看看