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
- Bevezetés
- Több feltétel
- Egyesítés több, meghatározott oszlopon
- Összegzésként
- 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 Gender
, Birthdate
, é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:
- A sorok százalékos arányának visszaadása a teljes adatkészletből több feltételből
- 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ó:
Legnépszerűbb történetek az elmúlt 30 napból | |||
---|---|---|---|
|
Forrás: https://www.kdnuggets.com/2021/08/query-pandas-dataframe.html
- "
- &
- 2021
- Minden termék
- elemző
- analitika
- cikkben
- cikkek
- auto
- kód
- Oszlop
- Közös
- Companies
- dátum
- adatfeldolgozás
- adat-tudomány
- adattudós
- mély tanulás
- kézbesítés
- Igazgató
- mérnök
- Mérnökök
- hamisítvány
- Fields
- vezetéknév
- formátum
- Ingyenes
- szabadúszó
- funkció
- nem
- GPU
- itt
- Hogyan
- How To
- HTTPS
- IT
- csatlakozik
- nyelv
- TANUL
- tanulás
- fény
- vonal
- Lista
- gépi tanulás
- ML
- nevek
- online
- nyitva
- nyílt forráskódú
- érdekében
- Más
- perspektíva
- be
- profil
- Programozás
- Piton
- Eredmények
- Tudomány
- tudósok
- megosztott
- Egyszerű
- készségek
- So
- SOLVE
- Spot
- SQL
- TÖRTÉNETEK
- Műszaki
- tippek
- felső
- oktatói
- oktatóanyagok
- WHO
- író
- X