Tillämpa Pythons Explode-funktion på Pandas DataFrames

Källnod: 1851925

By Michael Mosesov, Dataanalytiker



Inledande csv-fil

 

I vårt fall skulle vi använda en historisk datauppsättning av ryska ledare sedan grundandet av det ryska imperiet 1696, särskilt deras namn, förkortning av regeringen och år vid makten. Syftet skulle vara att klona/explodera datamängden, så att varje guvernör kunde nås varje år. Till exempel skulle det aktuella datasetformatet inte visa vem som var ledaren år 1700 om du försöker komma åt den raden.

Detta kan lösas genom att sprida kolumnen "År" med ett bindestreck (-) mellan två datum.

Vårt mål är att omvandla varje element i en listliknande till en rad, samtidigt som vi behåller samma index som tilldelades av Python till varje rad.

Ps Det var ungefär 5 år mellan 1917 och 1922 av inbördeskrig utan en enda officiell stat.

Pss Datauppsättningen skars ner för att hålla i cirka 300 år, det fanns fler ledare i Ryssland sedan 862.

I början importerar vi Pandas-biblioteket till Jupyter Notebook och tar en titt på den första och sista raden av våra data. Det första steget i datamanipulationsprocessen är att skapa en dataram med hjälp av pd.DataFrame:



Snabb förhandsgranskning av Jupyter Notebook-data

 

Funktionen explode() används för att omvandla varje element i en listliknande till en rad, därför är vår första uppgift att skapa en lista, separerad med kommatecken, över värdena i kolumnen "Years".

Men innan dess är det viktigt att göra alla värden numeriska i kolumnen "År". Baserat på observationen av den sista raden ser vi att det krävs extra redigering för att Python ska kunna tillämpa exploderingsfunktionen och sprida årtal i kolumnen "Years", konvertera alla värden till siffror, vilket innebär att ersätta "nuvarande" med ”2021”, eftersom detta är året då artikeln skrivs.

Ersättning av värden i sådana fall kan göras med lambda()-funktionen och x.replace, som visas i koden nedan fungerar det också för alla värden i dataramen om du behöver ändra det i många rader.



Lambdafunktionen hjälper till att ersätta värden i dataramar av valfri storlek och rader var som helst

 

Nästa steg är att dela upp datumen i kolumnen "År" med ett bindestreck för att expandera/splaya dataramen. Syftet med åtgärden, som nämnts ovan, är att automatiskt sprida och utöka bindestrecket mellan de två åren. Följande funktioner skulle hjälpa oss att skapa listor med datum som är avgränsade med kommatecken istället för bindestreck:



Även om dessa steg kan göras separat, tillåter Python att passa dem i en kodrad

 

Följande resultat bör visas efter manipuleringen med dataramen:



Efter att ha försäkrat att alla våra värden i raderna i kolumnen "År" är i formatet listor, kan vi äntligen tillämpa exploderingsfunktionen på hela datamängden.



Resultat av applicerad explode() funktion till hela dataramen

 

Nu kan vi se resultatet av exploderingsfunktionen som kan användas i de fall som följande när det finns ett behov av att sprida och utöka kolumnen i din dataram och göra den mer tillgänglig. Reset_index() kan användas om det finns ett behov av ett extra index utöver det som ursprungligen tilldelades den unika raden. Det är också viktigt att skapa en ny "exploderad" pd.DataFrame för att spara resultaten till datamängder i csv-format:



Sparar ny, exploderad dataram

 

Som ett resultat av explode() har datumen i kolumnen "Years" spridits ut över datamängden och nu representerar varje år av styrning av varje ledare en ny rad. Dessförinnan tillät funktioner som lambda(), list() och map() oss att spara tid och automatiskt utöka värdena (i vårt fall år) mellan datumen. Ett sådant tillvägagångssätt är användbart när man manipulerar med datum och kan enkelt tillämpas på små eller stora datamängder inom alla områden.

Nedan är förhandsvisningen av exporterade datamängder i csv. Medan initialt "index" lämnades tilldelat varje unikt värde (från spridda "Years"), finns det ett tillagt index till vänster för var och en av 348 rader:



Förhandsvisning av den slutliga redigerade versionen

 
Bio: Michael Mosesov är en dataanalytiker i Ryssland.

Ursprungliga. Skickas om med tillstånd.

Relaterat:

Källa: https://www.kdnuggets.com/2021/05/applying-pythons-explode-function-pandas-dataframes.html

Tidsstämpel:

Mer från KDnuggets