使用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 random

import matplotlib.pyplot as plt

plt.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 random

import matplotlib.pyplot as plt
import scipy

plt.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 plt

pd.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'] = False

x = 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

 
 
 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

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

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

MySQL老是卸载不干净,不会删除注册表,安装总是报错

给大家推荐一款非常使用的工具 geek点击官网下载。 安装完成主页就长这样: 右键点击你要删除的MySQL卸载即可。自动帮你清空注册表等信息。 谁用谁知道!!! 用了感觉不错的话记得回来给我点赞加评论哦!!&…

科普小知识-3D 打印是什么?

3D 打印是什么?作为近年来备受关注的前沿科技,3D 打印技术正在不断改变着制造业、医疗领域、艺术设计等多个领域的面貌。其又被称为增材制造,是一种通过电脑设计,逐层堆叠材料来创建三维物体的技术。 3D 打印的基本原理 3D 打印…

数据库的索引

索引的特点 1)加快查询的速度 2)索引自身是一种数据结构,也要占用存储空间 3)当我们需要进行增删改的时候,也要对索引进行更新(也需要额外的空间开销) sql操作 查看索引 show index from …

安装postgresql驱动及python使用pyodbc指定postgresql驱动调用postgresql

注:Python解释器版本(32位/64位)和postgresql驱动版本(32位/64位)需一致。 一、安装postgresql驱动 https://www.postgresql.org/ftp/odbc/versions/msi/ (1)32位: (2)64位: 双击安装。全程默…

如何让软文更具画面感,媒介盒子分享

写软文这种带有销售性质的文案时,总说要有画面感,要有想象空间。只有针对目标用户的感受的设计,要了解用户想的是什么,要用可视化的描述来影响用户的感受,今天媒介盒子就和大家分享:如何让软文更具画面感。…

axios调接口传参特殊字符丢失的问题(encodeURI 和 encodeURIComponent)

1、axios调接口特殊字符丢失的问题 项目开发过程中遇到一个接口传参,参数带特殊字符,axios调接口特殊字符丢失的问题 例如接口: get/user/detail/{name} name是个参数直接调接口的时候拼到接口上,get/user/detail/test123#$%&am…

IntelliJ IDEA图形安装教程

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

如何核销百川云网站监测兑换码

注册/登录百川云平台 在电脑端输入百川云网址“https://rivers.chaitin.cn/“,会出现以下界面: 2.点击右上角“立即注册”,使用微信扫一扫注册,注册成功之后,系统会自动跳转到百川云工作台。 免费开通“百川云网站监测…

什么是HTTPS加密协议? ️

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

FreeRTOS系统延时函数分析

一、概述 FreeRTOS提供了两个系统延时函数,相对延时函数vTaskDelay()和绝对延时函数vTaskDelayUntil()。相对延时是指每次延时都是从任务执行函数vTaskDelay()开始,延时指定的时间结束,绝对延时是指每隔指定的时间,执行一次调用vT…

水声功率放大器是什么(驱动水声换能器的原理是什么)

水声功率放大器是一种用于增大水声信号的电子设备。它是水声系统中的关键部件,通常用于驱动水声换能器,将低功率的电信号转换为高功率的水声信号。 水声功率放大器是声呐发射机的重要组成部分,用来提高输出功率,驱动换能器向水中辐射足够能量…

项目管理:为什么项目计划必不可少

项目管理计划定义了如何执行、监督和控制项目。项目计划让我们准确地知道在项目的每个阶段应该做什么,在哪里分配资源和时间,以及在事情超出计划或超出预算时要注意什么。 为了项目中获得成功,管理者需要在前期创建一个项目计划&#xff0c…

高效率:使用DBeaver连接spark-sql

提高运行效率一般采取底层使用spark引擎替换成hive引擎的方式提高效率,但替换引擎配置较为复杂考虑到兼容版本且容易出错,所以本篇将介绍使用DBeaver直接连接spark-sql快速操作hive数据库。 在spark目录下运行以下命令,创建一个SparkThirdSe…

免费通配符和免费多域名证书

免费通配符证书,其特点在于能够为一个主域名及其所有子域名提供加密保护。通常,通配符证书的主域名会以通配符(*)表示,比如*.example.com,这样就覆盖了blog.example.com、api.example.com等所有子域名。 免…

【高数:1 映射与函数】

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

【SQL开发实战技巧】系列(四十九):Oracle12C常用新特性☞表分区部分索引(Partial Indexes)

系列文章目录 【SQL开发实战技巧】系列(一):关于SQL不得不说的那些事 【SQL开发实战技巧】系列(二):简单单表查询 【SQL开发实战技巧】系列(三):SQL排序的那些事 【SQL开发实战技巧…

【c】杨辉三角

下面介绍两种方法 1.利用上面性质的第五条&#xff0c;我们可以求各行各列的组合数 2.利用上面性质的第7条&#xff0c;我们可以用数组完成 下面附上代码 1. #include<stdio.h> void fact(int n ,int m )//求组合数 {long long int sum11;long long int sum21;int a…

玩转大数据10:深度学习与神经网络在大数据中的应用

目录 1. 引言&#xff1a;深度学习和神经网络在大数据中的重要性和应用场景 2. 深度学习的基本概念和架构 3. Java中的深度学习框架 3.1. Deeplearning4j框架介绍及Java编程模型 3.2. DL4J、Keras和TensorFlow的集成 4. 大数据与深度学习的结合 4.1. 大数据与深度学…

快递批量查询高手:物流效率提升的秘密武器

在当今这个数字化时代&#xff0c;物流行业的发展迅速&#xff0c;快递公司如雨后春笋般涌现。随之而来的是物流查询的困扰。如何快速、准确地查询大量快递单号&#xff0c;提高物流效率&#xff0c;成为了物流行业亟待解决的问题。而此时&#xff0c;一款名为《快递批量查询高…