Professional Documents
Culture Documents
24. и 25. час_Статистичке анализе табеларних података
24. и 25. час_Статистичке анализе табеларних података
24. и 25. час_Статистичке анализе табеларних података
Подсетник:
Најједноставнији начин да отвориш Џупитер интерактивне радне свеске које прате овај курс је
да ПРЕКОПИРАШ следећи линк у адресно поље твог интернет претраживача:
https://mybinder.org/v2/gh/Petlja/Informatika_VIII-files/master
Просек
Постоји много ситуација када се низ бројева може згодно описати неком карактеристичном
вредношћу.
На пример, ученици добијају оцене из много предмета, али на крају школске године школски
систем жели да "изведе" једну оцену и да том оценом окарактерише рад ученика у тој години.
Дакле, да бисмо добили просек низа бројева саберемо све елементе низа и тако добијени број
поделимо дужином низа.
У Пајтону се обе ове активности могу обавити позивом одговарајуће уграђене функције:
функција len рачуна дужину низа,
док функција sum рачуна збир елемената низа бројева.
На пример:
L = [1, 3, 5, 7, 9, 10]
print(len(L))
print(sum(L))
Како ћемо у много наврата рачунати просек, дефинисаћемо нову функцију која га рачуна.
У претходним разредима смо се већ срели са дефиницијама нових функција у Пајтону и зато мали
програм који следи не би требало да представља изненађење за тебе:
def prosek(L):
return sum(L) / len(L)
Претходни програм је у систем унео нову дефиницију: функција prosek ће прихватити неки низ L и
онда ће као резултат свог рада вратити збир елемената низа L подељен дужином низа L (дакле,
просек елемената тог низа).
Примети да је списак Пајтон наредби које представљају тело функције и објашњавају шта функција
ради увучен за четири празнине.
У ћелији испод унете су оцене једног ученика из информатике и приказан је њихов просек:
ocene = [5, 3, 5, 4, 4, 5]
print("Prosek ocena iz informatike je", prosek(ocene))
round(1.666666666, 2)
plt.figure(figsize=(10,5))
plt.bar(predmeti, ocene)
plt.title("Оцене на полугодишту")
plt.show()
plt.close()
након уноса и извршавања добијамо:
Сада желимо да преко хистограма нацртамо црвену линију која представља просечну оцену.
Прво ћемо израчунати просечну оцену po:
po = prosek(ocene)
а онда ћемо на горњи дијаграм додати и низ података који изгледа овако:
plt.figure(figsize=(10,5))
plt.bar(predmeti, ocene)
plt.plot(predmeti, [po, po, po, po, po, po, po], color="r")
plt.title("Оцене на полугодишту")
plt.show()
plt.close()
Ако један исти податак s треба поновити n пута можемо да пишемо као горе:
[s]*n
Ознаком [s]*n смо Пајтону рекли да желимо да направимо нови низ који се добија тако што се
низ [s] "умножи" n пута. На пример, [5]*7 = [5, 5, 5, 5, 5, 5, 5]. (Такође је [6, 7, 8]*3 =
[6, 7, 8, 6, 7, 8, 6, 7, 8], али нам ово за сада неће бити потребно.)
plt.figure(figsize=(10,5))
plt.bar(predmeti, ocene)
plt.plot(predmeti, [po] * len(ocene), color="r")
plt.title("Оцене на полугодишту")
plt.show()
plt.close()
За крај ћемо дијаграму додати легенду:
plt.figure(figsize=(10,5))
plt.bar(predmeti, ocene, label="оцене")
plt.plot(predmeti, [po] * len(ocene), color="r", label="просек")
plt.title("Оцене на полугодишту")
plt.legend()
plt.show()
plt.close()
Задаци
Задатак 1. Једна збирка кратких прича за децу има 12 страна - по једна прича на свакој страни.
Приче имају мали број речи, и то, по странама: 271, 354, 296, 301, 333, 326, 285, 298, 327, 316, 287 и
314. Колики је просечан број речи по причи у овој књизи?
Задатак 2.
(а) Мирко из музичког има 5, 4, 5 и још једну оцену која се не види јер се преко ње разлило
мастило. Просек његових оцена из музичког је 4. Која је то оцена преко које се разлило мастило?
(б) Колико још петица Мирко треба да добије да би наставница музичког за крај године морала да
му закључи оцену 5? (Према Правилнику о оцењивању у основним школама, ако је просек оцена
уписаних у дневник 4,50 или више, наставник мора да закључи оцену 5.)
(Помоћ:
-решење задатка под (а) израчунај - за то ти не треба Пајтон;
-решење задатка под (б) можеш да израчунаш, али можеш и да га погодиш тако што ћеш
експериментисати са разним могућностима Миркових оцена из музичког - користи
функцијe prosek и round.)
Задатак 3. Првих десет места на АТП листи на дан 12.11.2018. изгледа овако:
(а) Прикажи хистограмом податке о АТП поенима првих десет тенисера на свету, а црвеном
линијом прикажи просечан број поена првих десет играча на АТП листи.
(б) Колико од њих је изнад просека?
odstupanje = [0] * len(ocene) # овим смо направили низ нула, само да резервишемо
простор
for i in range(len(ocene)):
odstupanje[i] = ocene[i] - po
Проценти и секторски дијаграми
На пример, у једном разреду има 30 ученика и њихове оцене из информатике су дате у следећем
низу:
oceneInf = [3, 4, 5, 4, 5, 3, 4, 5, 2, 4, 5, 4, 5, 4, 2, 3, 1, 4, 5, 4, 3, 2, 3,
4, 5, 4, 5, 5, 4, 3]
Фреквенцијска анализа овог низа се своди на то да се утврди колико има петица, четворки, тројки,
двојки и јединица у том разреду.
Уместо да то урадимо ручно (рецимо, да направимо табелицу па да "лупамо рецке"), пустићемо
Пајтон да то уради за нас.
Пајтон има уграђену финкцију count која може да преброји колико пута се у некој листи јавља неки
елемент:
ocena5 = oceneInf.count(5)
ocena4 = oceneInf.count(4)
ocena3 = oceneInf.count(3)
ocena2 = oceneInf.count(2)
ocena1 = oceneInf.count(1)
print("Ocene u razredu su raspodeljene kako sledi:")
print("Ocenu 5 ima", ocena5, "ucenika")
print("Ocenu 4 ima", ocena4, "ucenika")
print("Ocenu 3 ima", ocena3, "ucenika")
print("Ocenu 2 ima", ocena2, "ucenika")
print("Ocenu 1 ima", ocena1, "ucenika")
Проценти
Реч проценaт потиче од латинског pro centum што значи "у стотини". Зато је
ukupno = len(oceneInf)
procenat5 = 100.0 * ocena5 / ukupno
procenat4 = 100.0 * ocena4 / ukupno
procenat3 = 100.0 * ocena3 / ukupno
procenat2 = 100.0 * ocena2 / ukupno
procenat1 = 100.0 * ocena1 / ukupno
print("Ocene u razredu su raspodeljene kako sledi:")
print("Ocenu 5 ima ", procenat5, "% ucenika", sep="")
print("Ocenu 4 ima ", procenat4, "% ucenika", sep="")
print("Ocenu 3 ima ", procenat3, "% ucenika", sep="")
print("Ocenu 2 ima ", procenat2, "% ucenika", sep="")
print("Ocenu 1 ima ", procenat1, "% ucenika", sep="")
Дакле, фреквенцијска анализа нам даје вредности у конкретном износу
(рецимо, у разреду има 9 петица, 11 четворки и тако даље).
Ако ове податке представимо процентима добијамо дистрибуцију оцена која нам говори
о заступљености оцена у релативним односима.
Секторски дијаграми
У ситуацијама када се приказује колико процената које компоненте учествује у саставу неке целине
погодно је податке приказати секторским дијаграмом који представља круг исечен на исечке
попут пице.
Круг тада представља целину (100%), док исечци представљају компоненте које учествују у целини
исказане у процентима.
Податке из ове табеле ћемо илустровати секторским дијаграмом. Прво ћемо увести библиотеку:
plt.pie(procenti, labels=ocene)
plt.title("Оцене из информатике")
plt.show()
plt.close()
Није лоше, али није ни сјајно јер је дијаграм мало издужен – „јајаст“.
Овај проблем можемо решити тако што ћемо рећи систему за цртање да дијаграм нацрта унутар
квадрата:
plt.figure(figsize=(6,6))
plt.pie(procenti, labels=ocene)
plt.title("Оцене из информатике")
plt.show()
plt.close()
Ако желимо да нагласимо број петица у разреду можемо одговарајући сектор да "измакнемо"
мало из средишта.
То се постиже аргументом explode функције pie који за сваки податак у низу каже колико треба да
га измакнемо из средишта (0 = не треба изместити сектор из средишта дијаграма; што је већи број,
то је и измештање веће).
Важно је напоменути да ово није тачан састав наше атмосфере: у њој има и других гасова, али у
траговима (како то хемичари воле да кажу) па они нису приказани у табели.
(а) Једна књига је коштала 2460 динара, а онда је књижара снизила њену цену за 20%. Колико сада
кошта књига?
(б) Друга књига у истој књижари након снижења од 20% кошта 1480 динара. Колико је коштала пре
снижења?
Задатак 2. Према подацима Републичког завода за статистику процењује се да старосна структура
становника Републике Србије на дан 31.12.2017. изгледа овако:
IzabelinDnevnik = [1,2,4,7,2,4,7,6,7,5,6,7,3,5,7,1,3,6,2,3,4,2,3,1,4,7,7,
6,5,6,4,5,6,2,3,4,5,1,3,4,2,5,7,2,3,5,3,5,7,6,7,2,3,7,
1,2,3,4,5,6,7,2,7,3,4,1,5,6,1,2,4,5,6,7,1,3,4,1,2,3,4,
2,5,7,6,4,5,6,1,3,7,5,7,1,2,3,7,7,3,4,7,1,2,4,7,4,7,2,
3,4,4,6,8,1,7,7,7,3,4,5,6,7,1,2,4,7,1,2,3,1,7,2,7]