plot(一文看全Pandas中plot()函数各种参数设置小技巧)
一文看全Pandas中plot()函数种种参数设置小本事
晓查 编译整理
量子位 出品 | 群众号 QbitAI
数据可视化原本是一个十分繁复的历程,但随着Pandas数据帧plot()函数的显现,使得创建可视化图形变得很容易。
在数据帧上举行利用的plot()函数只是matplotlib中plt.plot()函数的一个简便包装 ,可以协助你在画图历程中省去那些长长的matplotlib代码。
迩来,一位来自印度的小哥以2019年天下幸福指数的数据为例,具体报告了在Pandas中plot()函数的种种参数设置的小本事,熟稔把握这些本事后,你也能绘制出丰厚多彩的可视化图表。
导入数据
在绘制图形前,我们起首必要导入csv文件:
import pandas as pd df=pd.read_csv(‘./world-happiness-report-2019.csv’) df.head(3)
这个csv图标的内容是各个国度依照不同维度评价的幸福指数(数据下载地点见文末):
数据帧中一些列的称呼比力冗长,可以重定名使其愈加简便:
df.rename(columns={“Country (region)”: “Country”, “Log of GDP\nper capita”: “Log_GDP_per_capita”, “Healthy life\nexpectancy”:”Health_life_expect”},inplace=True) df.columns
绘制柱状图、散点图等稀有图形
从迩来简便的柱状图开头,只统计糜烂水平、自在度、宽容度、社会支持等几个维度
%matplotlib tk df1=df[:5] df1.plot(‘Country’,[‘Corruption’,’Freedom’,’Generosity’,’Social support’],kind = ‘bar’)
嫌直接写称呼太贫苦?没干系,我们也可以用地点列的数字来绘制,好比上述4个列分散为7、6、8、5:
%matplotlib tk df1=df[:5] df1.plot(‘Country’,[7,6,8,5],kind = ‘bar’)
在外表的代码中kind = ‘bar’,以是绘制的图形是柱状图,假如我们把参数改成kind = ‘line’,画出的就是线状图。
df1=df[:5] df1.plot(‘Country’,[‘Corruption’,’Freedom’,’Generosity’,’Social support’],kind = ‘line’)
相反的,假如把参数改成kind = ‘line’,还能绘制出箱形图:
df[:5].plot(x=’Country’,kind=’box’)
关于散点图,设置kind=’scatter’,绘制出糜烂水平与自在度之间的干系,用color=’R’将点界说为赤色:
df.plot(x=’Corruption’,y=’Freedom’,kind=’scatter’,color=’R’)
别的,Pandas中另有一个帮助函数pandas.plotting.table,它创建一个来自数据帧的表格,并将其添加到matplotlib Axes实例中。
from pandas.plotting import table df1=df[:5] df1=df.loc[:5,[‘Country (region)’,’Corruption’,’Freedom’,’Generosity’,’Social support’]] ax=df1.plot(‘Country (region)’,[‘Corruption’,’Freedom’,’Generosity’,’Social support’], kind = ‘bar’, title =’Bar Plot’,legend=None) table(ax, np.round(df1.describe(), 2),loc=’upper right’)
坐标轴的设置
取值范围
使用xlim和ylim两个参数可设置x和y轴的范围。在折线图中,我们要将x轴设置为0到20,y限定为从0到100。
df1=df[:20] df1[‘Freedom’].plot(kind=’line’,xlim=(0,20),ylim=(0,100))
x、y轴刻度
偶尔分坐标轴上的刻度并不抱负,我们渴望在外表标上我们喜好的数值。
好比关于x轴,我们想要标上0、10、15和20几个值;关于y轴,我们想要标上0、50、70、100几个值,可以在xticks和yticks参数中悉数列出。
df[:20][‘Freedom’].plot(kind=’line’,xlim=(0,20),ylim=(0,100),color=’red’,xticks=([0,10,15,20]),yticks=([0,50,70,100]), title = ‘xticks’)
但是用列表来订定坐标刻度的办法,在数值太多的时分就比力贫苦了,因此我们还能经过指定刻度距离的办法来绘制坐标轴,好比指定x轴距离是1,y轴距离是10:
df[:20][‘Freedom’].plot(kind=’line’,xlim=(0,20),ylim=(0,100),color=’red’,xticks=([w1 for w in range(20)]),yticks=([w10 for w in range(40)]))
假如我们不渴望在坐标轴上看到数字,而是想要设置标签。我们还可以将x轴标签变动为文本标签“低、中、高”这种样式。
ax=df[:20][‘Freedom’].plot(kind=’line’,xlim=(0,20),ylim=(0,100),color=’red’,xticks=([0,10,20]),yticks=([w*30 for w in range(40)])) ax.set_xticklabels([‘Low’,’Med’,’High’])
对数坐标
假如数据的跨度范围十分大,超过好几个数目级,那么用线性坐标就无法很好地展现数据。这时分我们必要用到对数坐标,设置办法是将logx大概logy的值设置为Ture。
假如我们只想设置x轴为对数坐标,y轴仍坚持线性坐标,那么
df[:20][‘Freedom’].plot(kind=’line’,xlim=(0,1000),ylim=(0,100),color=’red’,logx=True)
其他高阶用法
可以使用stacked参数来绘制带有条形图的堆叠图。在这里,我们绘制堆叠的水平条,stacked设置为True。
将grid参数设置为True,可以给图表到场网格。
有了subplot参数还可以绘制子图,依据必要指定行数和列数以及画图的数目。
在外表的子图中,我们没有给子图添加标题。当subplot 设置为True 时,在设置一组title的值,即可在列表上方到场标题。
原文链接:
https://kanoki.org/2019/09/16/dataframe-visualization-with-pandas-plot/
表格下载地点:
https://www.kaggle.com/PromptCloudHQ/world-happiness-report-2019/version/1
— 完 —
诚挚招聘
量子位正在招募编纂/记者,事情地点在北京中关村。渴望有才华、有热情的同砚到场我们!干系细节,请在量子位群众号(QbitAI)对话界面,回复“招聘”两个字。
量子位 QbitAI · 头条号签约作者
?'?' ? 追踪AI武艺和产物新动态
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。