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. 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. 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. 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: 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. 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. 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. 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. 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: 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. 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. 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. 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. 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. 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. 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: 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: 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. Panda är om annat uttalande
Hur man använder If Else-satser i en Pandas DataFrame
1. .apply-metoden
. 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
3. NumPy .select-metoden
Använd uttalanden om IF-hjälp i pandor för att hitta svaret snabbare.
Ämnen: Vad är Python?