乐趣区

关于程序员:原来使用-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 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:

                  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 多平台公布

退出移动版