Python Pandas - Confronto con SQL

Poiché molti potenziali utenti di Panda hanno una certa familiarità con SQL, questa pagina intende fornire alcuni esempi di come è possibile eseguire varie operazioni SQL utilizzando i panda.

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

Suo output è il seguente -

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

SELEZIONARE

In SQL, la selezione viene eseguita utilizzando un elenco di colonne separato da virgole selezionato (o un * per selezionare tutte le colonne) -

SELECT total_bill, tip, smoker, time
FROM tips
LIMIT 5;

Con Panda, la selezione delle colonne viene eseguita passando un elenco di nomi di colonne al tuo DataFrame -

tips[['total_bill', 'tip', 'smoker', 'time']].head(5)

Controlliamo il programma 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)

Suo output è il seguente -

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

Chiamando il DataFrame senza l'elenco dei nomi delle colonne verranno visualizzate tutte le colonne (simili a quelle di SQL *).

DOVE

Il filtraggio in SQL viene eseguito tramite una clausola WHERE.

SELECT * FROM tips WHERE time = 'Dinner' LIMIT 5;

I DataFrame possono essere filtrati in più modi; il più intuitivo dei quali è l'utilizzo dell'indicizzazione booleana.

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

Controlliamo il programma 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)

Suo output è il seguente -

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

L'istruzione precedente passa una serie di oggetti True / False al DataFrame, restituendo tutte le righe con True.

Raggruppa per

Questa operazione recupera il conteggio dei record in ogni gruppo in un set di dati. Ad esempio, una query che ci recupera il numero di suggerimenti lasciati dal sesso -

SELECT sex, count(*)
FROM tips
GROUP BY sex;

L'equivalente di Panda sarebbe -

tips.groupby('sex').size()

Controlliamo il programma 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()

Suo output è il seguente -

sex
Female   87
Male    157
dtype: int64

Prime N righe

SQL restituisce il top n rows utilizzando LIMIT -

SELECT * FROM tips
LIMIT 5 ;

L'equivalente di Panda sarebbe -

tips.head(5)

Controlliamo l'esempio 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

Suo output è il seguente -

smoker   day     time
0      No   Sun   Dinner
1      No   Sun   Dinner
2      No   Sun   Dinner
3      No   Sun   Dinner
4      No   Sun   Dinner

Queste sono le poche operazioni di base che abbiamo confrontato, che abbiamo appreso nei capitoli precedenti della Pandas Library.