Hur innovation inom teknik stärker apputvecklingssektorn? 1

Hur du frågar din Pandas Dataframe

Källnod: 1017694

Hur du frågar din Pandas Dataframe

En dataforskares perspektiv på SQL-liknande Python-funktioner.


By Matthew Przybyla, Senior Data Scientist på Favor Delivery



Foto: Bruce Hong on Unsplash [1].

Innehållsförteckning

 
 

  1. Beskrivning
  2. Flera villkor
  3. Sammanfoga på flera specifika kolumner
  4. Sammanfattning
  5. Referensprojekt

Beskrivning

 
 
Oavsett om du går över från en dataingenjör/dataanalytiker eller vill bli en mer effektiv dataforskare kan det visa sig vara en ganska användbar metod för att returnera specifika rader som du vill ha. Det är viktigt att notera att det finns en specifik frågefunktion för pandor, lämpligt namngivna, query. Men jag kommer istället att diskutera de andra sätten som du kan härma efterfrågan, filtrering och sammanfogning av dina data. Vi kommer att presentera vanliga scenarier eller frågor som du skulle ställa till din data, och snarare än SQL kommer vi att göra det med Python. I styckena nedan kommer jag att beskriva några enkla sätt att fråga rader för din pandas dataram med programmeringsspråket Python.

Flera villkor

 
 



Stickprov. Skärmdump från författare [2].

 

Som datavetare eller dataanalytiker vill vi returnera specifika rader med data. Ett av dessa scenarier är där du vill tillämpa flera villkor, alla i samma kodrad. För att visa mitt exempel har jag skapat några falska exempeldata för ett för- och efternamn, samt deras respektive kön och födelsedatum. Dessa data visas ovan på skärmdumpen.

Exemplet med flera villkor kommer i huvudsak att svara på en specifik fråga, precis som när du använder SQL. Frågan är hur stor procent av vår data som är manligt kön OR en person som är född mellan 2010 och 2021.

Här är koden som löser den frågan (det finns några sätt att svara på den här frågan, men här är mitt specifika sätt att göra det):

print(“Percent of data who are Males OR were born between 2010 and 2021:”, 100*round(df[(df[‘Gender’] == ‘M’) | (df[‘Birthdate’] >= ‘2010–01–01’) & (df[‘Birthdate’] <= ‘2021–01–01’)][‘Gender’].count()/df.shape [0],4), “%”)

För att bättre visualisera den här koden har jag också inkluderat den här skärmdumpen av samma kod ovanifrån, tillsammans med utdata/resultat. Du kan också tillämpa dessa villkor för att returnera de faktiska raderna istället för att få bråkdelen eller procenten av raderna ut av det totala antalet rader.



Villkorskod. Skärmdump av författare [3].

 

Här är ordningen på kommandon vi utförde:

  • Returnera rader med hane Gender
  • Inkludera OR fungera |
  • Returnera raderna av Birthdate > 2010 och 2021
  • Kombinera alla och dividera sedan med det totala antalet rader

Som du kan se liknar denna kod något du skulle se i SQL. Jag tycker personligen att det är lättare i pandor eftersom det kan vara mindre kod, samtidigt som man kan visuellt se all kod på en enkel plats, utan att behöva scrolla upp och ner (men det här formatet är bara min preferens).

Sammanfoga på flera specifika kolumner

 
 



Sammanslagna dataramresultat. Skärmdump av författare [4].

 

Vi har förmodligen sett hur man slår samman dataramar i andra handledningar, så jag ville lägga till ett unikt tillvägagångssätt som jag inte riktigt har sett där ute, som går samman på flera specifika kolumner. I det här scenariot vill vi sammanfoga två dataramar där två fält delas mellan dem. Du kan säga att om det finns ännu fler kolumner kan den här metoden vara ännu mer användbar.

Vi har vår första dataram, som är df, sedan slår vi samman våra kolumner på en andra dataram, df2. Här är den koden för att uppnå vårt förväntade resultat:

merged_df = df.merge(df2, how=’inner’, left_on=cols, right_on=cols )

För att bättre visualisera denna sammanslagning och kod har jag presenterat skärmdumpen nedan. Du ser hur den andra dataramen ser ut nedan, med First och Last namn, precis som de är i den första dataramen, men med en ny kolumn, Numeric. Sedan har vi specifika kolumner som vi ville slå samman på, samtidigt som vi returnerar kolumner GenderBirthdate, och den nya Numeric kolumn också. Kolumnerna är en lista med kolumner, som är namngiven cols.



Sammanfogar dataram. Skärmdump av författare [5].

 

Som du kan se är detta sätt att slå samman dataramar ett enkelt sätt att uppnå samma resultat som du skulle få från en SQL-fråga.

Sammanfattning

 
 
I den här handledningen såg vi två vanliga frågor eller frågor som du skulle utföra i SQL, men istället har utfört dem med pandas dataramar i Python.

För att sammanfatta, här är de två scenarierna vi arbetade med:

  1. Returnerar procentandelen rader av den totala datamängden från flera villkor
  2. Slår ihop flera specifika kolumner för att returnera en slutlig dataram med en ny kolumn

Jag hoppas att du tyckte att min artikel var både intressant och användbar. Kommentera gärna nedan om du håller med eller inte håller med om dessa metoder. Varför eller varför inte? Dessa kan säkert förtydligas ytterligare, men jag hoppas att jag kunde belysa några av sätten du kan använda pandor och Python istället för SQL. Tack för att du läste!

Kolla gärna in min profil, Matt Przybyla, och andra artiklar, samt nå ut till mig på LinkedIn.

Jag är inte ansluten till dessa företag.

 
Referensprojekt

[1] Foto av Bruce Hong on Unsplash(2018)

[2] M. Przybyla, exempel på dataskärmdump, (2021)

[3] M. Przybyla, skärmdump av villkorskod, (2021)

[4] M. Przybyla, skärmdump av sammanslagna dataramresultat, (2021)

[5] M. Przybyla, skärmdump av sammanslagning av dataram, (2021)

 
Bio: Matthew Przybyla är Senior Data Scientist på Favor Delivery och en frilansande teknisk skribent, särskilt inom datavetenskap.

Ursprungliga. Skickas om med tillstånd.

Relaterat:

Källa: https://www.kdnuggets.com/2021/08/query-pandas-dataframe.html

Tidsstämpel:

Mer från KDnuggets