Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >原来使用 Pandas 绘制图表也这么惊艳

原来使用 Pandas 绘制图表也这么惊艳

作者头像
周萝卜
发布于 2022-09-28 02:06:00
发布于 2022-09-28 02:06:00
4.8K00
代码可运行
举报
文章被收录于专栏:萝卜大杂烩萝卜大杂烩
运行总次数:0
代码可运行

Pandas 是一种非常流行的数据分析工具,同时它还为数据可视化提供了很好的选择。

数据可视化是使数据科学项目成功的重要一步——一个有效的可视化图表可以胜过上千文字描述。

数据可视化是捕捉趋势和分享从数据中获得的见解的非常有效的方式,流行的可视化工具有很多,它们各具特色,但是在今天的文章中,我们将学习使用 Pandas 进行绘图。

Pandas 的 plot() 方法

Pandas 附带了一些绘图功能,底层都是基于 Matplotlib 库的,也就是说,由 Pandas 库创建的任何绘图都是 Matplotlib 对象。

从技术上讲,Pandas 的 plot() 方法通过 kind 关键字参数提供了一组绘图样式,以此来创建美观的绘图。kind 参数的默认值是行字符串值。我们可以将 11 种不同的字符串值分配给 kind 参数,也就可以创建出不一样的绘图了。

同时 .plot 也是 Pandas DataFrame 和 series 对象的属性,提供了 Matplotlib 可用的一小部分绘图功能。事实上,Pandas 通过为我们自动化大部分数据可视化过程,使绘图变得像编写一行代码一样简单。

导入库和数据集

在今天的文章中,我们将研究 Facebook、微软和苹果股票的每周收盘价。以下代码导入可视化所需的必要库和数据集,然后在输出中显示 DataFrame 的内容。%matplotlib 内联魔法命令也被添加到代码中,以确保绘制的数字正确显示在笔记本单元格中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt



df = pd.read_csv('weekly_stocks.csv', parse_dates=['Date'], index_col='Date')
pd.set_option('display.max.columns', None)
print(df.head())

Output:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
                  MSFT          FB        AAPL
Date                                          
2021-05-24  249.679993  328.730011  124.610001
2021-05-31  250.789993  330.350006  125.889999
2021-06-07  257.890015  331.260010  127.349998
2021-06-14  259.429993  329.660004  130.460007
2021-06-21  265.019989  341.369995  133.110001

我们现在已准备好使用 Pandas 探索和可视化数据了,开始吧

折线图

plot 默认图就是折线图,它在 x 轴上绘制索引,在 y 轴上绘制 DataFrame 中的其他数字列。

让我们绘制一个折线图,看看微软在过去 12 个月的表现如何:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df.plot(y='MSFT', figsize=(9,6))

Output:

figsize 参数接受两个参数,以英寸为单位的宽度和高度,并允许我们更改输出图形的大小。宽度和高度的默认值分别为 6.4 和 4.8。

通过提供列名列表并将其分配给 y 轴,我们可以从数据中绘制多条线。例如,让我们看看这三家公司在去年的表现如何:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df.plot.line(y=['FB', 'AAPL', 'MSFT'], figsize=(10,6))

Output:

我们可以使用 plot() 方法提供的其他参数来为绘图添加更多细节,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df.plot(y='FB', figsize=(10,6), title='Facebook Stock', ylabel='USD')

Output:

正如我们在图中看到的,title 参数为绘图添加了一个标题,而 ylabel 为绘图的 y 轴设置了一个标签。默认情况下显示图例的图例,但是我们可以将 legend 参数设置为 false 来隐藏图例。

条形图

条形图是一种基本的可视化图表,用于比较数据组之间的值并用矩形条表示分类数据。该图表可能包括特定类别的计数或任何定义的值,并且条形的长度对应于它们所代表的值。

在下面的示例中,我们将根据每月平均股价创建一个条形图,来比较每个公司在特定月份与其他公司的平均股价。首先,我们需要按月末重新采样数据,然后使用 mean() 方法计算每个月的平均股价。我们还选择了最近三个月的数据,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df_3Months = df.resample(rule='M').mean()[-3:]
print(df_3Months)

Output:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
                  MSFT          FB        AAPL
Date                                          
2022-03-31  298.400002  212.692505  166.934998
2022-04-30  282.087494  204.272499  163.704994
2022-05-31  262.803335  198.643331  147.326665

现在,我们可以通过将条形字符串值分配给 kind 参数来基于聚合数据创建条形图:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df_3Months.plot(kind='bar', figsize=(10,6), ylabel='Price')

Output:

我们可以通过将 barh 字符串值分配给 kind 参数来创建水平条形图:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df_3Months.plot(kind='barh', figsize=(9,6))

Output:

我们还可以在堆叠的垂直或水平条形图上绘制数据,这些条形图代表不同的组,结果条的高度显示了组的组合结果。要创建堆积条形图,我们需要将 True 分配给堆积参数,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df_3Months.plot(kind='bar', stacked=True, figsize=(9,6))

Output:

直方图

直方图是一种表示数值数据分布的条形图,其中 x 轴表示 bin 范围,而 y 轴表示某个区间内的数据频率。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df[['MSFT', 'FB']].plot(kind='hist', bins=25, alpha=0.6, figsize=(9,6))

Output:

在上面的示例中, bins 参数指定 bin 间隔的数量,而 alpha 参数指定透明度。

也可以堆叠直方图:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df[['MSFT', 'FB']].plot(kind='hist', bins=25, alpha=0.6, stacked=True, figsize=(9,6))

Output:

箱形图

箱线图由三个四分位数和两个虚线组成,它们在一组指标中总结数据:最小值、第一四分位数、中位数、第三四分位数和最大值。

箱线图传达的信息非常有用,例如四分位距 (IQR)、中位数和每个数据组的异常值。让我们看看它是如何工作的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df.plot(kind='box', figsize=(9,6))

Output:

我们可以通过将 False 分配给 vert 参数来创建水平箱线图,如水平条形图:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df.plot(kind='box', vert=False, figsize=(9,6))

Output:

面积图

面积图是折线图的扩展,它用颜色填充折线图和 x 轴之间的区域。如果在同一个图中显示了多个面积图,则不同的颜色可以区分不同的面积图:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df.plot(kind='area', figsize=(9,6))

Output:

Pandas plot() 方法默认创建堆积面积图,通过将 False 分配给堆叠参数来取消堆叠面积图是一项常见任务:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df.plot(kind='area', stacked=False, figsize=(9,6))

Output:

饼图

如果我们对比率感兴趣,饼图是列中数值数据的一个很好的比例表示。以下示例显示了过去三个月的平均 Apple 股票价格分布:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df_3Months.index=['March', 'April', 'May']
df_3Months.plot(kind='pie', y='AAPL', legend=False, autopct='%.f')

Output:

默认情况下,图例将显示在饼图上,因此我们将 False 分配给 legend 关键字以隐藏图例。

上面代码中的新关键字参数是 autopct,它在饼图切片上显示百分比值。

如果我们想将多个饼图中所有列的数据表示为子图,我们可以将 True 分配给 subplots 参数,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df_3Months.plot(kind='pie', legend=False, autopct='%.f', subplots=True, figsize=(14,8))

Output:

散点图

散点图在 x 和 y 轴上绘制数据点以显示两个变量之间的相关性。像这样:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df.plot(kind='scatter', x='MSFT', y='AAPL', figsize=(9,6), color='Green')

Output:

正如我们在上图中看到的,散点图显示了微软和苹果股价之间的关系。

六边形图

当数据非常密集时,六边形 bin 图(也称为 hexbin 图)可以替代散点图。换句话说,当数据点的数量很大,并且每个数据点不能单独绘制时,最好使用这种以蜂窝形式表示数据的绘图。此外,每个 hexbin 的颜色定义了该范围内数据点的密度。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df.plot(kind='hexbin', x='MSFT', y='AAPL', gridsize=10, figsize=(10,6))

Output:

gridsize 参数指定 x 方向上六边形的数量,较大的网格尺寸意味着更多和更小的箱,gridsize 参数的默认值为 100。

KDE 绘图

我们要讨论的最后一个图是核密度估计,也称为 KDE,它可视化连续和非参数数据变量的概率密度。该图使用高斯核在内部估计概率密度函数 (PDF):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df.plot(kind='kde')

Output:

我们还可以指定影响 KDE 绘图中绘图平滑度的带宽,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df.plot(kind='kde', bw_method=0.1)

Output:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df.plot(kind='kde', bw_method=1)

Output:

正如我们所见,选择较小的带宽会导致平滑不足,这意味着密度图显示为单个峰值的组合。相反,巨大的带宽会导致过度平滑,这意味着密度图表现为单峰分布。

好啦,这就是今天分享的全部内容,喜欢就点个吧~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-08-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 萝卜大杂烩 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Pandas-25.可视化
Pandas-25.可视化 用matplotlib库的plot()方法实现简单的可视化 df = pd.DataFrame(np.random.randn(10,4),index=pd.date_ra
悠扬前奏
2019/05/29
6580
你知道怎么用Pandas绘制带交互的可视化图表吗?
之前咱们介绍过Pandas可视化图表的绘制《『数据可视化』一文掌握Pandas可视化图表》,不过它是依托于matplotlib,因此无法进行交互。但其实,在Pandas的0.25.0版本之后,提供了一些其他绘图后端,其中就有我们今天要演示的主角基于Bokeh!
可以叫我才哥
2021/09/24
3.9K0
Pandas可视化详解 | 轻松玩转Pandas(12)
数据分析的结果不仅仅只是你来看的,更多的时候是给需求方或者老板来看的,为了更直观地看出结果,数据可视化是必不可少的一个环节。这里带大家来看下一些常用的图形的画法。
abs_zero
2018/09/25
2.7K0
Pandas可视化详解 | 轻松玩转Pandas(12)
Python数据科学(九)- 使用Pandas绘制统计图表1.信息可视化
因为人对图像信息的解析效率比文字更高,所以可视化可以使数据更为直观,便于理解,使决策变得高效,所以信息可视化就显得尤为重要。
Python攻城狮
2018/08/23
9630
Python数据科学(九)- 使用Pandas绘制统计图表1.信息可视化
干货案例 | Pandas数据可视化怎么做?
数据可视化可以让我们很直观的发现数据中隐藏的规律,察觉到变量之间的互动关系,可以帮助我们更好的给他人解释现象,做到一图胜千文的说明效果。
朱小五
2020/04/27
2.7K0
干货案例 | Pandas数据可视化怎么做?
pandas 图形可视化大全
plot()的参数设置subplots=True即可自动对dataframe数据生成子图的可视化图形。
Python数据科学
2023/08/29
2700
pandas 图形可视化大全
Pandas绘图功能
可视化是用来探索性数据分析最强大的工具之一。Pandas库包含基本的绘图功能,可以让你创建各种绘图。Pandas中的绘图是在matplotlib之上构建的,如果你很熟悉matplotlib你会惊奇地发现他们的绘图风格是一样的。
用户3577892
2020/11/12
1.8K0
Seaborn + Pandas带你玩转股市数据可视化分析
在日常生活中,可视化技术常常是优先选择的方法。尽管在大多数技术学科(包括数据挖掘)中通常强调算法或数学方法,但是可视化技术也能在数据分析方面起到关键性作用。
数据STUDIO
2021/06/24
6.9K0
Matplotlib可视化没那么难:7种常用图表最全绘制攻略来了!
导读:绘图是数据分析工作中的重要一环,是探索过程的一部分。Matplotlib是当前用于数据可视化的最流行的Python包之一,本文主要介绍数据可视化分析工具:Matplotlib。
IT阅读排行榜
2021/06/01
6.9K0
Matplotlib可视化没那么难:7种常用图表最全绘制攻略来了!
『数据可视化』一文掌握Pandas可视化图表
今天简单介绍一下Pandas可视化图表的一些操作,Pandas其实提供了一个绘图方法plot(),可以很方便的将Series和Dataframe类型数据直接进行数据可视化。
可以叫我才哥
2021/08/05
8.4K0
Python数据可视化的10种技能
如果你想要用 Python 进行数据分析,就需要在项目初期开始进行探索性的数据分析,这样方便你对数据有一定的了解。其中最直观的就是采用数据可视化技术,这样,数据不仅一目了然,而且更容易被解读。同样在数据分析得到结果之后,我们还需要用到可视化技术,把最终的结果呈现出来。
MachineLP
2019/05/26
2.8K0
数据分析之Pandas快速图表可视化各类操作详解
一般我们做数据挖掘或者是数据分析,再或者是大数据开发提取数据库里面的数据时候,难免只能拿着表格数据左看右看,内心总是希望能够根据自己所想立马生成一张数据可视化的图表来更直观的呈现数据。而当我们想要进行数据可视化的时候,往往需要调用很多的库与函数,还需要数据转换以及大量的代码处理编写。这都是十分繁琐的工作,确实只为了数据可视化我们不需要实现数据可视化的工程编程,这都是数据分析师以及拥有专业的报表工具来做的事情,日常分析的话我们根据自己的需求直接进行快速出图即可,而Pandas正好就带有这个功能,当然还是依赖matplotlib库的,只不过将代码压缩更容易实现。下面就让我们来了解一下如何快速出图。
fanstuck
2024/01/25
4962
数据分析之Pandas快速图表可视化各类操作详解
Pandas可视化综合指南:手把手从零教你绘制数据图表
数据可视化本来是一个非常复杂的过程,但随着Pandas数据帧plot()函数的出现,使得创建可视化图形变得很容易。
昱良
2019/09/24
2K0
Pandas可视化综合指南:手把手从零教你绘制数据图表
数据导入与预处理-拓展-pandas可视化
关于pandas的可视化的用法还有很多,这里不再拓展,但还是建议使用matplotlib,seaborn等库完成绘图。
用户2225445
2022/11/12
3.2K0
数据导入与预处理-拓展-pandas可视化
数据可视化干货:使用pandas和seaborn制作炫酷图表(附代码)
导读:我们介绍过用matplotlib制作图表的一些tips,感兴趣的同学可以戳→纯干货:手把手教你用Python做数据可视化(附代码)。matplotlib是一个相当底层的工具。你可以从其基本组件中组装一个图表:数据显示(即绘图的类型:线、条、框、散点图、轮廓等)、图例、标题、刻度标记和其他注释。
前端皮皮
2021/05/18
5.6K0
数据可视化干货:使用pandas和seaborn制作炫酷图表(附代码)
Python 数据可视化,常用看这一篇就够了
如果你想要用 Python 进行数据分析,就需要在项目初期开始进行探索性的数据分析,这样方便你对数据有一定的了解。其中最直观的就是采用数据可视化技术,这样,数据不仅一目了然,而且更容易被解读。
全栈程序员站长
2022/09/07
2.1K0
Pandas 高级教程——数据可视化
Pandas 提供了强大的数据可视化工具,可以帮助你更好地理解数据、发现模式和进行探索性数据分析。本篇博客将深入介绍 Pandas 中的数据可视化功能,并通过实例演示如何创建各种图表和图形。
Echo_Wish
2023/12/26
3600
五分钟入门数据可视化
在数据科学中,有多种工具可以进行可视化。在本文中,我(毛利)展示了使用Python来实现的各种可视化图表。
润森
2019/11/15
2.8K0
Python-Seaborn 17个超好看图表绘制
Seaborn是一个基于matplotlib且数据结构与pandas统一的统计图制作库。Seaborn框架旨在以数据可视化为中心来挖掘与理解数据。
DataCharm
2021/02/22
3.5K0
Python-Seaborn 17个超好看图表绘制
Python数据分析实战(3)Python实现数据可视化
数据可视化是指将数据放在可视环境中、进一步理解数据的技术,可以通过它更加详细地了解隐藏在数据表面之下的模式、趋势和相关性。
cutercorley
2020/08/31
4.6K0
推荐阅读
相关推荐
Pandas-25.可视化
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验