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()
.