Python数据分析:手把手教你用Pandas生成可视化图表

你们都知道,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

咱们可使用xy关键字绘制一列与另外一列。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() 

 

 

2、柱状图 

 在生成线型图的代码中加上 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')

 

 

3、条形图

 

如今经过建立一个条形图来看看条形图是什么。条形图能够经过如下方式来建立 -

 
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)

4、直方图

 

可使用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)

 

执行上面示例代码,获得如下结果 -

 

5、箱型图

 

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()

 

执行上面示例代码,获得如下结果 -

 

 

6、块型图

 

可使用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()

执行上面示例代码,获得如下结果 -

 

 

7、散点图

 

可使用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')

 

执行上面示例代码,获得如下结果 -

 

8、饼状图

 

饼状图可使用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社区营

相关文章
相关标签/搜索