原来使用 Pandas 绘制图表也这么惊艳!
Pandas 是一种非常流行的数据分析工具,同时它还为数据可视化提供了很好的选择。
数据可视化是使数据科学项目成功的重要一步——一个有效的可视化图表可以胜过上千文字描述。
数据可视化是捕捉趋势和分享从数据中获得的见解的非常有效的方式,流行的可视化工具有很,它们各具特色,但是在今天的文章中,我们将学习使用 Pandas 进行绘图。
Pandas 的 plot() 方法
Pandas 附带了一些绘图功能,底层都是基于 Matplotlib 库的,也就是说,由 Pandas 库创建的任何绘图都是 Matplotlib 对象。
从技术上讲,Pandas 的 plot()
方法通过 kind
关键字参数提供了一组绘图样式,以此来创建美观的绘图。kind
参数的默认值是行字符串值。我们可以将 11 种不同的字符串值分配给 kind 参数,也就可以创建出不一样的绘图了。
同时 .plot
也是 Pandas DataFrame 和 series 对象的属性,提供了 Matplotlib 可用的一小部分绘图功能。事实上,Pandas 通过为我们自动化大部分数据可视化过程,使绘图变得像编写一行代码一样简单。
导入库和数据集
在今天的文章中,我们将研究 Facebook、微软和苹果股票的每周收盘价。以下代码导入可视化所需的必要库和数据集,然后在输出中显示 DataFrame 的内容。 %matplotlib 内联魔法命令也被添加到代码中,以确保绘制的数字正确显示在笔记本单元格中:
import pandas as pdimport numpy as npimport 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:
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 个月的表现如何:
df.plot(y='MSFT', figsize=(9,6))
Output:
figsize 参数接受两个参数,以英寸为单位的宽度和高度,并允许我们更改输出图形的大小。宽度和高度的默认值分别为 6.4 和 4.8。
通过提供列名列表并将其分配给 y 轴,我们可以从数据中绘制多条线。 例如,让我们看看这三家公司在去年的表现如何:
df.plot.line(y=['FB', 'AAPL', 'MSFT'], figsize=(10,6))
Output:
我们可以使用 plot()
方法提供的其他参数来为绘图添加更多细节,如下所示:
df.plot(y='FB', figsize=(10,6), title='Facebook Stock', ylabel='USD')
Output:
正如我们在图中看到的,title 参数为绘图添加了一个标题,而 ylabel 为绘图的 y 轴设置了一个标签。默认情况下显示图例的图例,但是我们可以将 legend 参数设置为 false 来隐藏图例。
条形图
条形图是一种基本的可视化图表,用于比较数据组之间的值并用矩形条表示分类数据。该图表可能包括特定类别的计数或任何定义的值,并且条形的长度对应于它们所代表的值。
在下面的示例中,我们将根据每月平均股价创建一个条形图,来比较每个公司在特定月份与其他公司的平均股价。首先,我们需要按月末重新采样数据,然后使用 mean()
方法计算每个月的平均股价。我们还选择了最近三个月的数据,如下所示:
df_3Months = df.resample(rule='M').mean()[-3:]print(df_3Months)
Output:
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 参数来基于聚合数据创建条形图:
df_3Months.plot(kind='bar', figsize=(10,6), ylabel='Price')
Output:
我们可以通过将 barh 字符串值分配给 kind 参数来创建水平条形图:
df_3Months.plot(kind='barh', figsize=(9,6))
Output:
我们还可以在堆叠的垂直或水平条形图上绘制数据,这些条形图代表不同的组,结果条的高度显示了组的组合结果。要创建堆积条形图,我们需要将 True 分配给堆积参数,如下所示:
df_3Months.plot(kind='bar', stacked=True, figsize=(9,6))
Output:
直方图
直方图是一种表示数值数据分布的条形图,其中 x 轴表示 bin 范围,而 y 轴表示某个区间内的数据频率。
df[['MSFT', 'FB']].plot(kind='hist', bins=25, alpha=0.6, figsize=(9,6))
Output:
在上面的示例中, bins 参数指定 bin 间隔的数量,而 alpha 参数指定透明度。
也可以堆叠直方图:
df[['MSFT', 'FB']].plot(kind='hist', bins=25, alpha=0.6, stacked=True, figsize=(9,6))
Output:
箱形图
箱线图由三个四分位数和两个须线组成,它们在一组指标中总结数据:最小值、第一四分位数、中位数、第三四分位数和最大值。
箱线图传达的信息非常有用,例如四分位距 (IQR)、中位数和每个数据组的异常值。让我们看看它是如何工作的:
df.plot(kind='box', figsize=(9,6))
Output:
我们可以通过将 False 分配给 vert 参数来创建水平箱线图,如水平条形图:
df.plot(kind='box', vert=False, figsize=(9,6))
Output:
面积图
面积图是折线图的扩展,它用颜色填充折线图和 x 轴之间的区域。如果在同一个图中显示了多个面积图,则不同的颜色可以区分不同的面积图:
df.plot(kind='area', figsize=(9,6))
Output:
Pandas plot() 方法默认创建堆积面积图,通过将 False 分配给堆叠参数来取消堆叠面积图是一项常见任务:
df.plot(kind='area', stacked=False, figsize=(9,6))
Output:
饼图
如果我们对比率感兴趣,饼图是列中数值数据的一个很好的比例表示。以下示例显示了过去三个月的平均 Apple 股票价格分布:
df_3Months.index=['March', 'April', 'May']df_3Months.plot(kind='pie', y='AAPL', legend=False, autopct='%.f')
Output:
默认情况下,图例将显示在饼图上,因此我们将 False 分配给 legend 关键字以隐藏图例。
上面代码中的新关键字参数是 autopct,它在饼图切片上显示百分比值。
如果我们想将多个饼图中所有列的数据表示为子图,我们可以将 True 分配给 subplots 参数,如下所示:
df_3Months.plot(kind='pie', legend=False, autopct='%.f', subplots=True, figsize=(14,8))
Output:
散点图
散点图在 x 和 y 轴上绘制数据点以显示两个变量之间的相关性。像这样:
df.plot(kind='scatter', x='MSFT', y='AAPL', figsize=(9,6), color='Green')
Output:
正如我们在上图中看到的,散点图显示了微软和苹果股价之间的关系。
六边形图
当数据非常密集时,六边形 bin 图(也称为 hexbin 图)可以替代散点图。换句话说,当数据点的数量很大,并且每个数据点不能单独绘制时,最好使用这种以蜂窝形式表示数据的绘图。此外,每个 hexbin 的颜色定义了该范围内数据点的密度。
df.plot(kind='hexbin', x='MSFT', y='AAPL', gridsize=10, figsize=(10,6))
Output:
gridsize 参数指定 x 方向上六边形的数量,较大的网格尺寸意味着更多和更小的箱,gridsize 参数的默认值为 100。
KDE 绘图
我们要讨论的最后一个图是核密度估计,也称为 KDE,它可视化连续和非参数数据变量的概率密度。该图使用高斯核在内部估计概率密度函数 (PDF):
df.plot(kind='kde')
Output:
我们还可以指定影响 KDE 绘图中绘图平滑度的带宽,如下所示:
df.plot(kind='kde', bw_method=0.1)
Output:
df.plot(kind='kde', bw_method=1)
Output:
正如我们所见,选择较小的带宽会导致平滑不足,这意味着密度图显示为单个峰值的组合。相反,巨大的带宽会导致过度平滑,这意味着密度图表现为单峰分布。
好啦,这就是今天分享的全部内容,喜欢就点个赞吧~
本文由 mdnice 多平台发布
原来使用 Pandas 绘制图表也这么惊艳!相关推荐
- 【原创】用Matplotlib绘制的图表,真的是太惊艳了!!
当我们谈论Python中的数据可视化,Matplotlib是一个不可或缺的库.它强大的功能和灵活性使我们能够以各种方式轻松地呈现数据.然而,有时候,我们可能会忽视Matplotlib在创建视觉上令人惊 ...
- 你知道怎么用Pandas绘制带交互的可视化图表吗?
↑↑↑关注后"星标"简说Python 人人都可以简单入门Python.爬虫.数据分析 简说Python推荐 来源:可以叫我才哥作者:道才 之前咱们介绍过Pandas可视化图表的绘制 ...
- matplotlib绘制图表,设置刻度标签、最大最小刻度、字体大小,label位置、刻度轴箭头等
matplotlib绘制图表,设置刻度标签.最大最小刻度.字体大小,label位置.刻度轴箭头等 1. 效果图 2. 源码 2.1 仅使用普通轴ax + fontdict 源码 2.2 使用mpl设置 ...
- python 3d大数据可视化_Python大数据可视化编程实践-绘制图表
Python 数据可视化编程实践 - 绘制图表 准备工作 打开 Jupyter Notebook ,导入需要的包, 并配置好图片交互和中文显示环 境: import pandas as pd impo ...
- markdown 流程图js_在Markdown中用mermaid语法绘制图表
Python数据挖掘与文本分析&Stata应用能力提升与实证前沿云特训~ Mermaid可以用文本方式绘制图表和流程图,相比Visio而言更加的轻量便捷,此外Markdown内部支持Merma ...
- 一文掌握Pandas可视化图表
大家好,我是才哥. 今天简单介绍一下Pandas可视化图表的一些操作,Pandas其实提供了一个绘图方法plot(),可以很方便的将Series和Dataframe类型数据直接进行数据可视化. 1. ...
- Python自动化办公:openpyxl绘制图表
在后台回复[阅读书籍] 即可获取python相关电子书~ Hi,我是山月. 之前给大家分享了openpyxl的基础和进阶教程: Python自动化办公:openpyxl教程(基础) Python自动化 ...
- matplotlib绘制图表
简单图表的绘制 1.1 绘制折线图 使用pyplot的plot()函数可以绘制具有多个线条的折线图,通过以下任意一种方式均可以完成. plot(x, y, fmt, scalex=True, scal ...
- (一)python金融数据分析--绘制图表
简单的数据分析及其调试 前期:数据调试 (一)股票相关的图形绘制 (二)金融数据的指标 β (三)夏普率计算 (四)股指的移动平均数据 (五)实际案例 . . . (一)股票相关的图形绘制 (1)股票 ...
- 用python绘制柱状图标题-使用Python绘制图表大全总结
在使用Python绘制图表前,我们需要先安装两个库文件numpy和matplotlib. Numpy是Python开源的数值计算扩展,可用来存储和处理大型矩阵,比Python自身数据结构要高效:mat ...
最新文章
- java web ubuntu_Ubuntu部署Java web项目
- 你想要的生物信息知识全在这——生信宝典文章目录
- c语言 打砖块,打砖块
- python爬虫教程下载-Python爬虫视频教程全集下载
- PostgreSQL 10.1 手册_部分 II. SQL 语言_第 9 章 函数和操作符_9.18. 数组函数和操作符...
- CodeForces - 1486B Eastern Exhibition(二维中位数)
- urllib 模块学习
- SPI驱动0.96/1.3寸 OLED屏幕,易修改为DMA控制
- 输入文字自动生成图片_原来Word还可以自动生成图片和图表目录!
- IIS7.5和IIS8如何设置FTP的pasv端口范围
- Alibaba Nacos配置中心功能介绍与不同命名空间、分组等配置
- oracle if/else功能的实现的3种写法
- 关于Matlab在雷达数据处理中的一些经验分享
- mysql-8xxx遇坑后的安装
- zookeeper Unreasonable length错误导致无法启动
- 电脑硬盘中文件丢失怎样才能找回?硬盘数据丢失能恢复吗
- 啡鸟集:同样是冰咖啡,冷萃咖啡为什么比较贵?
- mysql 查询周一至周五
- 统计学中数据分析方法汇总
- Learning Representations For Images With Hierarchical Labels(一、二)
热门文章
- opencv边缘检测加提取(圆形和矩形)
- How long is the way to the Architect?
- oracle怎么截取long类型,如何把long类型的值取出来
- 个体心理认知规律-《影响力》
- CentOS 7安装WRF,SMOKE,CMAQ
- SAR成像处理算法_CS算法_原理
- 关系代数题目小汇总——数据库
- B7 HTML5期末大作业:海贼王影视网站设计——仿京东-海贼王(1页) HTML+CSS+JavaScript 学生DW网页设计作业成品 wweb前端期末大作业 网页设计实例 企业网站制作
- XFP模块和SFP光模块
- 爱情婚姻 - 苏格拉底