Sissejuhatus
Andmeanalüütikuna on meie kohustus tagada andmete terviklikkus, et saada täpset ja usaldusväärset teavet. Andmete puhastamine mängib selles protsessis üliolulist rolli ja dubleerivad väärtused on üks levinumaid probleeme, millega andmeanalüütikud kokku puutuvad. Dubleerivad väärtused võivad statistikat valesti esitada. Seetõttu on ülioluline omada tõhusaid meetodeid dubleerivate väärtuste käsitlemiseks. Sellest artiklist õpime, kuidas tuvastada ja käsitleda dubleerivaid väärtusi, samuti duplikaatide haldamise häid tavasid.
Dubleerivate väärtuste tuvastamine
Esimene samm topeltväärtuste käsitlemisel on nende tuvastamine. Dubleerivate väärtuste tuvastamine on andmete puhastamise oluline samm. Pandas pakub andmeraamis dubleerivate väärtuste tuvastamiseks mitut meetodit. Selles jaotises käsitleme duplicated()
funktsioon ja value_counts()
funktsioon dubleerivate väärtuste tuvastamiseks.
Usin dubleeritud ()
. duplicated()
funktsioon on Pandase teegi funktsioon, mis kontrollib DataFrame'i ridade duplikaate. väljund duplicated()
funktsioon on tõeväärtusseeria, mis on sama pikkusega kui sisend DataFrame, kus iga element näitab, kas vastav rida on duplikaat või mitte.
Vaatleme lihtsat näidet duplicated()
funktsioon:
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)
Väljund:
0 False
1 False
2 False
3 False
4 False
5 True
dtype: bool
Ülaltoodud näites lõime DataFrame'i, mis sisaldab õpilaste nimesid ja nende koguhinne. Kutsusime välja duplicated()
DataFrame'is, mis genereeris tõeväärtusega seeria False
esindavad ainulaadseid väärtusi ja True
mis esindavad dubleerivaid väärtusi.
Selles näites loetakse väärtuse esmakordne esinemine unikaalseks. Mis saab aga siis, kui soovime, et viimast väärtust peetaks unikaalseks ja me ei soovi dubleerivate väärtuste tuvastamisel kõiki veerge arvesse võtta? Siin saame muuta duplicated()
parameetrite väärtusi muutes.
Parameetrid: alamhulk ja säilita
. duplicated()
funktsioon pakub valikuliste parameetrite kaudu kohandamisvõimalusi. Sellel on kaks parameetrit, nagu allpool kirjeldatud:
-
subset
: see parameeter võimaldab meil määrata veergude alamhulka, mida duplikaattuvastuse ajal arvesse võtta. Alamhulk on seatud väärtuseleNone
vaikimisi, mis tähendab, et DataFrame'i iga veergu võetakse arvesse. Veergude nimede määramiseks saame alamhulga varustada veergude nimede loendiga.Siin on näide alamhulga parameetri kasutamisest:
df_duplicates = df.duplicated(subset=['StudentName'])
Väljund:
0 False 1 False 2 False 3 False 4 False 5 True dtype: bool
-
keep
: see suvand võimaldab meil valida, milline duplikaatrea eksemplar tuleks märkida duplikaadiks. Võimalikud säilitusväärtused on järgmised:"first"
: see on vaikeväärtuskeep
valik. See tuvastab kõik duplikaadid, välja arvatud esimene esinemine, pidades esimest väärtust ainulaadseks."last"
: see suvand tuvastab unikaalse väärtusena viimase esinemise. Kõik muud juhtumid loetakse duplikaatideks.False
: see suvand märgistab iga eksemplari duplikaatväärtusena.
Siin on näide selle kasutamisest keep
parameetrit:
df_duplicates = df.duplicated(keep='last')
print(df_duplicates)
Väljund:
0 True
1 False
2 False
3 False
4 False
5 False
dtype: bool
Visualiseerige dubleerivad väärtused
. value_counts()
funktsioon on teine lähenemine duplikaatide tuvastamiseks. The value_counts()
funktsioon loendab, mitu korda iga kordumatu väärtus veerus ilmub. Rakendades value_counts()
funktsiooni konkreetsele veerule, saab visualiseerida iga väärtuse sagedust.
Siin on näide selle kasutamisest value_counts()
funktsioon:
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)
Väljund:
Mark 2
Ali 1
Bob 1
John 1
Johny 1
Name: StudentName, dtype: int64
Visualiseerime nüüd topeltväärtusi tulpdiagrammiga. Väärtuste dubleerimise sagedust saame tõhusalt visualiseerida tulpdiagrammi abil.
name_counts.plot(kind='bar')
plt.xlabel('Student Name')
plt.ylabel('Frequency')
plt.title('Duplicate Name Frequencies')
plt.show()
Dubleerivate väärtuste käsitlemine
Pärast dubleerivate väärtuste tuvastamist on aeg nendega tegeleda. Selles jaotises uurime erinevaid strateegiaid dubleerivate väärtuste eemaldamiseks ja värskendamiseks pandade abil drop_duplicates()
ja replace()
funktsioonid. Lisaks arutame dubleerivate väärtustega andmete koondamist, kasutades groupby()
funktsiooni.
Dubleerivate väärtuste eemaldamine
Kõige tavalisem meetod duplikaatide käsitlemiseks on nende eemaldamine DataFrame'ist. Duplikaatkirjete eemaldamiseks DataFrame'ist kasutame drop_duplicates()
funktsiooni. Vaikimisi säilitab see funktsioon iga duplikaatrea esimese eksemplari ja eemaldab järgnevad esinemised. See tuvastab kõigi veergude väärtuste põhjal dubleerivad väärtused; siiski saame määrata vaadeldava veeru alamhulga parameetrite abil.
Süntaks of drop_duplicates()
parameetrite vaikeväärtustega on järgmine:
dataFrame.drop_duplicates(subset=None, keep='first', inplace=False)
. subset
ja keep
parameetritel on sama seletus, mis jaotises duplicates()
. Kui seame kolmanda parameetri inplace
et True
, tehakse kõik muudatused otse algses DataFrame'is, mille tulemuseks on meetodi tagastamine None
ja algset DataFrame'i muudetakse. Algselt, inplace
is False
.
Siin on näide sellest drop_duplicates()
funktsioon:
df.drop_duplicates(keep='last', inplace=True)
print(df)
Väljund:
StudentName Score
1 Ali 65
2 Bob 76
3 John 44
4 Johny 39
5 Mark 45
Tutvuge meie praktilise ja praktilise Giti õppimise juhendiga, mis sisaldab parimaid tavasid, tööstusharus aktsepteeritud standardeid ja kaasas olevat petulehte. Lõpetage Giti käskude guugeldamine ja tegelikult õppima seda!
Ülaltoodud näites kustutati esimene kirje, kuna see oli duplikaat.
Asendage või värskendage dubleerivaid väärtusi
Teine duplikaatide käsitlemise meetod hõlmab väärtuse asendamist Pandade abil replace()
funktsioon. The replace()
funktsioon võimaldab meil asendada DataFrame'i teatud väärtused või mustrid uute väärtustega. Vaikimisi asendab see väärtuse kõik eksemplarid. Piirparameetrit kasutades saame aga asenduste arvu piirata.
Siin on näide selle kasutamisest replace()
funktsioon:
df['StudentName'].replace('Mark', 'Max', limit=1, inplace=True)
print(df)
Väljund:
StudentName Score
0 Max 45
1 Ali 65
2 Bob 76
3 John 44
4 Johny 39
5 Mark 45
Siin kasutati piirmäära esimese väärtuse asendamiseks. Mis siis, kui tahame asendada viimase esinemise? Sel juhul ühendame duplicated()
ja replace()
funktsioonid. Kasutades duplicated()
, näitame iga korduva väärtuse viimase eksemplari, saame rea numbri, kasutades loc
funktsiooni ja seejärel asendage see nupuga replace()
funktsiooni. Siin on näide kasutamisest duplicated()
ja replace()
toimib koos.
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)
Väljund:
StudentName Score
0 Mark 45
1 Ali 65
2 Bob 76
3 John 44
4 Johny 39
5 Max 45
Kohandatud funktsioonid keerukate asenduste jaoks
Mõnel juhul nõuab dubleerivate väärtuste käsitlemine keerukamaid asendusi kui lihtsalt nende eemaldamine või värskendamine. Kohandatud funktsioonid võimaldavad meil luua konkreetseid asendusreegleid, mis on kohandatud meie vajadustele. Pandasid kasutades apply()
funktsiooni, saame oma andmetele kohandatud funktsiooni rakendada.
Oletame näiteks, et veerg „StudentName” sisaldab dubleerivaid nimesid. Meie eesmärk on asendada duplikaadid, kasutades kohandatud funktsiooni, mis lisab duplikaatväärtuste lõppu numbri, muutes need ainulaadseks.
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)
Väljund:
StudentName Score
0 Mark 45
1 Ali 65
2 Bob 76
3 John 44
4 Johny 39
5 Mark_1 45
Dubleerivate väärtustega koondandmed
Dubleerivaid väärtusi sisaldavaid andmeid saab koondada, et teha kokkuvõtteid ja saada andmetest ülevaadet. Pandad groupby()
funktsioon võimaldab teil andmeid dubleerivate väärtustega koondada. Kasutades groupby()
funktsiooni abil saate rühmitada ühe või mitu veergu ja arvutada iga rühma jaoks teise veeru keskmise, mediaani või summa.
Siin on näide selle kasutamisest groupby()
meetod:
grouped = df.groupby(['StudentName']) df_aggregated = grouped.sum()
print(df_aggregated)
Väljund:
Score
StudentName Ali 65
Bob 76
John 44
Johny 39
Mark 90
Arenenud tehnikad
Keerulisemate stsenaariumide käsitlemiseks ja täpse analüüsi tagamiseks saame kasutada mõningaid täiustatud tehnikaid. Selles jaotises käsitletakse hägusate duplikaatide, aegridade andmete dubleerimist ja indeksi väärtuste dubleerimist.
Fuzzy duplikaadid
Hägud duplikaadid on kirjed, mis ei ole täpsed vasted, kuid on sarnased ning võivad tekkida erinevatel põhjustel, sealhulgas andmesisesitusvead, õigekirjavead ja vormingu variatsioonid. Me kasutame fuzzywuzzy
Pythoni teek duplikaatide tuvastamiseks stringide sarnasuse sobitamise abil.
Siin on näide häguste väärtuste käsitlemisest:
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))
Selles näites loome kohandatud funktsiooni find_fuzzy_duplicates
mis võtab sisendiks DataFrame'i, veeru nime ja sarnasuse läve. Funktsioon itereerib läbi DataFrame'i iga rea ja võrdleb seda järgmiste ridadega, kasutades fuzz.ratio
meetodist fuzzywuzzy
raamatukogu. Kui sarnasuse skoor on lävest suurem või sellega võrdne, lisatakse topeltread loendisse. Lõpuks tagastab funktsioon DataFrame'i, mis sisaldab häguseid duplikaate.
Väljund:
Fuzzy duplicates:
StudentName Score Mark 45 Mark 45 John 44 Johny 39
Ülaltoodud näites on ebaselged duplikaadid tuvastatud veerus „StudentName”. Funktsioon „find_fuzzy_duplicates” võrdleb iga stringipaari kasutades fuzzywuzzy
raamatukogu omad fuzz.ratio
funktsioon, mis arvutab Levenshteini kauguse põhjal sarnasuse skoori. Oleme seadnud läveks 70, mis tähendab, et iga nime, mille vaste suhe on suurem kui 70, loetakse hägusaks väärtuseks. Pärast hägusate väärtuste tuvastamist saame neid hallata jaotises „Duplikaatide käsitlemine” kirjeldatud meetodil.
Ajaseeriate andmete duplikaatide käsitlemine
Duplikaadid võivad tekkida, kui sama ajatempliga salvestatakse mitu vaatlust. Kui neid väärtusi ei käsitleta õigesti, võivad need viia kallutatud tulemusteni. Siin on mõned viisid aegridade andmete dubleerivate väärtuste käsitlemiseks.
- Täpsete duplikaatide eemaldamine: Selle meetodi puhul eemaldame identsed read, kasutades
drop_duplicates
funktsiooni Pandas. - Erinevate väärtustega ajatemplite duplikaat: kui meil on sama ajatempel, kuid erinevad väärtused, saame andmed koondada ja saada rohkem teavet, kasutades
groupby()
või saame valida uusima väärtuse ja eemaldada teised kasutadesdrop_duplicates()
kooskeep
parameeter seatud väärtusele "viimane".
Dubleerivate indeksi väärtuste käsitlemine
Enne topeltindeksi väärtuste käsitlemist määratleme esmalt, mis on Pandas indeks. Indeks on kordumatu identifikaator, mis on määratud DataFrame'i igale reale. Pandas määrab vaikimisi numbrilise indeksi, mis algab nullist. Indeksi saab aga määrata igale veerule või veerukombinatsioonile. Duplikaatide tuvastamiseks veerus Indeks saame kasutada duplicated()
ja drop_duplicates()
funktsioonid vastavalt. Selles jaotises uurime, kuidas käsitleda duplikaate veerus Indeks kasutades reset_index()
.
Nagu nimigi ütleb, reset_index()
Pandase funktsiooni kasutatakse DataFrame'i indeksi lähtestamiseks. Rakendades reset_index()
funktsiooni korral tühistatakse praegune indeks automaatselt, mis tähendab, et indeksi algväärtused lähevad kaotsi. Määrates drop
parameeter as False
aasta reset_index()
funktsiooni, saame indeksi lähtestamise ajal säilitada algse indeksi väärtuse.
Siin on näide kasutamisest 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)
Väljund:
index Score
0 Mark 45
1 Ali 65
2 Bob 76
3 John 44
4 Johny 39
5 Mark 45
Best Practices
-
Mõistke dubleerivate andmete olemust: Enne mis tahes toimingu tegemist on ülioluline mõista, miks eksisteerivad topeltväärtused ja mida need esindavad. Tuvastage algpõhjus ja seejärel määrake sobivad sammud nende lahendamiseks.
-
Valige duplikaatide käsitlemiseks sobiv meetod: Nagu eelmistes jaotistes kirjeldatud, on duplikaatide käsitlemiseks mitu võimalust. Teie valitud meetod sõltub andmete olemusest ja analüüsist, mida soovite teha.
-
Dokumenteerige lähenemine: On oluline dokumenteerida korduvate väärtuste tuvastamise ja nendega tegelemise protsess, et teised saaksid mõtteprotsessist aru saada.
-
Olge ettevaatlik: Andmete eemaldamisel või muutmisel peame tagama, et duplikaatide kõrvaldamine ei tekitaks analüüsis vigu ega kallutatust. Viige läbi terve mõistuse testid ja kinnitage iga tegevuse tulemused.
-
Säilitage algandmed: Enne andmetega mis tahes toimingu tegemist looge algandmetest varukoopia.
-
Vältige tulevasi duplikaate: rakendage meetmeid, et vältida duplikaatide tekkimist tulevikus. See võib hõlmata andmete valideerimist andmete sisestamise ajal, andmete puhastamise rutiine või andmebaasi piiranguid unikaalsuse jõustamiseks.
Final Thoughts
Andmeanalüüsis on dubleerivate väärtuste käsitlemine ülioluline samm. Väärtuste dubleerimine võib põhjustada ebatäpseid tulemusi. Dubleerivate väärtuste tõhusa tuvastamise ja haldamisega saavad andmeanalüütikud saada täpset ja olulist teavet. Nimetatud tehnikate rakendamine ja parimate tavade järgimine võimaldab analüütikutel säilitada oma andmete terviklikkust ja saada neist väärtuslikke teadmisi.
- SEO-põhise sisu ja PR-levi. Võimenduge juba täna.
- EVM Finance. Detsentraliseeritud rahanduse ühtne liides. Juurdepääs siia.
- Quantum Media Group. IR/PR võimendatud. Juurdepääs siia.
- PlatoAiStream. Web3 andmete luure. Täiustatud teadmised. Juurdepääs siia.
- Allikas: https://stackabuse.com/handling-duplicate-values-in-a-pandas-dataframe/
- :on
- :on
- :mitte
- : kus
- 1
- 11
- 12
- 20
- 70
- 8
- 9
- a
- üle
- täpne
- tegevus
- tegelikult
- lisatud
- Lisaks
- aadress
- adresseerimine
- edasijõudnud
- pärast
- liitmine
- eesmärk
- Materjal: BPA ja flataatide vaba plastik
- Lubades
- võimaldab
- vahel
- an
- analüüs
- analüütik
- Analüütikud
- ja
- Teine
- mistahes
- ilmub
- kehtima
- Rakendades
- lähenemine
- asjakohane
- OLEME
- artikkel
- AS
- määratud
- At
- automaatselt
- Varundamine
- baar
- põhineb
- BE
- enne
- on
- alla
- BEST
- parimaid tavasid
- erapoolikus
- erapooletu
- tera
- piir
- kuid
- by
- arvutama
- arvutab
- CAN
- juhul
- juhtudel
- Põhjus
- Joonis
- Kontroll
- Vali
- puhastamine
- Veerg
- Veerud
- kombinatsioon
- ühendama
- ühine
- keeruline
- mõista
- Läbi viima
- Arvestama
- kaaluda
- arvestades
- piiranguid
- sisaldab
- Vastav
- looma
- loodud
- otsustav
- Praegune
- tava
- kohandamine
- andmed
- andmete analüüs
- andmesisestus
- andmebaas
- tegelema
- vaikimisi
- sõltub
- kirjeldatud
- Detection
- Määrama
- erinev
- otse
- arutama
- arutatud
- kaugus
- dokument
- ei
- don
- duplikaadid
- ajal
- iga
- tõhusalt
- tõhus
- tõhusalt
- element
- kõrvaldama
- kõrvaldades
- võimaldama
- võimaldab
- lõpp
- jõustada
- tagama
- kanne
- võrdne
- vead
- näide
- Välja arvatud
- eksisteerima
- selgitus
- uurima
- väljavõte
- vähe
- Lõpuks
- esimene
- Keskenduma
- Järel
- järgneb
- eest
- Sagedus
- Alates
- funktsioon
- funktsioonid
- tulevik
- kasu
- loodud
- Git
- eesmärk
- graafik
- suurem
- Grupp
- suunata
- käepide
- Käsitsemine
- käed-
- Olema
- siin
- hõljuma
- Kuidas
- Kuidas
- aga
- HTTPS
- i
- identiques
- tuvastatud
- tunnus
- identifitseerib
- identifitseerima
- identifitseerimiseks
- if
- rakendada
- rakendamisel
- oluline
- in
- ebatäpne
- sisaldama
- lisatud
- Kaasa arvatud
- indeks
- näitama
- näitab
- info
- esialgne
- sisend
- ülevaade
- teadmisi
- Näiteks
- terviklikkuse
- sisse
- kehtestama
- Sissejuhatus
- kutsutud
- küsimustes
- IT
- ITS
- John
- hoidma
- Labels
- viimane
- viima
- Õppida
- õppimine
- Pikkus
- laskma
- LG
- Raamatukogu
- LIMIT
- nimekiri
- kadunud
- Tegemine
- juhtima
- juhtiv
- märk
- märgitud
- Vastama
- sobitamine
- matplotlib
- max
- mai..
- keskmine
- tähendus
- vahendid
- meetmed
- mainitud
- meetod
- meetodid
- vigu
- Muudatused
- modifitseeritud
- muutma
- rohkem
- kõige
- mitmekordne
- peab
- nimi
- nimed
- loodus
- vajadustele
- Uus
- nüüd
- number
- saama
- esineb
- of
- Pakkumised
- on
- ONE
- töö
- valik
- Valikud
- or
- originaal
- Muu
- teised
- meie
- välja
- välja toodud
- väljund
- paar
- pandas
- parameeter
- parameetrid
- mustrid
- täitma
- teostatud
- esitades
- Platon
- Platoni andmete intelligentsus
- PlatoData
- mängib
- võimalik
- potentsiaalselt
- Praktiline
- tavad
- vajadus
- vältida
- eelmine
- protsess
- korralikult
- anda
- Python
- suhe
- põhjustel
- hiljuti
- dokumenteeritud
- andmed
- kõrvaldama
- eemaldades
- asendama
- asendamine
- esindama
- esindavad
- Vajab
- vastavalt
- vastutus
- piirata
- tulemuseks
- Tulemused
- säilitama
- tagasi
- Tulu
- ring
- Roll
- juur
- ROW
- eeskirjade
- s
- sama
- stsenaariumid
- skoor
- Teine
- Osa
- lõigud
- Seeria
- komplekt
- vari
- leht
- peaks
- märkimisväärne
- sarnane
- lihtne
- lihtsalt
- alates
- mõned
- konkreetse
- Stackabus
- standardite
- Käivitus
- Samm
- Sammud
- Peatus
- strateegiad
- nöör
- õpilane
- Õpilased
- järgnev
- Kokku võtta
- kohandatud
- võtab
- võtmine
- tehnikat
- testid
- kui
- et
- .
- Tulevik
- oma
- Neile
- SIIS
- Seal.
- seetõttu
- Need
- nad
- Kolmas
- see
- arvasin
- künnis
- Läbi
- aeg
- Ajaseeria
- korda
- ajatempel
- pealkirjaga
- et
- kokku
- Summa
- üleminek
- usaldusväärne
- kaks
- mõistma
- ainulaadne
- unikaalsus
- Värskendused
- ajakohastamine
- us
- kasutama
- Kasutatud
- kasutamine
- KINNITAGE
- kinnitamine
- väärtuslik
- väärtus
- Väärtused
- eri
- Ve
- tähtis
- tahan
- oli
- kuidas
- we
- Hästi
- M
- millal
- millal iganes
- kas
- mis
- kuigi
- miks
- will
- koos
- jooksul
- X
- sa
- sephyrnet
- null