2013-10-01 2 views
6

Есть ли способ опустить часть вывода из pandas описать? Эта команда дает мне именно то, что я хочу с выходом таблицы (кол и среднее executeTime, отданного simpleDate)Изменить выход из Python Pandas описать

df.groupby('simpleDate').executeTime.describe().unstack(1) 

Однако это все, что я хочу, рассчитывать и имею в виду. Я хочу удалить std, min, max и т. Д. До сих пор я только читал, как изменять размер столбца.

Я предполагаю, что ответ будет состоять в том, чтобы переписать строку, а не использовать описать, но у меня не было удачной группировки по simpleDate и, получая счет со средним значением executeTime.

я могу сделать отсчет по дате:

df.groupby(['simpleDate']).size() 

или executeTime по дате:

df.groupby(['simpleDate']).mean()['executeTime'].reset_index() 

Но не могу понять синтаксис, чтобы объединить их.

Мой желаемый результат:

  count mean 
09-10-2013  8 20.523 
09-11-2013  4 21.112 
09-12-2013  3 18.531 
...   .. ... 

ответ

16

Описывать возвращает серию, так что вы можете просто выбрать, что вы хотите

In [6]: s = Series(np.random.rand(10)) 

In [7]: s 
Out[7]: 
0 0.302041 
1 0.353838 
2 0.421416 
3 0.174497 
4 0.600932 
5 0.871461 
6 0.116874 
7 0.233738 
8 0.859147 
9 0.145515 
dtype: float64 

In [8]: s.describe() 
Out[8]: 
count 10.000000 
mean  0.407946 
std  0.280562 
min  0.116874 
25%  0.189307 
50%  0.327940 
75%  0.556053 
max  0.871461 
dtype: float64 

In [9]: s.describe()[['count','mean']] 
Out[9]: 
count 10.000000 
mean  0.407946 
dtype: float64 
+0

большое спасибо, я попробовал что-то подобное, но имел синтаксис выключен. прекрасно работает – KHibma

9

.describe() атрибут генерирует dataframe, где граф, станд, макс ... являются значениями индекса, поэтому в соответствии с documentation вы должны использовать, например:

df.describe().loc[['count','max']] 
1

Решение @Jeff предоставило просто работы для серии.

@Rafa находится на точке: df.describe().info() показывает, что в результате dataframe имеет Index: 8 entries, count to max

df.describe().loc[['count','max']] делает работу, но df.groupby('simpleDate').describe().loc[['count','max']], что то, что ОП спросил, не работает.

Я думаю, что решение может быть таким:

df = pd.DataFrame({'Y': ['A', 'B', 'B', 'A', 'B'], 
        'Z': [10, 5, 6, 11, 12], 
             }) 

группировка ФР по Y:

df_grouped=df.groupby(by='Y')  


In [207]df_grouped.agg([np.mean, len]) 

Out[207]: 
     Z  
    mean len 
Y    
A 10.500 2 
B 7.667 3 
0

Придерживающийся описать, вы можете поместить значение индексов, а затем нарежьте обычно слишком

df.describe().unstack()[['count','max']]

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