import pandas as pd
1 Funciones en Python
¿Cansade de escribir el mismo código una y otra vez? ¡Las funciones de Python son la solución! Incorpora las mejores prácticas de programación desde el principio y aprende a utilizarlas para crear código modular desde tus primeros proyectos.
Simplifica y organiza tu código de manera eficiente desde el inicio. Imagina cada función como una pequeña máquina diseñada para tareas específicas, lista para ser reutilizada en diferentes partes de tu proyecto. Desde aceptar argumentos hasta devolver resultados, las funciones promueven la modularidad y la reutilización del código. Aprende a utilizarlas para crear código modular desde tus primeros proyectos y transforma tu forma de programar.
def funcion():
= a + b
c return c
= 1
a = 2
b funcion()
3
def funcionv2(a ,b):
= a + b
c return c
2,1) funcionv2(
3
= funcionv2(2,2)
resultado resultado
4
def importa(f):
'''
Importa un archivo, toma la primera columna como indice y la convierte a date time.
Regresa el promedio diario de cada columna'''
= pd.read_csv(f,index_col=0,parse_dates=True).resample("2H").mean()
df return df
= "../data/Cuernavaca_1dia_comas.csv"
f = importa(f)
cuerna_mean cuerna_mean
C:\Users\gbv\AppData\Local\Temp\ipykernel_8504\2979055612.py:5: FutureWarning: 'H' is deprecated and will be removed in a future version, please use 'h' instead.
df = pd.read_csv(f,index_col=0,parse_dates=True).resample("2H").mean()
To | Ws | Wd | P | Ig | Ib | Id | |
---|---|---|---|---|---|---|---|
tiempo | |||||||
2012-01-01 00:00:00 | 18.95 | 0.00 | 26.0 | 87508.5 | 0.0 | 0.0 | 0.0 |
2012-01-01 02:00:00 | 17.60 | 0.00 | 30.0 | 87671.0 | 0.0 | 0.0 | 0.0 |
2012-01-01 04:00:00 | 16.25 | 0.00 | 26.5 | 87204.0 | 0.0 | 0.0 | 0.0 |
2012-01-01 06:00:00 | 17.50 | 0.00 | 30.5 | 87118.0 | 10.0 | 75.5 | 5.5 |
2012-01-01 08:00:00 | 19.50 | 0.00 | 78.0 | 87207.0 | 266.5 | 667.0 | 47.5 |
2012-01-01 10:00:00 | 20.00 | 1.55 | 134.0 | 87229.0 | 642.5 | 956.0 | 71.5 |
2012-01-01 12:00:00 | 21.50 | 1.65 | 147.5 | 87294.5 | 805.0 | 998.5 | 79.5 |
2012-01-01 14:00:00 | 21.50 | 1.25 | 170.0 | 87294.5 | 682.0 | 954.5 | 76.5 |
2012-01-01 16:00:00 | 20.00 | 0.50 | 169.0 | 87229.0 | 326.0 | 748.0 | 55.5 |
2012-01-01 18:00:00 | 17.05 | 0.00 | 245.0 | 87102.5 | 0.0 | 0.0 | 0.0 |
2012-01-01 20:00:00 | 17.15 | 0.10 | 67.5 | 87097.5 | 0.0 | 0.0 | 0.0 |
2012-01-01 22:00:00 | 16.25 | 0.65 | 91.0 | 87116.0 | 0.0 | 0.0 | 0.0 |
1.1 Para aprender más…
1.2 Ejercicios sugeridos
1.2.1 Ejercicio: Función para Resample con Argumentos por Default
Escribe una función en Python que acepte un objeto DataFrame
de la biblioteca pandas
como parámetro. La función debe incluir un argumento adicional que especifique el periodo para aplicar la función resample()
. La función debe calcular y retornar la desviación estándar de cada columna del dataframe para ese periodo especificado. Por defecto, el periodo debe estar configurado para ser anual. Documenta la función.
Requisitos: 1. La función debe tener dos parámetros: el DataFrame
y el periodo de muestreo. 2. El argumento del periodo debe tener un valor por default anual. 3. Utiliza la función resample()
de pandas
para agrupar los datos según el periodo indicado. 4. Calcula y devuelve la desviación estándar de las columnas del DataFrame
.
Código
def resample_std(dataframe, period='YE'):
"""
Calcula la desviación estándar de los valores en un DataFrame agrupados por un periodo especificado.
Args:
dataframe (pd.DataFrame): El DataFrame que contiene los datos a analizar.
period (str, opcional): Una cadena que representa el intervalo de tiempo para el agrupamiento.
Los valores válidos son aquellos compatibles con la función `resample()` de pandas,
como 'YE' para anual, 'ME' para mensual, etc. El valor por defecto es 'YE' (anual).
Returns:
pd.Series: Una serie con la desviación estándar de los valores agrupados por el periodo especificado.
"""
# Agrupar los datos por el periodo especificado y calcular la desviación estándar
= dataframe.resample(period).std()
result
return result
="ME") resample_std(cuerna_mean,period
To | Ws | Wd | P | Ig | Ib | Id | |
---|---|---|---|---|---|---|---|
tiempo | |||||||
2012-01-31 | 1.893345 | 0.651048 | 71.547346 | 173.948067 | 313.538191 | 449.154262 | 34.698048 |