binning un marco de datos en pandas en Python
Dado el siguiente marco de datos en pandas:
import numpy as np
df = pandas.DataFrame({"a": np.random.random(100), "b": np.random.random(100), "id": np.arange(100)})
dóndeid
es una identificación para cada punto que consiste en unaa
yb
valor, ¿cómo puedo bina
yb
en un conjunto específico de contenedores (para que luego pueda tomar el valor medio / promedio dea
yb
en cada bandeja)?df
podría tenerNaN
valores paraa
ob
(o ambos) para cualquier fila dada endf
. Gracias.
Aquí hay un ejemplo mejor utilizando la solución de Joe Kington con un df más realista. De lo que no estoy seguro es de cómo acceder a los elementos df.b para cada grupo df.a a continuación:
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?
# ...