zoukankan      html  css  js  c++  java
  • 12_4DataFrame和matplotlib模块

    一。Dataframe的分组。

      再网页表格数据 的分析中,可以使用以下语句进行爬取表格。

    res = pd.read_html('https://baike.baidu.com/item/NBA%E6%80%BB%E5%86%A0%E5%86%9B/2173192?fr=aladdin')  ### 返回的是一个列表  列表中是当前页面的所有表格数据

      read_html可以爬取表格,取出其中所需要的表格进行处理:

    champion = res[0]
    champion.columns = champion.iloc[0]  #### 将第一行的数据 赋值给 列名
    champion.drop([0], inplace=True) #### 将第一行数据 删除掉

      对于这段数据需要进行分组。分组之后进行计数即可。

    champion.groupby('冠军').groups
    champion.groupby('冠军').size().sort_values(ascending=False)

      如果需要统计其他数据,只需要再groupbt中添加列表。

    champion.groupby(['冠军', 'FMVP']).size()

    二。DataFrame的时间数据处理。

      处理时间需要导入一个模块。

    import dateutil

      将时间格式转化成元组

    dateutil.parser.parse("2019 Jan 2nd") 
    datetime.datetime(2019, 1, 2, 0, 0)

      转化列表时间

    pd.to_datetime(['2018-01-01', '2019-02-02'])
    DatetimeIndex(['2018-01-01', '2019-02-02'], dtype='datetime64[ns]', freq=None)

      生成时间序列

    pd.date_range("2019-1-1","2019-2-2", freq='M')
    DatetimeIndex(['2019-01-31'], dtype='datetime64[ns]', freq='M')

    三。matplotlib

      首先导入这个模块

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

      将表格支持中文:

    #### windows下好使
    plt.rcParams['font.sans-serif'] = ['SimHei']
    plt.rcParams['axes.unicode_minus'] = False

      1.折线图

      首先需要生成一个plot画布

    a = [3,1,10,6]  ### 默认显示Y轴的值
    plt.plot(a)   #### plot()画折现图的函数
    plt.show()   #### 显示画的图表

      需要将一个列表放入该画布展示。

      如果需要同时键入x轴和y轴,可以输入两个:

    plt.plot(x, y, color='k', marker='D', linestyle=':')   ### 画图
    plt.show()       ### 显示

      如果需要设置画布大小可以使用以下语句:

    x = [2,5,7,10]
    y = [1,2,3,4]
    
    plt.figure(figsize=(10,6))  #### 设置画布大小

      可以设置图的标签和x轴y轴

    plt.title('title标题', fontsize=20, color='red')  #### 设置图表的标题
    plt.xlabel('x轴', fontsize=20)   #### 设置x轴的值
    plt.ylabel('y轴', fontsize=20)   #### 设置y轴的值

      其中设置的点数可以通过color,marker,linestyle进行设置。也可以通过plot?进行查询。

      

      2.柱状图

      首先获取数据:

    df = pd.read_csv('./douban_movie.csv')
    df.head()

      将获取到的数据进行处理:

    res = df.groupby('产地').size().sort_values(ascending=False)

      再生成一个bar柱状图,进行个性化设计

    x = res.index
    y = res.values
    plt.figure(figsize=(20,6))
    
    plt.title('每个国家或者地区的电影数量', fontsize=20)
    plt.xticks(rotation=90, fontsize=15, color='red')   ##### 设置x轴字体的大小和颜色
    plt.xlabel('产地', fontsize=20)
    
    plt.yticks(fontsize=15)
    plt.ylabel('数量', fontsize=20)

      如果需要在每个柱状上显示数字,需要进行xy轴的定位

    for a, b in zip(x,y):
    #     plt.text?
        plt.text(a, b+100, b, horizontalalignment='center', fontsize=13)
    
    plt.bar(x, y)
    # plt.savefig?
    plt.show()

     3.曲线图

      绘制曲线图数据处理:

    res = df.groupby(['年代']).size().sort_index()  ### sort_values 按照值进行排序  sort_index 按照索引进行排序
    res = res[:-2]

      曲线图主要是plot,数据比较多的情况:

    x = res.index
    y = res.values
    plt.figure(figsize=(10,6))
    plt.title('历年电影上映数量', fontsize=20, color='red')
    plt.xlabel('年代', fontsize=15)
    plt.xticks(fontsize=13, color='green')
    plt.ylabel('数量', fontsize=20, color='blue')
    plt.yticks(color='blue', fontsize=13)
    plt.plot(x, y)
    plt.show()

      4.绘制饼图:

      饼图中的重点在于使用cut

      cut中传入两个参数,返回值会根据第二个参数切分区域,并将第一个参数中的数值匹配这些区域,如果匹配不上就返回nan。

    pd.cut(np.array([1, 7, 5, 4, 6, 3]), [1,3,5])
    [NaN, NaN, (3.0, 5.0], (3.0, 5.0], NaN, (1.0, 3.0]]
    Categories (2, interval[int64]): [(1, 3] < (3, 5]]

      所以,需要将数据获取,放入其中进行切分:

    df_res = df['时长']
    res = pd.cut(df_res, [0,60,90,120, 140, 1000]) ### df_res 是待分割的源数据  [0,60,90,120, 140, 1000] 是区间 左开右闭

      输出的值是所有电影的归类,这个时候需要对其value_count获取值计数。

    res = res.value_counts()
    (90, 120]      16578
    (0, 60]        10324
    (60, 90]        7727
    (120, 140]      2718
    (140, 1000]     1386

      最后对数据进行个性化设置:

    x = res.index
    y = res.values
    plt.title('电影时长分布饼图', fontsize=20)
    
    patch, l_text, p_text = plt.pie(y, labels = x, autopct='%.2f%%')
    
    for p in p_text:
        p.set_size(15)
        p.set_color('white')
    
    for l in l_text:
        l.set_size(13)
        l.set_color('r')
        
    plt.show()

      hist:直方图。

      画图工具:

      echarts 和 highcharts 。

      

  • 相关阅读:
    PHP 5.5.0 Alpha5 发布
    Ubuntu Touch 只是另一个 Android 皮肤?
    MariaDB 10 已经为动态列提供文档说明
    Percona Toolkit 2.1.9 发布,MySQL 管理工具
    Oracle Linux 6.4 发布
    Ruby 2.0.0 首个稳定版本(p0)发布
    Apache Pig 0.11.0 发布,大规模数据分析
    Node.js 0.8.21 稳定版发布
    红薯 MySQL 5.5 和 5.6 默认参数值的差异
    Django 1.5 正式版发布,支持 Python 3
  • 原文地址:https://www.cnblogs.com/LZXlzmmddtm/p/11983856.html
Copyright © 2011-2022 走看看