一。Dataframe的分组。

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

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

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

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

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

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

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

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

二。DataFrame的时间数据处理。

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

  1. import dateutil

  将时间格式转化成元组

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

  转化列表时间

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

  生成时间序列

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

三。matplotlib

  首先导入这个模块

  1. import numpy as np
  2. import pandas as pd
  3. import matplotlib.pyplot as plt

  将表格支持中文:

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

  1.折线图

  首先需要生成一个plot画布

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

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

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

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

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

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

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

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

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

  

  2.柱状图

  首先获取数据:

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

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

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

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

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

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

  1. for a, b in zip(x,y):
  2. # plt.text?
  3. plt.text(a, b+100, b, horizontalalignment='center', fontsize=13)
  4.  
  5. plt.bar(x, y)
  6. # plt.savefig?
  7. plt.show()

3.曲线图

  绘制曲线图数据处理:

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

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

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

  4.绘制饼图:

  饼图中的重点在于使用cut

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

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

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

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

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

  1. res = res.value_counts()
  2. (90, 120] 16578
  3. (0, 60] 10324
  4. (60, 90] 7727
  5. (120, 140] 2718
  6. (140, 1000] 1386

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

  1. x = res.index
  2. y = res.values
  3. plt.title('电影时长分布饼图', fontsize=20)
  4.  
  5. patch, l_text, p_text = plt.pie(y, labels = x, autopct='%.2f%%')
  6.  
  7. for p in p_text:
  8. p.set_size(15)
  9. p.set_color('white')
  10.  
  11. for l in l_text:
  12. l.set_size(13)
  13. l.set_color('r')
  14.  
  15. plt.show()

  hist:直方图。

  画图工具:

  echarts 和 highcharts 。

  

day100_12_4DataFrame和matplotlib模块的更多相关文章

  1. Windows python 安装 nNumpy、Scipy、matplotlib模块

    折腾了 很久,总结一些. 首先如果python 是64位,安装32位的numpy ,Scipy,或者matplotlib 模块. 会出现很多问题. 比如当你 在python 导入 Numpy 时,导入 ...

  2. python_Opencv_使用Matplotlib模块

    使用Matplotlib模块 Matplotib 是python 的一个绘图库,里头有各种各样的绘图方法. 之后会陆续了解.先学习怎样用Matplotib 显示图像. 可以放大图像,保存图像. 安装M ...

  3. python 爬虫与数据可视化--matplotlib模块应用

    一.数据分析的目的(利用大数据量数据分析,帮助人们做出战略决策) 二.什么是matplotlib? matplotlib: 最流行的Python底层绘图库,主要做数据可视化图表,名字取材于MATLAB ...

  4. Matplotlib模块:绘图和可视化

    一.简单介绍Matplotlib 1.Matplotlib是一个强大的Python绘图和数据可视化的工具包 2.安装方法:pip install matplotlib 3.引用方法:import ma ...

  5. 为python安装matplotlib模块

    matplotlib是python中强大的画图模块. 首先确保已经安装python,然后用pip来安装matplotlib模块. 进入到cmd窗口下,执行python -m pip install - ...

  6. Python使用matplotlib模块绘制多条折线图、散点图

    用matplotlib模块 #!usr/bin/env python #encoding:utf-8 ''' __Author__:沂水寒城 功能:折线图.散点图测试 ''' import rando ...

  7. windows_64下python下载安装Numpy、Scipy、matplotlib模块

    本文应用的python3.6.3及其对应的Numpy.Scipy.matplotlib计算模块的cp36版本,其中Numpy是需要MKL版本的Numpy,这是后续安装Scipy的需要(本机系统win7 ...

  8. windows下python安装Numpy、Scipy、matplotlib模块(转载)

    python下载链接     Numpy下载链接 python中Numpy包的安装及使用 Numpy包的安装 准备工作 Python安装 pip安装 将pip所在的文件夹添加到环境变量path路径中 ...

  9. python 1: 解决linux系统下python中的matplotlib模块内的pyplot输出图片不能显示中文的问题

    问题: 我在ubuntu14.04下用python中的matplotlib模块内的pyplot输出图片不能显示中文,怎么解决呢? 解决: 1.指定默认编码为UTF-8: 在python代码开头加入如下 ...

随机推荐

  1. 这十道经典Python笔试题,全做对算我输

    经常有小伙伴学了Python不知道是否能去找工作,可以来看下这十道题检验你的成果: 1.常用的字符串格式化方法有哪些?并说明他们的区别 a. 使用%,语法糖 print("我叫%s,今年%d ...

  2. ARTS-S govendor

    govendor init govendor add +external

  3. 《java面试十八式》第一式 --冈本零点零一

    第一式 [冈本零点零一] 冈本零点零一:将简历包装于无形,博得人事的芳心,用过的人都说好 . 要想有更多的面试机会,简历是不可缺少的,机会都没有何谈面:所以这也是我们的第一步. 首先是简历模板: 模板 ...

  4. 2.成产出现 max(vachar2)取值问题

    uat 测试结果正确max(9)>max(8),结果生产出现 max(9)>max(12) 原因:字符类型,默认比较第一个字符的ASCII码. 解决方式: max(to_number(va ...

  5. 代码检查又一利器:ArchUnit

    Code Review总是让人又爱又恨,它可以帮助我们在提测之前发现很多代码中比较"丢人"的问题,但是,Code Review通常会比写代码更加耗费精力,因为你需要理解别人的代码, ...

  6. irules

    BIG-IP系统iRules基本概念_v11.6.1 2017年10月10日 00:35:16 ifelif 阅读数:1097   1 iRules介绍 什么是iRule iRule是BIG-IP本地 ...

  7. SpringBoot电商项目实战 — ElasticSearch接入实现

    如今在一些中大型网站中,搜索引擎已是必不可少的内容了.首先我们看看搜索引擎到底是什么呢?搜索引擎,就是根据用户需求与一定算法,运用特定策略从互联网检索出制定信息反馈给用户的一门检索技术.搜索引擎依托于 ...

  8. 【转载】单线程Redis性能为何如此之高?

    Redis的优势 性能高不仅跟线程模型有关,它有很多原因,主要有如下3点: 基于内存: 单线程,但IO多路复用的利用率高: 数据结构为高性能优化. 下面分别阐述. Redis的优势:基于内存 性能高低 ...

  9. canves做的时钟目前已经开源

    canves做的时钟目前已经开源 git地址: https://github.com/jidanji/canves-clock/tree/1.0.1 项目截图 时流过的时间变得有颜色,其他的没有颜色.

  10. EggJS接口开发

    需求 随着Nodejs的普及,前端开发的开发场景基本可以贯穿界面交互到数据存储,无缝实现全栈开发.最近在实现一个内部项目管理工具的时候,就尝试了一把接口和数据库开发. 什么是Egg.js Egg.js ...