I många verkliga situationer kommer data som vi vill använda i flera filer. Vi har ofta ett behov av att kombinera dessa filer till en enda DataFrame för att analysera data. Pandas tillhandahåller sådana faciliteter för att enkelt kunna kombinera Series eller DataFrame med olika typer av uppsättningslogik för indexen och relationsalgebrafunktioner i fallet med operationer av typen join/merge. Vi kan också kombinera data från flera tabeller i Pandas . Dessutom tillhandahåller pandor också verktyg för att jämföra två serier eller DataFrame och sammanfatta deras skillnader.
Sammanfoga dataramar i Pandas
Concat()-funktionen i Pandas används för att lägga till antingen kolumner eller rader från en DataFrame till en annan. De Pandas concat() funktion gör allt det tunga lyftet med att utföra sammanlänkningsoperationer längs en axel samtidigt som man utför valfri inställningslogik (förening eller skärning) av indexen (om några) på de andra axlarna.
Python3
import> pandas as pd> # First DataFrame> df1>=> pd.DataFrame({>'id'>: [>'A01'>,>'A02'>,>'A03'>,>'A04'>],> >'Name'>: [>'ABC'>,>'PQR'>,>'DEF'>,>'GHI'>]})> # Second DataFrame> df2>=> pd.DataFrame({>'id'>: [>'B05'>,>'B06'>,>'B07'>,>'B08'>],> >'Name'>: [>'XYZ'>,>'TUV'>,>'MNO'>,>'JKL'>]})> frames>=> [df1, df2]> result>=> pd.concat(frames)> display(result)> |
>
>
Produktion:
id Name 0 A01 ABC 1 A02 PQR 2 A03 DEF 3 A04 GHI 0 B05 XYZ 1 B06 TUV 2 B07 MNO 3 B08 JKL>
Går med i DataFrames i Pandas
När vi sammanfogade våra DataFrames la vi dem helt enkelt till varandra, dvs staplade dem antingen vertikalt eller sida vid sida. Ett annat sätt att kombinera DataFrames är att använda kolumner i varje datauppsättning som innehåller gemensamma värden (ett gemensamt unikt id). Att kombinera DataFrames med ett gemensamt fält kallas sammanfogning. Kolumnerna som innehåller de gemensamma värdena kallas join-nyckel(ar). Att sammanfoga DataFrames på detta sätt är ofta användbart när en DataFrame är en uppslagstabell som innehåller ytterligare data som vi vill inkludera i den andra.
Notera: Denna process att sammanfoga tabeller liknar vad vi gör med tabeller i en SQL-databas .
När du limmar ihop flera DataFrames har du ett val av hur du ska hantera de andra axlarna (andra än den som sammanfogas). Detta kan göras på följande två sätt:
- Ta föreningen av dem alla, join=’outer’. Detta är standardalternativet eftersom det resulterar i noll informationsförlust.
- Ta korsningen, join=’inre’.
Exempel: Inre koppling av två dataramar med hjälp av concat()-metoden
I det här exemplet, två pandor DataFrames,df1>ochdf3>, sammanlänkas med hjälp av en inre koppling baserat på deras index. Den resulterande DataFrame, som heter 'result', innehåller endast rader där kolumnen 'id' indf1>matchar kolumnen 'Stad' idf3>.
Python3
java öppen fil
import> pandas as pd> df1>=> pd.DataFrame({>'id'>: [>'A01'>,>'A02'>,>'A03'>,>'A04'>],> >'Name'>: [>'ABC'>,>'PQR'>,>'DEF'>,>'GHI'>]})> df3>=> pd.DataFrame({>'City'>: [>'MUMBAI'>,>'PUNE'>,>'MUMBAI'>,>'DELHI'>],> >'Age'>: [>'12'>,>'13'>,>'14'>,>'12'>]})> # the default behaviour is join='outer'> # inner join> result>=> pd.concat([df1, df3], axis>=>1>, join>=>'inner'>)> display(result)> |
>
>
Produktion:
id Name City Age 0 A01 ABC MUMBAI 12 1 A02 PQR PUNE 13 2 A03 DEF MUMBAI 14 3 A04 GHI DELHI 12>
Sammanfoga med append() Funktion
En användbar genväg till concat() är append()-instansmetoden på Series och DataFrame. Denna metod kan användas för att kombinera data från flera tabeller i Pandas. Dessa metoder föregick faktiskt konkat.
Exempel 1: Kombinera två dataramar med metoden append().
I det här exemplet, två Pandas DataFrames,df1>ochdf2>, kombineras med hjälp avappend>metod, vilket resulterar i en ny DataFrame med namnet 'resultat'. Den resulterande DataFrame innehåller alla rader från bådadf1>ochdf2>, med ett kontinuerligt index.
tredje normalformen
Python3
import> pandas as pd> # First DataFrame> df1>=> pd.DataFrame({>'id'>: [>'A01'>,>'A02'>,>'A03'>,>'A04'>],> >'Name'>: [>'ABC'>,>'PQR'>,>'DEF'>,>'GHI'>]})> # Second DataFrame> df2>=> pd.DataFrame({>'id'>: [>'B05'>,>'B06'>,>'B07'>,>'B08'>],> >'Name'>: [>'XYZ'>,>'TUV'>,>'MNO'>,>'JKL'>]})> # append method> result>=> df1.append(df2)> display(result)> |
>
>
Produktion:
id Name 0 A01 ABC 1 A02 PQR 2 A03 DEF 3 A04 GHI 0 B05 XYZ 1 B06 TUV 2 B07 MNO 3 B08 JKL>
Notera: append() kan ta flera objekt för att sammanfoga.
Exempel 2: Kombinera data från flera tabeller i pandor
I det här exemplet, tre Pandas DataFrames,df1>,df2>, ochdf3>, läggs ihop med hjälp avappend>metod. Den resulterande DataFrame med namnet 'result' kombinerar alla rader från de tre DataFrames och upprätthåller ett kontinuerligt index.
Python3
import> pandas as pd> # First DataFrame> df1>=> pd.DataFrame({>'id'>: [>'A01'>,>'A02'>,>'A03'>,>'A04'>],> >'Name'>: [>'ABC'>,>'PQR'>,>'DEF'>,>'GHI'>]})> # Second DataFrame> df2>=> pd.DataFrame({>'id'>: [>'B05'>,>'B06'>,>'B07'>,>'B08'>],> >'Name'>: [>'XYZ'>,>'TUV'>,>'MNO'>,>'JKL'>]})> df3>=> pd.DataFrame({>'City'>: [>'MUMBAI'>,>'PUNE'>,>'MUMBAI'>,>'DELHI'>],> >'Age'>: [>'12'>,>'13'>,>'14'>,>'12'>]})> # appending multiple DataFrame> result>=> df1.append([df2, df3])> display(result)> |
>
>
Produktion:
id Name City Age 0 A01 ABC NaN NaN 1 A02 PQR NaN NaN 2 A03 DEF NaN NaN 3 A04 GHI NaN NaN 0 B05 XYZ NaN NaN 1 B06 TUV NaN NaN 2 B07 MNO NaN NaN 3 B08 JKL NaN NaN 0 NaN NaN MUMBAI 12 1 NaN NaN PUNE 13 2 NaN NaN MUMBAI 14 3 NaN NaN DELHI 12>