Examen supletorio programación semestre sep 2020 - feb 2021

5 de marzo de 2021

Examen supletorio de la materia de Programación Orientada al Cálculo Científico del semestre septiembre 2020 - febrero 2021. Tomado el día viernes 5 de marzo de 2021.

Planteamiento

  1. Lea CON PANDAS el archivo predictores_estacionarios_luego_de_mutual_info_regression.csv (3 puntos). La primera columna en el archivo es el índice (que es una fecha) que debe usar para el DataFrame 1 de pandas (4 puntos).
  2. Para cada columna del DataFrame 1 de Pandas que contenga la información del archivo (no el índice del DataFrame), ajuste una recta. De cada recta ajustada a los datos, de cada columna del DataFrame 1, tome el valor de la pendiente. (8 puntos)
  3. Genere un nuevo DataFrame 2 de Pandas que contenga las mismas columnas que el DataFrame 1 referido en el punto 1 y 2 (4 puntos). En la única fila que va a tener este nuevo DataFrame 2, debe poner las pendientes que calculó en el punto 2. Es decir, en cada columna debe estar la pendiente correspondiente a la recta ajustada a los datos de las columnas correspondientes del DataFrame 1 (4 puntos).
  4. Guarde el nuevo DataFrame 2 de Pandas referido en el punto 3 como archivo csv (ponga el nombre que quiera al archivo) (3 puntos). El archivo csv no debe ser guardado con el índice que tiene el DataFrame (4 puntos).
  5. Suba a EVIRTUAL solamente el archivo .py de su script. Debe subir un (1) script. Puede subir hasta las 09h00. Solamente calificaré lo que suba a EVIRTUAL.

Nota: La información del DataFrame 2 debe ser guardado utilizando Pandas.

Solución

import pandas as pd
from scipy.optimize import curve_fit

def f(x, m, a):
    ''' Función que evalua una función que es un polinomio de primer grado.
    x: valor de la abscisa
    m: valor de la pendiente
    a: valor del intercepto
    '''
    return m*x + a

# index_col = 0 indica que la primera columna del archivo se usará como índice
df1 = pd.read_csv('predictores_estacionarios_luego_de_mutual_info_regression.csv',
                  index_col=0)

df2 = pd.DataFrame(columns=df1.columns, index=['Pendiente'])

for columna in df1.columns:
    # línea que permite verificar resultados
    print('Columna', columna)
    parametros, _ = curve_fit(f, range(len(df1[columna])), df1[columna])
    # línea que permite verificar resultados
    print('\tPendiente: {0}\n\tIntercepto: {1}'.format(parametros[0], parametros[1]))
    df2[columna] = parametros[0]
    
# index=False indica que no se guardará el índice en el archivo csv
df2.to_csv('pendientes.csv', index=False)

Related Posts with Thumbnails