你们都知道,Matplotlib 是众多 Python 可视化包的鼻祖,也是Python最经常使用的标准可视化库,其功能很是强大,同时也很是复杂,想要搞明白并不是易事。但自从Python进入3.0时代之后,pandas的使用变得更加普及,它的身影常常见于市场分析、爬虫、金融分析以及科学计算中。python
做为数据分析工具的集大成者,pandas做者曾说,pandas中的可视化功能比plt更加简便和功能强大。实际上,若是是对图表细节有极高要求,那么建议你们使用matplotlib经过底层图表模块进行编码。固然,咱们大部分人在工做中是不会有这样变态的要求的,因此一句import pandas as pd就足够应付所有的可视化工做了。下面,咱们总结一下PD库的一些使用方法和入门技巧。
dom
1、线型图 工具
对于pandas的内置数据类型,Series 和 DataFrame 都有一个用于生成各种 图表 的 plot 方法。 默认状况下, 它们所生成的是线型图。其实Series和DataFrame上的这个功能只是使用matplotlib库的plot()方法的简单包装实现。布局
参考如下示例代码 :编码
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(10,4),index=pd.date_range('2018/12/18', periods=10), columns=list('ABCD')) df.plot()
执行上面示例代码,获得如下结果 -spa
若是索引由日期组成,则调用gct().autofmt_xdate()
来格式化x
轴,如上图所示。3d
咱们可使用x
和y
关键字绘制一列与另外一列。code
s = Series( np. random. randn( 10). cumsum(), index= np. arange( 0, 100, 10))
s. plot()
pandas 的大部分绘图方法都有 一个 可选的ax参数, 它能够是一个 matplotlib 的 subplot 对象。 这使你可以在网格 布局 中 更为灵活地处理 subplot 的位置。 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()
在生成线型图的代码中加上 kind=' bar'( 垂直柱状图) 或 kind=' barh'( 水平柱状图) 便可生成柱状图。 这时,Series 和 DataFrame 的索引将会被用 做 X( bar) 或 (barh)刻度: blog
In [59]: fig, axes = plt. subplots( 2, 1) In [60]: data = Series( np. random. rand( 16), index= list(' abcdefghijklmnop')) In [61]: data. plot( kind=' bar', ax= axes[ 0], color=' k', alpha= 0. 7) Out[ 61]: < matplotlib. axes. AxesSubplot at 0x4ee7750> In [62]: data. plot( kind=' barh', ax= axes[ 1], color=' k', alpha= 0.
对于 DataFrame, 柱状 图 会 将 每一 行的 值 分为 一组, 如图 8- 16 所示:
In [63]: df = DataFrame( np. random. rand( 6, 4), ...: index=[' one', 'two', 'three', 'four', 'five', 'six'], ...: columns= pd. Index([' A', 'B', 'C', 'D'], name=' Genus')) In [64]: df Out[ 64]: Genus A B C D one 0. 301686 0. 156333 0. 371943 0. 270731 two 0. 750589 0. 525587 0. 689429 0. 358974 three 0. 381504 0. 667707 0. 473772 0. 632528 four 0. 942408 0. 180186 0. 708284 0. 641783 five 0. 840278 0. 909589 0. 010041 0. 653207 six 0. 062854 0. 589813 0. 811318 0. 060217 In [65]: df. plot( kind=' bar')
如今经过建立一个条形图来看看条形图是什么。条形图能够经过如下方式来建立 -
import pandas as pd import numpy as np df = pd.DataFrame(np.random.rand(10,4),columns=['a','b','c','d']) df.plot.bar()
执行上面示例代码,获得如下结果 -
要生成一个堆积条形图,经过指定:pass stacked=True -
import pandas as pd df = pd.DataFrame(np.random.rand(10,4),columns=['a','b','c','d']) df.plot.bar(stacked=True)
执行上面示例代码,获得如下结果 -
要得到水平条形图,使用barh()
方法 -
import pandas as pd import numpy as np df = pd.DataFrame(np.random.rand(10,4),columns=['a','b','c','d']) df.plot.barh(stacked=True)
可使用plot.hist()
方法绘制直方图。咱们能够指定bins
的数量值。
import pandas as pd import numpy as np df = pd.DataFrame({'a':np.random.randn(1000)+1,'b':np.random.randn(1000),'c': np.random.randn(1000) - 1}, columns=['a', 'b', 'c']) df.plot.hist(bins=20)
执行上面示例代码,获得如下结果 -
要为每列绘制不一样的直方图,请使用如下代码 -
import pandas as pd import numpy as np df=pd.DataFrame({'a':np.random.randn(1000)+1,'b':np.random.randn(1000),'c': np.random.randn(1000) - 1}, columns=['a', 'b', 'c']) df.hist(bins=20)
执行上面示例代码,获得如下结果 -
Boxplot能够绘制调用Series.box.plot()
和DataFrame.box.plot()
或DataFrame.boxplot()
来可视化每列中值的分布。
例如,这里是一个箱形图,表示对[0,1)
上的统一随机变量的10
次观察的五次试验。
import pandas as pd import numpy as np df = pd.DataFrame(np.random.rand(10, 5), columns=['A', 'B', 'C', 'D', 'E']) df.plot.box()
执行上面示例代码,获得如下结果 -
可使用Series.plot.area()
或DataFrame.plot.area()
方法建立区域图形。
import pandas as pd import numpy as np df = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd']) df.plot.area()
执行上面示例代码,获得如下结果 -
可使用DataFrame.plot.scatter()
方法建立散点图。
import pandas as pd import numpy as np df = pd.DataFrame(np.random.rand(50, 4), columns=['a', 'b', 'c', 'd']) df.plot.scatter(x='a', y='b')
执行上面示例代码,获得如下结果 -
饼状图可使用DataFrame.plot.pie()
方法建立。
import pandas as pd import numpy as np df = pd.DataFrame(3 * np.random.rand(4), index=['a', 'b', 'c', 'd'], columns=['x']) df.plot.pie(subplots=True)
执行上面示例代码,获得如下结果 -
公众号python社区营