tutorial documentacion python pandas count group-by distinct

documentacion - python pandas dataframe



Cuenta de Pandas(equivalente) (4)

Estoy usando pandas como un sustituto de db ya que tengo múltiples bases de datos (oráculo, mssql, etc.) y no puedo hacer una secuencia de comandos a un equivalente de SQL.

Tengo una tabla cargada en un DataFrame con algunas columnas:

YEARMONTH, CLIENTCODE, SIZE, .... etc etc

En SQL, contar la cantidad de clientes diferentes por año sería:

SELECT count(distinct CLIENTCODE) FROM table GROUP BY YEARMONTH;

Y el resultado sería

201301 5000 201302 13245

¿Cómo puedo hacer eso en pandas?


Agregando a las respuestas ricas anteriores, existe la posibilidad de escribir consultas SQL en el marco de datos Pandas con el módulo de Python llamado pandasql . De acuerdo con el Yhat:

pandasql le permite consultar panda DataFrames utilizando la sintaxis SQL. [...] pandasql busca proporcionar una forma más familiar de manipular y limpiar datos para personas nuevas en Python o pandas.


Aquí hay otro método, muy simple, digamos que el nombre de su dataframe es daat y el nombre de la columna es YEARMONTH

daat.YEARMONTH.value_counts()


Creo que esto es lo que quieres:

table.groupby(''YEARMONTH'').CLIENTCODE.nunique()

Ejemplo:

In [2]: table Out[2]: CLIENTCODE YEARMONTH 0 1 201301 1 1 201301 2 2 201301 3 1 201302 4 2 201302 5 2 201302 6 3 201302 In [3]: table.groupby(''YEARMONTH'').CLIENTCODE.nunique() Out[3]: YEARMONTH 201301 2 201302 3


Curiosamente, muy a menudo len(unique()) es algunas veces (3x-15x) más rápido que nunique() .