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.