Python Pandas - comparação com SQL
Uma vez que muitos usuários potenciais do Pandas têm alguma familiaridade com SQL, esta página tem como objetivo fornecer alguns exemplos de como várias operações SQL podem ser realizadas usando o 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()
Está output é o seguinte -
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
SELECIONE
No SQL, a seleção é feita usando uma lista separada por vírgulas de colunas que você seleciona (ou um * para selecionar todas as colunas) -
SELECT total_bill, tip, smoker, time
FROM tips
LIMIT 5;
Com o Pandas, a seleção de colunas é feita passando uma lista de nomes de colunas para seu DataFrame -
tips[['total_bill', 'tip', 'smoker', 'time']].head(5)
Vamos verificar o 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)
Está output é o seguinte -
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
Chamar o DataFrame sem a lista de nomes de coluna exibirá todas as colunas (semelhante a * do SQL).
ONDE
A filtragem em SQL é feita por meio de uma cláusula WHERE.
SELECT * FROM tips WHERE time = 'Dinner' LIMIT 5;
Os DataFrames podem ser filtrados de várias maneiras; o mais intuitivo deles é usar a indexação booleana.
tips[tips['time'] == 'Dinner'].head(5)
Vamos verificar o 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)
Está output é o seguinte -
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
A instrução acima passa uma série de objetos True / False para o DataFrame, retornando todas as linhas com True.
GroupBy
Esta operação busca a contagem de registros em cada grupo em um conjunto de dados. Por exemplo, uma consulta que nos busca o número de dicas deixadas por sexo -
SELECT sex, count(*)
FROM tips
GROUP BY sex;
O equivalente Pandas seria -
tips.groupby('sex').size()
Vamos verificar o 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()
Está output é o seguinte -
sex
Female 87
Male 157
dtype: int64
N principais linhas
SQL retorna o top n rows usando LIMIT -
SELECT * FROM tips
LIMIT 5 ;
O equivalente Pandas seria -
tips.head(5)
Vamos verificar o exemplo 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
Está output é o seguinte -
smoker day time
0 No Sun Dinner
1 No Sun Dinner
2 No Sun Dinner
3 No Sun Dinner
4 No Sun Dinner
Estas são as poucas operações básicas que comparamos, que aprendemos nos capítulos anteriores da Biblioteca Pandas.