El fichero cotizacion.csv
contiene las cotizaciones de las empresas del IBEX35 con las siguientes columnas: Nombre
(nombre de la empresa), Final
(precio de la acción al cierre de bolsa), Máximo
(precio máximo de la acción durante la jornada), Mínimo
(precio mínimo de la acción durante la jornada), Volumen
(Volumen al cierre de bolsa), Efectivo
(capitalización al cierre en miles de euros).
Construir una función reciba el fichero de cotizaciones y devuelva un diccionario con los datos del fichero por columnas.
Construir una función que reciba el diccionario devuelto por la función anterior y cree un fichero en formato csv con el mínimo, el máximo y la media de dada columna.
In [1]:
def limpiar(cifra):
"""
Función que elimina los puntos de separación de miles y cambia las comas de separación de decimales por puntos.
Parámetros:
- cifra: Es una cadena con una cifra
Devuelve:
Un real con la cifra de la cadena después de eliminar el separador de miles y cambiar el separador de decimales por punto.
"""
cifra = cifra.replace('.', '')
cifra = cifra.replace(',','.')
return float(cifra)
def preprocesado(ruta):
"""
Función que preprocesa los datos contenidos en un fichero con formato csv y devuelve un diccionario con los nombres de las columnas como claves y las listas de valores asociados a ellas.
Parámetros:
- ruta: Es una cadena con la ruta del fichero.
Devuelve:
Un diccionario con pares formados por los nombres de las columnas y las listas de valores en las columnas.
"""
try:
# Abrimos el fichero en modo lectura
f = open(ruta, 'r')
except FileNotFoundError:
print('El fichero no existe.')
return
# Leemos el fichero por líneas en una lista
lines = f.readlines()
# Cerramos el fichero
f.close()
# Leemos las claves del primer elemento de la lista y eliminamos el cambio de línea que aparece al final
claves = lines[0]
# Eliminamos el cambio de línea que aparece al final y dividimos la cadena por el punto y coma
claves = claves[:-1].split(';')
# Creamos el diccionario
cotizaciones = {}
# Inicializamos el diccionario con listas vacías
for i in claves:
cotizaciones[i] = []
# Recorremos la lista línea a línea
for linea in lines[1:]:
# Eliminamos el cambio de línea que aparece al final y dividimos la cadena por el punto y coma
linea = linea[:-1].split(';')
cotizaciones[claves[0]].append(linea[0])
# Añadimos cada dato a la lista correspondiente del diccionario
for i in range(1, len(cotizaciones)):
cotizaciones[claves[i]].append(limpiar(linea[i]))
return cotizaciones
def resumen_cotizacion(cotizaciones, ruta):
"""
Función que recibe un diccionario con los valores de cotización y crear un fichero con un resumen con el mínimo, el máximo y la media.
Parámetros:
- cotizaciones: Es un diccionario con pares cuyas claves son los nombres de la variables medidas y cuyos valores son las listas de valores de cada variable.
- ruta: Es una cadena con la ruta del fichero.
"""
# Eliminamos el primer par del diccionario que contiene los nombres de las empresas
del(cotizaciones['Nombre'])
# Abrimos el fichero en modo escritura
f = open(ruta, 'w')
# Escribimos en la primera línea los nombres de las columnas
f.write('Nombre')
for clave in cotizaciones.keys():
f.write(';' + clave)
# Calculamos los mínimos de cada lista y los escribimos en las columnas correspondientes
f.write('\nMínimo')
for valores in cotizaciones.values():
f.write(';' + str(min(valores)))
# Calculamos los máximos de cada lista y los escribimos en las columnas correspondientes
f.write('\nMáximo')
for valores in cotizaciones.values():
f.write(';' + str(max(valores)))
# Calculamos las medias de cada lista y las escribimos en las columnas correspondientes
f.write('\nMedia')
for valores in cotizaciones.values():
f.write(';' + str(sum(valores)/len(valores)))
f.close()
return
# Llamada a las funciones de prueba
cotizaciones = preprocesado('cotizacion.csv')
resumen_cotizacion(cotizaciones, 'resumen-cotizacion.csv')
In [ ]: