使用pandas groupby平均值

时间:2017-05-31 04:32:06

标签: pandas matplotlib plot graph seaborn

我正在使用seaborn制作情节,并希望在一个图中绘制两张图。

数据框如下。

        liquidity   lcindex
86493   0.611899    decline
86494   0.585814    revival
86495   0.553165    revival
86496   0.527779    revival
86497   0.521026    mature
86498   0.530813    decline
86499   0.530970    decline
86500   0.564019    revival
86501   0.564535    mature
86502   0.529418    start
86503   0.584290    start
86504   0.550692    start
86505   0.529517    start
86506   0.520906    start
86507   0.535492    revival
86508   0.653324    decline
86509   0.549327    revival
86510   0.528509    revival
86511   0.531548    revival
86512   0.555610    revival
86513   0.517208    decline
86514   0.516283    decline
86515   0.510123    mature
86516   0.512255    revival
86517   0.700632    mature
86518   0.505878    revival
86519   0.551810    revival
86520   0.812280    revival
86521   0.733664    decline
86522   0.714617    decline

第一张图如下。

sns.stripplot(x="lcindex", y="liquidity", data=finaldf, jitter = True)

enter image description here

我希望按每个x值添加流动性平均值的线图。 我可以通过

获得这些值
finaldf.groupby('lcindex')['liquidity'].mean().plot()

       lcindex
decline    0.557899
growth     0.553409
mature     0.556915
revival    0.559233 
start      0.585221

并且这样的情节 enter image description here

如果我一起绘制图形,则会剪切图形的两个边缘,但我希望图形看起来像第一个图形并添加线条。

ax1 = sns.stripplot(
    x="lcindex", y="liquidity", data=finaldf, jitter=True,
    palette="husl", 
    order=['start','growth','mature','revival','decline']
)

finaldf.groupby('lcindex')['liquidity'].mean().plot()
ax1.set_title ('title',fontsize=35)
ax1.set(xlabel='Life cycle Index', ylabel='Liquidity Index')
ax1.set(xticks=range(0, 5), xticklabels=["Start-up",'Growth', 'Mature', 'Revival',"Decline"])

enter image description here

我怎么做?

2 个答案:

答案 0 :(得分:1)

您应该能够像往常一样设置xlimits

ax1.set_xlim(-0.5, 4.5)

答案 1 :(得分:0)

不完全回答你的问题,但另一种可视化数据点和方法的方法可能是在小提琴或盒子图上绘制条形图,如http://seaborn.pydata.org/generated/seaborn.stripplot.html上的最后一个例子:

>>> ax = sns.boxplot(x="tip", y="day", data=tips, whis=np.inf)
>>> ax = sns.stripplot(x="tip", y="day", data=tips,
...                    jitter=True, color=".3")

enter image description here