.. py:module:: satisfacció Satisfacció ----------- Una empresa de software vol analitzar l'opinió dels seus clients sobre la seva pàgina web. Per això, passa una enquesta de 10 preguntes a les que es pot respondre amb un valor entre 1 i 5 (una `escala de Likert `__). L'objectiu de l'exercici és obtenir alguns paràmetres estadístics sobre les enquestes. Per això es dissenyaran funcions amb python utilitzant la llibreria `pandas `__. Per fer una primera prova, es guarden uns resultats ficticis en un fitxer de text amb format `CSV `__ en el que es separen els elements amb un ';' (punt i coma). La primera línia del fitxer conté l'identificador de la pregunta (P1 a P10) i les files següents les respostes donades a cada enquesta, que seran valors de 1 a 5. Disposeu d'un exemple de fitxer de resultats al fitxer :download:`satisfaccio.csv `. Deseu totes les funcions al fitxer :file:`satisfaccio.py` (mòdul :py:mod:`satisfaccio`). 1. Dissenyeu la funció :py:func:`~satisfaccio.llegir_csv` que a partir del nom del fitxer de resultats, retorna un :py:ref:`DataFrame ` que tingui per files les enquestes i per columnes les preguntes. Per això, investigueu com utilitzar la funció :py:func:`~pandas.read_csv`. .. literalinclude:: test-satisfaccio.txt :language: python3 :lines: 3-10 2. Dissenyeu la funció :py:func:`~satisfaccio.selecciona_index` que donat un :py:class:`~pandas.DataFrame` com el construït a la pregunta anterior, i donat l'índex d'una enquesta i l'identificador d'una pregunta retorni la resposta corresponent. Si ``df`` és el :py:class:`~pandas.DataFrame` de l'exemple, aquest seria un exemple d'utilització de la funció: .. literalinclude:: test-satisfaccio.txt :language: python3 :lines: 12,13 3. Dissenyeu la funció :py:func:`~satisfaccio.selecciona_fila` que donat un :py:class:`~pandas.DataFrame` com el construït a la pregunta 1 i un índex ``i`` enter retorni una :py:class:`~pandas.Series` formada per les respostes de la ``i``-èssima enquesta. .. literalinclude:: test-satisfaccio.txt :language: python3 :lines: 15-26 4. Dissenyeu la funció :py:func:`~satisfaccio.selecciona_parell` que donat un :py:class:`~pandas.DataFrame` com el construït a la pregunta 1 retorni un nou :py:class:`~pandas.DataFrame` format per les files d'índex parell. .. literalinclude:: test-satisfaccio.txt :language: python3 :lines: 28-32 5. Dissenyeu la funció :py:func:`~satisfaccio.selecciona_columnes` que donat un :py:class:`~pandas.DataFrame` com el construït a la pregunta 1, i una llista d'identificadors de preguntes, retorni un nou :py:class:`~pandas.DataFrame` format per totes les enquestes corresponents a les preguntes de la llista donada. .. literalinclude:: test-satisfaccio.txt :language: python3 :lines: 34-40 6. Dissenyeu la funció :py:func:`~satisfaccio.selecciona_valor` que donat un :py:class:`~pandas.DataFrame` com el construït a la pregunta 1, donat un identificador de pregunta i un valor de resposta, retorni un nou :py:class:`~pandas.DataFrame` format per totes les enquestes que tenen el valor donat com a resposta de la pregunta donada. Per l'exemple, el resultat esperat seria: .. literalinclude:: test-satisfaccio.txt :language: python3 :lines: 42-46 7. Dissenyeu la funció :py:func:`~satisfaccio.estadistiques` que donat un :py:class:`~pandas.DataFrame` com el construït a la primera pregunta i donat un identificador de pregunta retorni la mitjana aritmètica i la desviació típica de les respostes a aquesta pregunta. Per això, exploreu els mètodes del tipus :py:class:`~pandas.Series`: :py:meth:`~pandas.Series.mean` i :py:meth:`~pandas.Series.std`. .. literalinclude:: test-satisfaccio.txt :language: python3 :lines: 48-50 8. Dissenyeu la funció :py:func:`~satisfaccio.mes_valorada` que donat un :py:class:`~pandas.DataFrame` com el construït a la pregunta 1, retorni l'identificador de la pregunta que ha obtingut la millor mitjana aritmètica de totes. Per això, exploreu el mètode del tipus :py:class:`~pandas.DataFrame`, :py:meth:`~pandas.DataFrame.mean` i el del tipus :py:class:`~pandas.Series` :py:meth:`~pandas.Series.idxmax`. .. literalinclude:: test-satisfaccio.txt :language: python3 :lines: 52-54 9. Dissenyeu la funció :py:func:`~satisfaccio.totes_estadistiques` que donat un :py:class:`~pandas.DataFrame` com el construït a la pregunta 1, retorni un nou :py:class:`~pandas.DataFrame` que tingui per files els següents paràmetres estadístics: nombre de valors, mitjana, desviació títpica, valor mínim, percentils 25, 50 i 75 i valor màxim. Es recomana que exploreu el mètode :py:meth:`~pandas.DataFrame.describe` per a fer-ho. .. literalinclude:: test-satisfaccio.txt :language: python3 :lines: 56-76 Disposeu de més jocs de proves al fitxer :download:`test-satisfaccio.txt`. .. rubric:: Solució Disposeu d'una solució al fitxer :download:`satisfaccio.py `.