Predstavitev
Kot podatkovni analitik je naša odgovornost zagotoviti celovitost podatkov, da pridobimo natančne in zaupanja vredne vpoglede. Čiščenje podatkov igra ključno vlogo v tem procesu, podvojene vrednosti pa so med najpogostejšimi težavami, s katerimi se srečujejo analitiki podatkov. Podvojene vrednosti lahko potencialno napačno predstavijo vpoglede. Zato je ključnega pomena, da imamo učinkovite metode za obravnavo podvojenih vrednosti. V tem članku se bomo naučili, kako prepoznati in obravnavati podvojene vrednosti, ter najboljše prakse za upravljanje dvojnikov.
Prepoznavanje podvojenih vrednosti
Prvi korak pri ravnanju s podvojenimi vrednostmi je njihovo prepoznavanje. Prepoznavanje podvojenih vrednosti je pomemben korak pri čiščenju podatkov. Pandas ponuja več metod za prepoznavanje podvojenih vrednosti znotraj podatkovnega okvira. V tem razdelku bomo razpravljali o duplicated()
funkcijo in value_counts()
funkcijo za prepoznavanje podvojenih vrednosti.
Usin podvojeno()
O duplicated()
je funkcija knjižnice Pandas, ki preverja podvojene vrstice v DataFrame. Izhod iz duplicated()
funkcija je logična vrsta z enako dolžino kot vhodni DataFrame, kjer vsak element označuje, ali je ustrezna vrstica dvojnik ali ne.
Oglejmo si preprost primer duplicated()
funkcija:
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)
izhod:
0 False
1 False
2 False
3 False
4 False
5 True
dtype: bool
V zgornjem primeru smo ustvarili DataFrame, ki vsebuje imena študentov in njihove skupne rezultate. Sklicevali smo se duplicated()
na DataFrame, ki je ustvaril logično serijo z False
ki predstavlja edinstvene vrednote in True
ki predstavljajo podvojene vrednosti.
V tem primeru se prva pojavitev vrednosti šteje za edinstveno. Kaj pa, če želimo, da se zadnja vrednost šteje za edinstveno in ne želimo upoštevati vseh stolpcev pri prepoznavanju podvojenih vrednosti? Tukaj lahko spremenimo duplicated()
funkcijo s spreminjanjem vrednosti parametrov.
Parametri: podnabor in ohrani
O duplicated()
funkcija ponuja možnosti prilagajanja prek izbirnih parametrov. Ima dva parametra, kot je opisano spodaj:
-
subset
: Ta parameter nam omogoča, da določimo podnabor stolpcev, ki jih je treba upoštevati med odkrivanjem dvojnikov. Podnabor je nastavljen naNone
privzeto, kar pomeni, da se upošteva vsak stolpec v DataFrame. Če želite določiti imena stolpcev, lahko podnaboru zagotovimo seznam imen stolpcev.Tu je primer uporabe parametra podnabora:
df_duplicates = df.duplicated(subset=['StudentName'])
izhod:
0 False 1 False 2 False 3 False 4 False 5 True dtype: bool
-
keep
: Ta možnost nam omogoča, da izberemo, kateri primerek podvojene vrstice naj bo označen kot dvojnik. Možne vrednosti za ohranitev so:"first"
: To je privzeta vrednost zakeep
možnost. Identificira vse dvojnike razen prvega, pri čemer meni, da je prva vrednost edinstvena."last"
: Ta možnost identificira zadnjo pojavitev kot edinstveno vrednost. Vsi drugi pojavi se bodo obravnavali kot dvojniki.False
: Ta možnost označi vsak primer kot podvojeno vrednost.
Tukaj je primer uporabe keep
parameter:
df_duplicates = df.duplicated(keep='last')
print(df_duplicates)
izhod:
0 True
1 False
2 False
3 False
4 False
5 False
dtype: bool
Vizualizirajte podvojene vrednosti
O value_counts()
funkcija je drugi pristop za prepoznavanje dvojnikov. The value_counts()
funkcija prešteje, kolikokrat se posamezna edinstvena vrednost pojavi v stolpcu. Z uporabo value_counts()
funkcijo v določen stolpec, je mogoče vizualizirati frekvenco vsake vrednosti.
Tukaj je primer uporabe value_counts()
funkcija:
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)
izhod:
Mark 2
Ali 1
Bob 1
John 1
Johny 1
Name: StudentName, dtype: int64
Predstavimo zdaj podvojene vrednosti s paličnim grafom. S paličnim grafikonom lahko učinkovito vizualiziramo pogostost podvojenih vrednosti.
name_counts.plot(kind='bar')
plt.xlabel('Student Name')
plt.ylabel('Frequency')
plt.title('Duplicate Name Frequencies')
plt.show()
Ravnanje s podvojenimi vrednostmi
Ko odkrijete podvojene vrednosti, je čas, da jih obravnavate. V tem razdelku bomo raziskali različne strategije za odstranjevanje in posodabljanje podvojenih vrednosti z uporabo pand drop_duplicates()
in replace()
funkcije. Poleg tega bomo razpravljali o združevanju podatkov s podvojenimi vrednostmi z uporabo groupby()
Funkcija.
Odstranjevanje podvojenih vrednosti
Najpogostejši pristop za ravnanje z dvojniki je, da jih odstranite iz DataFrame. Za odstranitev podvojenih zapisov iz DataFrame bomo uporabili drop_duplicates()
funkcijo. Ta funkcija privzeto obdrži prvi primerek vsake podvojene vrstice in odstrani naslednje pojavitve. Identificira podvojene vrednosti na podlagi vseh vrednosti stolpcev; vendar pa lahko določimo stolpec, ki ga je treba upoštevati, z uporabo parametrov podnabora.
Sintaksa za drop_duplicates()
s privzetimi vrednostmi v parametrih je naslednji:
dataFrame.drop_duplicates(subset=None, keep='first', inplace=False)
O subset
in keep
parametri imajo enako razlago kot v duplicates()
. Če nastavimo tretji parameter inplace
do True
, bodo vse spremembe izvedene neposredno na izvirnem DataFrame, zaradi česar se bo metoda vrnila None
in izvirni DataFrame, ki se spreminja. Privzeto, inplace
is False
.
Tukaj je primer drop_duplicates()
funkcija:
df.drop_duplicates(keep='last', inplace=True)
print(df)
izhod:
StudentName Score
1 Ali 65
2 Bob 76
3 John 44
4 Johny 39
5 Mark 45
Oglejte si naš praktični, praktični vodnik za učenje Gita z najboljšimi praksami, standardi, sprejetimi v panogi, in priloženo goljufijo. Nehajte Googlati ukaze Git in pravzaprav naučiti it!
V zgornjem primeru je bil prvi vnos izbrisan, ker je bil dvojnik.
Zamenjajte ali posodobite podvojene vrednosti
Druga metoda za obravnavanje dvojnikov vključuje zamenjavo vrednosti z uporabo Pand replace()
funkcijo. The replace()
nam omogoča zamenjavo določenih vrednosti ali vzorcev v DataFrame z novimi vrednostmi. Privzeto zamenja vse primerke vrednosti. Z uporabo parametra limit pa lahko omejimo število zamenjav.
Tukaj je primer uporabe replace()
funkcija:
df['StudentName'].replace('Mark', 'Max', limit=1, inplace=True)
print(df)
izhod:
StudentName Score
0 Max 45
1 Ali 65
2 Bob 76
3 John 44
4 Johny 39
5 Mark 45
Tu je bila omejitev uporabljena za zamenjavo prve vrednosti. Kaj pa, če želimo zamenjati zadnjo pojavitev? V tem primeru bomo združili duplicated()
in replace()
funkcije. Uporaba duplicated()
, bomo navedli zadnji primerek vsake podvojene vrednosti, pridobili številko vrstice z uporabo loc
in jo nato zamenjajte z replace()
funkcijo. Tukaj je primer uporabe duplicated()
in replace()
deluje skupaj.
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)
izhod:
StudentName Score
0 Mark 45
1 Ali 65
2 Bob 76
3 John 44
4 Johny 39
5 Max 45
Funkcije po meri za kompleksne zamenjave
V nekaterih primerih obravnavanje podvojenih vrednosti zahteva bolj zapletene zamenjave kot preprosto odstranjevanje ali posodabljanje le-teh. Funkcije po meri nam omogočajo, da ustvarimo posebna pravila za zamenjavo, prilagojena našim potrebam. Z uporabo pand apply()
funkcijo, lahko funkcijo po meri uporabimo za naše podatke.
Na primer, predpostavimo, da stolpec »StudentName« vsebuje podvojena imena. Naš cilj je zamenjati dvojnike s funkcijo po meri, ki doda številko na koncu podvojenih vrednosti, zaradi česar so edinstvene.
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)
izhod:
StudentName Score
0 Mark 45
1 Ali 65
2 Bob 76
3 John 44
4 Johny 39
5 Mark_1 45
Zbirni podatki s podvojenimi vrednostmi
Podatke, ki vsebujejo podvojene vrednosti, je mogoče združiti, da jih povzamemo in pridobimo vpogled v podatke. Pande groupby()
vam omogoča združevanje podatkov s podvojenimi vrednostmi. Z uporabo groupby()
funkcijo, lahko združite enega ali več stolpcev in izračunate povprečje, mediano ali vsoto drugega stolpca za vsako skupino.
Tukaj je primer uporabe groupby()
metoda:
grouped = df.groupby(['StudentName']) df_aggregated = grouped.sum()
print(df_aggregated)
izhod:
Score
StudentName Ali 65
Bob 76
John 44
Johny 39
Mark 90
Napredne tehnike
Za obravnavo bolj zapletenih scenarijev in zagotavljanje natančne analize obstaja nekaj naprednih tehnik, ki jih lahko uporabimo. V tem razdelku bomo razpravljali o obravnavanju mehkih dvojnikov, podvajanju podatkov časovnih vrst in podvojenih vrednostih indeksov.
Fuzzy Dvojniki
Nejasni dvojniki so zapisi, ki se ne ujemajo natančno, vendar so si podobni in se lahko pojavijo zaradi različnih razlogov, vključno z napakami pri vnosu podatkov, napačno črkovanimi besedami in različicami oblikovanja. Uporabili bomo fuzzywuzzy
Knjižnica Python za prepoznavanje dvojnikov z uporabo ujemanja podobnosti nizov.
Tukaj je primer ravnanja z mehkimi vrednostmi:
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))
V tem primeru ustvarimo funkcijo po meri find_fuzzy_duplicates
ki kot vhod sprejme DataFrame, ime stolpca in prag podobnosti. Funkcija ponovi vsako vrstico v DataFrame in jo primerja z naslednjimi vrsticami z uporabo fuzz.ratio
metoda iz fuzzywuzzy
knjižnica. Če je ocena podobnosti večja ali enaka pragu, se podvojene vrstice dodajo na seznam. Končno funkcija vrne DataFrame, ki vsebuje mehke dvojnike.
izhod:
Fuzzy duplicates:
StudentName Score Mark 45 Mark 45 John 44 Johny 39
V zgornjem primeru so mehki dvojniki identificirani v stolpcu »StudentName«. Funkcija 'find_fuzzy_duplicates' primerja vsak par nizov z uporabo fuzzywuzzy
knjižnice fuzz.ratio
funkcijo, ki izračuna oceno podobnosti na podlagi Levenshteinove razdalje. Prag smo nastavili na 70, kar pomeni, da bo vsako ime z razmerjem ujemanja, večjim od 70, obravnavano kot mehka vrednost. Ko identificiramo mehke vrednosti, jih lahko upravljamo z uporabo metode, opisane v razdelku z naslovom »Ravnanje s podvojenimi podatki«.
Ravnanje s podvojenimi podatki časovnih vrst
Do dvojnikov lahko pride, če je več opazovanj zabeleženih ob istem časovnem žigu. Te vrednosti lahko povzročijo pristranske rezultate, če z njimi ne ravnate pravilno. Tukaj je nekaj načinov za obravnavanje podvojenih vrednosti v podatkih časovne vrste.
- Odstranjevanje natančnih dvojnikov: Pri tej metodi odstranimo enake vrstice z uporabo
drop_duplicates
funkcijo v Pandas. - Podvojeni časovni žigi z različnimi vrednostmi: Če imamo isti časovni žig, vendar različne vrednosti, lahko združimo podatke in pridobimo boljši vpogled z
groupby()
ali pa lahko izberemo najnovejšo vrednost in odstranimo druge z uporabodrop_duplicates()
skeep
parameter nastavljen na 'zadnji'.
Ravnanje s podvojenimi vrednostmi indeksa
Preden obravnavamo podvojene vrednosti indeksa, najprej definirajmo, kaj je indeks v Pandas. Indeks je enoličen identifikator, dodeljen vsaki vrstici DataFrame. Pandas privzeto dodeli številski indeks, ki se začne pri nič. Vendar pa lahko indeks dodelite kateremu koli stolpcu ali kombinaciji stolpcev. Za identifikacijo dvojnikov v stolpcu Indeks lahko uporabimo duplicated()
in drop_duplicates()
funkcije oz. V tem razdelku bomo raziskali, kako obravnavati dvojnike v stolpcu Indeks z uporabo reset_index()
.
Kot že ime pove, reset_index()
funkcija v Pandas se uporablja za ponastavitev indeksa DataFrame. Pri nanosu na reset_index()
funkcijo, se trenutni indeks samodejno zavrže, kar pomeni, da se začetne vrednosti indeksa izgubijo. Z določitvijo drop
parameter kot False
v reset_index()
funkcijo, lahko med ponastavitvijo indeksa ohranimo prvotno vrednost indeksa.
Tukaj je primer uporabe 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)
izhod:
index Score
0 Mark 45
1 Ali 65
2 Bob 76
3 John 44
4 Johny 39
5 Mark 45
Najboljše prakse
-
Razumeti naravo podvojenih podatkov: Preden ukrepate, je ključno razumeti, zakaj obstajajo podvojene vrednosti in kaj predstavljajo. Ugotovite glavni vzrok in nato določite ustrezne korake za njihovo odpravo.
-
Izberite ustrezno metodo za ravnanje s dvojniki: Kot smo razpravljali v prejšnjih razdelkih, obstaja več načinov za obravnavanje dvojnikov. Metoda, ki jo izberete, je odvisna od narave podatkov in analize, ki jo želite izvesti.
-
Dokumentirajte pristop: Ključnega pomena je dokumentirati postopek odkrivanja podvojenih vrednosti in njihovega obravnavanja, da bi drugim omogočili razumevanje miselnega procesa.
-
Bodite previdni: Kadar koli odstranimo ali spremenimo podatke, moramo zagotoviti, da izločitev dvojnikov v analizo ne povzroči napak ali pristranskosti. Izvedite teste razumnosti in potrdite rezultate vsakega dejanja.
-
Ohranite izvirne podatke: Preden izvedete kakršno koli operacijo s podatki, ustvarite varnostno kopijo izvirnih podatkov.
-
Preprečite prihodnje dvojnike: Izvedite ukrepe za preprečevanje podvajanja v prihodnosti. To lahko vključuje preverjanje veljavnosti podatkov med vnosom podatkov, rutine čiščenja podatkov ali omejitve baze podatkov za uveljavljanje edinstvenosti.
Končna thoughts
Pri analizi podatkov je obravnavanje podvojenih vrednosti ključni korak. Podvojene vrednosti lahko povzročijo netočne rezultate. Z učinkovitim odkrivanjem in upravljanjem podvojenih vrednosti lahko analitiki podatkov pridobijo natančne in pomembne informacije. Izvajanje omenjenih tehnik in upoštevanje najboljših praks bo analitikom omogočilo, da ohranijo celovitost svojih podatkov in iz njih pridobijo dragocene vpoglede.
- Distribucija vsebine in PR s pomočjo SEO. Okrepite se še danes.
- EVM Finance. Poenoten vmesnik za decentralizirane finance. Dostopite tukaj.
- Quantum Media Group. IR/PR ojačan. Dostopite tukaj.
- PlatoAiStream. Podatkovna inteligenca Web3. Razširjeno znanje. Dostopite tukaj.
- vir: https://stackabuse.com/handling-duplicate-values-in-a-pandas-dataframe/
- :ima
- : je
- :ne
- :kje
- 1
- 11
- 12
- 20
- 70
- 8
- 9
- a
- nad
- natančna
- Ukrep
- dejansko
- dodano
- Poleg tega
- Naslov
- naslavljanje
- napredno
- po
- združevanje
- Cilj
- vsi
- Dovoli
- omogoča
- med
- an
- Analiza
- Analitik
- Analitiki
- in
- Še ena
- kaj
- se prikaže
- Uporabi
- Uporaba
- pristop
- primerno
- SE
- članek
- AS
- dodeljena
- At
- samodejno
- backup
- bar
- temeljijo
- BE
- pred
- počutje
- spodaj
- BEST
- najboljše prakse
- pristranskosti
- pristranski
- zrna
- meja
- vendar
- by
- izračun
- izračuna
- CAN
- primeru
- primeri
- Vzrok
- Graf
- Pregledi
- Izberite
- čiščenje
- Stolpec
- Stolpci
- kombinacija
- združujejo
- Skupno
- kompleksna
- razumeti
- Ravnanje
- Razmislite
- šteje
- upoštevamo
- omejitve
- Vsebuje
- Ustrezno
- ustvarjajo
- ustvaril
- ključnega pomena
- Trenutna
- po meri
- customization
- datum
- Analiza podatkov
- vnos podatkov
- Baze podatkov
- deliti
- privzeto
- odvisno
- opisano
- Odkrivanje
- Ugotovite,
- drugačen
- neposredno
- razpravlja
- razpravljali
- razdalja
- dokument
- ne
- don
- dvojnikov
- med
- vsak
- učinkovito
- učinkovite
- učinkovito
- element
- odpravo
- odstranjevanje
- omogočajo
- omogoča
- konec
- uveljaviti
- zagotovitev
- Vpis
- enako
- napake
- Primer
- Razen
- obstajajo
- Razlaga
- raziskuje
- ekstrakt
- Nekaj
- končno
- prva
- Osredotočite
- po
- sledi
- za
- frekvenca
- iz
- funkcija
- funkcije
- Prihodnost
- Gain
- ustvarila
- git
- Cilj
- graf
- več
- skupina
- vodi
- ročaj
- Ravnanje
- hands-on
- Imajo
- tukaj
- hover
- Kako
- Kako
- Vendar
- HTTPS
- i
- enako
- identificirati
- identifikator
- identificira
- identificirati
- identifikacijo
- if
- izvajati
- izvajanja
- Pomembno
- in
- netočne
- vključujejo
- vključeno
- Vključno
- Indeks
- Navedite
- označuje
- Podatki
- začetna
- vhod
- vpogled
- vpogledi
- primer
- celovitost
- v
- uvesti
- Predstavitev
- sklican
- Vprašanja
- IT
- ITS
- John
- Imejte
- Oznake
- Zadnja
- vodi
- UČITE
- učenje
- dolžina
- Naj
- LG
- Knjižnica
- LIMIT
- Seznam
- izgubil
- Izdelava
- upravljanje
- upravljanje
- znamka
- označeno
- Stave
- ujemanje
- matplotlib
- max
- Maj ..
- pomeni
- kar pomeni,
- pomeni
- ukrepe
- omenjeno
- Metoda
- Metode
- napake
- spremembe
- spremembe
- spremenite
- več
- Najbolj
- več
- morajo
- Ime
- Imena
- Narava
- potrebe
- Novo
- zdaj
- Številka
- pridobi
- se pojavljajo
- of
- Ponudbe
- on
- ONE
- Delovanje
- Možnost
- možnosti
- or
- izvirno
- Ostalo
- drugi
- naši
- ven
- opisano
- izhod
- par
- pand
- parameter
- parametri
- vzorci
- Izvedite
- opravljeno
- izvajati
- platon
- Platonova podatkovna inteligenca
- PlatoData
- igra
- mogoče
- potencialno
- Praktično
- vaje
- natančna
- preprečiti
- prejšnja
- Postopek
- pravilno
- zagotavljajo
- Python
- razmerje
- Razlogi
- nedavno
- Zabeležena
- evidence
- odstrani
- odstranjevanje
- zamenjajte
- zamenjava
- predstavljajo
- predstavlja
- zahteva
- oziroma
- Odgovornost
- omejiti
- rezultat
- Rezultati
- ohranijo
- vrnitev
- vrne
- Ring
- vloga
- koren
- ROW
- pravila
- s
- Enako
- scenariji
- rezultat
- drugi
- Oddelek
- oddelki
- Serija
- nastavite
- Shadow
- stanja
- shouldnt
- pomemben
- Podoben
- Enostavno
- preprosto
- saj
- nekaj
- specifična
- Stackabuse
- standardi
- Začetek
- Korak
- Koraki
- stop
- strategije
- String
- študent
- Študenti
- kasneje
- Povzamemo
- prilagojene
- meni
- ob
- tehnike
- testi
- kot
- da
- O
- Prihodnost
- njihove
- Njih
- POTEM
- Tukaj.
- zato
- te
- jih
- tretja
- ta
- mislil
- Prag
- skozi
- čas
- Časovne serije
- krat
- Časovni žig
- z naslovom
- do
- skupaj
- Skupaj za plačilo
- Prehod
- zaupanja
- dva
- razumeli
- edinstven
- Edinstvenost
- Nadgradnja
- posodabljanje
- us
- uporaba
- Rabljeni
- uporabo
- POTRDI
- potrjevanje
- dragocene
- vrednost
- Vrednote
- različnih
- Ve
- ključnega pomena
- želeli
- je
- načini
- we
- Dobro
- Kaj
- kdaj
- kadar koli
- ali
- ki
- medtem
- zakaj
- bo
- z
- v
- X
- Vi
- zefirnet
- nič