Pandas: Més sobre vendes de samarretes ====================================== El fitxer :download:`samarretes.csv` conté les dades de les vendes de samarretes realitzades per una empresa al llarg d’un període de diversos anys. Si llegim aquest fitxer mitjançant la següent comanda de :py:mod:`pandas`, obtenim un :py:class:`pandas.DataFrame` com aquest: .. literalinclude:: lectura-samarretes.txt :language: pycon Descarregueu-vos el fitxer :download:`samarretes.csv`, proveu de llegir-lo en l'intèrpret de Python **tal com s'indica en l'exemple de més amunt** i examineu les columnes que conté. Fixeu-vos que els valors de la columna `Data` són del tipus :py:class:`datetime.datetime`. Les funcions que es demanen a continuació han de treballar amb qualsevol :py:class:`~pandas.DataFrame` que tingui la mateixa estructura (mateixes columnes), **però no necessàriament el mateix de l'exemple**, poden correspondre a les vendes de qualsevol empresa de samarretes. Funció vendes_per_talla (2 punts) --------------------------------- .. py:module:: talles Volem saber si hi ha alguna diferència entre les talles venudes als homes respecte a les de les dones. A tal fi, al mòdul :py:mod:`talles` (fitxer :file:`talles.py`), implementeu-hi la funció següent: .. function:: vendes_per_talla(df, gnr) :param ~pandas.DataFrame df: Dataframe amb les dades de vendes de samarretes :param str gnr: String que pot valdre :py:const:`'home'`, :py:const:`'dona'` o :py:const:`'*'`. :return: Diccionari amb el nombre de samarretes venudes per cada talla, és a dir, les claus seran les talles i els valors el nombre de samarretes venudes. Si `gnr` val :py:const:`'home'`, els valors seran els de les samarretes dels homes, si `gnr` val :py:const:`'dona'`, els valors seran els de les samarretes de les dones i si `gnr` val :py:const:`'*'`, els valors seran els del total de samarretes venudes. :rtype: :py:class:`dict`. Les claus d'aquest diccionari són el conjunt dels valors que hi ha a la columna `Talla`. Essent `df` el Dataframe amb les dades del fitxer d'exemple obtenim: .. literalinclude:: tests-talles.txt :language: pycon :start-after: --ini-enunciat :end-before: --fi-enunciat Disposeu de més jocs de proves al fitxer :download:`tests-talles.txt`. Funció vendes_anuals (2 punts) ------------------------------ .. py:module:: anual Al mòdul :py:mod:`anual` (fitxer :file:`anual.py`), implementeu-hi la funció següent: .. function:: vendes_anuals(df, a) :param ~pandas.DataFrame df: Dataframe amb les dades de vendes de samarretes :param int a: Any del qual es volen consultar les vendes :return: Nombre de samarretes venudes l'any `a` i l'import total de les vendes de l'any `a`. L’import de cada venda es calcula com el nombre d’unitats multiplicat pel preu unitari. .. hint:: Per a accedir als atributs o mètodes d'una columna que conté valors de tipus :py:class:`datetime.datetime` es recomana utilitzar :py:attr:`pandas.Series.dt` Essent `df` el Dataframe amb les dades del fitxer d'exemple obtenim: .. literalinclude:: tests-anual.txt :language: pycon :start-after: --ini-enunciat :end-before: --fi-enunciat Disposeu de més jocs de proves al fitxer :download:`tests-anual.txt`.