Python数据分析:手把手教你用Pandas生成可视化图表的教程
作者:刺客五六柒 发布时间:2023-01-29 21:18:50
大家都知道,Matplotlib 是众多 Python 可视化包的鼻祖,也是Python最常用的标准可视化库,其功能非常强大,同时也非常复杂,想要搞明白并非易事。但自从Python进入3.0时代以后,pandas的使用变得更加普及,它的身影经常见于市场分析、爬虫、金融分析以及科学计算中。
作为数据分析工具的集大成者,pandas作者曾说,pandas中的可视化功能比plt更加简便和功能强大。实际上,如果是对图表细节有极高要求,那么建议大家使用matplotlib通过底层图表模块进行编码。当然,我们大部分人在工作中是不会有这样变态的要求的,所以一句import pandas as pd就足够应付全部的可视化工作了。
下面,我们总结一下PD库的一些使用方法和入门技巧。
一、线型图
对于pandas的内置数据类型,Series 和 DataFrame 都有一个用于生成各类 图表 的 plot 方法。 默认情况下, 它们所生成的是线型图。其实Series和DataFrame上的这个功能只是使用matplotlib库的plot()方法的简单包装实现。参考以下示例代码 -
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(10,4),index=pd.date_range('2018/12/18',
periods=10), columns=list('ABCD'))
df.plot()
执行上面示例代码,得到以下结果 -
如果索引由日期组成,则调用gct().autofmt_xdate()来格式化x轴,如上图所示。
我们可以使用x和y关键字绘制一列与另一列。
s = Series( np. random. randn( 10). cumsum(), index= np. arange( 0, 100, 10))
s. plot()
pandas 的大部分绘图方法都有 一个 可选的ax参数, 它可以是一个 matplotlib 的 subplot 对象。 这使你能够在网格 布局 中 更为灵活地处理 subplot 的位置。 DataFrame的plot 方法会在 一个 subplot 中为各列绘制 一条 线, 并自动创建图例( 如图所示):
df = DataFrame( np. random. randn( 10, 4). cumsum( 0), ...: columns=[' A', 'B', 'C', 'D'], index= np. arange( 0, 100, 10))
df. plot()
二、柱状图
在生成线型图的代码中加上 kind=' bar'( 垂直柱状图) 或 kind=' barh'( 水平柱状图) 即可生成柱状图。 这时,Series 和 DataFrame 的索引将会被用 作 X( bar) 或 (barh)刻度:
In [59]: fig, axes = plt. subplots( 2, 1)
In [60]: data = Series( np. random. rand( 16), index= list(' abcdefghijklmnop'))
In [61]: data. plot( kind=' bar', ax= axes[ 0], color=' k', alpha= 0. 7)
Out[ 61]: < matplotlib. axes. AxesSubplot at 0x4ee7750>
In [62]: data. plot( kind=' barh', ax= axes[ 1], color=' k', alpha= 0.
对于 DataFrame, 柱状 图 会 将 每一 行的 值 分为 一组, 如图 8- 16 所示:
In [63]: df = DataFrame( np. random. rand( 6, 4), ...: index=[' one', 'two', 'three', 'four', 'five', 'six'], ...: columns= pd. Index([' A', 'B', 'C', 'D'], name=' Genus'))
In [64]: df
Out[ 64]:
Genus
A B C D
one 0. 301686 0. 156333 0. 371943 0. 270731
two 0. 750589 0. 525587 0. 689429 0. 358974
three 0. 381504 0. 667707 0. 473772 0. 632528
four 0. 942408 0. 180186 0. 708284 0. 641783
five 0. 840278 0. 909589 0. 010041 0. 653207
six 0. 062854 0. 589813 0. 811318 0. 060217
In [65]: df. plot( kind=' bar')
三、条形图
现在通过创建一个条形图来看看条形图是什么。条形图可以通过以下方式来创建 -
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(10,4),columns=['a','b','c','d'])
df.plot.bar()
执行上面示例代码,得到以下结果 -
要生成一个堆积条形图,通过指定:pass stacked=True -
import pandas as pd
df = pd.DataFrame(np.random.rand(10,4),columns=['a','b','c','d'])
df.plot.bar(stacked=True)
执行上面示例代码,得到以下结果 -
要获得水平条形图,使用barh()方法 -
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(10,4),columns=['a','b','c','d'])
df.plot.barh(stacked=True)
四、直方图
可以使用plot.hist()方法绘制直方图。我们可以指定bins的数量值。
import pandas as pd
import numpy as np
df = pd.DataFrame({'a':np.random.randn(1000)+1,'b':np.random.randn(1000),'c':
np.random.randn(1000) - 1}, columns=['a', 'b', 'c'])
df.plot.hist(bins=20)
执行上面示例代码,得到以下结果 -
要为每列绘制不同的直方图,请使用以下代码 -
import pandas as pd
import numpy as np
df=pd.DataFrame({'a':np.random.randn(1000)+1,'b':np.random.randn(1000),'c':
np.random.randn(1000) - 1}, columns=['a', 'b', 'c'])
df.hist(bins=20)
执行上面示例代码,得到以下结果 -
五、箱型图
Boxplot可以绘制调用Series.box.plot()和DataFrame.box.plot()或DataFrame.boxplot()来可视化每列中值的分布。
例如,这里是一个箱形图,表示对[0,1)上的统一随机变量的10次观察的五次试验。
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(10, 5), columns=['A', 'B', 'C', 'D', 'E'])
df.plot.box()
执行上面示例代码,得到以下结果 -
六、块型图
可以使用Series.plot.area()或DataFrame.plot.area()方法创建区域图形。
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd'])
df.plot.area()
执行上面示例代码,得到以下结果 -
七、散点图
可以使用DataFrame.plot.scatter()方法创建散点图。
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(50, 4), columns=['a', 'b', 'c', 'd'])
df.plot.scatter(x='a', y='b')
执行上面示例代码,得到以下结果 -
八、饼状图
饼状图可以使用DataFrame.plot.pie()方法创建。
import pandas as pd
import numpy as np
df = pd.DataFrame(3 * np.random.rand(4), index=['a', 'b', 'c', 'd'], columns=['x'])
df.plot.pie(subplots=True)
执行上面示例代码,得到以下结果 -
来源:https://blog.csdn.net/qq_39521554/article/details/79585375


猜你喜欢
- 一、SQL模式SQL的模式匹配允许你使用“_”匹配任何单个字符,而“%”匹配任意数目字符(包括零个字符)。在 MySQL中,SQL的模式缺省
- 目录楔子paramikoSSHClient 的使用connect:实现远程服务器的连接与认证set_missing_host_key_pol
- 数据的安全性策略: 数据的生考虑应基于数据的重要性。如果数据不是很重要,那么数据的安全性策略可以稍稍放松一些。然而,如果数据很重要,那么应该
- 1. 初始化项目// ① npm i -g @vue/cli// ② vue create my-project// ③ npm insta
- java的简单介绍Java是一种通用的面向对象编程语言,旨在生成可在任何地方使用相同代码的代码。这种编程语言是基于类的,面向对象的和人类可读
- 前言本博客重点内容:reportlab生成流文件格式、reportlab分页和图片流文件写入reportlab等。我讲一下我这个需求的来源,
- 本文实例讲述了Python实现的爬取百度贴吧图片功能。分享给大家供大家参考,具体如下:#coding:utf-8import request
- SQL Server具有强大的复制功能,除了将数据和数据库对象从一个数据库复制并准确分发的另一个数据库中,还要实行数据库之间的同步。SQL
- 前言最近用Django写项目的时候用到了数据的传递,一窍不通,查了点资料。记录一下。水平不高,瓜不保熟。 从两方面来说:从后端传递
- <!--#include file="strcheck.asp"--> <% '笔者在写程序的
- 一、背景分析对想要在视觉化环境下制作复杂网页的专业网页制作者来说,Dreamweaver已经渐渐在网页编辑工具中展露头角,成为专业人士编写网
- 01、介绍在编程语言中,字符串是一种重要的数据结构。在 Golang 语言中,因为字符串只能被访问,不能被修改,所以,如果我们在 Golan
- 目录前言第一步:查看所有 SSH-Key第二步:生成一个 ssh-key,用于配置公司的 GitLab第三步:Github 生成一个 SSH
- Mysql默认是不可以通过远程机器访问的,通过下面的配置可以开启远程访问.我的Mysql环境是ubuntu+mysql51.修改/etc/m
- 通过对 26 个字母的设定,设置自己要输出的字体。name = "RUNOOB"# 接收用户输入# name = inp
- ASP实现语音分时问候,其实asp实现这个功能很容易,时间判断一下,在某个时间段就调用某个的背景语音。下面是源代码:
- 您也可以提供几个连接字符串修饰符来控制连接池行为,请参见本主题内下文中“使用连接字符串关键字控制连接池”这一节。池的创建和分配当连接打开时,
- 1.检查mysql是否安装yum list installed | grep mysql如果有的话 就全部卸载yum -y remove +
- 以前大家谈了很多有关打开数据库连接安全的问题,现在我再提出一种思路:使用activex dll来保护你的代码。(既可以不用为使用共享的加密软
- 本文以YOLOv5-6.1版本为例一、Add1.在common.py后加入如下代码# 结合BiFPN 设置可学习参数 学习不同分支的权重#