参考书目:《深入浅出Pandas:利用Python进行数据处理与分析》


无论是机器学习还是数据分析等数据科学领域,数据可视化是不可或缺的。pandas数据有专门的可视化方法——.plot(), 当然这个方法有很多参数,而且不同对象画法不一样,r语言这方面做的就很模糊。pandas语法很严谨,可视化依靠matplotlib.pyplot包上进行集成封装。用法都有相识之处,下面一起来学一下pandas对象的plot() 里面的用法和参数。

还是先导入包和读取案例数据

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams ['font.sans-serif'] ='SimHei'               #显示中文
plt.rcParams ['axes.unicode_minus']=False               #显示负号
data = 'https://www.gairuo.com/file/data/dataset/team.xlsx'
df = pd.read_excel(data) 

图形类型

df.plot.line() # 折线的全写方式

df.plot.bar() # 柱状图

df.plot.barh() # 横向柱状图 (条形图)

df.plot.hist() # 直方图

df.plot.box() # 箱形图

df.plot.kde() # 核密度估计图

df.plot.density() # 同

df.plot.kde()

df.plot.area() # 面积图

df.plot.pie() # 饼图

df.plot.scatter() # 散点图

df.plot.hexbin() # 六边形箱体图,或简称六边形图


plot()使用方法

基础用法很简单,就是Series对象或者DataFrame对象进行.plot()就行

#Series 使用 plot 时 x 轴为索引,y 轴为索引对应的具体值:

随机生成一条数据然后画图

ts = pd.Series(np.random.randn(20),index=pd.date_range('1/1/2000', periods=20))
ts.plot()

 #DataFrame 使用 plot 时 x 轴为索引,y 轴为索引对应的多个具体值:

df2 = pd.DataFrame(np.random.randn(6, 4), index=pd.date_range('1/1/2000', periods=6),columns=list('ABCD'))
df2.plot()

 #指定列

DataFrame 在绘图时可以指定 x 和 y 轴的列:
df3 = pd.DataFrame(np.random.randn(1000, 2), columns=['B', 'C']).cumsum()
df3['A'] = pd.Series(list(range(len(df))))
df3.plot(x='A', y='B') # 指定 x 和 y 轴内容

#如果 y 轴需要多个值,可以传入列表:
df3.plot(x='A', y=['B','C'])

plot()参数

#图形类型

 #df.plot() 可以通过参数来指定具体图形类型:

df.plot(kind='pie') # 其他的名称和上文相同
s.plot(kind='pie')

 #X轴和Y轴

 #常用在折线图、柱状图、面积图、散点图等,如果是 Series 则索引是 x 轴,Y 轴里值,无需传入。

# 可以不用写参数名,直接按位置传入
df[:5].plot('name', 'Q1')
df[:5].plot.bar('name', ['Q1', 'Q2'])
df[:5].plot.barh(x='name', y='Q4')
df[:5].plot.area('name', ['Q1', 'Q2'])
df[:5].plot.scatter('name', 'Q3')

 #图形标题

df.set_index('name')[:5].plot(kind='bar',title='前五个同学成绩')


 #字体大小

#指定轴上的字体大小:
df.set_index('name')[:5].plot(fontsize=15)

 X,Y轴上的字明显变大了


线条样式

主要是这个style 来调整。style 可指定图的线条等样式,可参考可选的值 Matplotlib Line-style: 

df[:5].plot(style=':')  # 虚线
df[:5].plot(style='-.') # 虚实相间
df[:5].plot(style='--') # 长虚线
df[:5].plot(style='-')  # 实线(默认)
df[:5].plot(style='.')  # 点
df[:5].plot(style='*-') # 实线,数值为星星
df[:5].plot(style='^-') # 实线,数值为三角形

#对不同线分别给样式:
df.set_index('name')[:5].plot(style=[':', '--', '.-', '*-'])


 背景辅助线

#grid 会给 x 方向和 y 方向增加灰色辅助线: 

df[:5].plot(grid=True)


 图例

图例就是图片左上角或者右上的小案例说明那条颜色的线代表了什么变量名

pandas的plot画法默认会画出图例,当然也可以取消图例

#可以取消图例:
df[:5].plot(legend=False)
#可以反向排序图例:
df[:5].plot(legend='reverse')


 图形大小

 figsize 参数传入一个元组,可以指定图形的宽高英寸值。

df[:5].plot.bar(figsize=(10.5,5))

#当然可以给出全局默认的图形大小: 

import matplotlib.pyplot as plt
plt.rcParams['figure.figsize'] = (15.0, 8.0) # 固定显示大小

 色系

#colormap 指定图形的配色,具体值可参考Matplotlib 库的色系表:List of named colors — Matplotlib 3.6.0.dev2928+ga68f21f589 documentation

df[:5].plot.barh(colormap='rainbow')


matplotlib 其他参数 

#此外,还支持 matplotlib 库中的其他参数, 
df[:10].plot.line(color='k') # 图的颜色
df[:5].plot.bar(rot=45) # 主轴上文字的方向度数

 


图像叠加

可以将柱状图和折线图画一起

df['Q1'].head().plot.bar(), df.mean(1).head().plot(color='r')  #Q1和平均成绩

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐