今日内容概要

  • 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. K8S访问机制

    pod -> endpoint -> service -> namespace -> svc.cluster.local .....在 a 名称空间,访问 b 名称空间的 b1 ...

  2. jar包冲突时怎么办

    因为项目中会依赖许多jar包,免不得就会有冲突,那怎么解决呢? 使用 mvn dependency:tree 可以看到各个包的依赖关系 [INFO] | +- commons-cli:commons- ...

  3. 为什么要配置path环境变量

    因为在jdk下bin文件夹中有很多我们在开发中要使用的工具,如java.exe,javac.exe,jar.ex等,那么我们在使用时,想要在电脑的任意位置下使用这些java开发工具,那么我们就需有把这 ...

  4. VC 为程序创建唯一标识

    转载请注明来源:https://www.cnblogs.com/hookjc/ 应用: 一台机器上只许运行一个客户端 同一个账号只允许登陆一个客户端 BOOl m_IsRun=false; HANDL ...

  5. Mac 使用自带php和Apache 安装配置Xdebug 开启本地调试模式

    Mac 安装配置php xdebug 本地调试 0.原理图 https://paper.seebug.org/308/ 测试demo构建方法 新建空白项目,目录选择Apache默认项目目录 1.下载x ...

  6. 深入了解Element Form表单动态验证问题 转载

    随风丶逆风 2020-04-03 15:36:41  2208  收藏 3 分类专栏: Vue 随笔 文章标签: 动态验证 el-form elementUI 表单验证 版权 在上一篇<vue ...

  7. 【Github资源大汇总】 - 王朋

    1.Github-iOS备忘 (国人总结的上百个Github上的开发框架和完整App) http://github.ibireme.com/github/list/ios/ 2.不少优秀的 iOS, ...

  8. 一张图让你看懂 iPhone 各种分辨率问题! #DF

    话不多说,直接看图! Source: paintcodeapp.com

  9. sublime运行错误

      这是由于没有保存文档导致   说明: [Finished in 19.4s with exit code 1]-表示执行时间 [shell_cmd: python3 -u "/Volum ...

  10. 作业2.7_3(给UVA548 树 Tree单独一个帖子)🍺

    代码:(输入函数很香建议保留)我不理解他是绿的但 The Blocks Problem 是黄的 #include<bits/stdc++.h> using namespace std; i ...