绘图与可视化--pandas中的绘图函数

matplotlib是一种比较低级的工具,要组装一张图表,你得用它得各种基础组件才行:数据展示(即图表类型:线型图、柱状图、盒型图、散布图、等值线图等)、图例、标题、刻度标签以及其它注释型信息。

在pandas中,有行标签、列标签及分组信息,要绘制一张图,需要很多matplotlib代码。pandas有很多能够利用DataFrame对象数据组织特点来创建标准图表的高级绘图方法。

1.1 线型图

Series和DataFrame都有一个用于生成各类图表的plot方法,默认情况下,生成的是线型图。

1 >>> s = pd.Series(np.random.randn(10).cumsum(), index=np.arange(0, 100, 10))
2 >>> s.plot()
3 <matplotlib.axes._subplots.AxesSubplot object at 0x0000024F35B8A898>
4 >>> plt.show()

该Series对象的索引会传给matplotlib,并用以绘制X轴,可通过use_index=False禁用该功能。X轴的刻度和界限可以通过xticks和xlim选项进行调节,Y轴就用yticks和ylim。plot参数完整列表如下所示:


参数


说明


label


用于图例的标签


ax


要在其上进行绘制的matplotlib subplot对象,如果没有设置,则使用当前matplotlib subplot


style


将要传给matplotlib的风格字符串(如’ko--’)


alpha


图表的填充不透明度(0到1之间)


kind


可以是’line’、’bar’、’barh’、’kde’


logy


在Y轴上使用对数标尺


use_index


将对象的的索引用作刻度标签


rot


旋转刻度标签(0到360)


xticks


用作X轴刻度的值


yticks


用作Y轴刻度的值


xlim


X轴的界限(例如[0, 10])


ylim


Y轴的界限


grid


显示轴网格线(默认打开)

pandas的大部分绘图方法都有一个可选的ax参数,它可以是一个matplotlib的subplot对象。

DataFrame的plot方法会在一个subplot中为各列绘制一条线,并自动创建图例。

1 >>> df = pd.DataFrame(np.random.randn(10, 4).cumsum(0), columns=[‘A‘, ‘B‘, ‘C‘, ‘D‘], index=np.arange(0, 100, 10))
2 >>> df.plot()
3 <matplotlib.axes._subplots.AxesSubplot object at 0x0000024F35B8AFD0>
4 >>> plt.show()

DataFrame还有一些用于对列进行灵活处理的选项。下表是专用于DataFrame的plot参数。


参数


说明


subplots


将各个DataFrame列绘制到单独的subplot中


sharex


如果subplots=True,则共用同一个X轴,包括刻度和界限


sharey


如果subplots=True,则共用同一个Y轴


figsize


表示图像大小的元组


title


表示图像标题的字符串


legend


添加一个subplot实例(默认为True)


sort_columns


以字母顺序绘制各列,默认使用当前列顺序

1.2  柱状图

在生成线性图的代码中加上kind=’bar’(垂直柱状图)或kind=’barh’(水平柱状图)即可生成柱状图。这时,Series和DataFrame的索引将会被当作X(bar)或Y(barh)刻度。

1 >>> fig, axes = plt.subplots(2, 1)
2 >>> data = pd.Series(np.random.rand(16), index=list(‘abcdefghijklmnop‘))
3 >>> data.plot(kind=‘bar‘, ax=axes[0], color=‘k‘, alpha=0.7)
4 <matplotlib.axes._subplots.AxesSubplot object at 0x0000024F37F3FE48>
5 >>> data.plot(kind=‘barh‘, ax=axes[1], color=‘k‘, alpha=0.7)
6 <matplotlib.axes._subplots.AxesSubplot object at 0x0000024F37F794A8>
7 >>> plt.show()

对于DataFrame,柱状图会将每一行的值分为一组。

 1 >>> df = pd.DataFrame(np.random.rand(6, 4), index=[‘one‘, ‘two‘, ‘three‘, ‘four‘, ‘five‘, ‘six‘], columns=pd.Index([‘A‘, ‘B‘, ‘C‘, ‘D‘], name=‘Genus‘))
 2 >>> df
 3 Genus         A         B         C         D
 4 one    0.466419  0.388390  0.045920  0.188829
 5 two    0.795635  0.566636  0.916473  0.944628
 6 three  0.386224  0.993829  0.273204  0.573622
 7 four   0.134991  0.591803  0.778073  0.150384
 8 five   0.854561  0.058758  0.922147  0.764897
 9 six    0.923109  0.324739  0.717597  0.682992
10 >>> df.plot(kind=‘bar‘)
11 <matplotlib.axes._subplots.AxesSubplot object at 0x0000024F37FB1F28>
12 >>> plt.show()

设置stacked=True即可生成堆积柱状图,每行的值会被堆积在一起。

1 >>> df.plot(kind=‘bar‘, stacked=True, alpha=0.5)
2 <matplotlib.axes._subplots.AxesSubplot object at 0x0000024F3A2F2048>
3 >>> plt.show()

1.1.3  直方图和密度图

直方图(histogram)是一种可以对值频率进行离散化显示的柱状图。数据点被拆分到离散的、间隔均匀的面元中,绘制的是各面元中数据点的数量。

 1 >>> s
 2 0   -0.674014
 3 1    0.342018
 4 2   -0.189962
 5 3    0.528294
 6 4    1.597546
 7 5    1.530765
 8 6    2.699712
 9 7    1.422388
10 8   -1.295660
11 9   -1.539913
12 dtype: float64
13 >>> s.hist(bins=5)
14 <matplotlib.axes._subplots.AxesSubplot object at 0x000002295B737978>
15 >>> plt.show()

与此相关的一种图表类型是密度图,它是通过计算“可能产生观测数据的连续概率分布的估计”而产生的。一般的过程是将该部分近似为一组核(即诸如正态(高斯)分布之类的较为简单的分布)。因此,密度图也被称为KDE(kernel density estimate核密度估计)图。调用plot时加上kind=’kde’即可生成一张密度图(标准混合正态分布KDE)。

 1 >>> import scipy
 2 >>> s.plot(kind=‘kde‘)
 3 <matplotlib.axes._subplots.AxesSubplot object at 0x0000022959D0DA90>
 4 >>> plt.show()
 5 >>> s
 6 0   -0.674014
 7 1    0.342018
 8 2   -0.189962
 9 3    0.528294
10 4    1.597546
11 5    1.530765
12 6    2.699712
13 7    1.422388
14 8   -1.295660
15 9   -1.539913
16 dtype: float64

这两种图形常常画在一起,直方图以规格化形式给出(以便给出画元化密度),然后再在其上绘制核密度估计。下面给一个由两个不同的标准正态分布组成的双峰分布。

1 >>> comp1 = np.random.normal(0, 1, size=200)
2 >>> comp2 = np.random.normal(10, 2, size=200)
3 >>> values = pd.Series(np.concatenate([comp1, comp2]))
4 >>> values.hist(bins=100, alpha=0.3, color=‘k‘, density=True)
5 <matplotlib.axes._subplots.AxesSubplot object at 0x0000022959CFC6D8>
6 >>> values.plot(kind=‘kde‘, style=‘k--‘)
7 <matplotlib.axes._subplots.AxesSubplot object at 0x0000022959CFC6D8>
8 >>> plt.show()

1.4  散布图

散布图(scatter plot)是观察两个一维数据序列之间关系的有效手段,matplotlib的scatter方法是绘制散布图的主要方法。

 1 >>> df = pd.DataFrame(np.random.rand(4, 2), index=[1, 2, 3, 4], columns=[‘one‘, ‘two‘])
 2 >>> df
 3         one       two
 4 1  0.658181  0.390797
 5 2  0.443482  0.673915
 6 3  0.188783  0.442284
 7 4  0.048783  0.578914
 8 >>> plt.scatter(df[‘one‘], df[‘two‘])
 9 <matplotlib.collections.PathCollection object at 0x000002295D2D77B8>
10 >>> plt.title(‘test‘)
11 Text(0.5, 1.0, ‘test‘)
12 >>> plt.show()

在探索式数据分析中,同时观察一组变量的散布图很有意义,这也被称为散布矩阵(scatter plot matrix)。pandas提供了从DataFrame创建散布图矩阵的scatter_matrix函数。还支持在对角线上放置各变量的直方图和密度图。

 1 >>> df
 2         one       two
 3 1  0.658181  0.390797
 4 2  0.443482  0.673915
 5 3  0.188783  0.442284
 6 4  0.048783  0.578914
 7 >>> pd.plotting.scatter_matrix(df, diagonal=‘kde‘, color=‘r‘, alpha=0.3)
 8 array([[<matplotlib.axes._subplots.AxesSubplot object at 0x000002295D23D860>,
 9         <matplotlib.axes._subplots.AxesSubplot object at 0x000002295D1A4940>],
10        [<matplotlib.axes._subplots.AxesSubplot object at 0x000002295D09EEF0>,
11         <matplotlib.axes._subplots.AxesSubplot object at 0x000002295D0DC4E0>]],
12       dtype=object)
13 >>> plt.show()

原文地址:https://www.cnblogs.com/mrlayfolk/p/12259596.html

时间: 2024-11-08 03:38:07

绘图与可视化--pandas中的绘图函数的相关文章

20200116(绘图和可视化——pandas)

由上一节内容可知,matplotlib 实际上是一种比较低级的工具.要组装一张图表,得用它的各种基础组件才行. pandas 有许多能够利用DataFrame 对象数据组织特点来创建标准图表的高级绘图方法. 1. 线型图 Series 和 DataFrame 都有一个用于生成各类图表的plot 方法.默认情况下,他们生成的是线型图. fig4 = plt.figure() s = Series(np.random.randn(10).cumsum(), index = np.arange(0,

pandas中的isin函数详解

原文链接:http://www.datastudy.cc/to/69 今天有个同学问到,not in 的逻辑,想用 SQL 的select c_xxx_s from t1 left join t2 on t1.key=t2.key where t2.key is NULL 在 Python 中的逻辑来实现,实现了 left join 了(直接用join方法),但是不知道怎么实现where key is NULL. 其实,实现not in的逻辑,不用那么复杂,直接用isin函数再取反即可,下面就是

Pandas中常用的函数使用

1.离散值的onehot编码 pd.get_dummies() import pandas as pd #对于离散值不能进行编码的利用onehot编码 df = pd.DataFrame([ ['green', 'M', 10.1, 'class1'], ['red', 'L', 13.5, 'class2'], ['blue', 'XL', 15.3, 'class1']]) df.columns = ['color', 'size', 'prize', 'class label'] size

Python 数据分析(一) 本实验将学习 pandas 基础,数据加载、存储与文件格式,数据规整化,绘图和可视化的知识

第1节 pandas 回顾 第2节 读写文本格式的数据 第3节 使用 HTML 和 Web API 第4节 使用数据库 第5节 合并数据集 第6节 重塑和轴向旋转 第7节 数据转换 第8节 字符串操作 第9节 绘图和可视化 pandas 回顾 一.实验简介 学习数据分析的课程,需要同学们掌握好 Python 的语言基础,和对 Numpy 与 Matplotlib 等基本库有一些了解.同学们可以参考学习实验楼的 Python 语言基础教程与 Python 科学计算的课程. pandas 是后面我们

《利用python进行数据分析》读书笔记--第八章 绘图和可视化

http://www.cnblogs.com/batteryhp/p/5025772.html python有许多可视化工具,本书主要讲解matplotlib.matplotlib是用于创建出版质量图表的桌面绘图包(主要是2D方面).matplotlib的目的是为了构建一个MATLAB式的绘图接口.本书中的大部分图都是用它生成的.除了图形界面显示,还可以把图片保存为pdf.svg.jpg.png.gif等形式. 1.matplotlib API入门 Ipython可以用close()关闭界面.

绘图和可视化

画图的步骤示例参考: import matplotlib.pyplot as plt %matplotlib inline from numpy.random import randn import numpy as np # 一种方法 fig = plt.figure() ax1 = fig.add_subplot(2, 2, 1) ax2 = fig.add_subplot(2, 2, 2) ax3 = fig.add_subplot(2, 2, 3) ax4 = fig.add_subpl

python数据分析之:绘图和可视化及python数据分析实例

在数据分析领域,最出名的绘图工具就是matlib.在Python同样有类似的功能.就是matplotlib.前面几章我们都在介绍数据的生成,整理,存储.那么这一章将介绍如果图形化的呈现这些数据.来看下面的代码 这个代码通过numpy生成50个随机数,然后进行求和,最后将50个数绘制成图像,k--代表以虚线的方式 import matplotlib.pyplot as plt from numpy.random import randn if __name__=="__main__":

Python绘图与可视化

Python有很多可视化工具,本篇只介绍Matplotlib. Matplotlib是一种2D的绘图库,它可以支持硬拷贝和跨系统的交互,它可以在Python脚本.IPython的交互环境下.Web应用程序中使用.该项目是由John Hunter于2002年启动的,其目的是为Python构建一个MATLAB式的绘图接口.如果结合使用一种GUI工具包(如IPython),Matplotlib还具有诸如缩放和平移等交互功能.它不仅支持各种操作系统上许多不同的GUI后端,而且还能将图片导出为各种常见的食

Matplotlib:绘图和可视化

Matplotlib:绘图和可视化 简介 简单绘制线形图 plot函数 支持图类型 保存图表 一 .简介 Matplotlib是一个强大的Python绘图和数据可视化的工具包.数据可视化也是我们数据分析的最重要的工作之一,可以帮助我们完成很多操作,例如:找出异常值.必要的一些数据转换等.完成数据分析的最终结果也许就是做一个可交互的数据可视化. 安装方式: pip install matplotlib 引用方法: import matplotlib.pyplot as plt 二 .简单绘制线形图