Python Pandas - Vergleich mit SQL

Da viele potenzielle Pandas-Benutzer mit SQL vertraut sind, soll diese Seite einige Beispiele dafür enthalten, wie verschiedene SQL-Vorgänge mit Pandas ausgeführt werden können.

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

Es ist output ist wie folgt -

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

WÄHLEN

In SQL erfolgt die Auswahl mithilfe einer durch Kommas getrennten Liste der von Ihnen ausgewählten Spalten (oder eines *, um alle Spalten auszuwählen).

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

Bei Pandas erfolgt die Spaltenauswahl durch Übergeben einer Liste von Spaltennamen an Ihren DataFrame.

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

Lassen Sie uns das vollständige Programm überprüfen -

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)

Es ist output ist wie folgt -

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

Wenn Sie den DataFrame ohne die Liste der Spaltennamen aufrufen, werden alle Spalten angezeigt (ähnlich wie bei SQL *).

WO

Das Filtern in SQL erfolgt über eine WHERE-Klausel.

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

DataFrames können auf verschiedene Arten gefiltert werden. Am intuitivsten ist die Verwendung der Booleschen Indizierung.

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

Lassen Sie uns das vollständige Programm überprüfen -

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)

Es ist output ist wie folgt -

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

Die obige Anweisung übergibt eine Reihe von True / False-Objekten an den DataFrame und gibt alle Zeilen mit True zurück.

Gruppiere nach

Diese Operation ruft die Anzahl der Datensätze in jeder Gruppe in einem Datensatz ab. Zum Beispiel eine Abfrage, die uns die Anzahl der Tipps abruft, die das Geschlecht hinterlassen hat -

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

Das Pandas-Äquivalent wäre -

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

Lassen Sie uns das vollständige Programm überprüfen -

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

Es ist output ist wie folgt -

sex
Female   87
Male    157
dtype: int64

Top N Reihen

SQL gibt das zurück top n rows mit LIMIT - -

SELECT * FROM tips
LIMIT 5 ;

Das Pandas-Äquivalent wäre -

tips.head(5)

Schauen wir uns das vollständige Beispiel an -

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

Es ist output ist wie folgt -

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

Dies sind die wenigen grundlegenden Operationen, die wir verglichen haben und die wir in den vorherigen Kapiteln der Pandas-Bibliothek gelernt haben.