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.
