今日内容概要

  • 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. redis分析系列之set命令

    前言 最近研究下redis源码,现在从最基本的命令行操作来分析,redis是如何处理命令操作的 1. redis的set命令操作 我们在redis-cli执行下面的命令 set c c debug 发 ...

  2. VC++ 启用内存泄露检测

    _CrtDumpMemoryLeaks()就是检测从程序开始到执行该函数进程的堆使用情况,通过使用_CrtDumpMemoryLeaks()我们可以进行简单的内存泄露检测. #include &quo ...

  3. CEH v8~v11 Module Slides 和 Lab Manual 下载

    课程内容 CEH v8 01 Introduction to Ethical Hacking CEH v8 02 Footprinting and Reconnaissance CEH v8 03 S ...

  4. bom案例2-弹出层

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  5. Eclipse导入项目java文件中文乱码

    感谢大佬:https://blog.csdn.net/ordinaryprogrammerc/article/details/83013710 本文链接:https://blog.csdn.net/o ...

  6. HTML 代码复用

    前言 通常我们所做的一些页面,我们可以从设计图里面看出有一些地方是相同的.例如:头部,底部,侧边栏等等.如果是制作静态页面的同学,对于这些重复的部分只能够通过复制粘贴到新的页面来,如果页面的数量上去了 ...

  7. mysql查询奇数行或者偶数行数据

    select * from (select @rownum := @rownum+1 as row_num, t.* from 表名 t,(select @rownum:=0) tmp_table o ...

  8. 推荐一款仿iPhone桌面的代码. ___王朋.

    Demo:https://files.cnblogs.com/files/sixindev/LxGridView-master.zip 这是作者原来的效果图,很多东西还需要慢慢学习.作者用的很多类,根 ...

  9. List接口中特有方法

    import java.util.ArrayList; import java.util.List; /* List接口中特有方法: 添加 add(int index, E element) addA ...

  10. shell脚本之数组基本操作及排序

    数组的基本操作及排序 1.数组定义方法: ( 6 7 9 4 3 2) 0 1 2 3 4 5 #下标号 方法一: 数组名=(value0 value1 value2 -) 方法二: 数组名=([0] ...