python绘图函数m_利用Python进行数据分析之Pandas的绘图函数

本文介绍了Pandas的DataFrame和Series如何方便地进行数据可视化,包括线形图、柱状图、直方图、密度图和散布图的绘制方法,强调了Pandas绘图的简洁性和灵活性。此外,还探讨了Python图形化工具生态,指出基于Web技术的图形化是未来趋势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Pandas的绘图函数

之前看的直接用matplotlib来绘图,画一张图还得配置各种标题,刻度标签等等。而pandas的DataFrame和Series都自带生成各类图表的plot方法,就可以省略去写行列标签,分组信息等。明显更简洁的多。

线形图

plot方法默认生成的就是线形图。import numpy as npfrom pandas import Series,DataFrame

%matplotlib inline

s = Series(np.random.randn(10).cumsum(),index=np.arange(0,100,10))

s.plot()

该Series对象的索引会传给matplotlib,并用来绘制X轴。可以用use_index=False,然后用xticks和xlim,yticks和ylim调节。其他参数参考后面的plot的参数表查看。

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()参数说明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轴刻度的值

xlimx轴的界限(例如[0,101)

ylimy轴的界限

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

Series.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轴刻度的值

xlimx轴的界限(例如[0,101)

ylimy轴的界限

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

专用于DataFrame.plot方法的参数如下:参数说明subplots将各个DataFrame列绘制到单独的subplot中

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

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

figsize表示图像大小的元组

title表示图像标题的字符串

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

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

柱状图

柱状图比较简单,在线形图生成的代码下,添加kind='bar'(垂直柱状图)或kind='barh'(水平柱状图)

DataFrame默认会将每行的数据分为一组。

kind参数

当使用stacked = True参数时即可生成堆积柱状图,每行的值堆积在一起。

stacked参数

s.value_counts().plot(kind='bar')可用来显示Series各值的出现概率。

后面举了个例子不贴了,但是这个注解。。。

直方图和密度图

直方图(histogram)是一种可以对值频率进行离散化显示的柱状图。数据点被拆分到离散的、间隔均匀的面元中.绘制的是各面元中数据点的数量。简而言之,就是用来表明分布情况的柱状图。一般第一步是将值的范围分段,即将整个值的范围分成一系列间隔,然后计算每个间隔中有多少值。 这些值通常被指定为连续的,不重叠的变量间隔。 间隔必须相邻,并且通常是(但不是必须的)相等的大小。Serises的hist方法可以实现。

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

这两种图表常常会被画在一起。直方图以规格化形式给出(以便给出面元化密度).然后再在其上绘制核密度估计。看一个由两个不同的标准正态分布组成的双峰分布(如图所示):comp1 = np.random.normal(0,1,size=200) #N(0,1)comp2 = np.random.normal(10,2,size=200) #N(10,4)values = Series(np.concatenate([comp1,comp2]))

values.hist(bins=100,alpha=0.3,color='k',normed =True) #hist画直方图values.plot(kind='kde',style='k--')

两个不同的标准正态分布组成的双峰分布

散布图

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

DataFrame用plotting的scatter_matrix创建散布图矩阵,并且支持对角线上放置各变量的直方图或密度图(diagonal='kde')。import pandas as pd

pd.plotting.scatter_matrix(df,diagonal='kde',color='k',alpha=0.3)

散布图

Python图形化工具生态系统

matplotlib是Python领域使用最广泛的绘图工具。虽然matplotlib可以为

Web应用创建漂亮的图表,但这通常需要耗费大量的精力,因为它原本是为印刷而设计的。先不管美不美观,至少它足以应付大部分需求.其他的还有Chaco(非常适合用复杂的图形化方式表达数据的内部关系。对交互的支持要好得多,而且渲染速度很快),mayavi(是一个基于开源C++图形库VTK的3D图形工具包。也能集成到Ipython实现交互)

最后,关于图形化工具的原话:基于Web技术(比如JavaScript)的图形化是必然的发展趋势。毫无疑问.许多基于Flash或JavaScript的静态或交互式图形化工具已经出现了很多年。而且类似的新工具包(如d3.js及其分支项目)一直都在不断涌现。相比之下,非Web式的图形化开发工作在近几年中减慢了许多。Python以及其他数据分析和统计计算环挽(如R)都是如此。于是,开发方向就变成了实现数据分析和准备工具(如pandas)与Web浏览器之间更为紧密的集成.

作者:BrainZou

链接:https://www.jianshu.com/p/65c2c1ab3ebd

打开App,阅读手记

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值