Kategorier
Python SQL

Så skriver du vanliga SQL-frågor i Python Pandas

Både SQL och Pandas är två viktiga verktyg i en dataanalytikers verktygslåda. SQL är ett standardiserat språk för att hantera data i relationsdatabaser, och Pandas är ett bibliotek för dataanalys framtaget för programmeringsspråket Python. Här är en lathund där du enkelt kan översätta de vanligaste SQL-frågorna till Pythonkod med hjälp av Pandas.

När jag först började använda Python och Pandas som verktyg för att hantera data, hade jag redan arbetat med SQL i flera år. Jag minns att jag lärde mig mycket genom att översätta enkla SQL-frågor till Pythonkod. Därför samlar jag här vanliga SQL-frågor och motsvarigheten i Pandas.

När jag skriver denna artikel använder jag mig av ett dataset med svenska kommuner, även om principen såklart är densamma oberoende av data.

Hämta all data

SQL

För att, med hjälp av SQL, hämta alla kolumner i en tabell används ibland en asterisk (*). En annan lösning är att manuellt lista alla kolumner i tabellen.

SELECT * FROM kommuner

Pandas

I Pandas anger du bara variabelnamnet som innehåller DataFrame-objektet.

df

Hämta specifika kolumner

SQL

I SQL anger du vilka kolumner du vill hämta mellan SELECT och FROM.

SELECT Kommun, Area FROM kommuner

Pandas

I Pandas kan du enkelt hämta specifika kolumner genom att lista dem mellan dubbla hakparenteser efter DataFrame-objektet.

df[['Kommun', 'Area']]

Filtrera med WHERE

SQL

I SQL används nyckelordet WHERE för att filtrera sökfrågan.

SELECT Kommun, Area FROM kommuner WHERE Län = 'Uppsala län'

Pandas

I Pandas filtrerar du data inom enkla hakparenteser direkt efter DataFrame-objektet.

df[df.Län == 'Uppsala län'][['Kommun', 'Area']]

Flera villkor i WHERE-sats

SQL

Om du filtrera på att flera villkor ska vara uppfyllda kan du i SQL använda nyckelordet AND.

SELECT Kommun, Area FROM kommuner WHERE Län = 'Uppsala län' AND Area > 2000

Pandas

I Pandas anger du varje villkor inom parenteser och skriver ett &-tecken mellan dem.

df[(df.Län == 'Uppsala län') & (df.Area > 2000)][['Kommun', 'Area']]

Lämna ett svar

E-postadressen publiceras inte. Obligatoriska fält är märkta *