Az átlag, a medián és a módusz a statisztika alapvető témái. Könnyen kiszámíthatja őket Pythonban, külső könyvtárak használatával és anélkül.
Ez a három fő intézkedés központi tendencia. A központi tendencia egy adathalmaz „normál” vagy „átlagos” értékét adja meg. Ha csak most kezdi az adattudományt, ez a megfelelő oktatóanyag az Ön számára.
Az oktatóanyag végére a következőket fogod tudni:
- Értse az átlag, medián és mód fogalmát
- Legyen képes saját átlag-, medián- és módfüggvényeket létrehozni a Pythonban
- Használja a Python statisztikai modulját a mérések gyors használatához
Ha szeretnéd letölteni a következő gyakorlatokat, bátran nézd meg a GitHub adattár.
Nézzük meg az átlag, medián és módus kiszámításának különböző módjait.
Tartalomjegyzék
Az átlag kiszámítása Pythonban
Az átlagos vagy a számtani átlag a központi tendencia leggyakrabban használt mérőszáma.
Ne feledje, hogy a központi tendencia egy adathalmaz tipikus értéke.
Az adatkészlet adatok gyűjteménye, ezért a Pythonban lévő adatkészlet a következő beépített adatszerkezetek bármelyike lehet:
- Listák, sorok és halmazok: objektumok gyűjteménye
- Strings: karakterek gyűjteménye
- Szótár: kulcs-érték párok gyűjteménye
Megjegyzés: Bár vannak más adatstruktúrák is a Pythonban, például sorok vagy veremek, csak a beépítetteket fogjuk használni.
Az átlagot úgy számíthatjuk ki, hogy összeadjuk egy adathalmaz összes értékét, és az eredményt elosztjuk az értékek számával. Például, ha a következő számlistánk van:
[1, 2, 3, 4, 5, 6]
Az átlag vagy átlag 3,5 lenne, mert a lista összege 21, hossza pedig 6. Huszonegy osztva hattal 3,5. Ezt a számítást az alábbi számítással végezheti el:
(1 + 2 + 3 + 4 + 5 + 6) / 6 = 21
Ebben az oktatóanyagban egy kosárlabdacsapat játékosait használjuk mintaadatokként.
Egyéni átlagfüggvény létrehozása
Kezdjük azzal, hogy kiszámoljuk egy kosárlabdacsapat játékosainak átlagos (átlagos) életkorát. A csapat neve „Pythonic Machines” lesz.
pythonic_machine_ages = [19, 22, 34, 26, 32, 30, 24, 24] def mean(dataset): return sum(dataset) / len(dataset) print(mean(pythonic_machine_ages))
A kód lebontása:
- A „pythonic_machine_ages” egy lista a kosárlabdázók életkorával
- Definiálunk egy mean() függvényt, amely visszaadja az adott adathalmaz összegét osztva annak hosszával
- A sum() függvény egy iterálható, ebben az esetben egy lista értékeinek teljes összegét adja vissza (ironikus módon). Próbálja meg argumentumként átadni az adatkészletet, ez 211-et ad vissza
- A len() függvény egy iterálható hosszát adja vissza, ha átadja neki az adatkészletet, 8-at kap
- A kosárlabda csapat korosztályát átadjuk az mean() függvénynek, és kinyomtatjuk az eredményt.
Ha ellenőrzi a kimenetet, a következőket kapja:
26.375 # Because 211 / 8 = 26.375
Ez a kimenet a kosárlabdacsapat játékosainak átlagéletkorát jelenti. Vegye figyelembe, hogy a szám nem jelenik meg az adatkészletben, hanem pontosan leírja a legtöbb játékos életkorát.
A Python statisztikai modulból származó mean() használatával
A központi tendencia mértékeinek kiszámítása a legtöbb fejlesztő számára gyakori művelet. Azért mert Python statisztikái modul változatos funkciókat kínál ezek kiszámításához, valamint más alapvető statisztikai témákat.
Mivel ez része a Python szabványos könyvtár nem kell telepítenie semmilyen külső PIP-csomagot.
Így használja ezt a modult:
from statistics import mean pythonic_machine_ages = [19, 22, 34, 26, 32, 30, 24, 24] print(mean(pythonic_machine_ages))
A fenti kódban csak importálnia kell az átlag() függvényt a statisztikai modulból, és argumentumként át kell adnia neki az adatkészletet. Ez ugyanazt az eredményt adja vissza, mint az előző részben meghatározott egyéni függvény:
26.375
Most már kristálytiszta az átlag fogalma, folytassuk a medián mérést.
A medián megkeresése Pythonban
Az középső egy rendezett adatkészlet középső értéke. Ezt ismét egy meghatározott érték „tipikus” értékének megadására használják népesség.
A programozás során a mediánt úgy definiálhatjuk, mint az az érték, amely egy sorozatot két részre – az alsó és a felső felére – választ el.
A medián kiszámításához először rendeznünk kell az adatkészletet. Ezt megtehetjük rendezési algoritmusokkal vagy a beépített sorted() függvény használatával. A második lépés annak meghatározása, hogy az adatkészlet hossza páratlan vagy páros. Ettől függően a következő folyamatok közül néhány:
- Páratlan: A medián az adatkészlet középső értéke
- Páros: A medián a két középső érték összege osztva kettővel
Folytatva kosárlabdacsapatunk adatkészletét, számítsuk ki a játékosok középmagasságát centiméterben:
[181, 187, 196, 196, 198, 203, 207, 211, 215] # Since the dataset is odd, we select the middle value median = 198
Mint látható, mivel az adathalmaz hossza páratlan, így a középső értéket vehetjük mediánnak. De mi történne, ha egy játékos éppen visszavonulna?
A mediánt az adathalmaz két középső értékének figyelembevételével kell kiszámítanunk
[181, 187, 196, 198, 203, 207, 211, 215] # We select the two middle values, and divide them by 2 median = (198 + 203) / 2 median = 200.5
Egyéni mediánfüggvény létrehozása
Valósítsuk meg a fenti koncepciót Python-függvénybe.
Ne feledje a három lépést, amelyet követnünk kell egy adatkészlet mediánjának kiszámításához:
- Adatkészlet rendezése: Ezt a sorted() függvénnyel tehetjük meg
- Határozzuk meg, hogy páratlan vagy páros: Ezt úgy tehetjük meg, hogy megkapjuk az adatkészlet hosszát, és a modulo operátort használjuk (%)
- Adja vissza a mediánt az egyes esetek alapján:
- Páratlan: a középső értéket adja vissza
- Páros: A két középső érték átlagát adja vissza
Ez a következő függvényt eredményezné:
pythonic_machines_heights = [181, 187, 196, 196, 198, 203, 207, 211, 215] after_retirement = [181, 187, 196, 198, 203, 207, 211, 215] def median(dataset): data = sorted(dataset) index = len(data) // 2 # If the dataset is odd if len(dataset) % 2 != 0: return data[index] # If the dataset is even return (data[index - 1] + data[index]) / 2
Adatkészleteink eredményének kinyomtatása:
print(median(pythonic_machines_heights)) print(median(after_retirement))
Kimenet:
198 200.5
Figyeljük meg, hogyan hozunk létre egy adatváltozót, amely a függvény elején a rendezett adatbázisra mutat. Bár a fenti listák rendezve vannak, szeretnénk létrehozni egy újrafelhasználható függvényt, ezért minden alkalommal rendezzük az adatkészletet a függvény meghívásakor.
Az index az adatkészlet középső értékét – vagy felső-középső értékét – tárolja az egész osztás operátorával. Például, ha átadnánk a „pythonic_machine_heights” listát, akkor az értéke 4 lenne.
Ne feledje, hogy a Pythonban az indexek nullával kezdődnek, ez azért van, mert vissza tudjuk adni a lista középső indexét egész számokkal való osztással.
Ezután ellenőrizzük, hogy az adathalmaz hossza páratlan-e, ha összehasonlítjuk a modulo művelet eredményét bármely olyan értékkel, amely nem nulla. Ha a feltétel igaz, akkor a középső elemet adjuk vissza, például a „pythonic_machine_heights” listával:
>>> pythonic_machine_heights[4] # 198
Másrészt, ha az adatkészlet páros, akkor a középső értékek összegét osztjuk kettővel. Vegye figyelembe, hogy az adatok[index -1] megadja az adathalmaz alsó felezőpontját, míg a data[index] ellát bennünket a felső középponttal.
A median() használata a Python statisztikai modulból
Ez a módszer sokkal egyszerűbb, mert a statisztikai modulból egy már létező függvényt használunk.
Személy szerint, ha van valami már definiálva számomra, akkor a SZÁRAZ —Ne ismételd magad — elv miatt használnám (ebben az esetben ne ismételd meg mások kódját).
Az előző adathalmazok mediánját a következő kóddal számíthatja ki:
from statistics import median pythonic_machines_heights = [181, 187, 196, 196, 198, 203, 207, 211, 215] after_retirement = [181, 187, 196, 198, 203, 207, 211, 215] print(median(pythonic_machines_heights)) print(median(after_retirement))
Kimenet:
198 200.5
A mód kiszámítása Pythonban
Az mód a leggyakoribb érték az adatkészletben. Felfoghatjuk úgy, mint egy iskola „népszerű” csoportját, amely mércét jelenthet minden tanuló számára.
A módra példa lehet egy műszaki bolt napi értékesítése. Az adatkészlet módja egy adott napon a legtöbbet eladott termék lenne.
['laptop', 'desktop', 'smartphone', 'laptop', 'laptop', 'headphones']
Amint láthatja, a fenti adatkészlet módja a „laptop”, mert ez volt a leggyakoribb érték a listában.
A módban az a klassz, hogy az adatkészlet nem lehet numerikus. Például dolgozhatunk karakterláncokkal.
Elemezzük egy másik nap eladásait:
['mouse', 'camera', 'headphones', 'usb', 'headphones', 'mouse']
A fenti adatkészletnek két módja van: „egér” és „fejhallgató”, mert mindkettőnek kettős a frekvenciája. Ez azt jelenti, hogy a kombinált adatkészlet.
Mi van, ha nem találjuk a módot egy adathalmazban, mint például az alábbi?
['usb', 'camera', 'smartphone', 'laptop', 'TV']
Ezt hívják a egyenletes eloszlásalapvetően azt jelenti, hogy nincs mód az adatkészletben.
Most már gyorsan megértette a mód fogalmát, számoljuk ki Pythonban.
Egyéni mód funkció létrehozása
Egy érték gyakoriságát kulcs-érték párnak tekinthetjük, más szóval Python szótárnak.
Összefoglalva a kosárlabda analógiát, két adatkészlettel dolgozhatunk: A meccsenkénti pontok és néhány játékos tornacipő-szponzorálása.
A mód megtalálásához először létre kell hoznunk egy gyakorisági szótárt az adatkészletben lévő minden egyes értékkel, majd ki kell számítanunk a maximális gyakoriságot, és vissza kell adni az összes elemet ezzel a gyakorisággal.
Fordítsuk le ezt kódra:
points_per_game = [3, 15, 23, 42, 30, 10, 10, 12] sponsorship = ['nike', 'adidas', 'nike', 'jordan', 'jordan', 'rebook', 'under-armour', 'adidas'] def mode(dataset): frequency = {} for value in dataset: frequency[value] = frequency.get(value, 0) + 1 most_frequent = max(frequency.values()) modes = [key for key, value in frequency.items() if value == most_frequent] return modes
A két lista argumentumként történő átadásával kapott eredmény ellenőrzése:
print(mode(points_per_game)) print(mode(sponsorship))
Kimenet:
[10] ['nike', 'adidas', 'jordan']
Mint látható, az első nyomtatási utasítás egyetlen módot adott nekünk, míg a második több módot adott vissza.
A fenti kód részletesebb magyarázata:
- Frekvenciaszótárt deklarálunk
- Iterálunk az adatkészleten, hogy létrehozzuk a hisztogram — a számlálók (vagy frekvenciák) halmazának statisztikai kifejezése —
- Ha a kulcs megtalálható a szótárban, akkor hozzáad egyet az értékhez
- Ha nem található, létrehozunk egy kulcs-érték párt egy értékkel
- A leg_gyakori változó – ironikus módon – a gyakorisági szótár legnagyobb értékét (nem kulcsát) tárolja
- Azt a módváltozót adjuk vissza, amely a frekvenciaszótárban a legtöbb gyakorisággal rendelkező összes kulcsból áll.
Jegyezze meg, milyen fontos a változó elnevezése az olvasható kód írásához.
A mode() és a multimode() használata a Python statisztikai modulból
A statisztikai modul ismét gyors módot kínál az alapvető statisztikai műveletek elvégzésére.
Két funkciót használhatunk: mód() és multimode().
from statistics import mode, multimode points_per_game = [3, 15, 23, 42, 30, 10, 10, 12] sponsorship = ['nike', 'adidas', 'nike', 'jordan', 'jordan', 'rebook', 'under-armour', 'adidas']
A fenti kód mindkét függvényt importálja, és meghatározza azokat az adatkészleteket, amelyekkel dolgoztunk.
Itt jön a kis különbség: A mode() függvény az első módot adja vissza, amivel találkozik, míg a multimode() egy listát ad vissza az adatkészlet leggyakoribb értékeivel.
Következésképpen azt mondhatjuk, hogy az általunk meghatározott egyéni függvény valójában egy multimode() függvény.
print(mode(points_per_game)) print(mode(sponsorship))
Kimenet:
10 nike
Megjegyzés: A Python 3.8-as vagy újabb verziójában a mode() függvény az első talált módot adja vissza. Ha régebbi verziója van, akkor a StatisticsError.
A multimode() függvény használata:
print(multimode(points_per_game)) print(multimode(sponsorship))
Kimenet:
[10] ['nike', 'adidas', 'jordan']
Összefoglalva
Gratulálunk! Ha eddig követte, megtanulta, hogyan kell kiszámítani az átlagot, a mediánt és a módust, a fő központi tendencia méréseket.
Bár megadhatja egyéni függvényeit az átlag, a medián és a mód megtalálásához, ajánlott a statisztikai modul használata, mivel ez a szabványos könyvtár része, és semmit sem kell telepítenie a használat megkezdéséhez.
Ezután olvassa el a Python adatelemzésének barátságos bevezetését.