0% encontró este documento útil (0 votos)
42 vistas4 páginas

Análisis de Emisiones Contaminantes en Madrid

Pandas
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
42 vistas4 páginas

Análisis de Emisiones Contaminantes en Madrid

Pandas
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

                           

Dirección General de Servicios de Cómputo Académico


Dirección de Cómputo para la Docencia

Los ficheros [Link], [Link], [Link] y


[Link], contienen datos sobre las emisiones contaminates en la
ciudad de Madrid en los años 2016, 2017, 2018 y 2019 respectivamente. Escribir
un programa con los siguientes requisitos:

1. Generar un DataFrame con los datos de los cuatro ficheros.


2. Filtrar las columnas del DataFrame para quedarse con las columnas
ESTACION, MAGNITUD, AÑO, MES y las correspondientes a los días D01,
D02, etc.
3. Reestructurar el DataFrame para que los valores de los contaminantes de
las columnas de los días aparezcan en una única columna.
4. Añadir una columna con la fecha a partir de la concatenación del año, el
mes y el día (usar el módulo datetime).
5. Eliminar las filas con fechas no válidas (utilizar la función isnat del módulo
numpy) y ordenar el DataFrame por estaciones contaminantes y fecha.
6. Mostrar por pantalla las estaciones y los contaminantes disponibles en el
DataFrame.
7. Crear una función que reciba una estación, un contaminante y un rango de
fechas y devuelva una serie con las emisiones del contaminante dado en la
estación y rango de fechas dado.
8. Mostrar un resumen descriptivo (mínimo, máximo, media, etc.) para cada
contaminante.
9. Mostrar un resumen descriptivo para cada contaminante por distritos.
10. Crear una función que reciba una estación y un contaminante y devuelva un
resumen descriptivo de las emisiones del contaminante indicado en la
estación indicada.
11. Crear una función que devuelva las emisiones medias mensuales de un
contaminante y un año dados para todos las estaciones.
12. Crear un función que reciba una estación de medición y devuelva un
DataFrame con las medias mensuales de los distintos tipos de
contaminantes.

Ejercicios Pandas # 3 L.I. Raymundo Lumbreras López [Hoja 1 de 4]


                           
Dirección General de Servicios de Cómputo Académico
Dirección de Cómputo para la Docencia

import pandas as pd
import numpy as np
import datetime as dt

# Generar un DataFrame con los datos de los cuatro ficheros


import pandas as pd

emisiones_2016 = pd.read_csv('[Link]', sep = ';')


emisiones_2017 = pd.read_csv('[Link]', sep = ';')
emisiones_2018 = pd.read_csv('[Link]', sep = ';')
emisiones_2019 = pd.read_csv('[Link]', sep = ';')
emisiones = [Link]([emisiones_2016, emisiones_2017, emisiones_2018,
emisiones_2019])
emisiones

Solucion

# Filtrar las columnas del DataFrame para quedarse con las columnas
ESTACION, MAGNITUD, AÑO, MES y las correspondientes a los días D01,
D02, etc.
columnas = ['ESTACION', 'MAGNITUD', 'ANO', 'MES']
[Link]([col for col in emisiones if [Link]('D')])
emisiones = emisiones[columnas]
emisiones

# Reestructurar el DataFrame para que los valores de los contaminantes


de las columnas de los días aparezcan en una única columna.
emisiones = [Link](id_vars=['ESTACION', 'MAGNITUD', 'ANO',
'MES'], var_name='DIA', value_name='VALOR')
emisiones

# Crear una nueva columna con las fechas a partir del año, mes y día
# Primero eliminamos el caracter D del comienzo de la columna de los
días
emisiones['DIA'] = [Link]('D')
# Concatenamos las columnas del año, mes y día
emisiones['FECHA'] = [Link](str) + '/' +
[Link](str) + '/' + [Link](str)

Ejercicios Pandas # 3 L.I. Raymundo Lumbreras López [Hoja 2 de 4]


                           
Dirección General de Servicios de Cómputo Académico
Dirección de Cómputo para la Docencia

# Convertimos la nueva columna al tipo fecha


emisiones['FECHA'] = pd.to_datetime([Link],
format='%Y/%m/%d', infer_datetime_format=True, errors='coerce')
emisiones

# Eliminar las filas con fechas no válidas


emisiones = [Link](emisiones[[Link]([Link])].index)
# Ordenar el el dataframe por estación, magnitud y fecha
emisiones.sort_values(['ESTACION', 'MAGNITUD', 'FECHA'])

# Mostrar las estaciones disponibles


print('Estaciones:', [Link]())
# Mostrar los contaminantes disponibles
print('Contaminantes:', [Link]())

# Función que devuelve las emisiones de un contaminante dado en una


estación y rango de fechas dado.
def evolucion(estacion, contaminante, desde, hasta):
return emisiones[([Link] == estacion) &
([Link] == contaminante) & ([Link] >= desde) &
([Link] <= hasta)].sort_values('FECHA').VALOR
evolucion(56, 8, [Link]('2018/10/25', '%Y/%m/%d'),
[Link]('2019/02/12', '%Y/%m/%d'))

# Resumen descriptivo por contaminantes


[Link]('MAGNITUD').[Link]()

# Resumen descriptivo por contaminantes y distritos


[Link](['ESTACION', 'MAGNITUD']).[Link]()

# Función que devuelve un resumen descriptivo de la emisiones en un


contaminante dado en un estación dada
def resumen(estacion, contaminante):
return emisiones[([Link] == estacion) &
([Link] == contaminante)].[Link]()

Ejercicios Pandas # 3 L.I. Raymundo Lumbreras López [Hoja 3 de 4]


                           
Dirección General de Servicios de Cómputo Académico
Dirección de Cómputo para la Docencia

# Resumen de Dióxido de Nitrógeno en Plaza Elíptica


print('Resumen Dióxido de Nitrógeno en Plaza Elíptica:\n', resumen(56,
8),'\n', sep='')
# Resumen de Dióxido de Nitrógeno en Plaza del Carmen
print('Resumen Dióxido de Nitrógeno en Plaza del Carmen:\n',
resumen(35, 8), sep='')

# Función que devuelve una serie con las emisiones medias mensuales de
un contaminante y un mes año para todos las estaciones
def evolucion_mensual(contaminante, año):
return emisiones[([Link] == contaminante) &
([Link] == año)].groupby(['ESTACION',
'MES']).[Link]().unstack('MES')

# Evolución del dióxido de nitrógeno en 2019


evolucion_mensual(8, 2019)

Ejercicios Pandas # 3 L.I. Raymundo Lumbreras López [Hoja 4 de 4]

También podría gustarte