使用pandas制作图表

数据可视化对于数据分析的重要性不言而喻,一个优秀的图表有足以一眼就看出关键所在。pandas利用matplotlib实现绘图。能够提供各种各样的图表功能,包括:

  1. 单折线图
  2. 多折线图
  3. 柱状图
  4. 叠加柱状图
  5. 水平叠加柱状图
  6. 直方图
  7. 拆分直方图
  8. 箱型图
  9. 区域块图形
  10. 散点图
  11. 饼图
  12. 多子图
  13. 密度图
  14. 自由定制多子图

下面我们会依次讲解每一个图表的绘制,我们假设每一个代码文件里都引入了以下python包:

#!/usr/bin/env python
# -*-coding: UTF-8 -*-import pandas as pd
import numpy as np
import MySQLdb
import randomimport matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
1. 单折线图

直接指定X轴、Y轴的值生成二维图表,np.arange返回的类型是numpy.ndarray。通过plt.title能够指定图表标题,plt.xlabel指定X轴名称,plt.ylable指定Y轴名称。

示例

x = np.arange(1, 12)
print(type(x))y = x ** 2 + 4
print(type(y))plt.title("Matplotlib demo")
plt.xlabel("时间(分钟)")
plt.ylabel("金额($)")
plt.plot(x,y)
plt.show()

输出
在这里插入图片描述

2. 多折线图

示例

js = '''
{"index":["2020-09-01","2020-09-02","2020-09-03","2020-09-04"],"columns":["首页PV","搜索页PV","注册数","下单用户数","订单数"],"data":[[1, 2, 3, 4, 5],[3, 7, 8, null, 10],[5, null, 13, 14, 15],[7, null, 18, 19, 20]]
}
'''pv_conv = pd.read_json(js, orient='split')
pv_conv.plot()
plt.show()

输出
在这里插入图片描述

3. 柱状图

示例

data = np.random.rand(10, 4)
df = pd.DataFrame(data, columns=['a', 'b', 'c', 'd'])
print(df)
df.plot.bar()plt.show()

数据
在这里插入图片描述

输出
在这里插入图片描述

4. 叠加柱状图

示例

data = np.random.rand(10, 4)
df = pd.DataFrame(data, columns=['a', 'b', 'c', 'd'])
print(df)
df.plot.bar(stacked=True)plt.show()

数据
在这里插入图片描述

输出
在这里插入图片描述

5. 水平叠加柱状图

示例

data = np.random.rand(10, 4)
df = pd.DataFrame(data, columns=['a', 'b', 'c', 'd'])
print(df)
df.plot.barh(stacked=True)plt.show()

数据
在这里插入图片描述

输出
在这里插入图片描述

6. 直方图

示例

df = pd.DataFrame({'a': np.random.randn(1000) + 1, 'b': np.random.randn(1000), 'c': np.random.randn(1000) - 1}, columns=['a', 'b', 'c'])
print(df)
df.plot.hist(bins=20)
plt.show()

数据
在这里插入图片描述

输出
在这里插入图片描述

7. 拆分直方图

示例

df = pd.DataFrame({'a': np.random.randn(1000) + 1, 'b': np.random.randn(1000), 'c': np.random.randn(1000) - 1}, columns=['a', 'b', 'c'])
print(df)df.hist(bins=20)plt.show()

数据
在这里插入图片描述

输出
在这里插入图片描述

8. 箱型图

用于展示每列中值的分布

示例

df = pd.DataFrame(np.random.rand(10, 5), columns=['A', 'B', 'C', 'D', 'E'])
print(df)
df.plot.box()plt.show()

数据
在这里插入图片描述

输出
在这里插入图片描述

9. 区域块图形

示例

df = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd'])
print(df)
df.plot.area()plt.show()

数据
在这里插入图片描述

输出
在这里插入图片描述

10. 散点图

参数说明

# x: 散点的x坐标位置
# y: 散点的y坐标位置
# s: 散点的大小
# c: 散点颜色
# 更多参数查看: help(df.plot.scatter)df.plot(kind='scatter', x='A', y='B', s=df.C*500, c='r')
plt.show()

示例

df = pd.DataFrame(np.random.rand(50, 4), columns=['a', 'b', 'c', 'd'])
print(df)
df.plot.scatter(x='a', y='b')plt.show()

数据
在这里插入图片描述

输出
在这里插入图片描述

11. 饼图

示例

df = pd.DataFrame(3 * np.random.rand(4), index=['a', 'b', 'c', 'd'], columns=['x'])
print(df)
df.plot.pie(subplots=True)plt.show()

数据
在这里插入图片描述

输出
在这里插入图片描述

12. 多子图

参数说明

  • subplots: 默认False, 如果想要每列单独绘图,改为True
  • layout: 画布划分多少块,(x,y)表示x行y列,块数要大于列数
  • figsize: 整个画布大小
  • sharey: 指定是否共享Y周范围

示例

df = pd.DataFrame(np.random.randn(4, 9), index=['a', 'b', 'c', 'd'], columns=np.arange(2, 11))
print(df)# df.plot(subplots=True, layout=(3, 3), figsize=(10, 10), kind='bar')
df.plot(subplots=True, layout=(3, 3), figsize=(10, 10), kind='bar', sharey=True)plt.show()

数据
在这里插入图片描述

输出
在这里插入图片描述

13. 密度图

类直方图,能够预测趋势

示例


import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import sys
import MySQLdb
import randomimport matplotlib.pyplot as plt
import scipyplt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号pv_conv = {'首页PV': [985, 211, 688, 766],'搜索页PV': [290, 200, 201, 228],'注册数': [98, 21, 19, 71],'下单用户数': [46, 43, 68, 72],'订单数': [40, 50, 70, 80],
}df = pd.DataFrame(pv_conv)
print(df)df['首页PV'].plot.density()plt.show()

数据
在这里插入图片描述

输出
在这里插入图片描述

14. 自由定制多子图

示例

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as pltpd.set_option('display.max_columns', None)
pd.set_option('display.width', None)
plt.rcParams['font.sans-serif'] = ['SimHei']  # 显示中文标签
plt.rcParams['font.serif'] = ['KaiTi']
plt.rcParams['axes.unicode_minus'] = Falsex = np.random.randn(100)
print(x)
fig, axes = plt.subplots(1, 4)
sns.kdeplot(x, ax=axes[0])
sns.kdeplot(x, ax=axes[1], cumulative=True)  # 累积分布
sns.kdeplot(x, ax=axes[2], shade=True)  # kde曲线下面的区域中进行阴影处理
sns.kdeplot(x, ax=axes[3], vertical=True)  # X轴进行绘制还是以Y轴进行绘制
plt.show()

输出
在这里插入图片描述

参考资料
  1. https://zhuanlan.zhihu.com/p/33977558

 
 
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/204598.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

13年测试老鸟总结,性能测试常遇问题+解决方案+分析...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、内存溢出 1&a…

【高数:1 映射与函数】

【高数:1 映射与函数】 例2.1 绝对值函数例2.2 符号函数例2.3 反函数表示例2.4 双曲正弦sinh,双曲余弦cosh,双曲正切tanh 参考书籍:毕文斌, 毛悦悦. Python漫游数学王国[M]. 北京:清华大学出版社,2022. 例2…

设计之初,成就AI创作的非凡之路——AI绘画

一.官方活动 活动链接:| 2023腾讯云 AI 绘画有奖征文大赛,秀出你的AI新质生产力 https://cloud.tencent.com/developer/article/2367375 二.产品体验 1.产品链接:https://cloud.tencent.com/act/pro/AIhuihua?from20421&from_column20421 2.产品…

Maven-高效的Java项目构建与管理工具(含Maven详细安装与配置过程)

Maven 什么是Maven? 正如题目所说,Maven就是一款高效的Java项目构建与管理工具,基于项目对象模型(POM)概念,利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。是Apache软件基金会的一个开源…

网站测试都要测试哪些?如何进行测试?

1 UI测试 看页面是否美观养眼(包括页面的布局是否合理,策划是否舒服美观,页面长度是否合理,前景色与背景色是否搭配,页面风格是否统一,色调是否适合人眼,会不会太刺眼,字体大小是否合适&#x…

Java多线程:代码不只是在‘Hello World‘

Java线程好书推荐 概述01 多线程对于Java的意义02 为什么Java工程师必须掌握多线程03 Java多线程使用方式04 如何学好Java多线程写在末尾: 主页传送门:📀 传送 概述 摘要:互联网的每一个角落,无论是大型电商平台的秒杀…

IntelliJ IDEA图形安装教程

IntelliJ IDEA图形安装教程 之前开始Java程序,一直用的eclipse,觉得还可以。一直听说IntelliJ IDEA比eclipse好用很多,但因为比较懒,也没有学习使用。机缘巧合下,尝试用了下,顿时有种相见恨晚的感觉&#…

【问题思考】泰勒公式证明题如何选展开点?【对称美】

我的证明题水平很烂,这个纯属让自己有一个初步的理解,恳请指正! 问题 我们可以看到这里有两种展开方式(注意:x0叫展开点),分别是正确的做法,在x0展开,然后将0和a代入fx中…

Windows系统上如何搭建Linux操作系统

一、准备工作 1,VMware安装包 2,Centos IOS镜像 3,finalshell安装包 阿里云盘下载地址: https://www.alipan.com/s/uSQsWn15E3W 二,VMware安装 1,新建虚拟机 2,选择下一步 3,…

如何在Linux上部署1Panel运维管理面板并远程访问内网Web端管理界面

文章目录 前言1. Linux 安装1Panel2. 安装cpolar内网穿透3. 配置1Panel公网访问地址4. 公网远程访问1Panel管理界面5. 固定1Panel公网地址 前言 1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。高效管理,通过 Web 端轻松管理 Linux 服务器,包括主机监控、…

Course1-Week3-分类问题

Course1-Week3-分类问题 文章目录 Course1-Week3-分类问题1. 逻辑回归1.1 线性回归不适用于分类问题1.2 逻辑回归模型1.3 决策边界 2. 逻辑回归的代价函数3. 实现梯度下降4. 过拟合与正则化4.1 线性回归和逻辑回归中的过拟合4.2 解决过拟合的三种方法4.3 正则化4.4 用于线性回归…

elk(filebeat)日志收集工具

elk(filebeat)日志收集工具 elk:filebeat日志收集工具 和logstash相同 filebeat是一个轻量级的日志收集工具,所使用的系统资源比logstash部署和启动时使用的资源要小得多 filebeat可以运行在非Java环境。他可以代理logstash在…

彻底解决module java.base does not “opens java.io“

需求背景 最近在使用android studio导入hbuilder的HBuilder-Integrate-AS工程时候报错,错误消息如下两种。 错误描述 第一种 Failed to notify dependency resolution listener. void org.gradle.api.artifacts.DependencySubstitutions$Substitution.with(org.g…

mysql8报sql_mode=only_full_group_by(存储过程一直报)

1:修改数据库配置(重启失效) select global.sql_mode;会打印如下信息 ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION里面包含 ONLY_FULL_GROUP_BY,那么就重新设置,在数据库中输入以下代码,去掉ONLY_FULL_GROU…

加密系统,您的数据安全守护者,助您远离泄露风险!

随着云计算、大数据等技术的快速发展,企业在技术升级,业务上云的同时,也面临着来自互联网的各类安全威胁,并且导致数据信息的泄露。企业数据安全问题几乎为新时代人的焦虑又添上了一把火,面对形形色色的网络攻击手段&a…

Python版本与opencv版本的对应关系

python版本要和opencv版本相对应,否则安装的时候会报错。 可以到Links for opencv-python上面查看python版本和opencv版本的对应关系,如图,红框内是python版本,绿框内是opencv版本。 查看自己的python版本后,使用下面…

Linux AMH服务器管理面板本地安装与远程访问

最近,我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念,而且内容风趣幽默。我觉得它对大家可能会有所帮助,所以我在此分享。点击这里跳转到网站。 文章目录 1. Linux 安装AMH 面板2. 本地访问AMH 面板3. Linux安装…

利用simlink转化HDL-verilog

首先在simlink中找到HDL CODER 打开红色Blank DUT,进入里面绿色的子系统开始设计系统 例如设计一个正弦信号发生器,里面用到了add、memory、relation operator、switch、constant、cos模块,cos模块选择了cordic算法,使用cordic那…

数组常用方法

1、filter 筛选 筛选数组中带有某个id的对象 let list[{id:1,name:111},{id:2,name:222},{id:3,name:333},]; let alist.filter((item)>{return item.id1 }); console.log(a)2、findIndex var idx list.findIndex((item) > {return item 2;});返回的idx是该元素在数组…

速达软件任意文件上传漏洞复现

简介 速达软件专注中小企业管理软件,产品涵盖进销存软件,财务软件,ERP软件,CRM系统,项目管理软件,OA系统,仓库管理软件等,是中小企业管理市场的佼佼者,提供产品、技术、服务等信息,百万企业共同选择。速达软件全系产品存在任意文件上传漏洞,未经身份认证得攻击者可以通过此漏…