2016-03-24 1 views
1

У меня есть панд dataframe ф.р. в следующем форматепитон панды GroupBy участка с отсортированной датой, XTICK

date   value  team 
12/8/2015  1.2   'A' 
12/8/2015  1.3   'A' 
12/7/2015  1.2   'A' 
12/6/2015  1.3   'B' 
12/6/2015  1.1   'B' 
12/7/2015  1.3   'B' 
............................... 

То, что я хочу, это фигура с двумя кривыми, представляющих две групп, с датой как х-значение, среднее значение соответствующей даты в качестве значения y. Что беспокоит меня формат даты, кажется, не правильно, так как питон жалуется

«Не удалось преобразовать 12/8/2015 ... в числовой»

for label, group in df.groupby('team']): 
     group.plot(x=group['date'], y=group['date'].mean(),label=label) 

ответ

2

Сначала необходимо преобразовать дату в метку времени ,

df['date'] = pd.to_datetime(df.date) 

Затем вы можете сгруппировать и поместить значение, чтобы получить нужные данные:

>>> df.groupby(['date', 'team']).sum().unstack('team') 
      value  
team   'A' 'B' 
date     
2015-12-06 NaN 2.4 
2015-12-07 1.2 1.3 
2015-12-08 2.5 NaN 

Добавить .plot(), и вы должны получить нужный результат.

+0

Последующий вопрос, после того как я использую функцию графика, как сделать легенду только показывает «команду» вместо «даты» и «команды» – Jin

+0

неважно, ответ здесь http://stackoverflow.com/questions/ 13886019/restore-figure-legend-in-pandas – Jin

+0

Я собирался предложить 'df2 = df.groupby (['date', 'team']). Sum(). Unstack ('team')', 'df2. columns = df2.columns.droplevel() ' – Alexander

Смежные вопросы