Mennyire erősíti fel az innováció a technikában az alkalmazásfejlesztési szektort? 1

Hogyan kérdezze le a Pandas adatkeretét

Forrás csomópont: 1017694

Hogyan kérdezze le a Pandas adatkeretét

A Data Scientist perspektívája az SQL-szerű Python-függvényekről.


By Matthew Przybyla, vezető adattudós a Favor Deliverynél



Fotó Bruce Hong on Unsplash [1].

Tartalomjegyzék

 
 

  1. Bevezetés
  2. Több feltétel
  3. Egyesítés több, meghatározott oszlopon
  4. Összegzésként
  5. Referenciák

Bevezetés

 
 
Akár adatmérnökről/adatelemzőről vált át, akár hatékonyabb adattudóssá szeretne válni, az adatkeret lekérdezése igen hasznos módszernek bizonyulhat a kívánt sorok visszaadására. Fontos megjegyezni, hogy van egy speciális lekérdező funkció a pandák számára, megfelelő elnevezéssel, query. Ehelyett azonban az adatok lekérdezésének, szűrésének és egyesítésének más módjait fogom tárgyalni. Bemutatjuk azokat a gyakori forgatókönyveket vagy kérdéseket, amelyeket az adataival kapcsolatban feltesz, és SQL helyett Python segítségével tesszük meg. Az alábbi bekezdésekben felvázolok néhány egyszerű módot a pandas adatkeret sorainak lekérdezésére a Python programozási nyelvvel.

Több feltétel

 
 



Minta adat. Képernyőkép a szerzőtől [2].

 

Adattudósként vagy adatelemzőként meghatározott adatsorokat szeretnénk visszaadni. Az egyik ilyen forgatókönyv az, amikor több feltételt szeretne alkalmazni, mindegyiket ugyanabban a kódsorban. Példám bemutatása érdekében létrehoztam néhány hamis kereszt- és vezetéknév-mintaadatot, valamint ezek nemét és születési dátumát. Ezek az adatok fent láthatók a képernyőképen.

A példa több feltétele lényegében egy adott kérdésre válaszol, akárcsak az SQL használatakor. A kérdés az, hogy adataink hány százaléka férfi nem OR 2010 és 2021 között született személy.

Itt van a kód, amely megoldja ezt a kérdést (van néhány módja ennek a kérdésnek a megválaszolására, de itt van az én konkrét módszerem):

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), “%”)

A kód jobb megjelenítése érdekében a kimenettel/eredménnyel együtt ezt a képernyőképet is mellékeltem ugyanarról a kódról fentről. Ezeket a feltételeket alkalmazhatja a tényleges sorok visszaadásához is, ahelyett, hogy a sorok töredékét vagy százalékát venné ki az összes sorból.



Feltételek kódja. Képernyőkép a szerzőtől [3].

 

Íme az általunk végrehajtott parancsok sorrendje:

  • Vissza a sorokat a férfi karakterrel Gender
  • Tartalmazza a OR funkció |
  • Adja vissza a sorait Birthdate > 2010 és 2021
  • Kombinálja ezeket, majd ossza el a sorok teljes számával

Amint láthatja, ez a kód hasonló ahhoz, amit az SQL-ben láthat. Személy szerint úgy gondolom, hogy pandáknál könnyebb, mert kevesebb kódot tartalmazhat, miközben vizuálisan is láthatja az összes kódot egy helyen, anélkül, hogy fel-le kellene görgetnie (de ez a formátum csak az én preferenciám).

Egyesítés több, meghatározott oszlopon

 
 



Egyesített adatkeret eredménye. Képernyőkép a szerzőtől [4].

 

Valószínűleg más oktatóanyagokban láttuk már, hogyan lehet adatkereteket egyesíteni, ezért szerettem volna hozzáadni egy olyan egyedi megközelítést, amelyet nem igazán láttam ott, amely több, meghatározott oszlopon való összevonás. Ebben a forgatókönyvben két olyan adatkeretet szeretnénk összekapcsolni, ahol két mező van megosztva közöttük. Megállapítható, hogy ha még több oszlop van, akkor ez a módszer még hasznosabb lehet.

Megvan az első adatkeretünk, ami a df, majd az oszlopainkat egy második adatkereten, a df2-ben egyesítjük. Ez a kód a várt eredmény eléréséhez:

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

Az összevonás és a kód jobb megjelenítéséhez az alábbi képernyőképet mutattam be. Alább láthatja, hogyan néz ki a második adatkeret, a First és a Last nevek, ugyanúgy, mint az első adatkeretben, de új oszloppal, Numeric. Ezután meghatározott oszlopokat akarunk egyesíteni, miközben oszlopokat adunk vissza GenderBirthdate, és az új Numeric oszlopot is. Az oszlopok oszlopok listája, amelynek neve van cols.



Adatkeret egyesítése. Képernyőkép a szerzőtől [5].

 

Amint láthatja, az adatkeretek egyesítésének ez a módja egy egyszerű módja annak, hogy ugyanazokat az eredményeket érje el, amelyeket egy SQL-lekérdezés esetén kapna.

Összegzésként

 
 
Ebben az oktatóanyagban két gyakori kérdést vagy lekérdezést láttunk, amelyeket SQL-ben kell végrehajtani, de ehelyett Pythonban pandas adatkeretekkel hajtotta végre.

Összefoglalva, itt van a két forgatókönyv, amellyel dolgoztunk:

  1. A sorok százalékos arányának visszaadása a teljes adatkészletből több feltételből
  2. Egyesítés több, meghatározott oszlopon, hogy egy végleges adatkeretet adjon vissza egy új oszloppal

Remélem, cikkemet érdekesnek és hasznosnak találtad. Kérjük, kommentálja alább, ha egyetért vagy nem ért egyet ezekkel a módszerekkel. Miért vagy miért nem? Ezeket minden bizonnyal még tovább lehet tisztázni, de remélem, sikerült rávilágítanom arra, hogy miként használhatod a pandákat és a Pythont SQL helyett. Köszönöm hogy elolvastad!

Kérem, nézze meg profilomat, Matt Przybyla, és más cikkek, valamint keressen meg engem a LinkedIn-en.

Nem állok kapcsolatban ezekkel a cégekkel.

 
Referenciák

[1] Fotó: Bruce Hong on Unsplash(2018)

[2] M. Przybyla, mintaadatok képernyőképe, (2021)

[3] M. Przybyla, a feltételek kódjának képernyőképe, (2021)

[4] M. Przybyla, egyesített adatkeret eredmény képernyőképe, (2021)

[5] M. Przybyla, egyesítő adatkeret képernyőkép, (2021)

 
Bio: Matthew Przybyla a Favor Delivery vezető adattudósa és szabadúszó műszaki író, különösen az adattudomány területén.

eredeti. Engedéllyel újra közzétéve.

Kapcsolódó:

Forrás: https://www.kdnuggets.com/2021/08/query-pandas-dataframe.html

Időbélyeg:

Még több KDnuggets