Python Pandas - Comparación con SQL
Dado que muchos usuarios potenciales de Pandas están familiarizados con SQL, esta página está destinada a proporcionar algunos ejemplos de cómo se pueden realizar varias operaciones de SQL utilizando pandas.
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()
Sus output es como sigue -
total_bill tip sex smoker day time size
0 16.99 1.01 Female No Sun Dinner 2
1 10.34 1.66 Male No Sun Dinner 3
2 21.01 3.50 Male No Sun Dinner 3
3 23.68 3.31 Male No Sun Dinner 2
4 24.59 3.61 Female No Sun Dinner 4
SELECCIONE
En SQL, la selección se realiza mediante una lista de columnas separadas por comas que seleccione (o un * para seleccionar todas las columnas) -
SELECT total_bill, tip, smoker, time
FROM tips
LIMIT 5;
Con Pandas, la selección de columnas se realiza pasando una lista de nombres de columnas a su DataFrame -
tips[['total_bill', 'tip', 'smoker', 'time']].head(5)
Veamos el programa 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', 'smoker', 'time']].head(5)
Sus output es como sigue -
total_bill tip smoker time
0 16.99 1.01 No Dinner
1 10.34 1.66 No Dinner
2 21.01 3.50 No Dinner
3 23.68 3.31 No Dinner
4 24.59 3.61 No Dinner
Llamar al DataFrame sin la lista de nombres de columna mostrará todas las columnas (similar a SQL *).
DÓNDE
El filtrado en SQL se realiza mediante una cláusula WHERE.
SELECT * FROM tips WHERE time = 'Dinner' LIMIT 5;
Los DataFrames se pueden filtrar de varias formas; el más intuitivo es el uso de indexación booleana.
tips[tips['time'] == 'Dinner'].head(5)
Veamos el programa 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'] == 'Dinner'].head(5)
Sus output es como sigue -
total_bill tip sex smoker day time size
0 16.99 1.01 Female No Sun Dinner 2
1 10.34 1.66 Male No Sun Dinner 3
2 21.01 3.50 Male No Sun Dinner 3
3 23.68 3.31 Male No Sun Dinner 2
4 24.59 3.61 Female No Sun Dinner 4
La declaración anterior pasa una serie de objetos True / False al DataFrame, devolviendo todas las filas con True.
Agrupar por
Esta operación obtiene el recuento de registros de cada grupo en un conjunto de datos. Por ejemplo, una consulta que nos muestre la cantidad de propinas dejadas por sexo:
SELECT sex, count(*)
FROM tips
GROUP BY sex;
El equivalente de Pandas sería:
tips.groupby('sex').size()
Veamos el programa 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('sex').size()
Sus output es como sigue -
sex
Female 87
Male 157
dtype: int64
N filas superiores
SQL devuelve el top n rows utilizando LIMIT -
SELECT * FROM tips
LIMIT 5 ;
El equivalente de Pandas sería:
tips.head(5)
Veamos el 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
Sus output es como sigue -
smoker day time
0 No Sun Dinner
1 No Sun Dinner
2 No Sun Dinner
3 No Sun Dinner
4 No Sun Dinner
Estas son las pocas operaciones básicas que comparamos y que aprendimos en los capítulos anteriores de la Biblioteca Pandas.