一。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 。

  

最新文章

  1. c++读书笔记, 零散点滴的收获
  2. C++模板&amp;泛型编程
  3. iHover – 30+ 纯 CSS 实现的超炫的图片悬停特效
  4. java和python细节总结和java中string 的+操作
  5. 插件~Nuget中包与包的依赖关系
  6. OpenJudge 2739 计算对数
  7. 《CSS网站布局实录》学习笔记(四)
  8. Archlinux在Btrfs分区上的安装(bios篇)
  9. 在 Visual Studio 2010 中开发和部署 Windows Azure 应用程序
  10. Xbox360自制系统GOD包安装教程
  11. 用ifconfig命令,只有lo,没有eth0的解决方案
  12. js 不要使用new
  13. python3第一天,随便写写
  14. opn要求
  15. SpringBoot+Thyemleaf
  16. 目标(web前端)
  17. 图片 base64转byte[]
  18. 【代码审计】ThinkSNS_V4 任意文件下载漏洞分析
  19. Scrum立会报告+燃尽图(十月二十二日总第十三次)
  20. UG NX9.0.0 for linux安装

热门文章

  1. Django 10
  2. NodeJS2-5环境&amp;调试----process(进程)
  3. Internet History,Technology,and Security -Transport Control Protocol(TCP)(Week6)
  4. Python 库打包分发、setup.py 编写、混合 C 扩展打包的简易指南(转载)
  5. ASP.NET CORE 使用Consul实现服务治理与健康检查(2)——源码篇
  6. C# read file to bytes,File.ReadAllFiles,File.Open(),BinaryReader
  7. Gradle 自定义插件
  8. 【ftp服务】配置ftp用户不能返回上级目录,只能在指定的目录
  9. Ajax简单应用之个人简历页面搭建
  10. 计算几何 val.2