今日内容概要

  • matplotlib实际案例演示
  • 各种图形的总结
  • 数据清洗(简单)
  • 数据清洗的案例

今日内容详细

matplotlib实际案例演示

# 2.绘制每年电影上映数量曲线图
首先载入模块
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
# 从EXCEL文件中读取豆瓣电影排行表
ses = pd.read_csv(r'C:\\douban_movie.csv')
ses
运行结果:
名字 投票人数 类型 产地 上映时间 时长 年代 评分 首映地点
0 肖申克的救赎 692795.0 剧情/犯罪 美国 1994-09-10 00:00:00 142.0 1994 9.6 多伦多电影节
1 控方证人 42995.0 剧情/悬疑/犯罪 美国 1957-12-17 00:00:00 116.0 1957 9.5 美国
2 美丽人生 327855.0 剧情/喜剧/爱情 意大利 1997-12-20 00:00:00 116.0 1997 9.5 意大利
3 阿甘正传 580897.0 剧情/爱情 美国 1994-06-23 00:00:00 142.0 1994 9.4 洛杉矶首映
4 霸王别姬 478523.0 剧情/爱情/同性 中国大陆 1993-01-01 00:00:00 171.0 1993 9.4 香港
... ... ... ... ... ... ... ... ... ...
38730 神学院 S 46.0 Adult 法国 1905-06-05 00:00:00 58.0 1983 8.6 美国
38731 1935年 57.0 喜剧/歌舞 美国 1935-03-15 00:00:00 98.0 1935 7.6 美国
38732 血溅画屏 95.0 剧情/悬疑/犯罪/武侠/古装 中国大陆 1905-06-08 00:00:00 91.0 1986 7.1 美国
38733 魔窟中的幻想 51.0 惊悚/恐怖/儿童 中国大陆 1905-06-08 00:00:00 78.0 1986 8.0 美国
38734 列宁格勒围困之星火战役 Блокада: Фильм 2: Ленинградский ме... 32.0 剧情/战争 苏联 1905-05-30 00:00:00 97.0 1977 6.6 美国
38735 rows × 9 columns
安装年代分组 提供两种方法
1.方式1:推荐
ses.groupby(['年代']).size().sort_values(ascending=False)
运行结果:
年代
2012 2042
2013 2001
2008 1963
2014 1887
2010 1886
...
1899 2
34943 1
1892 1
1890 1
39180 1
Length: 128, dtype: int64
2.方式2
ses['年代'].value_counts()
运行结果:
2012 2042
2013 2001
2008 1963
2014 1887
2010 1886
...
1888 2
1890 1
34943 1
1892 1
39180 1
Name: 年代, Length: 128, dtype: int64 # 这里我们不应该按照电影数量排序而是应该按照数量对应的年份排序
ses1 = ses.groupby(['年代']).size().sort_index(ascending=False) # ascending参数如果不手动设置为False的话,是升序排序
运行结果:
年代
39180 1
34943 1
2016 257
2015 1592
2014 1887
...
1895 8
1894 3
1892 1
1890 1
1888 2
Length: 128, dtype: int64 ses1= ses.groupby(['年代']).size().sort_index(ascending=True)
ses1
# ascending参数可以选择为True或者可以为空,结果都是一样的
运行结果:
年代
1888 2
1890 1
1892 1
1894 3
1895 8
...
2014 1887
2015 1592
2016 257
34943 1
39180 1
Length: 128, dtype: int64 # 切除异常数据(该表的34943年和39180年的数据)
ses= ses1[:-2]
ses
运行结果: # 这样就将该表的异常数据就切除了
年代
1888 2
1890 1
1892 1
1894 3
1895 8
...
2012 2042
2013 2001
2014 1887
2015 1592
2016 257
Length: 126, dtype: int64 # 确定x轴数值和y轴数值
x = ses.index
x
y = ses.values
y
运行结果:
x:Int64Index([1888, 1890, 1892, 1894, 1895, 1896, 1897, 1898, 1899, 1900,
...
2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016],
dtype='int64', name='年代', length=126)
y:array([ 2, 1, 1, 3, 8, 8, 3, 2, 2, 7, 4,
6, 16, 8, 5, 7, 5, 6, 5, 5, 4, 5,
8, 26, 20, 12, 12, 12, 20, 14, 22, 22, 18,
28, 25, 23, 29, 40, 35, 25, 42, 37, 50, 51,
46, 60, 50, 38, 49, 39, 47, 53, 57, 54, 49,
59, 75, 87, 89, 76, 79, 87, 88, 102, 115, 147,
107, 122, 128, 131, 102, 143, 143, 182, 163, 180, 176,
172, 207, 190, 219, 207, 213, 223, 196, 233, 220, 201,
227, 224, 274, 266, 277, 294, 322, 325, 343, 391, 393,
393, 410, 435, 441, 494, 489, 517, 537, 577, 625, 731,
828, 900, 951, 1136, 1263, 1515, 1711, 1963, 1862, 1886, 1866,
2042, 2001, 1887, 1592, 257], dtype=int64) # 画出曲线图
plt.plot(x,y)
plt.show() # 最后做优化完善填充信息
plt.figure(figsize=(10,6))
plt.title('年代与电影数量曲线图',fontsize=30,color='c')
plt.xlabel('年代',fontsize=25,color='m')
plt.ylabel('数量',fontsize=25,color='b')
plt.xticks(fontsize=13,color='m')
plt.yticks(fontsize=13,color='b')
# 根据电影的长度绘制饼图
bes.head(2) # 电影的时长根据具体的业务逻辑划分成不同的等级
bes = res['时长']
bes
运行结果:
0 142.0
1 116.0
2 116.0
3 142.0
4 171.0
...
38730 58.0
38731 98.0
38732 91.0
38733 78.0
38734 97.0
Name: 时长, Length: 38735, dtype: float64 bes1 = pd.cut(bes,[0,60,70,90,120,140,1100])
# pd.cut(第一个参数带操作对象,自己放一个列表里面指定范围多个区间值)
bes1
运行结果:
0 (140, 1100] # (140,1000] 小括号表示开区间 不包括 中括号表示闭区间 包括
1 (90, 120]
2 (90, 120]
3 (140, 1100]
4 (140, 1100]
...
38730 (0, 60]
38731 (90, 120]
38732 (90, 120]
38733 (70, 90]
38734 (90, 120]
Name: 时长, Length: 38735, dtype: category
Categories (6, interval[int64]): [(0, 60] < (60, 70] < (70, 90] < (90, 120] < (120, 140] < (140, 1100]] # 统计每个区间的电影数量
bes2 = bes1.value_counts() # 对生成的区间做统计计数
bes2
运行结果:
(90, 120] 16578
(0, 60] 10324
(70, 90] 7213
(120, 140] 2718
(140, 1100] 1386
(60, 70] 514
Name: 时长, dtype: int64 # 明确x和y轴数据 画图的时候并不是只有坐标系才需要x轴和y轴
x = bes2.index
y = bes2.values
# 先粗略的画出来看看
# 图形优化
plt.title('电影时长分布',fontsize=25,color='purple')
# 饼状图pie会有一个返回值 在早期的版本里面是三个元素 现在只有两个元素
l_text,p_text = plt.pie(y,labels=x) # 利用python解压复制的操作
# l_text和p_text都是列表 前者用于修改x轴标题 后者用于修改区域文字
for i in l_text:
# i 对应就是各个区域
# i.set_color('yellowgreen')
pass
for j in p_text:
# j 对应就是各个文本
# j.set_color('sage') # 设置文本颜色
# j.set_text('hahaha') # 设置文本内容
j.set_size(15) # 设置文本大小
plt.show()

各种图形的总结

plot   折线图
pie 饼图
bar 统计图 # DataFrame数组图
cf = pd.DataFrame({
'Jan':pd.Series([1,2,3],index=['a','b','c']),
'Fed':pd.Series([4,5,6],index=['b','a','c']),
'Mar':pd.Series([7,8,9],index=['b','a','c']),
'Apr':pd.Series([2,4,6],index=['b','a','c'])
})
cf.plot.bar() # 水平柱状图,将每一行中的值分组到并排的柱子中的一组
cf.plot.barh(stacked=True,alpha=0.5) # 横向柱状图,将每一行的值堆积到一起

总结

后续更加复杂的图形化展示可以使用
highcharts
中规中矩
echarts
echarts是基于highchairts开发的,有点过于花里胡哨

matplotlib(终章)的更多相关文章

  1. C#使用Xamarin开发可移植移动应用终章(11.获取设备信息与常用组件,开源一个可开发模版.)

    前言 系列目录 C#使用Xamarin开发可移植移动应用目录 源码地址:https://github.com/l2999019/DemoApp 可以Star一下,随意 - - 说点什么.. 本系列,终 ...

  2. 史上最简单的 SpringCloud 教程 | 终章

    https://blog.csdn.net/forezp/article/details/70148833转载请标明出处:http://blog.csdn.net/forezp/article/det ...

  3. BugPhobia终章篇章:学霸在线系统Beta阶段展示

    0x00 :序言 1 universe, 9 planets, 204 countries,809 islands, 7 seas, and i had the privilege to meet y ...

  4. SpringBoot非官方教程 | 终章:文章汇总

    转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springboot/2017/07/11/springboot-all/ 本文出自方志朋的博客 SpringBo ...

  5. JDBC终章- 使用 DBUtils实现增删查改- C3P0Utils数据源/QueryRunner runner连接数据源并执行sql

    JDBC终章- 使用 DBUtils实现增删查改 1.数据库结构 Create Table CREATE TABLE `user` ( `id` ) NOT NULL AUTO_INCREMENT, ...

  6. SpringCloud 教程 | 终章

    错过了这一篇,你可能再也学不会 Spring Cloud 了!Spring Boot做为下一代 web 框架,Spring Cloud 作为最新最火的微服务的翘楚,你还有什么理由拒绝.赶快上船吧,老船 ...

  7. BUAA-OO-第四单元总结——终章

    面向对象第四单元博客总结--终章 第四单元作业设计 第13次作业设计 类和对应方法属性设计 类设计如下图所示 本次作业主要涉及六个类,其中包括主类 Main ,通用Map类 UmlElementIdM ...

  8. Matplotlib——第一章轻松画个图

    首先安装matplotlib,使用pip install matplotlib.安装完成后在python的命令行敲入import matplotlib,如果没问题,说明安装成功可以开始画图了. 看好了 ...

  9. 基于<MediaElement>的WPF视频播放器(终章)【3】

    一.前言 对于<MediaElement>前两章介绍了差不多了,其实好的界面还需要UI工程师的配合,比如帮忙设计下按钮的样式等等.同样视频本身也需要吸引人,不然做的再好的播放器也没用.之后 ...

随机推荐

  1. was 9.0 install

    Installation Manager 下载地址 https://www-945.ibm.com/support/fixcentral/swg/downloadFixes?parent=ibm~Ra ...

  2. python_f-string格式化字符串文字

    一.简介 f-string,亦称为格式化字符串常量(formatted string literals),是Python3.6新引入的一种字符串格式化方法. f-string在形式上是以 f 或 F ...

  3. webpack搭建react+ts+eslint项目

    [初始化项目] mkdir react_ts_eslint cd react_ts_eslint npm init [生成ts配置文件] tsc --init [安装相关依赖] npm install ...

  4. HBase安装教程

    一.版本介绍 linux : CentOS7 Hadoop : 2.7.6 zookeeper : 3.4.6 hbase : 1.4.6 jdk : jdk1.8.0_171 三个节点的主机名分别为 ...

  5. php解决抢购秒杀抽奖等大流量并发入库导致的库存负数的问题

    我们知道数据库处理sql是一条条处理的,假设购买商品的流程是这样的: sql1:查询商品库存 1 if(库存数量 > 0) 2 { 3 //生成订单 4 //库存-1 5 > 当没有并发时 ...

  6. Mybatis foreach的用法

    本文援引:https://www.cnblogs.com/fnlingnzb-learner/p/10566452.html 在做mybatis的mapper.xml文件的时候,我们时常用到这样的情况 ...

  7. 修改注册表使win server 2012R2开机进入桌面而不是开始界面

    首先,使用WIN+R快捷键打开运行命令,使用命令打开注册表编辑器 然后,进入注册表之后,我们一次定位到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\ ...

  8. 已完成的python项目-环境离线部署

    python环境离线部署 当前生产环境中,有很多基于python开发的工具需要使用. 由于python工具往往涉及到很多依赖,在线状态下,可以通过pip requirements来管理安装. 但有时候 ...

  9. 了解Java格式化输出printf,一篇就够了

    格式化详解 格式化输出 转换符 常用转换符 日期转换 搭配标志 了解C语言的都知道,C语言的输出语句printf();可以对里面的内容格式化然后输出.那么在Java中也给我们提供了相关的方法.两者十分 ...

  10. CreateEvent进程同步

    CreateEvent进程间同步   CreateEvent可以创建或是打开一个命名或是未命名的event对象. HANDLE CreateEvent(   LPSECURITY_ATTRIBUTES ...