16. час: Утврђивање градива¶
Сада ћемо мало застати и осврнути се на материјал са последња два часа. Задатке (осим прва два) реши у Џупајтеру.
Задатак 1. Погледај програм и дијаграм, па одговори на следећа питања:
import pandas as pd
import matplotlib.pyplot as plt
podaci = [["Ана", "ж", 13, 46, 160],
["Бојан", "м", 14, 52, 165],
["Влада", "м", 13, 47, 157],
["Гордана", "ж", 15, 54, 165],
["Дејан", "м", 15, 56, 163],
["Ђорђе", "м", 13, 45, 159]]
tabela = pd.DataFrame(podaci)
tabela.columns=["Име", "Пол", "Старост", "Тежина", "Висина"]
tabela1=tabela.set_index("Име")
tabela_po_visini = tabela1.sort_values(by="Висина")
plt.figure(figsize=(10,5))
plt.plot(tabela_po_visini.index, tabela_po_visini["Висина"])
plt.show()
plt.close()
- Зашто крива на дијаграму расте, када то није случај са подацима у листи
podaci
? - Зашто је сегмент дијаграма на самом крају хоризонталан?
- Шта треба изменити у програму да бисмо добили графикон који опада?
Задатак 2. Погледај пажљиво наредбе у следећој ћелији, па одговори на питања:
import pandas as pd
aditivi = pd.read_excel("podaci/Aditivi.xlsx", sheet_name="Адитиви", na_filter=False)
- Шта ће урадити функција
read_excel
ако се уклони аргументsheet_name="Адитиви"
(знамо да табела има само један радни лист)? - Шта значи аргумент
na_filter=False
функцијеread_excel
?
Задатак 3. Ученици једног разреда су скакали у даљ. Сваки ученик је скакао три пута и резултати су дати у датотеци SkokUDalj.csv која се налази у фолдеру podaci. Табела има заглавље и састоји се од четири колоне: "Презиме и име", "Скок1", "Скок2" и "Скок3".
(а) Учитај датотеку у структуру података DataFrame.
(б) Издвој из табеле оне редове које садрже ученике који су начинили бар један преступ. Преступ је у табели означен тако што је дужина одговарајућег скока постављена на 0.
Задатак 4. У табели podaci/SO2.xlsx
налазе се резултати мерења концентрације сумпор-диоксида у 2017. години у неким градовима Србије. Табела има четири колоне:
- МернаСтаница = Мерна станица
- СГВ = Средња годишња вредност у микрограмима по кубном метру
- БД125 = Број дана са више од 125 микрограма по кубном метру
- МДВ = Максимална дневна вредност у микрограмима по кубном метру
(а) Учитај ову табелу у структуру података DataFrame.
(б) Сортирај подаке по колони СГВ и прикажи вредности у овој колони хистограмом.
Задатак 5. У табели podaci/Cricket.xlsx
се налазе подаци о најбољим играчима крикета. Ова табела има заглавље.
(а) Учитај ову табелу у структуру података DataFrame и испиши првих неколико редова табеле да видиш како изгледа. Индексирај табелу колоном "Player".
(б) Додај табели нову колону "YP" (Years Played) и у њу упиши колико година је сваки играч био активан. (За сваког играча од године у колони "To" одузети годину у колони "From").
(в) Додај табели нову колону "ARY" (Average Runs per Year) и у њу упиши количник бројева из колоне "Runs" и "YP". (ARY = Runs / YP).
(г) Сортирај табелу по колони "ARY" од највећих ка најмањим вредностима и прикажи првих 25 редова табеле. У ком веку су били активни скоро сви од ових 25 играча? Шта мислиш зашто?
Задатак 6. У наредној ћелији се налазе подаци о неколико ученика. За сваког ученика је наведено његово презиме, име, ЈМБГ, пол, разред који похађа и просек на крају тог разреда:
# изврши ову ћелију
podaci = [
["Петровић", "Петар", "0308003800019", "м", 8, 4.52],
["Јаснић", "Јасна", "1210003805026", "ж", 8, 5.00],
["Аничић", "Аница", "1105004805019", "ж", 7, 4.11],
["Веснић", "Весна", "2901005705011", "ж", 6, 5.00],
["Ђорђевић", "Ђорђе", "1504005700012", "м", 6, 3.12],
["Милошев", "Милош", "1506004400056", "м", 7, 2.51],
["Милошев", "Петар", "1506004400057", "м", 7, 2.48],
["Ненадовић", "Ненад", "2109003800046", "м", 8, 3.58],
["Ненадовић", "Јасна", "2109003805021", "ж", 8, 4.21]]
(а) Формирај одговарајућу табелу позивом функције DataFrame.
(б) Прикажи секторским дијаграмом полну структуру ове групе.
(в) Прикажи секторским дијаграмом старосну структуру ове групе узимајући у обзир разред који је ученик завршио.
(г) Коју колону је најбоље одабрати као кључ за индексирање ове табеле? У ћелији испод ове направи нову табелу која се добија индексирањем претходне табеле одабраном колоном.
(д) Шта мислиш, зашто сваки држављанин наше државе има ЈМБГ?
(ђ) Направи нову табелу коју чине само ученици осмог разреда.
(е) Направи нову табелу коју чине само врло добри ученици.
(ж) Направи нову табелу коју чине само дечаци који нису одлични.
Задатак 7. У датотеци podaci/EUProjPop.xlsx се налазе подаци о очекиваном броју становника ЕУ до 2080. године. Ова табела има два радна листа: Baseline на коме се налазе подаци о очекиваном броју становника, и Migration на коме се налазе подаци о очекиваном броју становника у случају повећаног броја миграната у земље Европске уније.
(а) Учитај табелу са радног листа Baseline у структуру података DataFrame и прикажи првих неколико редова табеле да разумеш њену структуру.
(б) Додај табели нову врсту "EU-UK", па израчунај и у ту врсту упиши укупан очекивани број станвника ЕУ за сваку од наведених година без становника Велике Британије.
(г) Табелу добијену на овај начин упиши у датотеку podaci/EU-UK.xlsx