Pandas Groupby的排序和绘图输出

时间:2017-01-27 22:18:35

标签: python matplotlib graph jupyter-notebook

这里有一个更乏味的问题,但希望有人可以提供帮助。我正在尝试绘制一个聚合值(按星期几组),但是按周数显示日期缩写和顺序(即显示Mon,首先按索引0排序)。

def Format_plot(plot):
plot.spines["top"].set_visible(False)    
plot.spines["right"].set_visible(False)
plot.yaxis.set_ticks_position("left")
plot.xaxis.set_ticks_position("bottom")   

#For purposes of mapping
days = {0:'Mon',1:'Tues',2:'Weds',3:'Thurs',4:'Fri',5:'Sat',6:'Sun'}  
ds['signup_weekday'] = ds['signup_dayofweek'].apply(lambda x: days[x])
ds = ds.sort_values(by = 'signup_date')
first_ride_rate = {
    'success': lambda x: 1.0*sum(x)/len(x)
    }

def GraphMe(item):
    de = ds[pd.notnull(ds[item])]
    if item == 'signup_weekday':
        sorter = 'signup_dayofweek'
    else:
        sorter = item
    de = de.sort_values(by = sorter)

    total_avg = 1.0*sum(de['success'])/len(de['success'])

    plot = de.groupby(item).agg(first_ride_rate).plot(kind = 'bar',legend=None, title = "Share of signups to complete a first trip")

    Format_plot(plot)
    plot.axhline(y=total_avg, color = 'orange')
    plot.set_xlabel(item)
    plot.set_ylabel('Share of Signups to Complete')
    print sorter

for item in ['signup_dayofweek','signup_weekday']:
    GraphMe(item)

Notebook Snapshot

正如你所看到的那样,它并没有像我想要的那样订购周日指数,希望有人有一个聪明的黑客。此外,如果有一个简单的方法将jupyter笔记本单元格输入到堆栈溢出中,将有助于了解更多问题。

谢谢!

1 个答案:

答案 0 :(得分:1)

如果我理解正确的名为 signup_dayofweek 的图表是正确的,你只想在x轴上有不同的标签?!

在这种情况下,只需添加

即可
Select name, population
where name = 'France','Germany','Italy'

(这里是.set_xticklabels

的文档