Како пронаћи средњу вредност, медијану и мод у Питхон-у?

Средња вредност, медијана и мод су основне теме статистике. Можете их лако израчунати у Питхон-у, са и без употребе спољних библиотека.

Ове три су главне мере за Централна тенденција. Централна тенденција нам омогућава да знамо „нормалне“ или „просечне“ вредности скупа података. Ако тек почињете са науком о подацима, ово је прави водич за вас.

До краја овог водича ћете:

  • Разумети концепт средње вредности, медијане и мода
  • Будите у могућности да креирате сопствене функције средње вредности, медијане и режима у Питхон-у
  • Искористите Питхон-ов статистички модул да бисте брзо почели да користите ова мерења

Ако желите верзију следећих вежби за преузимање, слободно погледајте ГитХуб спремиште.

Хајде да уђемо у различите начине израчунавања средње вредности, медијане и мода.

Израчунавање средње вредности у Питхон-у

Тхе значити или аритметички просек је најчешће коришћена мера централне тенденције.

Запамтите да је централна тенденција типична вредност скупа података.

Скуп података је збирка података, стога скуп података у Питхон-у може бити било која од следећих уграђених структура података:

  • Листе, тупле и скупови: колекција објеката
  • Стрингови: збирка знакова
  • Речник: колекција парова кључ/вредност

Напомена: Иако постоје друге структуре података у Питхон-у као што су редови или стекови, користићемо само оне уграђене.

Можемо израчунати средњу вредност тако што саберемо све вредности скупа података и поделимо резултат са бројем вредности. На пример, ако имамо следећу листу бројева:

[1, 2, 3, 4, 5, 6]

Средња вредност или просек би био 3,5 јер је збир листе 21, а њена дужина 6. Двадесет један подељено са шест је 3,5. Ову калкулацију можете извршити помоћу следећег прорачуна:

(1 + 2 + 3 + 4 + 5 + 6) / 6 = 21

У овом туторијалу користићемо играче кошаркашког тима као наш узорак података.

Креирање прилагођене средње функције

Почнимо од израчунавања просечне (средње) старости играча у кошаркашком тиму. Име тима ће бити „Питхониц Мацхинес“.

pythonic_machine_ages = [19, 22, 34, 26, 32, 30, 24, 24]

def mean(dataset):
    return sum(dataset) / len(dataset)

print(mean(pythonic_machine_ages))

Разбијање овог кода:

  • „Питхониц_мацхине_агес“ је листа са узрастом кошаркаша
  • Дефинишемо функцију меан() која враћа збир датог скупа података подељен његовом дужином
    • Функција сум() враћа укупан збир (иронично) вредности итерабле, у овом случају, листе. Покушајте да проследите скуп података као аргумент, он ће вратити 211
    • Функција лен() враћа дужину итерабле, ако јој проследите скуп података, добићете 8
  • Проследимо узраст кошаркашког тима функцији меан() и штампамо резултат.

Ако проверите излаз, добићете:

26.375
# Because 211 / 8 = 26.375

Овај резултат представља просечну старост кошаркаша. Обратите пажњу на то како се број не појављује у скупу података, али прецизно описује старост већине играча.

  Како копирати везу свог Инстаграм профила из апликације

Коришћењем меан() из Питхон статистичког модула

Израчунавање мера централне тенденције је уобичајена операција за већину програмера. То је зато што Пајтонова статистика модул пружа различите функције за њихово израчунавање, заједно са другим основним темама статистике.

Пошто је део Питхон стандардна библиотека нећете морати да инсталирате никакав екстерни пакет са ПИП-ом.

Ево како користите овај модул:

from statistics import mean

pythonic_machine_ages = [19, 22, 34, 26, 32, 30, 24, 24]

print(mean(pythonic_machine_ages))

У горњем коду, само треба да увезете функцију меан() из модула статистике и проследите јој скуп података као аргумент. Ово ће вратити исти резултат као прилагођена функција коју смо дефинисали у претходном одељку:

26.375

Сада вам је кристално јасан концепт средње вредности, хајде да наставимо са мерењем медијане.

Проналажење медијане у Питхон-у

Тхе медијана је средња вредност сортираног скупа података. Користи се — опет — да обезбеди „типичне“ вредности одређеног Популација.

У програмирању можемо дефинисати медијану као вредност која раздваја секвенцу на два дела — доњу и вишу половину.

Да бисмо израчунали медијану, прво морамо да сортирамо скуп података. То можемо урадити помоћу алгоритама за сортирање или коришћењем уграђене функције сортед(). Други корак је да се утврди да ли је дужина скупа података непарна или парна. У зависности од тога, неки од следећих процеса:

  • Непарно: Медијан је средња вредност скупа података
  • Парно: медијана је збир две средње вредности подељен са два

Настављајући са нашим скупом података кошаркашког тима, хајде да израчунамо средњу висину играча у центиметрима:

[181, 187, 196, 196, 198,  203, 207, 211, 215]
# Since the dataset is odd, we select the middle value
median = 198

Као што видите, пошто је дужина скупа података непарна, можемо узети средњу вредност као медијану. Међутим, шта би се десило да се играч управо пензионише?

Требало би да израчунамо медијану узимајући две средње вредности скупа података

[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

Креирање прилагођене функције медијана

Хајде да имплементирамо горњи концепт у Питхон функцију.

Запамтите три корака које треба да следимо да бисмо добили медијану скупа података:

  • Сортирај скуп података: То можемо урадити помоћу сортед() функције
  • Одредите да ли је непаран или паран: То можемо урадити тако што ћемо добити дужину скупа података и користити модуло оператор (%)
  • Вратите медијану на основу сваког случаја:
    • Одд: Врати средњу вредност
    • Чак: врати просек две средње вредности

То би резултирало следећом функцијом:

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

Штампање резултата наших скупова података:

print(median(pythonic_machines_heights))
print(median(after_retirement))

Излаз:

198
200.5

Обратите пажњу на то како креирамо променљиву података која указује на сортирану базу података на почетку функције. Иако су горенаведене листе сортиране, желимо да креирамо функцију за вишекратну употребу, тако да сортирамо скуп података сваки пут када се функција позове.

  Како додати ГИФ у своју Инстаграм причу

Индекс чува средњу вредност — или горњу средњу вредност — скупа података, коришћењем оператора целобројног дељења. На пример, ако бисмо прослеђивали листу „питхониц_мацхине_хеигхтс“, она би имала вредност 4.

Запамтите да у Питхон секвенци индекси почињу од нуле, то је зато што смо у могућности да вратимо средњи индекс листе, са целобројним дељењем.

Затим проверавамо да ли је дужина скупа података непарна упоређивањем резултата модуло операције са било којом вредношћу која није нула. Ако је услов тачан, враћамо средњи елемент, на пример, са листом „питхониц_мацхине_хеигхтс“:

>>> pythonic_machine_heights[4]
# 198

С друге стране, ако је скуп података паран, враћамо збир средњих вредности подељен са два. Имајте на уму те податке[index -1] нам даје доњу средину скупа података, док подаци[index] снабдева нас горњом средњом тачком.

Коришћење медиан() из Питхон статистичког модула

Овај начин је много једноставнији јер користимо већ постојећу функцију из модула статистике.

Лично, ако постоји нешто већ дефинисано за мене, користио бих то због ДРИ —Не понављај се — принципа (у овом случају, не понављај туђи код).

Можете израчунати медијану претходних скупова података помоћу следећег кода:

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))

Излаз:

198
200.5

Рачунање режима у Питхон-у

Тхе режим је најчешћа вредност у скупу података. О њој можемо размишљати као о „популарној“ групи школе, која може представљати стандард за све ученике.

Пример режима може бити дневна продаја у техничкој продавници. Начин тог скупа података био би најпродаванији производ одређеног дана.

['laptop', 'desktop', 'smartphone', 'laptop', 'laptop', 'headphones']

Као што можете да схватите, режим горњег скупа података је „лаптоп“ јер је то била најчешћа вредност на листи.

Добра ствар у вези са режимом је то што скуп података не сме бити нумерички. На пример, можемо да радимо са низовима.

Хајде да анализирамо продају другог дана:

['mouse', 'camera', 'headphones', 'usb', 'headphones', 'mouse']

Горњи скуп података има два режима: „миш“ и „слушалице“ јер оба имају фреквенцију од два. То значи да је а мултимодалне скуп података.

  9 Хостинг говорног сервера за личне или пословне потребе [Teamspeak, Mumble, Lavalink]

Шта ако не можемо да пронађемо режим у скупу података, попут оног испод?

['usb', 'camera', 'smartphone', 'laptop', 'TV']

Ово се зове а дистрибуција униформиу основи, то значи да нема режима у скупу података.

Сада имате брзо разумевање концепта режима, хајде да га израчунамо у Питхон-у.

Креирање функције прилагођеног режима

Учесталост вредности можемо замислити као пар кључ-вредност, другим речима, Питхон речник.

Рекапитулирајући кошаркашку аналогију, можемо користити два скупа података за рад: бодови по утакмици и спонзорство патика неких играча.

Да бисмо пронашли режим, прво морамо да креирамо речник фреквенција са сваком од вредности присутних у скупу података, затим добијемо максималну фреквенцију и вратимо све елементе са том фреквенцијом.

Хајде да ово преведемо у код:

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

Провера резултата прослеђивањем две листе као аргумената:

print(mode(points_per_game))
print(mode(sponsorship))

Излаз:

[10]
['nike', 'adidas', 'jordan']

Као што видите, прва изјава за штампање нам је дала један режим, док је друга вратила више режима.

Објашњавајући дубље код изнад:

  • Проглашавамо фреквенцијски речник
  • Итерирамо скуп података да бисмо креирали а хистограм — статистички термин за скуп бројача (или фреквенција) —
    • Ако се кључ пронађе у речнику, он вредности додаје један
    • Ако није пронађен, креирамо пар кључ/вредност са вредношћу један
  • Најчешћа променљива чува — иронично — највећу вредност (не кључ) речника фреквенција
  • Враћамо променљиву режима која се састоји од свих тастера у фреквенцијском речнику са највећом фреквенцијом.

Обратите пажњу на то колико је важно именовање променљивих за писање читљивог кода.

Коришћење моде() и мултимоде() из Питхон статистичког модула

Још једном, модул статистике нам пружа брз начин за обављање основних статистичких операција.

Можемо користити две функције: режим() и мултимоде().

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']

Код изнад увози обе функције и дефинише скупове података са којима смо радили.

Ево мале разлике: функција моде() враћа први режим на који наиђе, док мултимоде() враћа листу са најчешћим вредностима у скупу података.

Сходно томе, можемо рећи да је прилагођена функција коју смо дефинисали заправо мултимод() функција.

print(mode(points_per_game))
print(mode(sponsorship))

Излаз:

10
nike

Напомена: У Питхон-у 3.8 или новијем, функција моде() враћа први начин који је пронашла. Ако имате старију верзију, добићете а СтатистицсЕррор.

Коришћење функције мултимоде():

print(multimode(points_per_game))
print(multimode(sponsorship))

Излаз:

[10]
['nike', 'adidas', 'jordan']

Да сумирам

Честитам! Ако сте пратили до сада, научили сте како да израчунате средњу вредност, медијану и мод, главна мерења централне тенденције.

Иако можете да дефинишете своје прилагођене функције да бисте пронашли средњу вредност, медијану и режим, препоручује се да користите модул статистике, пошто је он део стандардне библиотеке и не морате ништа да инсталирате да бисте почели да га користите.

Затим прочитајте пријатељски увод у анализу података у Питхон-у.