.. py:module:: escoles
Escoles
-------
Un mecanisme de transparència de les administracions públiques consisteix en "obrir" dades per posar-les a disposició de la ciutadania per a què aquesta les pugui utilitzar lliurament. Al web `dades_obertes `__ de la Generalitat de Catalunya s'hi publiquen tot tipus de dades obertes. L'objectiu de l'exercici és accedir a aquestes dades per respondre a preguntes sobre la distribució de centres escolars de primària i secundària a Catalunya. Per això, es treballarà amb les dades del `directori de centres docents `__. Teniu disponibles les dades d'alguns any al fitxer :download:`centres_docents.csv`.
Deseu totes les funcions al fitxer :file:`escoles.py` (mòdul :py:mod:`escoles`).
1. Dissenyeu la funció :py:const:`llegir_dades(nomf, a)` que, donat un nom de fitxer `nomf` i un any `a`, retorna un :py:ref:`DataFrame ` amb les dades del fitxer únicament de l'any `a`.
.. literalinclude:: test-escoles.txt
:language: pycon
:lines: 3-13
2. Dissenyeu la funció :py:func:`nombre_centres()` que, a partir del :py:ref:`DataFrame ` com el creat a la pregunta 1, retorna el nombre total de centres censats en el :py:ref:`DataFrame `.
.. literalinclude:: test-escoles.txt
:language: pycon
:lines: 15-16
3. Dissenyeu la funció :py:func:`telefon()` que, a partir del :py:ref:`DataFrame ` com el creat a la pregunta 1 i el codi d'un centre, retorna una tupla amb el nom, adreça i telèfon de contacte d'aquest centre (columnes :code:`'Denominació completa'`, :code:`'Adreça'` i :code:`'Telèfon'`).
.. literalinclude:: test-escoles.txt
:language: pycon
:lines: 18-19
4. Dissenyeu la funció :py:func:`titularitat()` que, a partir del :py:ref:`DataFrame ` com el creat a la pregunta 1, retorna el percentatge de centres de titularitat pública (aquells que en el camp :code:`'Nom naturalesa'` hi ha el valor :py:const:`'Públic'`) que consten en el :py:ref:`DataFrame `.
.. literalinclude:: test-escoles.txt
:language: pycon
:lines: 21-23
5. Dissenyeu la funció :py:func:`distribucio_titularitat()` que, a partir del :py:ref:`DataFrame ` com el creat a la pregunta 1, retorna una :ref:`Series ` indexada pel nom de la comarca (:code:`'Nom comarca'`), amb el percentatge de centres de titularitat pública que hi ha a cada comarca.
.. literalinclude:: test-escoles.txt
:language: pycon
:lines: 25-33
6. Dissenyeu la funció :py:func:`tipologia_centres()` que, a partir del :py:ref:`DataFrame ` com el creat a la pregunta 1, retorna un diccionari que tingui per claus els tipus d'ensenyaments ``'EINF1C'``, ``'EINF2C'``, ``'EPRI'``, ``'ESO'``, ``'BATX'``, ``'CFPM'`` i ``'CFPS'`` i com a valors associats el nombre de centres que ofereixen cada tipus d'ensenyament. Observeu que un mateix centre pot oferir diversos tipus d'ensenyaments.
Si analitzem el :py:ref:`DataFrame ` veurem que
hi ha una columna per cada tipus d'ensenyament. Si el centre
imparteix aquest tipus d'ensenyament el valor és el nom d'aquest tipus
d'ensenyament i si no l'imparteix el valor és :code:`NaN`.
.. literalinclude:: test-escoles.txt
:language: pycon
:lines: 35-37
7. Dissenyeu la funció :py:func:`busca_centre_ESO()` que, donat el :py:ref:`DataFrame ` com el creat a la pregunta 1 i donat un codi postal, retorna un :py:ref:`DataFrame ` format pels centres d'ESO de titularitat pública que tenen el codi postal donat. El :py:ref:`DataFrame ` ha de tenir per files les centres i per columnes el nom del centre, la seva adreça i el seu telèfon.
.. literalinclude:: test-escoles.txt
:language: pycon
:lines: 39-55
8. Dissenyeu la funció :py:func:`quants_FP()` que, donat el :py:ref:`DataFrame ` com el creat a la pregunta 1 i donat un nom de comarca, retorna el nombre de centres de la comarca que imparteixen estudis de formació professional de grau mitjà (``'CFPM'``) o superior (``'CFPS'``).
.. literalinclude:: test-escoles.txt
:language: pycon
:lines: 57-60
9. Alguns noms de centres com per exemple "Jaume Balmes" estan repetits. Dissenyeu la funció :py:func:`noms_iguals()` que, donat el :py:ref:`DataFrame ` com el creat a la pregunta 1, retorna un diccionari que té per claus els noms dels centres i per valors el nombre de repeticions. En el diccionari només hi han de constar els centres que tenen el seu nom repetit.
.. literalinclude:: test-escoles.txt
:language: pycon
:lines: 61-63
Disposeu de jocs de proves al fitxer :download:`test-escoles.txt`
.. rubric:: Solució
Disposeu d'una solució al fitxer :download:`escoles.py`.