day100_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 。
day100_12_4DataFrame和matplotlib模块的更多相关文章
- Windows python 安装 nNumpy、Scipy、matplotlib模块
折腾了 很久,总结一些. 首先如果python 是64位,安装32位的numpy ,Scipy,或者matplotlib 模块. 会出现很多问题. 比如当你 在python 导入 Numpy 时,导入 ...
- python_Opencv_使用Matplotlib模块
使用Matplotlib模块 Matplotib 是python 的一个绘图库,里头有各种各样的绘图方法. 之后会陆续了解.先学习怎样用Matplotib 显示图像. 可以放大图像,保存图像. 安装M ...
- python 爬虫与数据可视化--matplotlib模块应用
一.数据分析的目的(利用大数据量数据分析,帮助人们做出战略决策) 二.什么是matplotlib? matplotlib: 最流行的Python底层绘图库,主要做数据可视化图表,名字取材于MATLAB ...
- Matplotlib模块:绘图和可视化
一.简单介绍Matplotlib 1.Matplotlib是一个强大的Python绘图和数据可视化的工具包 2.安装方法:pip install matplotlib 3.引用方法:import ma ...
- 为python安装matplotlib模块
matplotlib是python中强大的画图模块. 首先确保已经安装python,然后用pip来安装matplotlib模块. 进入到cmd窗口下,执行python -m pip install - ...
- Python使用matplotlib模块绘制多条折线图、散点图
用matplotlib模块 #!usr/bin/env python #encoding:utf-8 ''' __Author__:沂水寒城 功能:折线图.散点图测试 ''' import rando ...
- windows_64下python下载安装Numpy、Scipy、matplotlib模块
本文应用的python3.6.3及其对应的Numpy.Scipy.matplotlib计算模块的cp36版本,其中Numpy是需要MKL版本的Numpy,这是后续安装Scipy的需要(本机系统win7 ...
- windows下python安装Numpy、Scipy、matplotlib模块(转载)
python下载链接 Numpy下载链接 python中Numpy包的安装及使用 Numpy包的安装 准备工作 Python安装 pip安装 将pip所在的文件夹添加到环境变量path路径中 ...
- python 1: 解决linux系统下python中的matplotlib模块内的pyplot输出图片不能显示中文的问题
问题: 我在ubuntu14.04下用python中的matplotlib模块内的pyplot输出图片不能显示中文,怎么解决呢? 解决: 1.指定默认编码为UTF-8: 在python代码开头加入如下 ...
随机推荐
- web性能优化指南
前端性能优化,是每个前端必备的技能,优化自己的代码,使自己的网址可以更加快速的访问打开,减少用户等待,今天就会从几个方面说起前端性能优化的方案, 看下面的一张图,经常会被面试官问,从输入URL到页面加 ...
- 【CentOS7】常用命令
[CentOS7]常用命令 转载:https://www.cnblogs.com/yangchongxing/p/10646640.html 目录 ========================== ...
- java面试题干货96-125
这部分主要是与Java Web和Web Service相关的面试题. 96.阐述Servlet和CGI的区别? 答:Servlet与CGI的区别在于Servlet处于服务器进程中,它通过多线程方式运行 ...
- static介绍、内部类、final、权限修饰符的作用范围
static 关键字:(可用于修饰方法.变量) static 特点: static是静态修饰符,一般修饰成员变量.被static修饰的属于全局共享.被static修饰的成员属于 ...
- NodeJS1-2 Node JS的优点
NodeJS并不适合所有server端的场景,它的使用场景是及其有限的,web是nodeJS最适合的场景 前端偏爱node的原因其内核就是JavaScript 前端职责范围变大,统一开发体验 在处理了 ...
- 《Java基础知识》Java final关键字:阻止继承和多态
在 Java 中,声明类.变量和方法时,可使用关键字 final 来修饰.final 所修饰的数据具有“终态”的特征,表示“最终的”意思.具体规定如下: final 修饰的类不能被继承. final ...
- 【高可用架构】用Nginx实现负载均衡(三)
前言 在上一篇,已经用Envoy工具统一发布了Deploy项目代码.本篇我们来看看如何用nginx实现负载均衡 负载均衡器IP 192.168.10.11 [高可用架构]系列链接:待部署的架构介绍 演 ...
- 松软科技课堂:JS HTML DOM
通过 HTML DOM,JavaScript 能够访问和改变 HTML 文档的所有元素. HTML DOM(文档对象模型) 当网页被加载时,浏览器会创建页面的文档对象模型(Document Objec ...
- SuperMap iDesktop .NET 10i制图技巧-----如何利用二维平面数据起白膜
1.打开超图的SuperMap iDesktop,加载数据源 udbx其实就是类似于arcgis中的gdb一样的东西,把数据压缩在里面了,这样也可以保证数据的统一集中 2.打开二维面数据,里面的结构如 ...
- 生命周期感知 Lifecycle
奉上翻译原文地址: 处理生命周期 :翻译过程中加上了自己的一点理解.理解不对的地方直接评论就好. 生命周期感知组件可以感知其他组件的生命周期,例如 Activity,Fragment等,以便于在组件的 ...