使用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.hqwc.cn/news/255391.html

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

相关文章

若依框架的搭建

若依框架 若依框架的搭建(前后端分离版本)环境要求IDEA拉取Gitee源码Mysql 配置Redis 配置后端启动前端配置问题解决 效果展示 若依框架的搭建(前后端分离版本) 简介 RuoYi-Vue 是一个 Java EE 企业级快速开发平台,基…

编程应用实例,商超进销存管理系统软件,支持扫描条形码也可以自编码

一、前言 软件特色: 1、功能实用,操作简单,不会电脑也会操作,软件免安装,已内置数据库。软件在关闭的时候,可以设置会员数据备份到U盘,数据本机备份一份,U盘备份一份,双…

流量分析1--菜刀666

1:菜刀666: 题目描述 分析流量包,过滤http数据流 追踪TCP数据流 对比第5个流和第7个流发现,同样的目录下 多出了6666.jpg。猜测是由攻击者上传,直接在请求包里搜索FFD8--FFD9 保存为1.jpg 利用foremost工具对1.jpg进…

生成模型之Flow-Based model

Flow-Based Model 文章目录 Flow-Based Model简介总览数学基础jacobian matrixdeterminant行列式Change of variable theorem 架构常见几种方法coupling layer采用1*1卷积进行channel shuffle 简介 ​ Flow-Based对概率密度函数的直接建模,这使得它们在数据生成和推…

Java-单人聊天

package 一对一用户;import java.awt.BorderLayout;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;import java.util.Vector;import javax.sw…

Scratch少儿编程系统开发时案例验证的必要性

scratch少儿编程[1] 随着少儿编程教育的普及,越来越多的公司和集成商开始关注scratch少儿编程系统的二次开发。scratch是一个由麻省理工学院媒体实验室开发的免费、开源的少儿编程软件。它具有易用、趣味性强、可扩展性强等特点,非常适合少儿编程教育。…

联想范建平:联想混合AI架构具备两大明显优势

12月7日,首届AI PC创新论坛在北京联想集团总部举办。联想集团副总裁、联想研究院人工智能实验室负责人范建平表示,为提供真正可信、个性化的AI专属服务,联想提出了混合智能(Hybrid AI)概念,并已经显现出更强…

远程服务器——如何在Conda中安装R环境

目录 1. R的安装2. VScode 配置参考文献 1. R的安装 推荐使用anaconda或者miniconda,创建虚拟环R_env境然后安装R; 使用conda search r-base查看可下载的R的版本;R版本比较低,一般可以先增加源: % 增加源 conda con…

系统思考与啤酒游戏经营沙盘

结束一家汽车零配件公司《系统思考与啤酒游戏经营沙盘》的内训课,4个小组基本上都有共同的心智模式,这也代表团队有一些集体的盲点。不仅仅对啤酒游戏经营沙盘做了复盘,同时也借用学员画出的系统环路图完成真实案例的研讨以及团队共识&#x…

Google 发布最强大模型Gemini,能力与GPT-4相当

一、Gemini 介绍 Gemini 是一个多模式模型系列,在图像、音频、视频和文本领域展示了真正强大的功能。其中功能最强大的模型 Gemini Ultra 在 32 个基准测试中的 30 个中提升了最先进水平,其中包括 12 个流行文本和推理基准测试中的 10 个、9 个图像理解…

C++ 指针进阶

目录 一、字符指针 二、指针数组 三、数组指针 数组指针的定义 &数组名 与 数组名 数组指针的使用 四、数组参数 一维数组传参 二维数组传参 五、指针参数 一级指针传参 二级指针传参 六、函数指针 七、函数指针数组 八、指向函数指针数组的指针 九、回调函…

我也不想说啊,可这东西行政用能保命啊!

行政人姐妹在哪里啊!在处理工作报告,行政报告等文章的时候,毫无头绪,速度还慢,容易被领导批评。 最近挖到了个抄好用的AI智能写作工具 用它写报告,写总结、写会议记录,写方案等等......写啥都…