multiple groupby examples example columns column python matplotlib group-by pandas data-analysis

python - examples - Trazado de resultados de Pandas GroupBy



python group by example (1)

Creo que @herrfz tocó todos los puntos altos. Voy a detallar los detalles:

import pandas as pd import numpy as np import matplotlib.pyplot as plt sin = np.sin cos = np.cos pi = np.pi N = 100 x = np.linspace(0, pi, N) a = sin(x) b = cos(x) df = pd.DataFrame({ ''A'': [True]*N + [False]*N, ''B'': np.hstack((a,b)) }) for key, grp in df.groupby([''A'']): plt.plot(grp[''B''], label=key) grp[''D''] = pd.rolling_mean(grp[''B''], window=5) plt.plot(grp[''D''], label=''rolling ({k})''.format(k=key)) plt.legend(loc=''best'') plt.show()

Estoy empezando a aprender Pandas y estoy tratando de encontrar la forma más pitonica (¿o panda-thonic?) De hacer ciertas tareas.

Supongamos que tenemos un DataFrame con las columnas A, B y C.

  • La columna A contiene valores booleanos: el valor A de cada fila es verdadero o falso.
  • La columna B tiene algunos valores importantes que queremos trazar.

Lo que queremos descubrir son las diferencias sutiles entre los valores B para las filas que tienen A set set to false, frente a los valores B para las filas que tienen A es verdadero.

En otras palabras, ¿cómo puedo agrupar por el valor de la columna A (ya sea verdadero o falso), y luego graficar los valores de la columna B para ambos grupos en el mismo gráfico? Los dos conjuntos de datos deben colorearse de forma diferente para poder distinguir los puntos.

A continuación, agreguemos otra función a este programa: antes de graficar, queremos calcular otro valor para cada fila y almacenarlo en la columna D. Este valor es la media de todos los datos almacenados en B durante los cinco minutos previos a un registro, pero solo incluimos filas que tienen el mismo valor booleano almacenado en A.

En otras palabras, si tengo una fila donde A=True y time=t , quiero calcular un valor para la columna D que es la media de B para todos los registros desde el tiempo t-5 hasta t que tienen el mismo A=True .

En este caso, ¿cómo podemos ejecutar groupby sobre los valores de A, luego aplicar este cálculo a cada grupo individual y finalmente trazar los valores D para los dos grupos?