English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Operaciones SQL de Pandas

Ejemplos específicos de operaciones SQL en Pandas

Dado que muchos usuarios potenciales de Pandas tienen conocimientos de SQL, esta página tiene como objetivo proporcionar algunos ejemplos que ilustran cómo utilizar Pandas para realizar varias operaciones SQL.

 import pandas as pd
 url = 'https://raw.github.com/pandasdev/
 pandas/master/pandas/tests/data/tips.csv'
 tips=pd.read_csv(url)
 print(tips.head())

Los resultados de la ejecución son los siguientes:

      total_bill            tip                    sexo              fumador              día                    hora                    tamaño
0        16.99  1.01   Femenino              No          Sol         Cena      2
1        10.34  1.66     Masculino              No          Sol         Cena      3
2        21.01  3.50                    Masculino              No          Sol         Cena      3
3        23.68  3.31     Masculino              No          Sol         Cena      2
4        24.59  3.61   Femenino              No          Sol         Cena      4

Consulta

En SQL, la selección se realiza con una lista separada por comas de las columnas elegidas (o utilizando*para seleccionar todas las columnas):

 SELECT total_bill, tip, fumador, hora
 from tips
 LIMIT 5;

Con Pandas, para realizar la selección de columnas se completa pasando una lista de nombres de columnas al DataFrame:

 tips[['total_bill', 'tip', 'fumador', 'hora']].head(5)

Veamos un ejemplo completo:

 import pandas as pd
 url = 'https://raw.github.com/pandasdev/
 pandas/master/pandas/tests/data/tips.csv'
  
 tips=pd.read_csv(url)
 print(tips[['total_bill', 'tip', 'fumador', 'hora']].head(5)

Los resultados de la ejecución son los siguientes:

   total_bill            tip            fumador                    hora
0       16.99  1.01      No              Cena
1       10.34  1.66      No              Cena
2       21.01  3.50                    No              Cena
3       23.68  3.31      No              Cena
4       24.59  3.61      No              Cena

Llamar a DataFrame sin lista de nombres de columnas mostrará todas las columnas (al estilo de SQL de*).

Consulta con condición WHERE

Filtrar en SQL mediante cláusula WHERE.

 SELECT * from tips WHERE time = 'Cena' LIMIT 5;

DataFrame se puede filtrar de múltiples maneras. El método más intuitivo es usar índices booleanos.

 tips[tips['time'] == 'Cena'].head(5)

Vamos a ver un ejemplo completo

 import pandas as pd
 url = 'https://raw.github.com/pandasdev/
 pandas/master/pandas/tests/data/tips.csv'
 tips=pd.read_csv(url)
 print(tips[tips['time'] == 'Cena'].head(5)

Los resultados de la ejecución son los siguientes:

     total_bill            tip                    sexo              fumador              día                    hora                    tamaño
0       16.99  1.01   Femenino             No         Sol         Cena    2
1       10.34  1.66     Masculino             No         Sol         Cena    3
2       21.01  3.50                    Masculino             No         Sol         Cena    3
3       23.68  3.31     Masculino             No         Sol         Cena    2
4       24.59  3.61   Femenino             No         Sol         Cena    4

La sentencia superior transmitirá una serie de True / Objeto False transmitido a DataFrame, y se devuelven todas las filas con True.

Agrupación de GroupBy

Esta operación obtiene el número de registros en cada grupo del conjunto de datos completo. Por ejemplo, consulte el número de registros agrupados por género:

 SELECT sexo, count(*)
 from tips
 GROUP BY sexo;

La operación en Pandas es la siguiente:

 tips.groupby('sexo').size()

Vamos a ver un ejemplo completo

 import pandas as pd
 url = 'https://raw.github.com/pandasdev/
 pandas/master/pandas/tests/data/tips.csv'
 tips=pd.read_csv(url)
 print tips.groupby('sexo').size()

Los resultados de la ejecución son los siguientes:

 sexo
 Mujer 87
 Hombre 157
 dtype: int64

Cantidad de filas consultadas

Uso de LIMIT en SQL para devolver N filas:

 SELECT * from tips
 LIMIT 5 ;

Operaciones en Pandas son las siguientes:

 tips.head(5)

Vamos a ver un ejemplo completo

 import pandas as pd
 url = 'https://raw.github.com/pandas-dev/pandas/master/pandas/tests/data/tips.csv'
 tips=pd.read_csv(url)
 tips = tips[['smoker', 'day', 'time']].head(5)
 print tips

Los resultados de la ejecución son los siguientes:

     día de fumador tiempo
0 No Sun Dinner
1      No Sun Dinner
2      No Sun Dinner
3      No Sun Dinner
4      No Sun Dinner