{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Средњошколци у Републици Србији" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "У овом темату позабавићемо се подацима о средњошколском образовању у Републици Србији који су нам доступни кроз отворене податке Министарства за просвету, науку и технолошки развој: http://opendata.mpn.gov.rs. Фајлови о средњошколцима и средњим школама у .csv формату (преузети 01.12.2019.) налазе се у локалном фолдеру и у редовима који следе, бавићемо се кратком прерадом тих података за лакшу обраду у наредним радним свескама. Специјално, користећи библиотеку pandas за учитавање и анализу табеларних података ћемо: \n", "* брисати непотребне колоне\n", "* додавати нове колоне на основу рачунских операцијама над постојећим подадацма\n", "* уз помоћ библиотеке *cyrtranslit* ћемо мењати текстуалне вредности из латиничног у ћирилично писмо и обратно\n", "* груписати податке и спајати их у нове табеле\n", "* сачувати припремљен фајл за даљу обраду" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "import cyrtranslit" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Учитавање и обрада табеларних података је изузетно једноставна и практична у библиотеци [**pandas**](https://pandas.pydata.org/) због чега је она изузетно популарна. \n", "Податке о средњошколцима и средњим школама преузели смо у .csv формату (вредности раздвојене зарезом, енг. coma separated values), па ћемо их учитати функцијом [**read_csv**](https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html):" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "data = pd.read_csv('data/srednjoskolci data/raw data/MPNTRopendata_ss.csv')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "У учитане податке брзо можемо завирити на пар следећих начина:\n", "\n", "Функција [**head()**](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.head.html) излистава првих 5 редова табеле, док **head(n)** излистава n првих редова:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
#ИД установеВласништвоОкругОпштинаНазив установеПодручје радаОбразовни профилТрајање образовањаЈезик наставе...Број ИОП-а 2 - трећи разредБрој ИОП-а 3 - трећи разредБрој одељења - четврти разредБрој комбинованих одељења - четврти разредБрој специјалних одељења - четврти разредБрој ученика - четврти разредБрој девојчица - четврти разредБрој ИОП-а 1 - четврти разредБрој ИОП-а 2 - четврти разредБрој ИОП-а 3 - четврти разред
01.01322ДржавноСевернобачки управни округБачка ТополаПољопривредна школаПољопривреда, производња и прерада хранеПољопривредни техничар4Мађарски језик...00100186000
\n", "

1 rows × 42 columns

\n", "
" ], "text/plain": [ " # ИД установе Власништво Округ Општина \\\n", "0 1.0 1322 Државно Севернобачки управни округ Бачка Топола \n", "\n", " Назив установе Подручје рада \\\n", "0 Пољопривредна школа Пољопривреда, производња и прерада хране \n", "\n", " Образовни профил Трајање образовања Језик наставе ... \\\n", "0 Пољопривредни техничар 4 Мађарски језик ... \n", "\n", " Број ИОП-а 2 - трећи разред Број ИОП-а 3 - трећи разред \\\n", "0 0 0 \n", "\n", " Број одељења - четврти разред Број комбинованих одељења - четврти разред \\\n", "0 1 0 \n", "\n", " Број специјалних одељења - четврти разред Број ученика - четврти разред \\\n", "0 0 18 \n", "\n", " Број девојчица - четврти разред Број ИОП-а 1 - четврти разред \\\n", "0 6 0 \n", "\n", " Број ИОП-а 2 - четврти разред Број ИОП-а 3 - четврти разред \n", "0 0 0 \n", "\n", "[1 rows x 42 columns]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.head(1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Како учитана табела има чак 42 колоне, не можемо их видети све. Међутим, функцијом [**info()**](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.info.html) можемо сазнати које све колоне табела има, колико има уноса, као и које типове података је препознао пајтон у учитавању:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "RangeIndex: 3180 entries, 0 to 3179\n", "Data columns (total 42 columns):\n", "# 3180 non-null float64\n", "ИД установе 3180 non-null int64\n", "Власништво 3180 non-null object\n", "Округ 3180 non-null object\n", "Општина 3180 non-null object\n", "Назив установе 3180 non-null object\n", "Подручје рада 3180 non-null object\n", "Образовни профил 3180 non-null object\n", "Трајање образовања 3180 non-null int64\n", "Језик наставе 3180 non-null object\n", "Број одељења - први разред 3180 non-null int64\n", "Број комбинованих одељења - први разред 3180 non-null int64\n", "Број специјалних одељења - први разред 3180 non-null int64\n", "Број ученика - први разред 3180 non-null int64\n", "Број девојчица - први разред 3180 non-null int64\n", "Број ИОП-а 1 - први разред 3180 non-null int64\n", "Број ИОП-а 2 - први разред 3180 non-null int64\n", "Број ИОП-а 3 - први разред 3180 non-null int64\n", "Број одељења - други разред 3180 non-null int64\n", "Број комбинованих одељења - други разред 3180 non-null int64\n", "Број специјалних одељења - други разред 3180 non-null int64\n", "Број ученика - други разред 3180 non-null int64\n", "Број девојчица - други разред 3180 non-null int64\n", "Број ИОП-а 1 - други разред 3180 non-null int64\n", "Број ИОП-а 2 - други разред 3180 non-null int64\n", "Број ИОП-а 3 - други разред 3180 non-null int64\n", "Број одељења - трећи разред 3180 non-null int64\n", "Број комбинованих одељења - трећи разред 3180 non-null int64\n", "Број специјалних одељења - трећи разред 3180 non-null int64\n", "Број ученика - трећи разред 3180 non-null int64\n", "Број девојчица - трећи разред 3180 non-null int64\n", "Број ИОП-а 1 - трећи разред 3180 non-null int64\n", "Број ИОП-а 2 - трећи разред 3180 non-null int64\n", "Број ИОП-а 3 - трећи разред 3180 non-null int64\n", "Број одељења - четврти разред 3180 non-null int64\n", "Број комбинованих одељења - четврти разред 3180 non-null int64\n", "Број специјалних одељења - четврти разред 3180 non-null int64\n", "Број ученика - четврти разред 3180 non-null int64\n", "Број девојчица - четврти разред 3180 non-null int64\n", "Број ИОП-а 1 - четврти разред 3180 non-null int64\n", "Број ИОП-а 2 - четврти разред 3180 non-null int64\n", "Број ИОП-а 3 - четврти разред 3180 non-null int64\n", "dtypes: float64(1), int64(34), object(7)\n", "memory usage: 1.0+ MB\n" ] } ], "source": [ "data.info()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Овај сет података садржи информације о срењим школама и образовним профилима у њима. Поред географских одредница школе (општина, округ), за сваки образовни профил имамо информације о броју ученика по разредима, броју одељења и слично што можете видети из назива колона. Овај интересантан сет података у наредним радним свескама користићемо да сазнамо који су то популарни смерови, да ли се то разликује по окрузима и слично." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Функцијом [**describe()**](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.describe.html) још детаљније можемо завирити у колоне које садрже нумеричке податке. Она нам даје преглед основне статистике - број уноса, просечну вредност (mean), стандардну девијацију (std), најмању (min), највећу (max), медијалну вредност (50%), кaо и вредности које су веће од 25% других и 75% других у одређеној нумеричкој колони." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
#ИД установеТрајање образовањаБрој одељења - први разредБрој комбинованих одељења - први разредБрој специјалних одељења - први разредБрој ученика - први разредБрој девојчица - први разредБрој ИОП-а 1 - први разредБрој ИОП-а 2 - први разред...Број ИОП-а 2 - трећи разредБрој ИОП-а 3 - трећи разредБрој одељења - четврти разредБрој комбинованих одељења - четврти разредБрој специјалних одељења - четврти разредБрој ученика - четврти разредБрој девојчица - четврти разредБрој ИОП-а 1 - четврти разредБрој ИОП-а 2 - четврти разредБрој ИОП-а 3 - четврти разред
count3180.0000003180.0000003180.0000003180.0000003180.0000003180.0000003180.0000003180.0000003180.0000003180.000000...3180.0000003180.0000003180.0000003180.0000003180.0000003180.0000003180.0000003180.0000003180.0000003180.000000
mean1590.5000001555.2443403.6874210.8770440.1424530.00943421.40723310.2103770.0333330.175157...0.0685530.0113210.6811320.0116350.00094316.8877368.8584910.0292450.0166670.008805
std918.131254149.0386990.4828930.8588540.3628160.10892425.28081816.4825800.2218530.581631...0.3304110.4027240.9264670.1261240.03964825.98156116.2084400.2273250.1587510.315158
min1.0000001322.0000001.0000000.0000000.0000000.0000000.0000000.0000000.0000000.000000...0.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.000000
25%795.7500001424.0000003.0000000.0000000.0000000.0000000.0000000.0000000.0000000.000000...0.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.000000
50%1590.5000001557.0000004.0000001.0000000.0000000.00000019.0000004.0000000.0000000.000000...0.0000000.0000001.0000000.0000000.0000005.0000000.0000000.0000000.0000000.000000
75%2385.2500001661.2500004.0000001.0000000.0000000.00000030.00000015.0000000.0000000.000000...0.0000000.0000001.0000000.0000000.00000027.00000014.0000000.0000000.0000000.000000
max3180.0000001976.0000004.0000009.0000004.0000003.000000287.000000197.0000003.0000009.000000...5.00000022.0000009.0000004.0000002.000000268.000000154.0000004.0000003.00000017.000000
\n", "

8 rows × 35 columns

\n", "
" ], "text/plain": [ " # ИД установе Трајање образовања \\\n", "count 3180.000000 3180.000000 3180.000000 \n", "mean 1590.500000 1555.244340 3.687421 \n", "std 918.131254 149.038699 0.482893 \n", "min 1.000000 1322.000000 1.000000 \n", "25% 795.750000 1424.000000 3.000000 \n", "50% 1590.500000 1557.000000 4.000000 \n", "75% 2385.250000 1661.250000 4.000000 \n", "max 3180.000000 1976.000000 4.000000 \n", "\n", " Број одељења - први разред Број комбинованих одељења - први разред \\\n", "count 3180.000000 3180.000000 \n", "mean 0.877044 0.142453 \n", "std 0.858854 0.362816 \n", "min 0.000000 0.000000 \n", "25% 0.000000 0.000000 \n", "50% 1.000000 0.000000 \n", "75% 1.000000 0.000000 \n", "max 9.000000 4.000000 \n", "\n", " Број специјалних одељења - први разред Број ученика - први разред \\\n", "count 3180.000000 3180.000000 \n", "mean 0.009434 21.407233 \n", "std 0.108924 25.280818 \n", "min 0.000000 0.000000 \n", "25% 0.000000 0.000000 \n", "50% 0.000000 19.000000 \n", "75% 0.000000 30.000000 \n", "max 3.000000 287.000000 \n", "\n", " Број девојчица - први разред Број ИОП-а 1 - први разред \\\n", "count 3180.000000 3180.000000 \n", "mean 10.210377 0.033333 \n", "std 16.482580 0.221853 \n", "min 0.000000 0.000000 \n", "25% 0.000000 0.000000 \n", "50% 4.000000 0.000000 \n", "75% 15.000000 0.000000 \n", "max 197.000000 3.000000 \n", "\n", " Број ИОП-а 2 - први разред ... Број ИОП-а 2 - трећи разред \\\n", "count 3180.000000 ... 3180.000000 \n", "mean 0.175157 ... 0.068553 \n", "std 0.581631 ... 0.330411 \n", "min 0.000000 ... 0.000000 \n", "25% 0.000000 ... 0.000000 \n", "50% 0.000000 ... 0.000000 \n", "75% 0.000000 ... 0.000000 \n", "max 9.000000 ... 5.000000 \n", "\n", " Број ИОП-а 3 - трећи разред Број одељења - четврти разред \\\n", "count 3180.000000 3180.000000 \n", "mean 0.011321 0.681132 \n", "std 0.402724 0.926467 \n", "min 0.000000 0.000000 \n", "25% 0.000000 0.000000 \n", "50% 0.000000 1.000000 \n", "75% 0.000000 1.000000 \n", "max 22.000000 9.000000 \n", "\n", " Број комбинованих одељења - четврти разред \\\n", "count 3180.000000 \n", "mean 0.011635 \n", "std 0.126124 \n", "min 0.000000 \n", "25% 0.000000 \n", "50% 0.000000 \n", "75% 0.000000 \n", "max 4.000000 \n", "\n", " Број специјалних одељења - четврти разред \\\n", "count 3180.000000 \n", "mean 0.000943 \n", "std 0.039648 \n", "min 0.000000 \n", "25% 0.000000 \n", "50% 0.000000 \n", "75% 0.000000 \n", "max 2.000000 \n", "\n", " Број ученика - четврти разред Број девојчица - четврти разред \\\n", "count 3180.000000 3180.000000 \n", "mean 16.887736 8.858491 \n", "std 25.981561 16.208440 \n", "min 0.000000 0.000000 \n", "25% 0.000000 0.000000 \n", "50% 5.000000 0.000000 \n", "75% 27.000000 14.000000 \n", "max 268.000000 154.000000 \n", "\n", " Број ИОП-а 1 - четврти разред Број ИОП-а 2 - четврти разред \\\n", "count 3180.000000 3180.000000 \n", "mean 0.029245 0.016667 \n", "std 0.227325 0.158751 \n", "min 0.000000 0.000000 \n", "25% 0.000000 0.000000 \n", "50% 0.000000 0.000000 \n", "75% 0.000000 0.000000 \n", "max 4.000000 3.000000 \n", "\n", " Број ИОП-а 3 - четврти разред \n", "count 3180.000000 \n", "mean 0.008805 \n", "std 0.315158 \n", "min 0.000000 \n", "25% 0.000000 \n", "50% 0.000000 \n", "75% 0.000000 \n", "max 17.000000 \n", "\n", "[8 rows x 35 columns]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.describe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Како је табела написана ћирилицом, користићемо библиотеку [*cyrtranslit*](https://pythonhosted.org/cyrtranslit/) да све текстуалне податке у табели преиначимо у латиничо писмо (то нам је посебно битно за називе колона како бисмо лакше баратали подацима). За почетак ћемо то урадити са називима колона које добијамо позивајући [**data.columns**](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.columns.html)." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
#ID ustanoveVlasništvoOkrugOpštinaNaziv ustanovePodručje radaObrazovni profilTrajanje obrazovanjaJezik nastave...Broj IOP-a 2 - treći razredBroj IOP-a 3 - treći razredBroj odeljenja - četvrti razredBroj kombinovanih odeljenja - četvrti razredBroj specijalnih odeljenja - četvrti razredBroj učenika - četvrti razredBroj devojčica - četvrti razredBroj IOP-a 1 - četvrti razredBroj IOP-a 2 - četvrti razredBroj IOP-a 3 - četvrti razred
01.01322ДржавноСевернобачки управни округБачка ТополаПољопривредна школаПољопривреда, производња и прерада хранеПољопривредни техничар4Мађарски језик...00100186000
\n", "

1 rows × 42 columns

\n", "
" ], "text/plain": [ " # ID ustanove Vlasništvo Okrug Opština \\\n", "0 1.0 1322 Државно Севернобачки управни округ Бачка Топола \n", "\n", " Naziv ustanove Područje rada \\\n", "0 Пољопривредна школа Пољопривреда, производња и прерада хране \n", "\n", " Obrazovni profil Trajanje obrazovanja Jezik nastave ... \\\n", "0 Пољопривредни техничар 4 Мађарски језик ... \n", "\n", " Broj IOP-a 2 - treći razred Broj IOP-a 3 - treći razred \\\n", "0 0 0 \n", "\n", " Broj odeljenja - četvrti razred \\\n", "0 1 \n", "\n", " Broj kombinovanih odeljenja - četvrti razred \\\n", "0 0 \n", "\n", " Broj specijalnih odeljenja - četvrti razred Broj učenika - četvrti razred \\\n", "0 0 18 \n", "\n", " Broj devojčica - četvrti razred Broj IOP-a 1 - četvrti razred \\\n", "0 6 0 \n", "\n", " Broj IOP-a 2 - četvrti razred Broj IOP-a 3 - četvrti razred \n", "0 0 0 \n", "\n", "[1 rows x 42 columns]" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.columns = [cyrtranslit.to_latin(text,'sr') for text in list(data.columns)]\n", "data.head(1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "А у наредних пар редова пролазимо кроз целокупан садржај појединачних колона које смо препознали да су текстуалне и да су нам од користи у наставку, а затим њихов садржај мењамо у латинично писмо. Урадићемо за почетак то за колону 'Власништво'." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
#ID ustanoveVlasništvoOkrugOpštinaNaziv ustanovePodručje radaObrazovni profilTrajanje obrazovanjaJezik nastave...Broj IOP-a 2 - treći razredBroj IOP-a 3 - treći razredBroj odeljenja - četvrti razredBroj kombinovanih odeljenja - četvrti razredBroj specijalnih odeljenja - četvrti razredBroj učenika - četvrti razredBroj devojčica - četvrti razredBroj IOP-a 1 - četvrti razredBroj IOP-a 2 - četvrti razredBroj IOP-a 3 - četvrti razred
01.01322DržavnoСевернобачки управни округБачка ТополаПољопривредна школаПољопривреда, производња и прерада хранеПољопривредни техничар4Мађарски језик...00100186000
\n", "

1 rows × 42 columns

\n", "
" ], "text/plain": [ " # ID ustanove Vlasništvo Okrug Opština \\\n", "0 1.0 1322 Državno Севернобачки управни округ Бачка Топола \n", "\n", " Naziv ustanove Područje rada \\\n", "0 Пољопривредна школа Пољопривреда, производња и прерада хране \n", "\n", " Obrazovni profil Trajanje obrazovanja Jezik nastave ... \\\n", "0 Пољопривредни техничар 4 Мађарски језик ... \n", "\n", " Broj IOP-a 2 - treći razred Broj IOP-a 3 - treći razred \\\n", "0 0 0 \n", "\n", " Broj odeljenja - četvrti razred \\\n", "0 1 \n", "\n", " Broj kombinovanih odeljenja - četvrti razred \\\n", "0 0 \n", "\n", " Broj specijalnih odeljenja - četvrti razred Broj učenika - četvrti razred \\\n", "0 0 18 \n", "\n", " Broj devojčica - četvrti razred Broj IOP-a 1 - četvrti razred \\\n", "0 6 0 \n", "\n", " Broj IOP-a 2 - četvrti razred Broj IOP-a 3 - četvrti razred \n", "0 0 0 \n", "\n", "[1 rows x 42 columns]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data['Vlasništvo'] = [cyrtranslit.to_latin(text,'sr') for text in list(data['Vlasništvo'])]\n", "data.head(1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Наредне колоне можемо обрадити тако што ћемо претходни ред написати више пута, за све различите колоне које желимо да преименујемо у латинично писмо, или тако што ћемо овај ред написати у одговарајућој петљи којом ћемо проћи кроз све колоне које желимо да обрадимо:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
#ID ustanoveVlasništvoOkrugOpštinaNaziv ustanovePodručje radaObrazovni profilTrajanje obrazovanjaJezik nastave...Broj IOP-a 2 - treći razredBroj IOP-a 3 - treći razredBroj odeljenja - četvrti razredBroj kombinovanih odeljenja - četvrti razredBroj specijalnih odeljenja - četvrti razredBroj učenika - četvrti razredBroj devojčica - četvrti razredBroj IOP-a 1 - četvrti razredBroj IOP-a 2 - četvrti razredBroj IOP-a 3 - četvrti razred
01.01322DržavnoSevernobački upravni okrugBačka TopolaPoljoprivredna školaPoljoprivreda, proizvodnja i prerada hranePoljoprivredni tehničar4Mađarski jezik...00100186000
\n", "

1 rows × 42 columns

\n", "
" ], "text/plain": [ " # ID ustanove Vlasništvo Okrug Opština \\\n", "0 1.0 1322 Državno Severnobački upravni okrug Bačka Topola \n", "\n", " Naziv ustanove Područje rada \\\n", "0 Poljoprivredna škola Poljoprivreda, proizvodnja i prerada hrane \n", "\n", " Obrazovni profil Trajanje obrazovanja Jezik nastave ... \\\n", "0 Poljoprivredni tehničar 4 Mađarski jezik ... \n", "\n", " Broj IOP-a 2 - treći razred Broj IOP-a 3 - treći razred \\\n", "0 0 0 \n", "\n", " Broj odeljenja - četvrti razred \\\n", "0 1 \n", "\n", " Broj kombinovanih odeljenja - četvrti razred \\\n", "0 0 \n", "\n", " Broj specijalnih odeljenja - četvrti razred Broj učenika - četvrti razred \\\n", "0 0 18 \n", "\n", " Broj devojčica - četvrti razred Broj IOP-a 1 - četvrti razred \\\n", "0 6 0 \n", "\n", " Broj IOP-a 2 - četvrti razred Broj IOP-a 3 - četvrti razred \n", "0 0 0 \n", "\n", "[1 rows x 42 columns]" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tekstualne_kolone = ['Vlasništvo', 'Okrug','Opština','Naziv ustanove', 'Područje rada', 'Obrazovni profil', 'Jezik nastave']\n", "\n", "for kolona in tekstualne_kolone:\n", " data[kolona] = [cyrtranslit.to_latin(text,'sr') for text in list(data[kolona])]\n", "data.head(1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Колоне које нам нису неопходне за предстојећу анализу избацићемо из табеле користећи функцију [**drop**](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.drop.html) на следећи начин:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ID ustanoveVlasništvoOkrugOpštinaNaziv ustanovePodručje radaObrazovni profilTrajanje obrazovanjaJezik nastaveBroj odeljenja - prvi razred...Broj devojčica - prvi razredBroj odeljenja - drugi razredBroj učenika - drugi razredBroj devojčica - drugi razredBroj odeljenja - treći razredBroj učenika - treći razredBroj devojčica - treći razredBroj odeljenja - četvrti razredBroj učenika - četvrti razredBroj devojčica - četvrti razred
01322DržavnoSevernobački upravni okrugBačka TopolaPoljoprivredna školaPoljoprivreda, proizvodnja i prerada hranePoljoprivredni tehničar4Mađarski jezik1...8121811131186
11322DržavnoSevernobački upravni okrugBačka TopolaPoljoprivredna školaPoljoprivreda, proizvodnja i prerada hraneVeterinarski tehničar4Mađarski jezik1...7121121271311711
21322DržavnoSevernobački upravni okrugBačka TopolaPoljoprivredna školaPoljoprivreda, proizvodnja i prerada hranePrehrambeni tehničar4Mađarski jezik1...9113111171311613
31322DržavnoSevernobački upravni okrugBačka TopolaPoljoprivredna školaPoljoprivreda, proizvodnja i prerada hraneRukovalac - mehaničar poljoprivredne tehnike3Mađarski jezik1...011401170000
41322DržavnoSevernobački upravni okrugBačka TopolaPoljoprivredna školaPoljoprivreda, proizvodnja i prerada hraneMesar3Mađarski jezik0...01131000000
\n", "

5 rows × 21 columns

\n", "
" ], "text/plain": [ " ID ustanove Vlasništvo Okrug Opština \\\n", "0 1322 Državno Severnobački upravni okrug Bačka Topola \n", "1 1322 Državno Severnobački upravni okrug Bačka Topola \n", "2 1322 Državno Severnobački upravni okrug Bačka Topola \n", "3 1322 Državno Severnobački upravni okrug Bačka Topola \n", "4 1322 Državno Severnobački upravni okrug Bačka Topola \n", "\n", " Naziv ustanove Područje rada \\\n", "0 Poljoprivredna škola Poljoprivreda, proizvodnja i prerada hrane \n", "1 Poljoprivredna škola Poljoprivreda, proizvodnja i prerada hrane \n", "2 Poljoprivredna škola Poljoprivreda, proizvodnja i prerada hrane \n", "3 Poljoprivredna škola Poljoprivreda, proizvodnja i prerada hrane \n", "4 Poljoprivredna škola Poljoprivreda, proizvodnja i prerada hrane \n", "\n", " Obrazovni profil Trajanje obrazovanja \\\n", "0 Poljoprivredni tehničar 4 \n", "1 Veterinarski tehničar 4 \n", "2 Prehrambeni tehničar 4 \n", "3 Rukovalac - mehaničar poljoprivredne tehnike 3 \n", "4 Mesar 3 \n", "\n", " Jezik nastave Broj odeljenja - prvi razred ... \\\n", "0 Mađarski jezik 1 ... \n", "1 Mađarski jezik 1 ... \n", "2 Mađarski jezik 1 ... \n", "3 Mađarski jezik 1 ... \n", "4 Mađarski jezik 0 ... \n", "\n", " Broj devojčica - prvi razred Broj odeljenja - drugi razred \\\n", "0 8 1 \n", "1 7 1 \n", "2 9 1 \n", "3 0 1 \n", "4 0 1 \n", "\n", " Broj učenika - drugi razred Broj devojčica - drugi razred \\\n", "0 21 8 \n", "1 21 12 \n", "2 13 11 \n", "3 14 0 \n", "4 13 1 \n", "\n", " Broj odeljenja - treći razred Broj učenika - treći razred \\\n", "0 1 11 \n", "1 1 27 \n", "2 1 17 \n", "3 1 17 \n", "4 0 0 \n", "\n", " Broj devojčica - treći razred Broj odeljenja - četvrti razred \\\n", "0 3 1 \n", "1 13 1 \n", "2 13 1 \n", "3 0 0 \n", "4 0 0 \n", "\n", " Broj učenika - četvrti razred Broj devojčica - četvrti razred \n", "0 18 6 \n", "1 17 11 \n", "2 16 13 \n", "3 0 0 \n", "4 0 0 \n", "\n", "[5 rows x 21 columns]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data=data.drop(columns=['#','Broj IOP-a 1 - prvi razred', 'Broj IOP-a 2 - prvi razred',\n", " 'Broj IOP-a 3 - prvi razred','Broj IOP-a 1 - drugi razred', 'Broj IOP-a 2 - drugi razred',\n", " 'Broj IOP-a 3 - drugi razred','Broj IOP-a 1 - treći razred', 'Broj IOP-a 2 - treći razred',\n", " 'Broj IOP-a 3 - treći razred','Broj IOP-a 1 - četvrti razred', 'Broj IOP-a 2 - četvrti razred',\n", " 'Broj IOP-a 3 - četvrti razred','Broj kombinovanih odeljenja - prvi razred',\n", " 'Broj kombinovanih odeljenja - drugi razred', \n", " 'Broj kombinovanih odeljenja - treći razred',\n", " 'Broj kombinovanih odeljenja - četvrti razred',\n", " 'Broj specijalnih odeljenja - prvi razred',\n", " 'Broj specijalnih odeljenja - drugi razred',\n", " 'Broj specijalnih odeljenja - treći razred',\n", " 'Broj specijalnih odeljenja - četvrti razred'])\n", "data.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Како имамо на располагању колону о власништву школе, можемо проверити уносе за које је у овој колони означено приватно власништво. То радимо уз помоћ селектовања одређеног дела табеле, односно оног дела табеле за који важи да је data.Vlasništvo=='Privatno':" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "scrolled": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ID ustanoveVlasništvoOkrugOpštinaNaziv ustanovePodručje radaObrazovni profilTrajanje obrazovanjaJezik nastaveBroj odeljenja - prvi razred...Broj devojčica - prvi razredBroj odeljenja - drugi razredBroj učenika - drugi razredBroj devojčica - drugi razredBroj odeljenja - treći razredBroj učenika - treći razredBroj devojčica - treći razredBroj odeljenja - četvrti razredBroj učenika - četvrti razredBroj devojčica - četvrti razred
31121898PrivatnoGrad BeogradBeograd - Novi BeogradSrednjoškolski obrazovni centar \"SMARTANAC\"Zdravstvo i socijalna zaštitaMedicinska sestra - tehničar4Srpski jezik0...0000122153
31131898PrivatnoGrad BeogradBeograd - Novi BeogradSrednjoškolski obrazovni centar \"SMARTANAC\"Ostala delatnost ličnih uslugaFrizer3Srpski jezik0...0000111000
31141898PrivatnoGrad BeogradBeograd - Novi BeogradSrednjoškolski obrazovni centar \"SMARTANAC\"Zdravstvo i socijalna zaštitaFizioterapeutski tehničar - novi nastavni program4Srpski jezik0...0000131000
\n", "

3 rows × 21 columns

\n", "
" ], "text/plain": [ " ID ustanove Vlasništvo Okrug Opština \\\n", "3112 1898 Privatno Grad Beograd Beograd - Novi Beograd \n", "3113 1898 Privatno Grad Beograd Beograd - Novi Beograd \n", "3114 1898 Privatno Grad Beograd Beograd - Novi Beograd \n", "\n", " Naziv ustanove \\\n", "3112 Srednjoškolski obrazovni centar \"SMARTANAC\" \n", "3113 Srednjoškolski obrazovni centar \"SMARTANAC\" \n", "3114 Srednjoškolski obrazovni centar \"SMARTANAC\" \n", "\n", " Područje rada \\\n", "3112 Zdravstvo i socijalna zaštita \n", "3113 Ostala delatnost ličnih usluga \n", "3114 Zdravstvo i socijalna zaštita \n", "\n", " Obrazovni profil Trajanje obrazovanja \\\n", "3112 Medicinska sestra - tehničar 4 \n", "3113 Frizer 3 \n", "3114 Fizioterapeutski tehničar - novi nastavni program 4 \n", "\n", " Jezik nastave Broj odeljenja - prvi razred ... \\\n", "3112 Srpski jezik 0 ... \n", "3113 Srpski jezik 0 ... \n", "3114 Srpski jezik 0 ... \n", "\n", " Broj devojčica - prvi razred Broj odeljenja - drugi razred \\\n", "3112 0 0 \n", "3113 0 0 \n", "3114 0 0 \n", "\n", " Broj učenika - drugi razred Broj devojčica - drugi razred \\\n", "3112 0 0 \n", "3113 0 0 \n", "3114 0 0 \n", "\n", " Broj odeljenja - treći razred Broj učenika - treći razred \\\n", "3112 1 2 \n", "3113 1 1 \n", "3114 1 3 \n", "\n", " Broj devojčica - treći razred Broj odeljenja - četvrti razred \\\n", "3112 2 1 \n", "3113 1 0 \n", "3114 1 0 \n", "\n", " Broj učenika - četvrti razred Broj devojčica - četvrti razred \n", "3112 5 3 \n", "3113 0 0 \n", "3114 0 0 \n", "\n", "[3 rows x 21 columns]" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data[data.Vlasništvo=='Privatno']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Како су у питању само три уноса, за једну исту приватну школу, то значи да немамо репрезентативне информације о школама у приватном власништву. Стога ћемо се у наставку фокусирати само на школе које су у државном власништву и избацићемо из табеле ова три реда а затим и колону власништво:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ID ustanoveOkrugOpštinaNaziv ustanovePodručje radaObrazovni profilTrajanje obrazovanjaJezik nastaveBroj odeljenja - prvi razredBroj učenika - prvi razredBroj devojčica - prvi razredBroj odeljenja - drugi razredBroj učenika - drugi razredBroj devojčica - drugi razredBroj odeljenja - treći razredBroj učenika - treći razredBroj devojčica - treći razredBroj odeljenja - četvrti razredBroj učenika - četvrti razredBroj devojčica - četvrti razred
01322Severnobački upravni okrugBačka TopolaPoljoprivredna školaPoljoprivreda, proizvodnja i prerada hranePoljoprivredni tehničar4Mađarski jezik1248121811131186
11322Severnobački upravni okrugBačka TopolaPoljoprivredna školaPoljoprivreda, proizvodnja i prerada hraneVeterinarski tehničar4Mađarski jezik1187121121271311711
\n", "
" ], "text/plain": [ " ID ustanove Okrug Opština \\\n", "0 1322 Severnobački upravni okrug Bačka Topola \n", "1 1322 Severnobački upravni okrug Bačka Topola \n", "\n", " Naziv ustanove Područje rada \\\n", "0 Poljoprivredna škola Poljoprivreda, proizvodnja i prerada hrane \n", "1 Poljoprivredna škola Poljoprivreda, proizvodnja i prerada hrane \n", "\n", " Obrazovni profil Trajanje obrazovanja Jezik nastave \\\n", "0 Poljoprivredni tehničar 4 Mađarski jezik \n", "1 Veterinarski tehničar 4 Mađarski jezik \n", "\n", " Broj odeljenja - prvi razred Broj učenika - prvi razred \\\n", "0 1 24 \n", "1 1 18 \n", "\n", " Broj devojčica - prvi razred Broj odeljenja - drugi razred \\\n", "0 8 1 \n", "1 7 1 \n", "\n", " Broj učenika - drugi razred Broj devojčica - drugi razred \\\n", "0 21 8 \n", "1 21 12 \n", "\n", " Broj odeljenja - treći razred Broj učenika - treći razred \\\n", "0 1 11 \n", "1 1 27 \n", "\n", " Broj devojčica - treći razred Broj odeljenja - četvrti razred \\\n", "0 3 1 \n", "1 13 1 \n", "\n", " Broj učenika - četvrti razred Broj devojčica - četvrti razred \n", "0 18 6 \n", "1 17 11 " ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data = data[data.Vlasništvo!='Privatno']\n", "data = data.drop(columns=['Vlasništvo'])\n", "data.head(2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Како имамо податке о броју одељења по разреду и слично број ученика о разреду, у наставку ћемо додати још пар колона у којима ће се налазити подаци о укупном броју ученика, одељења сумирајући одговарајуће постојеће колоне." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "data['Ukupno odeljenja'] = data['Broj odeljenja - prvi razred']+data['Broj odeljenja - drugi razred']+data['Broj odeljenja - treći razred']+data['Broj odeljenja - četvrti razred']" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "data['Ukupno učenika'] = data['Broj učenika - prvi razred']+data['Broj učenika - drugi razred']+data['Broj učenika - treći razred']+data['Broj učenika - četvrti razred']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Из колона са укупним бројем ученика и одељења по образовним профилима и смеровима, можемо израчунати и просечан број ученика у одељењу на сваком од профила:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "data['Prosečan broj učenika u odeljenju'] = data['Ukupno učenika']/data['Ukupno odeljenja']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Међу подацима које обрађујемо имамо информације и о полу ученика, те ћемо из укупног броја ученика и укупног броја девојчица срачунати и број дечака. Поред укупног броја ученика по полу, израчунажемо и њихове процентуалне заступљености. За процентуалну заступљеност искористили смо и функцију **round** како бисмо ограничили број децимала на 2." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "data['Ukupno devojcica'] = data['Broj devojčica - prvi razred']+data['Broj devojčica - drugi razred']+data['Broj devojčica - treći razred']+data['Broj devojčica - četvrti razred']\n", "data['Ukupno decaka'] = data['Ukupno učenika']-data['Ukupno devojcica']\n", "data['Procenat devojcica'] = round(100*data['Ukupno devojcica']/data['Ukupno učenika'],2)\n", "data['Procenat decaka'] = 100-data['Procenat devojcica']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "За анализу коју имамо у плану, неће нам бити потребни подаци о ученицима по разреду, стога ћемо и те колоне избрисати. (Ако имате на уму и неку анализу за коју је потребно да сачувате податке по разредима, прекочите наредну команду!)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ID ustanoveOkrugOpštinaNaziv ustanovePodručje radaObrazovni profilTrajanje obrazovanjaJezik nastaveUkupno odeljenjaUkupno učenikaProsečan broj učenika u odeljenjuUkupno devojcicaUkupno decakaProcenat devojcicaProcenat decaka
01322Severnobački upravni okrugBačka TopolaPoljoprivredna školaPoljoprivreda, proizvodnja i prerada hranePoljoprivredni tehničar4Mađarski jezik47418.5254933.7866.22
\n", "
" ], "text/plain": [ " ID ustanove Okrug Opština \\\n", "0 1322 Severnobački upravni okrug Bačka Topola \n", "\n", " Naziv ustanove Područje rada \\\n", "0 Poljoprivredna škola Poljoprivreda, proizvodnja i prerada hrane \n", "\n", " Obrazovni profil Trajanje obrazovanja Jezik nastave \\\n", "0 Poljoprivredni tehničar 4 Mađarski jezik \n", "\n", " Ukupno odeljenja Ukupno učenika Prosečan broj učenika u odeljenju \\\n", "0 4 74 18.5 \n", "\n", " Ukupno devojcica Ukupno decaka Procenat devojcica Procenat decaka \n", "0 25 49 33.78 66.22 " ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data = data.drop(columns=['Broj odeljenja - prvi razred',\n", " 'Broj učenika - prvi razred', 'Broj devojčica - prvi razred',\n", " 'Broj odeljenja - drugi razred', 'Broj učenika - drugi razred',\n", " 'Broj devojčica - drugi razred', 'Broj odeljenja - treći razred',\n", " 'Broj učenika - treći razred', 'Broj devojčica - treći razred',\n", " 'Broj odeljenja - četvrti razred', 'Broj učenika - četvrti razred',\n", " 'Broj devojčica - četvrti razred'])\n", "data.head(1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Ову нову табелу можемо сачувати у .csv формату користећи функцију [**to_csv**](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_csv.html):" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "data.to_csv('MPNTRopendata_ss_pripremljeni.csv',index=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Искористили смо и аргумент index да проследимо информацију функцији да не желимо да сачувамо колону индекс обзиром да се у њој налазе само редни бројеви и не носе додатно интересантне податке о средњошколцима." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Табела са подацима о средњим школама" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Поред информација о заступљености одређених средњошколских профила и њиховој заузетости која је описана у претходној табели, имамо на располагању и неке опште податке о средњим школама, учитаћемо и припремити и те податке:" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
#ИД установеШколска управаОкругОпштинаНасељеНазив установеАдресаПоштански бројАдреса електронске поште...Број специјалних одељењаБрој ученикаБрој девојчицаБрој ученика - ИОП 1Број ученика - ИОП 2Број ученика - ИОП 3Број наставника - без заменаУкупна норма наставникаа - без заменаБрој запослених - без заменаУкупна норма запослених- без замена
01.01322СомборСевернобачки управни округБачка ТополаБачка ТополаПољопривредна школаМаршала Тита 16724300psdirektor@gmail.com...05242223607465.9749109103.4649
12.01323СомборСевернобачки управни округБачка ТополаБачка ТополаСредња техничка школа Шинковић ЈожефTрг Зорана Ђинђића 1024300sinjo@stcable.net...0318610404632.81306046.0330
\n", "

2 rows × 29 columns

\n", "
" ], "text/plain": [ " # ИД установе Школска управа Округ Општина \\\n", "0 1.0 1322 Сомбор Севернобачки управни округ Бачка Топола \n", "1 2.0 1323 Сомбор Севернобачки управни округ Бачка Топола \n", "\n", " Насеље Назив установе Адреса \\\n", "0 Бачка Топола Пољопривредна школа Маршала Тита 167 \n", "1 Бачка Топола Средња техничка школа Шинковић Јожеф Tрг Зорана Ђинђића 10 \n", "\n", " Поштански број Адреса електронске поште ... Број специјалних одељења \\\n", "0 24300 psdirektor@gmail.com ... 0 \n", "1 24300 sinjo@stcable.net ... 0 \n", "\n", " Број ученика Број девојчица Број ученика - ИОП 1 Број ученика - ИОП 2 \\\n", "0 524 222 3 6 \n", "1 318 61 0 4 \n", "\n", " Број ученика - ИОП 3 Број наставника - без замена \\\n", "0 0 74 \n", "1 0 46 \n", "\n", " Укупна норма наставникаа - без замена Број запослених - без замена \\\n", "0 65.9749 109 \n", "1 32.8130 60 \n", "\n", " Укупна норма запослених- без замена \n", "0 103.4649 \n", "1 46.0330 \n", "\n", "[2 rows x 29 columns]" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "srednjeskole = pd.read_csv('data/srednjoskolci data/raw data/MPNTRopendata_ss_opsti.csv')\n", "srednjeskole.head(2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Да бисмо видели све доступне колоне, искористићемо функцију **columns**:" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['#', 'ИД установе', 'Школска управа', 'Округ', 'Општина', 'Насеље',\n", " 'Назив установе', 'Адреса', 'Поштански број',\n", " 'Адреса електронске поште', 'Телефон', 'Сајт', 'Матични број', 'ПИБ',\n", " 'Датум оснивања', 'Примарна делатност', 'Власништво', 'Број одељења',\n", " 'Број комбинованих одељења', 'Број специјалних одељења', 'Број ученика',\n", " 'Број девојчица', 'Број ученика - ИОП 1', 'Број ученика - ИОП 2',\n", " 'Број ученика - ИОП 3', 'Број наставника - без замена',\n", " 'Укупна норма наставникаа - без замена', 'Број запослених - без замена',\n", " 'Укупна норма запослених- без замена'],\n", " dtype='object')" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "srednjeskole.columns" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Као и претходно, обрисаћемо неке од колона за које нам се чини да их нећемо даље анализирати:" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "scrolled": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ИД установеОкругОпштинаНазив установеВласништвоБрој одељењаБрој комбинованих одељењаБрој специјалних одељењаБрој ученикаБрој девојчицаБрој наставника - без заменаУкупна норма наставникаа - без заменаБрој запослених - без заменаУкупна норма запослених- без замена
01322Севернобачки управни округБачка ТополаПољопривредна школаДржавно26505242227465.9749109103.4649
11323Севернобачки управни округБачка ТополаСредња техничка школа Шинковић ЈожефДржавно1530318614632.81306046.0330
21324Севернобачки управни округСуботица - градГимназија Светозар МарковићДржавно36008555357666.10009687.3000
31325Севернобачки управни округСуботица - градЕкономска средња школа Боса МилићевићДржавно28607624837259.86008775.5500
41326Севернобачки управни округСуботица - градСредња медицинска школаДржавно240068456612561.505114078.0051
\n", "
" ], "text/plain": [ " ИД установе Округ Општина \\\n", "0 1322 Севернобачки управни округ Бачка Топола \n", "1 1323 Севернобачки управни округ Бачка Топола \n", "2 1324 Севернобачки управни округ Суботица - град \n", "3 1325 Севернобачки управни округ Суботица - град \n", "4 1326 Севернобачки управни округ Суботица - град \n", "\n", " Назив установе Власништво Број одељења \\\n", "0 Пољопривредна школа Државно 26 \n", "1 Средња техничка школа Шинковић Јожеф Државно 15 \n", "2 Гимназија Светозар Марковић Државно 36 \n", "3 Економска средња школа Боса Милићевић Државно 28 \n", "4 Средња медицинска школа Државно 24 \n", "\n", " Број комбинованих одељења Број специјалних одељења Број ученика \\\n", "0 5 0 524 \n", "1 3 0 318 \n", "2 0 0 855 \n", "3 6 0 762 \n", "4 0 0 684 \n", "\n", " Број девојчица Број наставника - без замена \\\n", "0 222 74 \n", "1 61 46 \n", "2 535 76 \n", "3 483 72 \n", "4 566 125 \n", "\n", " Укупна норма наставникаа - без замена Број запослених - без замена \\\n", "0 65.9749 109 \n", "1 32.8130 60 \n", "2 66.1000 96 \n", "3 59.8600 87 \n", "4 61.5051 140 \n", "\n", " Укупна норма запослених- без замена \n", "0 103.4649 \n", "1 46.0330 \n", "2 87.3000 \n", "3 75.5500 \n", "4 78.0051 " ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "srednjeskole = srednjeskole.drop(columns=['#','Школска управа', 'Насеље','Адреса', 'Поштански број',\n", " 'Адреса електронске поште', 'Телефон', 'Сајт', 'Матични број', 'ПИБ',\n", " 'Датум оснивања', 'Примарна делатност', 'Број ученика - ИОП 1', 'Број ученика - ИОП 2',\n", " 'Број ученика - ИОП 3'])\n", "srednjeskole.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Промена писма у називима и садржају колона:" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "srednjeskole.columns=[cyrtranslit.to_latin(text,'sr') for text in list(srednjeskole.columns)]\n", "srednjeskole['Okrug']=[cyrtranslit.to_latin(text,'sr') for text in list(srednjeskole['Okrug'])]\n", "srednjeskole['Opština']=[cyrtranslit.to_latin(text,'sr') for text in list(srednjeskole['Opština'])]\n", "srednjeskole['Naziv ustanove']=[cyrtranslit.to_latin(text,'sr') for text in list(srednjeskole['Naziv ustanove'])]\n", "srednjeskole['Vlasništvo']=[cyrtranslit.to_latin(text,'sr') for text in list(srednjeskole['Vlasništvo'])]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "И као што смо претходно закључили, како немамо довољно података о школама у приватном власништву фокусираћемо се само на школе које су у државном власништву:" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "scrolled": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ID ustanoveOkrugOpštinaNaziv ustanoveBroj odeljenjaBroj kombinovanih odeljenjaBroj specijalnih odeljenjaBroj učenikaBroj devojčicaBroj nastavnika - bez zamenaUkupna norma nastavnikaa - bez zamenaBroj zaposlenih - bez zamenaUkupna norma zaposlenih- bez zamena
01322Severnobački upravni okrugBačka TopolaPoljoprivredna škola26505242227465.9749109103.4649
11323Severnobački upravni okrugBačka TopolaSrednja tehnička škola Šinković Jožef1530318614632.81306046.0330
\n", "
" ], "text/plain": [ " ID ustanove Okrug Opština \\\n", "0 1322 Severnobački upravni okrug Bačka Topola \n", "1 1323 Severnobački upravni okrug Bačka Topola \n", "\n", " Naziv ustanove Broj odeljenja \\\n", "0 Poljoprivredna škola 26 \n", "1 Srednja tehnička škola Šinković Jožef 15 \n", "\n", " Broj kombinovanih odeljenja Broj specijalnih odeljenja Broj učenika \\\n", "0 5 0 524 \n", "1 3 0 318 \n", "\n", " Broj devojčica Broj nastavnika - bez zamena \\\n", "0 222 74 \n", "1 61 46 \n", "\n", " Ukupna norma nastavnikaa - bez zamena Broj zaposlenih - bez zamena \\\n", "0 65.9749 109 \n", "1 32.8130 60 \n", "\n", " Ukupna norma zaposlenih- bez zamena \n", "0 103.4649 \n", "1 46.0330 " ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "srednjeskole = srednjeskole[srednjeskole['Vlasništvo']=='Državno']\n", "srednjeskole = srednjeskole.drop(columns=['Vlasništvo'])\n", "srednjeskole.head(2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "И ову табелу ћемо сачувати у csv формату:" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "srednjeskole.to_csv('MPNTRopendata_sskole_pripremljeni.csv',index=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Припрема података за анализу и визуализацију по окрузима:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Претхнодна табела о средњим школама садржи информације о округу и општини на којој се школа налази што се може искористити да се подаци агрегирају на нивоу ових просторних јединица и на тај начин можемо припремити податке за даљу анализу. За груписање по округу, користићемо фукцију [**groupby**](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.groupby.html). Ова функција креира подтабеле редова који имају исту вредност по колони коју користимо као аргумент функције (на пример, ако групишемо по Округу, ишод су подтабеле за сваки округ). Ако не желимо целе подтабеле, често сумирамо по одређеним колонама (на пример када желимо да знамо укупан број ђака у сваком округу) или бројимо колико има вредности (на пример када желимо да знамо број школа или образовних профила). Хајде да видимо како то ради:" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "scrolled": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Broj učenikaBroj devojčicaBroj odeljenjaBroj nastavnika - bez zamenaUkupna norma nastavnikaa - bez zamena
Okrug
Borski upravni okrug32811542140432290.9780
Braničevski upravni okrug49532452196525393.9538
Grad Beograd5735928604209652364534.7198
\n", "
" ], "text/plain": [ " Broj učenika Broj devojčica Broj odeljenja \\\n", "Okrug \n", "Borski upravni okrug 3281 1542 140 \n", "Braničevski upravni okrug 4953 2452 196 \n", "Grad Beograd 57359 28604 2096 \n", "\n", " Broj nastavnika - bez zamena \\\n", "Okrug \n", "Borski upravni okrug 432 \n", "Braničevski upravni okrug 525 \n", "Grad Beograd 5236 \n", "\n", " Ukupna norma nastavnikaa - bez zamena \n", "Okrug \n", "Borski upravni okrug 290.9780 \n", "Braničevski upravni okrug 393.9538 \n", "Grad Beograd 4534.7198 " ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "skolepookruzima = srednjeskole.groupby(['Okrug'])[['Broj učenika','Broj devojčica','Broj odeljenja','Broj nastavnika - bez zamena','Ukupna norma nastavnikaa - bez zamena']].sum()\n", "skolepookruzima.head(3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "*Проверите да ли су бројеви које смо на овај начин добили тачни.*\n", "(Сугестија: селектујте делове табеле, нпр. ```skolepookruzima[skolepookruzima['Okrug']=='Borski upravni okrug']``` ће излистати све редове у којима је округ Борски, користећи функцију **sum** можете проверити горње вредности.)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Како је овој новој табели индекс колона округ по коме смо груписали претходну табелу, ресетоваћемо индекс (користећи функцију [**reset_index**](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.reset_index.html)), тј. индекс ће постати број:" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
OkrugBroj učenikaBroj devojčicaBroj odeljenjaBroj nastavnika - bez zamenaUkupna norma nastavnikaa - bez zamena
0Borski upravni okrug32811542140432290.9780
1Braničevski upravni okrug49532452196525393.9538
2Grad Beograd5735928604209652364534.7198
\n", "
" ], "text/plain": [ " Okrug Broj učenika Broj devojčica Broj odeljenja \\\n", "0 Borski upravni okrug 3281 1542 140 \n", "1 Braničevski upravni okrug 4953 2452 196 \n", "2 Grad Beograd 57359 28604 2096 \n", "\n", " Broj nastavnika - bez zamena Ukupna norma nastavnikaa - bez zamena \n", "0 432 290.9780 \n", "1 525 393.9538 \n", "2 5236 4534.7198 " ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "skolepookruzima = skolepookruzima.reset_index()\n", "skolepookruzima.head(3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Слично користећи функцију **groupby** и **size** за величину сваке од група, можемо у новој табели сачивати вредности о броју средњих школа по округу:" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
OkrugBroj skola
0Borski upravni okrug10
1Braničevski upravni okrug10
2Grad Beograd72
3Jablanički upravni okrug17
4Južnobanatski upravni okrug17
\n", "
" ], "text/plain": [ " Okrug Broj skola\n", "0 Borski upravni okrug 10\n", "1 Braničevski upravni okrug 10\n", "2 Grad Beograd 72\n", "3 Jablanički upravni okrug 17\n", "4 Južnobanatski upravni okrug 17" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "brsskolapookrugu = srednjeskole.groupby(['Okrug']).size().reset_index(name='Broj skola')\n", "brsskolapookrugu.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Претходно креиране две табеле *skolepookruzima* и *brsskolapookrugu* имају заједничку колону округ, па њу можемо искористи да на основу ње спојимо податке у једну табелу. То радимо уз помоћ функције [**merge**](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.merge.html) којој је поред две табеле које спајамо потребно проследити и аргумент *on* којим дефинишемо по којој колони спајамо табеле:" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
OkrugBroj učenikaBroj devojčicaBroj odeljenjaBroj nastavnika - bez zamenaUkupna norma nastavnikaa - bez zamenaBroj skola
0Borski upravni okrug32811542140432290.978010
1Braničevski upravni okrug49532452196525393.953810
2Grad Beograd5735928604209652364534.719872
3Jablanički upravni okrug76773749311994667.152617
4Južnobanatski upravni okrug88484281341970748.852017
\n", "
" ], "text/plain": [ " Okrug Broj učenika Broj devojčica Broj odeljenja \\\n", "0 Borski upravni okrug 3281 1542 140 \n", "1 Braničevski upravni okrug 4953 2452 196 \n", "2 Grad Beograd 57359 28604 2096 \n", "3 Jablanički upravni okrug 7677 3749 311 \n", "4 Južnobanatski upravni okrug 8848 4281 341 \n", "\n", " Broj nastavnika - bez zamena Ukupna norma nastavnikaa - bez zamena \\\n", "0 432 290.9780 \n", "1 525 393.9538 \n", "2 5236 4534.7198 \n", "3 994 667.1526 \n", "4 970 748.8520 \n", "\n", " Broj skola \n", "0 10 \n", "1 10 \n", "2 72 \n", "3 17 \n", "4 17 " ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "infopookruzima = pd.merge(skolepookruzima,brsskolapookrugu,on='Okrug')\n", "infopookruzima.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Направићемо још једну табелу која ће по окрузима пребројати број различитих опција за средњошколско образовање. Ове различите опције - број различитих подручја рада и број различитих образовних профила добићемо функцијом **nunique**:" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
OkrugPodručje radaObrazovni profil
0Borski upravni okrug952
1Braničevski upravni okrug952
2Grad Beograd16206
\n", "
" ], "text/plain": [ " Okrug Područje rada Obrazovni profil\n", "0 Borski upravni okrug 9 52\n", "1 Braničevski upravni okrug 9 52\n", "2 Grad Beograd 16 206" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "opcijepookruzima = data.groupby(['Okrug'])[['Područje rada','Obrazovni profil']].nunique()\n", "opcijepookruzima = opcijepookruzima.reset_index()\n", "opcijepookruzima.head(3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "И ове податке ћемо спојити са претходном табелом у којој су до сада сачувани прикупљени подаци по окрузима:" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
OkrugBroj učenikaBroj devojčicaBroj odeljenjaBroj nastavnika - bez zamenaUkupna norma nastavnikaa - bez zamenaBroj skolaPodručje radaObrazovni profil
0Borski upravni okrug32811542140432290.978010952
1Braničevski upravni okrug49532452196525393.953810952
2Grad Beograd5735928604209652364534.71987216206
3Jablanički upravni okrug76773749311994667.1526171577
4Južnobanatski upravni okrug88484281341970748.8520171276
\n", "
" ], "text/plain": [ " Okrug Broj učenika Broj devojčica Broj odeljenja \\\n", "0 Borski upravni okrug 3281 1542 140 \n", "1 Braničevski upravni okrug 4953 2452 196 \n", "2 Grad Beograd 57359 28604 2096 \n", "3 Jablanički upravni okrug 7677 3749 311 \n", "4 Južnobanatski upravni okrug 8848 4281 341 \n", "\n", " Broj nastavnika - bez zamena Ukupna norma nastavnikaa - bez zamena \\\n", "0 432 290.9780 \n", "1 525 393.9538 \n", "2 5236 4534.7198 \n", "3 994 667.1526 \n", "4 970 748.8520 \n", "\n", " Broj skola Područje rada Obrazovni profil \n", "0 10 9 52 \n", "1 10 9 52 \n", "2 72 16 206 \n", "3 17 15 77 \n", "4 17 12 76 " ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "infopookruzima = pd.merge(infopookruzima,opcijepookruzima,on='Okrug')\n", "infopookruzima.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Коначно, један тип средњих школа има често специјалан статус - гимназије - па ћемо прикупити и податке колико се ученика школује у гимназијама на територији различитих округа:" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
OkrugUkupno gimnazijalaca
0Borski upravni okrug770
1Braničevski upravni okrug1137
\n", "
" ], "text/plain": [ " Okrug Ukupno gimnazijalaca\n", "0 Borski upravni okrug 770\n", "1 Braničevski upravni okrug 1137" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gimnazijalci = data[data['Područje rada']=='Gimnazija'].groupby('Okrug')['Ukupno učenika'].sum()\n", "gimnazijalci = gimnazijalci.reset_index()\n", "gimnazijalci = gimnazijalci.rename(columns={'Ukupno učenika':'Ukupno gimnazijalaca'})\n", "gimnazijalci.head(2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "И њих ћемо додати у табелу *infopookruzima*:" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "scrolled": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
OkrugBroj učenikaBroj devojčicaBroj odeljenjaBroj nastavnika - bez zamenaUkupna norma nastavnikaa - bez zamenaBroj skolaPodručje radaObrazovni profilUkupno gimnazijalaca
0Borski upravni okrug32811542140432290.978010952770
1Braničevski upravni okrug49532452196525393.9538109521137
2Grad Beograd5735928604209652364534.7198721620618862
3Jablanički upravni okrug76773749311994667.15261715771389
4Južnobanatski upravni okrug88484281341970748.85201712761828
\n", "
" ], "text/plain": [ " Okrug Broj učenika Broj devojčica Broj odeljenja \\\n", "0 Borski upravni okrug 3281 1542 140 \n", "1 Braničevski upravni okrug 4953 2452 196 \n", "2 Grad Beograd 57359 28604 2096 \n", "3 Jablanički upravni okrug 7677 3749 311 \n", "4 Južnobanatski upravni okrug 8848 4281 341 \n", "\n", " Broj nastavnika - bez zamena Ukupna norma nastavnikaa - bez zamena \\\n", "0 432 290.9780 \n", "1 525 393.9538 \n", "2 5236 4534.7198 \n", "3 994 667.1526 \n", "4 970 748.8520 \n", "\n", " Broj skola Područje rada Obrazovni profil Ukupno gimnazijalaca \n", "0 10 9 52 770 \n", "1 10 9 52 1137 \n", "2 72 16 206 18862 \n", "3 17 15 77 1389 \n", "4 17 12 76 1828 " ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "infopookruzima = pd.merge(infopookruzima,gimnazijalci,on='Okrug')\n", "infopookruzima.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Табелу *infopookruzima* која сада садржи прегршт агрегираних података на нивоу округа ћемо сачувати у .csv за даљу анализу: " ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [], "source": [ "infopookruzima.to_csv('MPNTR_podaci_po_okruzima.csv',encoding='UTF-16',index=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Припрема података за анализу и визуализацију по општинама:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Слично ћемо поновити и са општинама. Како постоје примери оштина истог назива (нпр. Палилула), груписање ћемо сада вршити по пару колона - округ и општина:" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
OkrugOpštinaBroj učenikaBroj devojčicaBroj odeljenjaBroj nastavnika - bez zamenaUkupna norma nastavnikaa - bez zamena
0Borski upravni okrugBor154475164184130.8821
1Borski upravni okrugKladovo465210195138.8610
2Borski upravni okrugMajdanpek380165186938.2098
\n", "
" ], "text/plain": [ " Okrug Opština Broj učenika Broj devojčica \\\n", "0 Borski upravni okrug Bor 1544 751 \n", "1 Borski upravni okrug Kladovo 465 210 \n", "2 Borski upravni okrug Majdanpek 380 165 \n", "\n", " Broj odeljenja Broj nastavnika - bez zamena \\\n", "0 64 184 \n", "1 19 51 \n", "2 18 69 \n", "\n", " Ukupna norma nastavnikaa - bez zamena \n", "0 130.8821 \n", "1 38.8610 \n", "2 38.2098 " ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "skolepoopstinama = srednjeskole.groupby(['Okrug','Opština'])[['Broj učenika','Broj devojčica','Broj odeljenja','Broj nastavnika - bez zamena','Ukupna norma nastavnikaa - bez zamena']].sum()\n", "skolepoopstinama = skolepoopstinama.reset_index()\n", "skolepoopstinama.head(3)" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
OkrugOpštinaBroj skola
0Borski upravni okrugBor4
1Borski upravni okrugKladovo1
2Borski upravni okrugMajdanpek2
3Borski upravni okrugNegotin3
4Braničevski upravni okrugKostolac1
\n", "
" ], "text/plain": [ " Okrug Opština Broj skola\n", "0 Borski upravni okrug Bor 4\n", "1 Borski upravni okrug Kladovo 1\n", "2 Borski upravni okrug Majdanpek 2\n", "3 Borski upravni okrug Negotin 3\n", "4 Braničevski upravni okrug Kostolac 1" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "brsskolapoopstini = srednjeskole.groupby(['Okrug','Opština']).size()\n", "brsskolapoopstini = brsskolapoopstini.reset_index()\n", "brsskolapoopstini = brsskolapoopstini.rename(columns={0:'Broj skola'})\n", "brsskolapoopstini.head()" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
OkrugOpštinaBroj učenikaBroj devojčicaBroj odeljenjaBroj nastavnika - bez zamenaUkupna norma nastavnikaa - bez zamenaBroj skola
0Borski upravni okrugBor154475164184130.88214
1Borski upravni okrugKladovo465210195138.86101
2Borski upravni okrugMajdanpek380165186938.20982
3Borski upravni okrugNegotin8924163912883.02513
4Braničevski upravni okrugKostolac763137327865.55501
\n", "
" ], "text/plain": [ " Okrug Opština Broj učenika Broj devojčica \\\n", "0 Borski upravni okrug Bor 1544 751 \n", "1 Borski upravni okrug Kladovo 465 210 \n", "2 Borski upravni okrug Majdanpek 380 165 \n", "3 Borski upravni okrug Negotin 892 416 \n", "4 Braničevski upravni okrug Kostolac 763 137 \n", "\n", " Broj odeljenja Broj nastavnika - bez zamena \\\n", "0 64 184 \n", "1 19 51 \n", "2 18 69 \n", "3 39 128 \n", "4 32 78 \n", "\n", " Ukupna norma nastavnikaa - bez zamena Broj skola \n", "0 130.8821 4 \n", "1 38.8610 1 \n", "2 38.2098 2 \n", "3 83.0251 3 \n", "4 65.5550 1 " ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "infopoopstinama = pd.merge(skolepoopstinama,brsskolapoopstini,on=['Okrug','Opština'])\n", "infopoopstinama.head()" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
OkrugOpštinaPodručje radaObrazovni profil
0Borski upravni okrugBor930
1Borski upravni okrugKladovo515
2Borski upravni okrugMajdanpek49
\n", "
" ], "text/plain": [ " Okrug Opština Područje rada Obrazovni profil\n", "0 Borski upravni okrug Bor 9 30\n", "1 Borski upravni okrug Kladovo 5 15\n", "2 Borski upravni okrug Majdanpek 4 9" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "opcijepoopstinama = data.groupby(['Okrug','Opština'])[['Područje rada','Obrazovni profil']].nunique()\n", "opcijepoopstinama = opcijepoopstinama.reset_index()\n", "opcijepoopstinama.head(3)" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
OkrugOpštinaBroj učenikaBroj devojčicaBroj odeljenjaBroj nastavnika - bez zamenaUkupna norma nastavnikaa - bez zamenaBroj skolaPodručje radaObrazovni profil
0Borski upravni okrugBor154475164184130.88214930
1Borski upravni okrugKladovo465210195138.86101515
2Borski upravni okrugMajdanpek380165186938.2098249
3Borski upravni okrugNegotin8924163912883.02513520
4Braničevski upravni okrugKostolac763137327865.55501313
\n", "
" ], "text/plain": [ " Okrug Opština Broj učenika Broj devojčica \\\n", "0 Borski upravni okrug Bor 1544 751 \n", "1 Borski upravni okrug Kladovo 465 210 \n", "2 Borski upravni okrug Majdanpek 380 165 \n", "3 Borski upravni okrug Negotin 892 416 \n", "4 Braničevski upravni okrug Kostolac 763 137 \n", "\n", " Broj odeljenja Broj nastavnika - bez zamena \\\n", "0 64 184 \n", "1 19 51 \n", "2 18 69 \n", "3 39 128 \n", "4 32 78 \n", "\n", " Ukupna norma nastavnikaa - bez zamena Broj skola Područje rada \\\n", "0 130.8821 4 9 \n", "1 38.8610 1 5 \n", "2 38.2098 2 4 \n", "3 83.0251 3 5 \n", "4 65.5550 1 3 \n", "\n", " Obrazovni profil \n", "0 30 \n", "1 15 \n", "2 9 \n", "3 20 \n", "4 13 " ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "infopoopstinama = pd.merge(infopoopstinama,opcijepoopstinama,on=['Okrug','Opština'])\n", "infopoopstinama.head()" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
OkrugOpštinaUkupno gimnazijalaca
0Borski upravni okrugBor303
1Borski upravni okrugKladovo93
\n", "
" ], "text/plain": [ " Okrug Opština Ukupno gimnazijalaca\n", "0 Borski upravni okrug Bor 303\n", "1 Borski upravni okrug Kladovo 93" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gimnazijalci = data[data['Područje rada']=='Gimnazija'].groupby(['Okrug','Opština'])['Ukupno učenika'].sum()\n", "gimnazijalci = gimnazijalci.reset_index()\n", "gimnazijalci = gimnazijalci.rename(columns={'Ukupno učenika':'Ukupno gimnazijalaca'})\n", "gimnazijalci.head(2)" ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
OkrugOpštinaBroj učenikaBroj devojčicaBroj odeljenjaBroj nastavnika - bez zamenaUkupna norma nastavnikaa - bez zamenaBroj skolaPodručje radaObrazovni profilUkupno gimnazijalaca
0Borski upravni okrugBor154475164184130.88214930303
1Borski upravni okrugKladovo465210195138.8610151593
2Borski upravni okrugMajdanpek380165186938.209824982
3Borski upravni okrugNegotin8924163912883.02513520292
4Braničevski upravni okrugPetrovac na Mlavi468266194435.0179135210
\n", "
" ], "text/plain": [ " Okrug Opština Broj učenika Broj devojčica \\\n", "0 Borski upravni okrug Bor 1544 751 \n", "1 Borski upravni okrug Kladovo 465 210 \n", "2 Borski upravni okrug Majdanpek 380 165 \n", "3 Borski upravni okrug Negotin 892 416 \n", "4 Braničevski upravni okrug Petrovac na Mlavi 468 266 \n", "\n", " Broj odeljenja Broj nastavnika - bez zamena \\\n", "0 64 184 \n", "1 19 51 \n", "2 18 69 \n", "3 39 128 \n", "4 19 44 \n", "\n", " Ukupna norma nastavnikaa - bez zamena Broj skola Područje rada \\\n", "0 130.8821 4 9 \n", "1 38.8610 1 5 \n", "2 38.2098 2 4 \n", "3 83.0251 3 5 \n", "4 35.0179 1 3 \n", "\n", " Obrazovni profil Ukupno gimnazijalaca \n", "0 30 303 \n", "1 15 93 \n", "2 9 82 \n", "3 20 292 \n", "4 5 210 " ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "infopoopstinama = pd.merge(infopoopstinama,gimnazijalci,on=['Okrug','Opština'])\n", "infopoopstinama.head()" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
OkrugOpštinaUkupno u trogodisnjim ss
0Borski upravni okrugBor163
1Borski upravni okrugKladovo70
2Borski upravni okrugMajdanpek53
3Borski upravni okrugNegotin140
4Braničevski upravni okrugKostolac78
\n", "
" ], "text/plain": [ " Okrug Opština Ukupno u trogodisnjim ss\n", "0 Borski upravni okrug Bor 163\n", "1 Borski upravni okrug Kladovo 70\n", "2 Borski upravni okrug Majdanpek 53\n", "3 Borski upravni okrug Negotin 140\n", "4 Braničevski upravni okrug Kostolac 78" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "trogodisnjepoopstini = data[data['Trajanje obrazovanja']==3].groupby(['Okrug','Opština'])['Ukupno učenika'].sum()\n", "trogodisnjepoopstini = trogodisnjepoopstini.reset_index()\n", "trogodisnjepoopstini = trogodisnjepoopstini.rename(columns={'Ukupno učenika':'Ukupno u trogodisnjim ss'})\n", "trogodisnjepoopstini.head()" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
OkrugOpštinaBroj učenikaBroj devojčicaBroj odeljenjaBroj nastavnika - bez zamenaUkupna norma nastavnikaa - bez zamenaBroj skolaPodručje radaObrazovni profilUkupno gimnazijalacaUkupno u trogodisnjim ss
0Borski upravni okrugBor154475164184130.88214930303163
1Borski upravni okrugKladovo465210195138.861015159370
\n", "
" ], "text/plain": [ " Okrug Opština Broj učenika Broj devojčica \\\n", "0 Borski upravni okrug Bor 1544 751 \n", "1 Borski upravni okrug Kladovo 465 210 \n", "\n", " Broj odeljenja Broj nastavnika - bez zamena \\\n", "0 64 184 \n", "1 19 51 \n", "\n", " Ukupna norma nastavnikaa - bez zamena Broj skola Područje rada \\\n", "0 130.8821 4 9 \n", "1 38.8610 1 5 \n", "\n", " Obrazovni profil Ukupno gimnazijalaca Ukupno u trogodisnjim ss \n", "0 30 303 163 \n", "1 15 93 70 " ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "infopoopstinama = pd.merge(infopoopstinama,trogodisnjepoopstini,on=['Okrug','Opština'])\n", "infopoopstinama.head(2)" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [], "source": [ "infopoopstinama.to_csv('MPNTR_podaci_po_opstinama.csv',encoding='UTF-16',index=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "У овој радној свесци испробали смо различите функције у оквиру *pandas* библиотеке, неке једноставне (као read_csv, head, info, drop, rename) али и неке захтевније (нпр. groupby, merge) све са циљем припреме података за даљу анализу и визуализације. А сада, хајде да видимо детљније шта нам говоре ови подаци!" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.1" } }, "nbformat": 4, "nbformat_minor": 2 }