Existe um método fácil em pandas para invocar groupby
em uma faixa de incrementos de valores? Por exemplo, dado o exemplo abaixo, posso categorizar e agrupar a coluna B
com um 0.155
incremento de modo que, por exemplo, o primeiro par de grupos na coluna B
seja dividido em intervalos entre '0 - 0,155, 0,155 - 0,31 ... `
import numpy as np
import pandas as pd
df=pd.DataFrame({'A':np.random.random(20),'B':np.random.random(20)})
A B
0 0.383493 0.250785
1 0.572949 0.139555
2 0.652391 0.401983
3 0.214145 0.696935
4 0.848551 0.516692
Como alternativa, eu poderia primeiro categorizar os dados por esses incrementos em uma nova coluna e, posteriormente, usar groupby
para determinar quaisquer estatísticas relevantes que possam ser aplicáveis na coluna A
.
(qa_scores_data.groupby(['Video Name', pandas.cut(qa_scores_data['Frame Name'].astype('float'), [0.5, 12.5, 24.5, 36.5, 48.5])])).mean()
Experimente isto:
df = df.sort('B') bins = np.arange(0,1.0,0.155) ind = np.digitize(df['B'],bins) print df.groupby(ind).head()
Claro que você pode usar qualquer função nos grupos, não apenas
head
.fonte