Pandas merge() – Fletning af to DataFrame-objekter

Introduktion

Pandas er et robust og populært bibliotek til dataanalyse og manipulation i Python. En af dets kernefunktioner er merge()-metoden, som giver mulighed for at flette data fra flere DataFrame-objekter baseret på fælles kolonner. Fusion af data frames er et vigtigt trin i mange dataanalyseopgaver, såsom at kombinere data fra forskellige kilder, tilføje yderligere oplysninger til eksisterende data og udføre sammenligninger mellem flere data sæt.

Forståelse af merge()-metoden

merge()-metoden tager to eller flere DataFrame-objekter som input og returnerer et enkelt DataFrame-objekt, hvor rækkerne er flettet baseret på en eller flere fælles kolonner. Fusionen kan udføres ved hjælp af forskellige join-typer, herunder indre fusion, venstre fusion, højre fusion og ydre fusion.

Grundlæggende syntaks

Den grundlæggende syntaks for merge()-metoden er som følger:


merge(right, on=None, left_on=None, right_on=None, left_index=False, right_index=False, how='inner', suffixes=('_x', '_y'), copy=True, indicator=False, validate=None)

Parametre:

* right: DataFrame-objektet, der skal flettes
* on: En kolonne eller en liste over kolonner, der bruges til at udføre fusionen
left_on:** Kolonner i det venstre DataFrame-objekt, der skal bruges til fusionen (hvis *on ikke er angivet)
right_on:** Kolonner i det højre DataFrame-objekt, der skal bruges til fusionen (hvis *on ikke er angivet)
* left_index: Booleansk værdi, der angiver, om venstre DataFrame-objekts indeks skal bruges til fusionen
* right_index: Booleansk værdi, der angiver, om højre DataFrame-objekts indeks skal bruges til fusionen
* how: Typ af fusion, der skal udføres (indvendig, venstre, højre, ydre)
* suffixes: Suffikster, der skal tilføjes til kolonnenavne i tilfælde af overlap
* copy: Booleansk værdi, der angiver, om de originale DataFrame-objekter skal kopieres, før de flettes
* indicator: Booleansk værdi, der angiver, om en indikator kolonne skal tilføjes til det flettede DataFrame-objekt for at angive, hvilken tabel hver række stammer fra
* validate: Niveau af validering, der skal udføres på de fældede data (f.eks. “en-til-en” eller “en-til-mange”)

Join-typer

merge()-metoden understøtter fire hovedtyper af fusioner:

1. Indre fusion (inner join)

Indre fusion resulterer i et DataFrame-objekt, der kun indeholder rækker, der findes i begge de flettede DataFrame-objekter. Rækker, der ikke matcher i begge DataFrame-objekter, udelukkes fra det flettede resultat.

2. Venstre fusion (left join)

Venstre fusion resulterer i et DataFrame-objekt, der indeholder alle rækker fra venstre DataFrame-objekt og matcherækker fra højre DataFrame-objekt. Rækker i venstre DataFrame-objekt, der ikke har matchende rækker i højre DataFrame-objekt, inkluderes i det flettede resultat med null-værdier for de manglende kolonner.

3. Højre fusion (right join)

Højre fusion fungerer på samme måde som venstre fusion, men bytter venstre og højre DataFrame-objekter. Det resulterer i et DataFrame-objekt, der indeholder alle rækker fra højre DataFrame-objekt og matcherækker fra venstre DataFrame-objekt. Rækker i højre DataFrame-objekt, der ikke har matchende rækker i venstre DataFrame-objekt, inkluderes i det flettede resultat med null-værdier for de manglende kolonner.

4. Ydre fusion (outer join)

Ydre fusion resulterer i et DataFrame-objekt, der indeholder alle rækker fra både venstre og højre DataFrame-objekter, uafhængigt af om de har matchende rækker. Rækker, der ikke har matchende rækker i den anden DataFrame-objekt, inkluderes i det flettede resultat med null-værdier for de manglende kolonner.

Brugssager

merge()-metoden bruges i forskellige scenarier, herunder:

* Kombinering af data fra flere kilder
* Tilknytning af yderligere oplysninger til eksisterende data
* Sammenligning af data fra flere data sæt
* Udførelse af gruppeoperationer på flettede data
* Oprettelse af nye funktioner og variabler baseret på flettede data

Eksempler

Lad os gennemgå nogle eksempler på, hvordan merge()-metoden kan bruges til at flette DataFrame-objekter:

Eksempel 1: Indre fusion

Følgende eksempel viser en indre fusion af to DataFrame-objekter kaldet df1 og df2, der deler en fælles kolonne kaldet “id”:

python
import pandas as pd

df1 = pd.DataFrame({'id': [1, 2, 3], 'navn': ['Alice', 'Bob', 'Charlie']})
df2 = pd.DataFrame({'id': [2, 3, 4], 'alder': [25, 30, 35]})

df_merged = pd.merge(df1, df2, on='id')

print(df_merged)

Output:


id navn alder
0 2 Bob 25
1 3 Charlie 30

Eksempel 2: Venstre fusion

Følgende eksempel viser en venstre fusion af to DataFrame-objekter kaldet df1 og df2, der deler en fælles kolonne kaldet “name”:

python
import pandas as pd

df1 = pd.DataFrame({'navn': ['Alice', 'Bob', 'Charlie'], 'alder': [20, 25, 30]})
df2 = pd.DataFrame({'navn': ['Alice', 'Dave'], 'køn': ['kvinde', 'mand']})

df_merged = pd.merge(df1, df2, left_on='navn', right_on='navn')

print(df_merged)

Output:


navn alder køn
0 Alice 20 kvinde
1 Bob 25 NaN
2 Charlie 30 NaN

Eksempel 3: Højre fusion

Følgende eksempel viser en højre fusion af to DataFrame-objekter kaldet df1 og df2, der deler en fælles kolonne kaldet “navn”:

python
import pandas as pd

df1 = pd.DataFrame({'navn': ['Alice', 'Bob', 'Charlie'], 'alder': [20, 25, 30]})
df2 = pd.DataFrame({'navn': ['Alice', 'Dave'], 'køn': ['kvinde', 'mand']})

df_merged = pd.merge(df1, df2, right_on='navn', left_on='navn')

print(df_merged)

Output:


navn alder køn
0 Alice 20 kvinde
1 Alice NaN kvinde
2 Bob 25 NaN
3 Charlie 30 NaN
4 Dave NaN mand

Eksempel 4: Ydre fusion

Følgende eksempel viser en ydre fusion af to DataFrame-objekter kaldet df1 og df2, der deler en fælles kolonne kaldet “navn”:

python
import pandas as pd

df1 = pd.DataFrame({'navn': ['Alice', 'Bob', 'Charlie'], 'alder': [20, 25, 30]})
df2 = pd.DataFrame({'navn': ['Alice', 'Dave'], 'køn': ['kvinde', 'mand']})

df_merged = pd.merge(df1, df2, on='navn', how='outer')

print(df_merged)

Output:


navn alder køn
0 Alice 20 kvinde
1 Bob 25 NaN
2 Charlie 30 NaN
3 Dave NaN mand

Konklusion

merge()-metoden i Pandas er et kraftfuldt værktøj, der giver mulighed for fleksibel og effektiv fletning af DataFrame-objekter baseret på fælles kolonner. Ved at forstå de forskellige join-typer og muligheder

  Hvordan smartphones stjæler din opmærksomhed, og hvordan du beskytter din mentale sundhed