Använd IF-andra-uttalanden i pandor: en praktisk guide [+ exempel] (2023)

En av de främsta fördelarna med programmering är automatisering. Istället för att göra något manuellt ger du instruktioner till en dator som gör uppgiften åt dig.

If-Else-statements gebruiken in Panda's: een praktische gids [+ voorbeelden] (1)

För att säkerställa att programmet returnerar det förväntade resultatet måste du erbjuda explicita guidskenor som instruerar datorn hur du ska svara i olika scenarier.I programmeringen är detta koncept känt som kontrollström.En viktig del av kontrollströmmen är definitionen av datorlogik, och en av de grundläggande metoderna för att erbjuda detta ramverk för ett program är IF-MELS-instruktionen.

pandor är enPytonormBibliotek byggt för att arbeta med relationella data i stor skala.Medan du arbetar med värden som spelas in iPanda-serienOch du kan använda DateFramsen om-annars instruktioner och deras logiska struktur för att kategorisera och manipulera dina data för att avslöja nya insikter.

Låt oss se hur du kan använda om-annars instruktioner i pandor, börja med hur du kan definiera instruktionerna själv.

Panda är om annat uttalande

Innan vi diskuterar användningen av IF-andra-uttalanden i pandor, låter vi basissyntaxen dela.

I det här exemplet har du en serie testresultat och du vill veta hur många värden som ligger över framgången.Du kan inspektera serien nedan.

If-Else-statements gebruiken in Panda's: een praktische gids [+ voorbeelden] (3)

För att få insikt i dina uppgifter kan duför slingaFör att titta på något värde i din serie:

 

pass_count = 0

för nummer i nummerserier:

Om nummer> = 70:

pass_count += 1

Låt oss avbryta alla nivåer i detta uttalande:

  • pass_count = 0: En variabel för att visa resultaten avförslinga med ett tillfälligt värde på0.
  • För nummer i klass_serier: AförLoop som tittar på varje värde (klass) i serien (nummerserien).
  • Om nummer> = 70: Anäruttalande utvärderar eller varjefigurär större än om det är lika med (> =) riktmärket du angav (70).
  • pass_count += 1: Om det logiska uttalandet resulterar i var, då1läggs till den aktuella räkningen som hållspass_count(även kallad upphöjd).

Denna slinga fortsätter tills varje låt är innering_serieshar utvärderats.Du kan sedan skriva ut resultaten till terminalen:

 

print("Antal godkända test:", pass_count)

Utgången är nedan.

If-Else-statements gebruiken in Panda's: een praktische gids [+ voorbeelden] (4)

Om du vill veta motsatsen till antalet akademiker - hur många tester har misslyckats - kan du enkelt lägga till din befintliga om instruktion:

 

pass_count = 0

Misslyckades_point = 0

För nummerseriesnummer:

Om nummer> = 70:

pass_count += 1

anders:

Failed_telling += 1

Här,väntafungerar som en fångst somsomUttalande returnerar falskt.Med andra ord berättar uttalandet om siffran är högre än eller lika med70, ökapass_countdörr1- öka annarsmisslyckasdörr1.Oavsett det faktiska poängvärdet, om det inte uppfyller villkoret inärFörklaring, koden som definieras nedanväntahar avrättats.

Resultaten av den nya instruktionen i IF-elen är nedan.

If-Else-statements gebruiken in Panda's: een praktische gids [+ voorbeelden] (5)

Denna logik fungerar eftersom du har ett binärt tillstånd.Antingen lyckas testet eller inte.Men inte alla scenarier har bara två resultat.I dessa fall kan du bredda de utvärderade förhållandena med ELIF -instruktionen (förkortning av "annars om").

Anta att du vill ta de numeriska testresultaten och hitta deras ekvivalenter för bokstäver.Precis som tidigare är du bara intresserad av aggregerade räkningar kontra de enskilda poängen.

I det här exemplet definierar du enLexikonför att hålla antalet för varje siffra som en egenskap under en variabel:brev_ siffror.Sedan uppdaterar duförspråk mötteseliferaFörklaringar:

 

bokstavssiffror = {

'a_count': 0,

'b_count': 0,

'C_COUNT': 0,

'd_count': 0,

'f_count': 0

}

För nummerseriesnummer:

om siffran >= 90:

Letter_ siffror ['a_count'] += 1

Elif klass >= 80:

Letter_ siffror ['b_count'] += 1

elif betyg >= 70:

letter_numbers['c_count'] += 1

elif betyg >= 60:

Letter_ siffror ['d_count'] += 1

anders:

Letter_ siffror ['f_count'] += 1

Du använder fortfarande ensomförklaring i början och aväntaFörklaring i slutet.Men nu har du treeliferapåståenden mellan dem för att redogöra för ytterligare resultat. Ett testresultat kan utvärderas som ett A, B, C, D eller F, så det binära if-else-satsen från det sista exemplet skulle inte vara tillräckligt.

Avförloop går igenom varje påstående och stannar vid det första villkoret som utvärderas till sant. Det kommer inte att exekvera några efterföljande instruktioner efter det första sanna villkoret, så ett tal som utvärderas till ett A kommer inte också att öka antalet andra egenskaper. Om inget av villkoren är sant,väntapåstående.

Resultatet av att utföra den omfattande för-slingan är nedan.

If-Else-statements gebruiken in Panda's: een praktische gids [+ voorbeelden] (6)

Du har nu sett några användningsfall för if-else-uttalanden i pandor. Föreställ dig dock att du vill dela brevantalet eller godkänd/underkänd data någon annanstans. Du måste exportera inte bara den ursprungliga serien, utan även alla aggregerade variabler (t.ex. letter_grades). Detta kan lätt bli överväldigande om du utför flera beräkningar som en del av din analys.

Det är vanligt att lagra resultaten från utvärderingar i en ny kolumn.Detta skulle konvertera en serie till en dataram eller helt enkelt utöka en befintlig dataram.Låt oss se hur vi kan använda IF-annars uttalanden med dataramar.

Hur man använder If Else-satser i en Pandas DataFrame

1. .apply-metoden

Bäst för: Använd en anpassad funktion med en traditionell IF-ELS-instruktion för att utvärdera kolumner och spara resultaten

Ett av de enklaste sätten att tillämpa om-annars instruktioner på en dataram är med .apply-metoden.Kort sagt,. Tillämpar tillämpas en funktion som du definierar på alla rader eller risungar av en dataram.Du kan definiera din funktion för att returnera ett resultat baserat på villkorade uttalanden.

I det här exemplet har du en dataram med namnen på studenter och deras tillhörande testresultat:

If-Else-statements gebruiken in Panda's: een praktische gids [+ voorbeelden] (7)

Genom att låna logiken som definieras i det sista exemplet kan du tillämpa en anpassad funktion som returnerar bokstavsfiguren som motsvarar varje numerisk testpoäng genom att ringa.att ansöka():

 

Def allocation_letter (rad):

om rad >= 90:

resultat = 'a'

elif rad >= 80:

resultat = 'b'

elif rad >= 70:

resultat = 'C'

Elif rad>=60:

resultat = 'D'

Anders:

resultat = 'f'

returnera resultatet

Grades_df ['LETTER_GRADES'] = Grades_df ['betyg']. Ansök (Assign_Letter)

Först deklarerar du en funktion meddefnyckelord och tilldela funktionen ett namn (tilldela_bokstav) så att du kan skicka det som ett argument.att ansöka().Tillåtelse_letter () tar ett argument (rad), vilket är en tillfällig indikation för de värden som överförs för varje rad i dataramen.

Inutitilldela_bokstav(), har du en if-else-sats som utvärderar radvärdena. Närhelst ett villkor är uppfyllt, den temporära variabelnresultatförklaras som lagrar bokstavsfiguren som en sträng.Eftersom instruktionen if-annars slutar att utföra så snart en instruktion har värdet sant eller harväntahar blivit nådd,resultatreturneras omedelbart och.att ansöka()Går till nästa rad.

.att ansöka()avtilldelas_ brev ()Funktion mot varje rad och sätter ihop en serie av resultaten.I detta fall används indexeringsoperatören ([]) för att specificera det.att ansöka()fokuserar endast på värdena i kolumnen "Figurer" kontra hela raderna påfigurer_dfDataFrame.Anders,tilldelas_ brev ()kommer att försöka utvärdera om studentnamnsträngarna är större än eller lika med de heltal du angav, vilket resulterar i ett TypeError.

Resultatet av att ringa. Apply är nedan.

If-Else-statements gebruiken in Panda's: een praktische gids [+ voorbeelden] (8). Apply -metoden fungerar bra för scenarier med flera villkor, till exempel att bevilja flera bokstäver.Men om utvärderingen är binär kan du förenkla arbetsflödet med. Loc.

2. .loc-metoden

Bäst för: Definiera snabbt enkla logiska uttalanden i några regler

Metoden. LOC är en indexeringsoperatör som du kan använda för att snabbt utvärdera körvärden när tillståndet har ett binärt resultat (det är sant eller det är osant).

I det här exemplet innehåller dataramen numeriska testresultat för studenter och du vill utvärdera vars tester har varit framgångsrika.

If-Else-statements gebruiken in Panda's: een praktische gids [+ voorbeelden] (9)

Till att börja med vänder du kontrollströmmen för om annat instruktion för att tillskriva fångst-alla (annars) värdet först:

 

Grades_df ['godkänd'] = falsk

Här gjorde du en ny kolumn med namnet "Fit" och tilldelade ett universellt värde på boolean till denVals.Du kan se resultatet nedan.

If-Else-statements gebruiken in Panda's: een praktische gids [+ voorbeelden] (10)

Du vet dock att det är osannolikt att varje student (förhoppningsvis) tappade före testet.För att bekräfta detta kan du nu tilldela framgångsförhållandena:

 

Grades_df.loc [grades_df ['betyg']> = 70, 'framgångsrikt'] = där

.loc []används för att söka efter värden under kolumnen "Figurer" där värdet är större än eller lika med 70. Därefter tilldelas det booleska värdetVARtill cellen under kolumnen "passerande" i motsvarande rad, och skriv över den befintligaVals.Utgången skrivs ut nedan.

If-Else-statements gebruiken in Panda's: een praktische gids [+ voorbeelden] (11)

Efter att utvärderingarna är klara kan du se att du har sex godkända prov och endast två underkända prov. Du kan definiera mer än ett villkor med .loc, men det kan snabbt bli opraktiskt att hålla reda på dem i separata satser.

Nu när du är mer bekant med if-annars uttalanden kommer vi att titta på en annan metod för att definiera flera logiska uttalanden: Numpy. Välj metoden.

3. NumPy .select-metoden

Bäst för: utvärdera flera förhållanden med den mest effektiva ledtiden för varje metod

Liksom .apply-metoden låter .select dig definiera flera villkor för att utvärdera DataFrame. Men .select är inte inbyggt i Python. Istället måste du importera NumPy-biblioteket innan du anropar det:

 

Importera pandor som PD

Importera numpy som NP

Nu när du har lagt till din numpy importinstruktion utöver den befintliga pandas import är du redo att använda. Välj.

Detta exempel återgår till användningsfallet för att tilldela bokstäver baserat på testresultat.Den grundläggande dataramen är nedan.

If-Else-statements gebruiken in Panda's: een praktische gids [+ voorbeelden] (12)

Det första steget är att definiera dina villkor:

 

Förhållanden = [

(figures_df ['figurer'] <60),

(Grades_df ['betyg']> = 60) & (grades_df ['betyg'] <70),

(Grades_df ['betyg']> = 70) & (grades_df ['betyg'] <80),

(betyg_df['betyg'] >= 80) och (betyg_df['betyg'] < 90),

(figures_df ['figures'] >= 90)

]

Här förklarar du en variabelbetingelsersom rymmer enlista.Varje tillstånd separeras av ett komma.Notera ampersand (&) som förbinder olika jämförelseoperatörer, vilket indikerar att ett värde måste uppfylla båda specifika villkor.Till exempel måste ett värde i kolumnen "Figurer" vara större än eller lika med (> =).60och mindre än (<)70.

Du förklarar sedan en annan lista över de värden som varje villkor matchar med, i detta fall tecken för bokstavsfigurer:

 

bokstäver = ['f', 'd', 'c', 'b', 'a']

Observera att du måste samordna ordningen på värdena i villkorens ordning.Annorlunda poäng nedan60skulle markeras som "a" och så vidare.

Nu när du har förklarat båda argumenten är du redo att ringa.Välj():

 

Grades_df ['LETTER_GRADES'] = NP.SELECT (villkor, brev)

Här skapar du en ny kolumn märkt "letter_grades" och sätter den lika med resultatet av anropet.Välj()från NumPy (np)-biblioteket. Metoden tarbetingelserjagbrevlistar som argument och returnerar en lista med resultat baserat på utvärdering av varje rad under kolumnen "nummer".

Du kan bekräfta att .select exekveras som förväntat genom att skriva ut DataFrame till terminalen:

If-Else-statements gebruiken in Panda's: een praktische gids [+ voorbeelden] (13)

Den kombinerade koden är nedan.

 

villkor = [

(numbers_df['numbers'] < 60),

(betyg_df['betyg'] >= 60) och (betyg_df['betyg'] < 70),

(Grades_df ['betyg']> = 70) & (grades_df ['betyg'] <80),

(Grades_df ['betyg']> = 80) & (grades_df ['betyg'] <90),

(numbers_df['numbers'] >= 90)

]

bokstäver = ['f', 'd', 'c', 'b', 'a']

Grades_df ['LETTER_GRADES'] = NP.SELECT (villkor, brev)

Den här metoden kräver ett extra bibliotek och har fler regler än .apply-metoden, så du kanske undrar varför det är användbart om det redan finns en metod för att utvärdera flera villkor. Där .select trumfar .apply är i exekveringshastighet.

På en liten DataFrame som dessa exempel som används är omloppstiden mellan var och en av dessa metoder försumbar. Öka dock DataFrame-storleken till tusentals eller tiotusentals rader, och effektiva metoder är avgörande för att snabbt hitta svar.

Den här videon av Datagy ger en live -demo av de tre metoderna som vi hittills har bedömt och till och med går igenom ett avancerat användarscenario för att tilldela värdena på en Python -ordbok till en dataram:

Använd uttalanden om IF-hjälp i pandor för att hitta svaret snabbare.

Instruktioner i om elegant är en grundläggande del av kontrollströmmen vid programmering.När det gäller dataanalys i PANDAS erbjuder de ett praktiskt sätt att segmentera data och producera nya insikter.Python, i kombination med sina pandor och numpy-bibliotek, erbjuder olika strategier för att inkludera om-andra-uttalanden och deras underliggande logik i din analys för att bättre förstå och tillämpa dina data på dina mest brådskande affärsutmaningar.

Ämnen: Vad är Python?

Top Articles
Latest Posts
Article information

Author: Edmund Hettinger DC

Last Updated: 19/07/2023

Views: 6541

Rating: 4.8 / 5 (58 voted)

Reviews: 81% of readers found this page helpful

Author information

Name: Edmund Hettinger DC

Birthday: 1994-08-17

Address: 2033 Gerhold Pine, Port Jocelyn, VA 12101-5654

Phone: +8524399971620

Job: Central Manufacturing Supervisor

Hobby: Jogging, Metalworking, Tai chi, Shopping, Puzzles, Rock climbing, Crocheting

Introduction: My name is Edmund Hettinger DC, I am a adventurous, colorful, gifted, determined, precious, open, colorful person who loves writing and wants to share my knowledge and understanding with you.