Étant donné le cadre de données suivant dans pandas :
import numpy as np
df = pandas.DataFrame({"a": np.random.random(100), "b": np.random.random(100), "id": np.arange(100)})
donde id
est un identifiant pour chaque point constitué d'un a
y b
comment puis-je bin a
y b
dans un ensemble spécifié de cases (afin que je puisse ensuite prendre la valeur médiane/moyenne de a
y b
dans chaque bac) ? df
pourrait avoir NaN
valeurs pour a
o b
(ou les deux) pour une ligne donnée dans df
.
Voici un meilleur exemple qui utilise la solution de Joe Kington avec un modèle plus réaliste. df
. Ce que je ne sais pas, c'est comment accéder à la base de données de l'entreprise. df.b
éléments pour chaque df.a
groupe ci-dessous :
a = np.random.random(20)
df = pandas.DataFrame({"a": a, "b": a + 10})
# bins for df.a
bins = np.linspace(0, 1, 10)
# bin df according to a
groups = df.groupby(np.digitize(df.a,bins))
# Get the mean of a in each group
print groups.mean()
## But how to get the mean of b for each group of a?
# ...