Beskrivning
Som dataanalytiker är det vårt ansvar att säkerställa dataintegritet för att få korrekta och pålitliga insikter. Datarensning spelar en viktig roll i denna process, och dubbletter av värden är bland de vanligaste problemen som dataanalytiker stöter på. Dubblettvärden kan potentiellt ge felaktiga insikter. Därför är det avgörande att ha effektiva metoder för att hantera dubbletter av värden. I den här artikeln kommer vi att lära oss hur du identifierar och hanterar dubbletter av värden, samt bästa praxis för att hantera dubbletter.
Identifiera dubbletter av värden
Det första steget i att hantera dubbletter av värden är att identifiera dem. Att identifiera dubbletter av värden är ett viktigt steg i datarensningen. Pandas erbjuder flera metoder för att identifiera dubbletter av värden inom en dataram. I det här avsnittet kommer vi att diskutera duplicated()
funktion och value_counts()
funktion för att identifiera dubbletter av värden.
usin duplicerad()
Smakämnen duplicated()
funktion är en Pandas biblioteksfunktion som söker efter dubbletter av rader i en DataFrame. Utgången av duplicated()
funktion är en boolesk serie med samma längd som indataramen, där varje element indikerar om motsvarande rad är en dubblett eller inte.
Låt oss överväga ett enkelt exempel på duplicated()
fungera:
import pandas as pd data = { 'StudentName': ['Mark', 'Ali', 'Bob', 'John', 'Johny', 'Mark'], 'Score': [45, 65, 76, 44, 39, 45]
}
df = pd.DataFrame(data) df_duplicates = df.duplicated()
print(df_duplicates)
Produktion:
0 False
1 False
2 False
3 False
4 False
5 True
dtype: bool
I exemplet ovan skapade vi en DataFrame som innehåller namnen på eleverna och deras totala poäng. Vi åberopade duplicated()
på DataFrame, som genererade en boolesk serie med False
representerar unika värden och True
representerar dubbla värden.
I det här exemplet anses den första förekomsten av värdet vara unik. Men vad händer om vi vill att det sista värdet ska betraktas som unikt och vi inte vill ta hänsyn till alla kolumner när vi identifierar dubbletter av värden? Här kan vi ändra duplicated()
funktion genom att ändra parametervärdena.
Parametrar: Subset och Keep
Smakämnen duplicated()
funktionen erbjuder anpassningsalternativ genom sina valfria parametrar. Den har två parametrar, som beskrivs nedan:
-
subset
: Den här parametern gör det möjligt för oss att ange delmängden av kolumner som ska beaktas vid dubblettdetektering. Delmängden är inställd påNone
som standard, vilket innebär att varje kolumn i DataFrame beaktas. För att ange kolumnnamn kan vi förse delmängden med en lista med kolumnnamn.Här är ett exempel på hur du använder delmängdsparametern:
df_duplicates = df.duplicated(subset=['StudentName'])
Produktion:
0 False 1 False 2 False 3 False 4 False 5 True dtype: bool
-
keep
: Det här alternativet låter oss välja vilken instans av dubblettraden som ska markeras som en dubblett. De möjliga värdena för keep är:"first"
: Detta är standardvärdet förkeep
alternativ. Den identifierar alla dubbletter utom den första förekomsten, med tanke på att det första värdet är unikt."last"
: Det här alternativet identifierar den senaste förekomsten som ett unikt värde. Alla andra händelser kommer att betraktas som dubbletter.False
: Detta alternativ markerar varje instans som ett dubblettvärde.
Här är ett exempel på hur du använder keep
parameter:
df_duplicates = df.duplicated(keep='last')
print(df_duplicates)
Produktion:
0 True
1 False
2 False
3 False
4 False
5 False
dtype: bool
Visualisera dubbletter av värden
Smakämnen value_counts()
funktion är den andra metoden för att identifiera dubbletter. De value_counts()
funktion räknar antalet gånger varje unikt värde visas i en kolumn. Genom att tillämpa value_counts()
funktion till en specifik kolumn, kan frekvensen för varje värde visualiseras.
Här är ett exempel på hur du använder value_counts()
fungera:
import matplotlib.pyplot as plt
import pandas as pd data = { 'StudentName': ['Mark', 'Ali', 'Bob', 'John', 'Johny', 'Mark'], 'Score': [45, 65, 76, 44, 39, 45]
}
df = pd.DataFrame(data) name_counts = df['StudentName'].value_counts()
print(name_counts)
Produktion:
Mark 2
Ali 1
Bob 1
John 1
Johny 1
Name: StudentName, dtype: int64
Låt oss nu visualisera dubbletter av värden med ett stapeldiagram. Vi kan effektivt visualisera frekvensen av dubbletter av värden med hjälp av ett stapeldiagram.
name_counts.plot(kind='bar')
plt.xlabel('Student Name')
plt.ylabel('Frequency')
plt.title('Duplicate Name Frequencies')
plt.show()
Hantera dubbletter av värden
Efter att ha identifierat dubbla värden är det dags att ta itu med dem. I det här avsnittet kommer vi att utforska olika strategier för att ta bort och uppdatera dubbletter av värden med hjälp av pandorna drop_duplicates()
och replace()
funktioner. Dessutom kommer vi att diskutera aggregering av data med dubbletter av värden med hjälp av groupby()
funktion.
Ta bort dubbletter av värden
Den vanligaste metoden för att hantera dubbletter är att ta bort dem från DataFrame. För att eliminera dubbletter av poster från DataFrame kommer vi att använda drop_duplicates()
fungera. Som standard behåller den här funktionen den första instansen av varje dubblettrad och tar bort de efterföljande förekomsterna. Den identifierar dubbletter av värden baserat på alla kolumnvärden; Vi kan dock ange vilken kolumn som ska övervägas med hjälp av delmängdsparametrar.
Syntax för drop_duplicates()
med standardvärden i parametrar är följande:
dataFrame.drop_duplicates(subset=None, keep='first', inplace=False)
Smakämnen subset
och keep
parametrar har samma förklaring som i duplicates()
. Om vi ställer in den tredje parametern inplace
till True
, kommer alla ändringar att utföras direkt på den ursprungliga DataFrame, vilket resulterar i att metoden returnerar None
och den ursprungliga DataFrame som modifieras. Som standard, inplace
is False
.
Här är ett exempel på drop_duplicates()
fungera:
df.drop_duplicates(keep='last', inplace=True)
print(df)
Produktion:
StudentName Score
1 Ali 65
2 Bob 76
3 John 44
4 Johny 39
5 Mark 45
Kolla in vår praktiska, praktiska guide för att lära dig Git, med bästa praxis, branschaccepterade standarder och medföljande fuskblad. Sluta googla Git-kommandon och faktiskt lära Det!
I exemplet ovan raderades den första posten eftersom den var en dubblett.
Ersätt eller uppdatera dubblettvärden
Den andra metoden för att hantera dubbletter innebär att ersätta värdet med Pandas replace()
fungera. De replace()
funktion låter oss ersätta specifika värden eller mönster i en DataFrame med nya värden. Som standard ersätter den alla instanser av värdet. Men genom att använda limit-parametern kan vi begränsa antalet ersättningar.
Här är ett exempel på hur du använder replace()
fungera:
df['StudentName'].replace('Mark', 'Max', limit=1, inplace=True)
print(df)
Produktion:
StudentName Score
0 Max 45
1 Ali 65
2 Bob 76
3 John 44
4 Johny 39
5 Mark 45
Här användes gränsen för att ersätta det första värdet. Vad händer om vi vill ersätta den senaste förekomsten? I det här fallet kommer vi att kombinera duplicated()
och replace()
funktioner. Använder sig av duplicated()
, kommer vi att indikera den sista instansen av varje dubblettvärde, skaffa radnumret med hjälp av loc
funktionen och ersätt den sedan med replace()
fungera. Här är ett exempel på användning duplicated()
och replace()
fungerar tillsammans.
last_occurrences = df.duplicated(subset='StudentName', keep='first') last_occurrences_rows = df[last_occurrences] df.loc[last_occurrences, 'StudentName'] = df.loc[last_occurrences, 'StudentName'].replace('Mark', 'Max') print(df)
Produktion:
StudentName Score
0 Mark 45
1 Ali 65
2 Bob 76
3 John 44
4 Johny 39
5 Max 45
Anpassade funktioner för komplexa ersättningar
I vissa fall kräver hantering av dubbletter av värden mer komplicerade ersättningar än att bara ta bort eller uppdatera dem. Anpassade funktioner gör det möjligt för oss att skapa specifika ersättningsregler skräddarsydda efter våra behov. Genom att använda pandorna apply()
funktion, kan vi tillämpa den anpassade funktionen på våra data.
Låt oss till exempel anta att kolumnen "StudentName" innehåller dubbletter av namn. Vårt mål är att ersätta dubbletter med en anpassad funktion som lägger till ett nummer i slutet av dubblettvärden, vilket gör dem unika.
def add_number(name, counts): if name in counts: counts[name] += 1 return f'{name}_{counts[name]}' else: counts[name] = 0 return name name_counts = {} df['is_duplicate'] = df.duplicated('StudentName', keep=False)
df['StudentName'] = df.apply(lambda x: add_number(x['StudentName'], name_counts) if x['is_duplicate'] else x['StudentName'], axis=1)
df.drop('is_duplicate', axis=1, inplace=True)
print(df)
Produktion:
StudentName Score
0 Mark 45
1 Ali 65
2 Bob 76
3 John 44
4 Johny 39
5 Mark_1 45
Aggregera data med dubbletter av värden
Data som innehåller dubbletter av värden kan aggregeras för att sammanfatta och få insikter från data. Pandas groupby()
funktionen låter dig aggregera data med dubbletter av värden. Genom att använda groupby()
funktion kan du gruppera en eller flera kolumner och beräkna medelvärdet, medianen eller summan av en annan kolumn för varje grupp.
Här är ett exempel på hur du använder groupby()
metod:
grouped = df.groupby(['StudentName']) df_aggregated = grouped.sum()
print(df_aggregated)
Produktion:
Score
StudentName Ali 65
Bob 76
John 44
Johny 39
Mark 90
Avancerade tekniker
För att hantera mer komplexa scenarier och säkerställa korrekt analys finns det några avancerade tekniker som vi kan använda. Det här avsnittet kommer att diskutera hantering av otydliga dubbletter, dubblering i tidsseriedata och dubbletter av indexvärden.
Fuzzy dubbletter
Fuzzy dubbletter är poster som inte är exakta matchningar men som är liknande, och de kan uppstå av olika anledningar, inklusive datainmatningsfel, felstavningar och variationer i formateringen. Vi kommer att använda fuzzywuzzy
Python-bibliotek för att identifiera dubbletter med hjälp av stränglikhetsmatchning.
Här är ett exempel på hur du hanterar fuzzy värden:
import pandas as pd
from fuzzywuzzy import fuzz def find_fuzzy_duplicates(dataframe, column, threshold): duplicates = [] for i in range(len(dataframe)): for j in range(i+1, len(dataframe)): similarity = fuzz.ratio(dataframe[column][i], dataframe[column][j]) if similarity >= threshold: duplicates.append(dataframe.iloc[[i, j]]) if duplicates: duplicates_df = pd.concat(duplicates) return duplicates_df else: return pd.DataFrame() data = { 'StudentName': ['Mark', 'Ali', 'Bob', 'John', 'Johny', 'Mark'], 'Score': [45, 65, 76, 44, 39, 45]
}
df = pd.DataFrame(data) threshold = 70 fuzzy_duplicates = find_fuzzy_duplicates(df, 'StudentName', threshold)
print("Fuzzy duplicates:")
print(fuzzy_duplicates.to_string(index=False))
I det här exemplet skapar vi en anpassad funktion find_fuzzy_duplicates
som tar en DataFrame, ett kolumnnamn och en likhetströskel som indata. Funktionen itererar genom varje rad i DataFrame och jämför den med efterföljande rader med hjälp av fuzz.ratio
metod från fuzzywuzzy
bibliotek. Om likhetspoängen är större än eller lika med tröskeln läggs de dubbla raderna till i en lista. Slutligen returnerar funktionen en DataFrame som innehåller suddiga dubbletter.
Produktion:
Fuzzy duplicates:
StudentName Score Mark 45 Mark 45 John 44 Johny 39
I exemplet ovan identifieras fuzzy dubbletter i kolumnen "StudentName". Funktionen 'find_fuzzy_duplicates' jämför varje par av strängar med hjälp av fuzzywuzzy
bibliotek fuzz.ratio
funktion, som beräknar ett likhetspoäng baserat på Levenshtein-avståndet. Vi har satt tröskeln till 70, vilket betyder att alla namn med ett matchningsförhållande större än 70 kommer att betraktas som ett fuzzy värde. Efter att ha identifierat otydliga värden kan vi hantera dem med metoden som beskrivs i avsnittet "Hantera dubbletter."
Hantera tidsseriedatadubbletter
Dubletter kan uppstå när flera observationer registreras vid samma tidsstämpel. Dessa värden kan leda till partiska resultat om de inte hanteras korrekt. Här är några sätt att hantera dubbletter av värden i tidsseriedata.
- Släpp exakta dubbletter: I den här metoden tar vi bort identiska rader med hjälp av
drop_duplicates
funktion i Pandas. - Duplicera tidsstämplar med olika värden: Om vi har samma tidsstämpel men olika värden kan vi aggregera data och få mer insikt med
groupby()
, eller så kan vi välja det senaste värdet och ta bort de andra med hjälp avdrop_duplicates()
medkeep
parameter satt till 'sista'.
Hantera dubbletter av indexvärden
Innan vi tar upp dubbletter av indexvärden, låt oss först definiera vad ett index är i Pandas. Ett index är en unik identifierare som tilldelas varje rad i DataFrame. Pandas tilldelar ett numeriskt index som börjar på noll som standard. Ett index kan dock tilldelas vilken kolumn- eller kolumnkombination som helst. För att identifiera dubbletter i Index-kolumnen kan vi använda duplicated()
och drop_duplicates()
funktioner, respektive. I det här avsnittet kommer vi att utforska hur du hanterar dubbletter i Index-kolumnen med hjälp av reset_index()
.
Som namnet antyder, reset_index()
funktion i Pandas används för att återställa en DataFrames index. Vid tillämpning av reset_index()
funktionen förkastas det aktuella indexet automatiskt, vilket innebär att de initiala indexvärdena går förlorade. Genom att specificera drop
parameter som False
i reset_index()
funktion, kan vi behålla det ursprungliga indexvärdet samtidigt som vi återställer indexet.
Här är ett exempel på användning reset_index()
:
import pandas as pd data = { 'Score': [45, 65, 76, 44, 39, 45]
}
df = pd.DataFrame(data, index=['Mark', 'Ali', 'Bob', 'John', 'Johny', 'Mark']) df.reset_index(inplace=True)
print(df)
Produktion:
index Score
0 Mark 45
1 Ali 65
2 Bob 76
3 John 44
4 Johny 39
5 Mark 45
Best Practices
-
Förstå Duplicate Data's Nature: Innan du vidtar någon åtgärd är det viktigt att förstå varför duplicerade värden finns och vad de representerar. Identifiera grundorsaken och bestäm sedan lämpliga steg för att hantera dem.
-
Välj en lämplig metod för hantering av dubbletter: Som diskuterats i tidigare avsnitt finns det flera sätt att hantera dubbletter. Vilken metod du väljer beror på vilken typ av data och vilken analys du vill utföra.
-
Dokumentera tillvägagångssättet: Det är viktigt att dokumentera processen för att upptäcka dubbla värden och ta itu med dem, så att andra kan förstå tankeprocessen.
-
Var försiktig: Närhelst vi tar bort eller ändrar data måste vi se till att eliminering av dubbletter inte leder till fel eller fördomar i analysen. Genomför förnuftstester och validera resultaten av varje åtgärd.
-
Bevara originaldata: Innan du utför någon operation på data, skapa en säkerhetskopia av originaldata.
-
Förhindra framtida dubbletter: Genomför åtgärder för att förhindra att dubbletter uppstår i framtiden. Detta kan inkludera datavalidering under datainmatning, datarensningsrutiner eller databasbegränsningar för att framtvinga unikhet.
Avslutande tankar
I dataanalys är det ett avgörande steg att ta itu med dubbletter av värden. Dubblettvärden kan leda till felaktiga resultat. Genom att identifiera och hantera dubbletter av värden effektivt kan dataanalytiker härleda exakt och betydande information. Genom att implementera de nämnda teknikerna och följa bästa praxis kommer analytiker att kunna bevara integriteten hos sina data och extrahera värdefulla insikter från den.
- SEO-drivet innehåll och PR-distribution. Bli förstärkt idag.
- EVM Finans. Unified Interface for Decentralized Finance. Tillgång här.
- Quantum Media Group. IR/PR förstärkt. Tillgång här.
- PlatoAiStream. Web3 Data Intelligence. Kunskap förstärkt. Tillgång här.
- Källa: https://stackabuse.com/handling-duplicate-values-in-a-pandas-dataframe/
- : har
- :är
- :inte
- :var
- 1
- 11
- 12
- 20
- 70
- 8
- 9
- a
- ovan
- exakt
- Handling
- faktiskt
- lagt till
- Dessutom
- adress
- adresse
- avancerat
- Efter
- aggregerande
- Syftet
- Alla
- tillåta
- tillåter
- bland
- an
- analys
- analytiker
- analytiker
- och
- Annan
- vilken som helst
- visas
- Ansök
- Tillämpa
- tillvägagångssätt
- lämpligt
- ÄR
- Artikeln
- AS
- delad
- At
- automatiskt
- säkerhetskopiering
- bar
- baserat
- BE
- innan
- Där vi får lov att vara utan att konstant prestera,
- nedan
- BÄST
- bästa praxis
- förspänning
- partisk
- bob
- gränsen
- men
- by
- beräkna
- beräknar
- KAN
- Vid
- fall
- Orsak
- Diagram
- Kontroller
- Välja
- Rengöring
- Kolumn
- Kolonner
- kombination
- kombinera
- Gemensam
- komplex
- förstå
- Genomför
- Tänk
- anses
- med tanke på
- begränsningar
- innehåller
- Motsvarande
- skapa
- skapas
- avgörande
- Aktuella
- beställnings
- anpassning
- datum
- dataanalys
- datainmatning
- Databas
- som handlar om
- Standard
- beror
- beskriven
- Detektering
- Bestämma
- olika
- direkt
- diskutera
- diskuteras
- avstånd
- dokumentera
- gör
- donation
- dubbletter
- under
- varje
- effektivt
- effektiv
- effektivt
- elementet
- eliminera
- eliminera
- möjliggöra
- möjliggör
- änden
- förstärka
- säkerställa
- inträde
- lika
- fel
- exempel
- Utom
- existerar
- förklaring
- utforska
- extrahera
- få
- Slutligen
- Förnamn
- Fokus
- efter
- följer
- För
- Frekvens
- från
- fungera
- funktioner
- framtida
- Få
- genereras
- gå
- Målet
- diagram
- större
- Grupp
- styra
- hantera
- Arbetsmiljö
- praktisk
- Har
- här.
- hovring
- Hur ser din drömresa ut
- How To
- Men
- HTTPS
- i
- identiska
- identifierade
- identifierare
- identifierar
- identifiera
- identifiera
- if
- genomföra
- genomföra
- med Esport
- in
- felaktig
- innefattar
- ingår
- Inklusive
- index
- indikerar
- pekar på
- informationen
- inledande
- ingång
- insikt
- insikter
- exempel
- integritet
- in
- införa
- Beskrivning
- åberopas
- problem
- IT
- DESS
- John
- Ha kvar
- Etiketter
- Efternamn
- leda
- LÄRA SIG
- inlärning
- Längd
- Låt
- LG
- Bibliotek
- BEGRÄNSA
- Lista
- förlorat
- Framställning
- hantera
- hantera
- markera
- markant
- Match
- matchande
- matplotlib
- max
- Maj..
- betyda
- betyder
- betyder
- åtgärder
- nämnts
- metod
- metoder
- misstag
- modifieringar
- modifierad
- modifiera
- mer
- mest
- multipel
- måste
- namn
- namn
- Natur
- behov
- Nya
- nu
- antal
- få
- förekommande
- of
- Erbjudanden
- on
- ONE
- drift
- Alternativet
- Tillbehör
- or
- ursprungliga
- Övriga
- Övrigt
- vår
- ut
- skisse
- produktion
- par
- pandor
- parameter
- parametrar
- mönster
- Utföra
- utfört
- utför
- plato
- Platon Data Intelligence
- PlatonData
- spelar
- möjlig
- potentiellt
- Praktisk
- praxis
- exakt
- förhindra
- föregående
- process
- ordentligt
- ge
- Python
- ratio
- skäl
- senaste
- registreras
- register
- ta bort
- bort
- ersätta
- ersättning
- representerar
- representerar
- Kräver
- respektive
- ansvaret
- begränsa
- resulterande
- Resultat
- behålla
- tillbaka
- återgår
- Ringa
- Roll
- rot
- RAD
- regler
- s
- Samma
- scenarier
- göra
- Andra
- §
- sektioner
- Serier
- in
- skugga
- ark
- skall
- signifikant
- liknande
- Enkelt
- helt enkelt
- eftersom
- några
- specifik
- Stackabuse
- standarder
- Starta
- Steg
- Steg
- Sluta
- strategier
- Sträng
- student
- Studenter
- senare
- sammanfatta
- skräddarsydd
- tar
- tar
- tekniker
- tester
- än
- den där
- Smakämnen
- Framtiden
- deras
- Dem
- sedan
- Där.
- därför
- Dessa
- de
- Tredje
- detta
- trodde
- tröskelvärde
- Genom
- tid
- Tidsföljder
- gånger
- tidsstämpel
- betitlad
- till
- tillsammans
- Totalt
- övergång
- trovärdig
- två
- förstå
- unika
- unikhet
- Uppdatering
- uppdatering
- us
- användning
- Begagnade
- med hjälp av
- BEKRÄFTA
- godkännande
- Värdefulla
- värde
- Värden
- olika
- Ve
- avgörande
- vill
- var
- sätt
- we
- VÄL
- Vad
- när
- närhelst
- om
- som
- medan
- varför
- kommer
- med
- inom
- X
- Om er
- zephyrnet
- noll-