15  Operaciones básicas con DataFrames

En esta sesión, nos veremos operaciones entre columnas utilizando Pandas. Abordaremos desde la creación de nuevas columnas hasta la eliminación de las que ya no necesitamos, destacando las herramientas clave que Pandas pone a nuestra disposición para la manipulación eficaz de datos.

Aprenderás a realizar operaciones matemáticas básicas entre columnas de tu DataFrame, tales como sumar dos columnas para obtener un total o restar una constante. Además, podrás aplicar funciones personalizadas o utilizar las funciones integradas de Pandas para llevar a cabo cálculos más complejos entre columnas, lo que ampliará significativamente las capacidades de tu análisis.

import pandas as pd
f = "../data/Cuernavaca_1dia_comas.csv"
cuerna = pd.read_csv(f,index_col=0,parse_dates=True)
cuerna.head()
To Ws Wd P Ig Ib Id
tiempo
2012-01-01 00:00:00 19.3 0.0 26 87415 0 0 0
2012-01-01 01:00:00 18.6 0.0 26 87602 0 0 0
2012-01-01 02:00:00 17.9 0.0 30 87788 0 0 0
2012-01-01 03:00:00 17.3 0.0 30 87554 0 0 0
2012-01-01 04:00:00 16.6 0.0 27 87321 0 0 0
cuerna.To
tiempo
2012-01-01 00:00:00    19.3
2012-01-01 01:00:00    18.6
2012-01-01 02:00:00    17.9
2012-01-01 03:00:00    17.3
2012-01-01 04:00:00    16.6
2012-01-01 05:00:00    15.9
2012-01-01 06:00:00    17.0
2012-01-01 07:00:00    18.0
2012-01-01 08:00:00    19.0
2012-01-01 09:00:00    20.0
2012-01-01 10:00:00    20.0
2012-01-01 11:00:00    20.0
2012-01-01 12:00:00    21.0
2012-01-01 13:00:00    22.0
2012-01-01 14:00:00    21.7
2012-01-01 15:00:00    21.3
2012-01-01 16:00:00    21.0
2012-01-01 17:00:00    19.0
2012-01-01 18:00:00    17.1
2012-01-01 19:00:00    17.0
2012-01-01 20:00:00    17.3
2012-01-01 21:00:00    17.0
2012-01-01 22:00:00    16.6
2012-01-01 23:00:00    15.9
Name: To, dtype: float64
cuerna.To.mean()
18.604166666666668
cuerna.To.max()
22.0
cuerna.max()
To       22.0
Ws        2.1
Wd      269.0
P     87788.0
Ig      810.0
Ib      999.0
Id       80.0
dtype: float64
cuerna[["To","Ig"]].min()
To    15.9
Ig     0.0
dtype: float64
cuerna.Ws.std()
0.6771102280054299
cuerna.To - cuerna.To.mean()
tiempo
2012-01-01 00:00:00    0.695833
2012-01-01 01:00:00   -0.004167
2012-01-01 02:00:00   -0.704167
2012-01-01 03:00:00   -1.304167
2012-01-01 04:00:00   -2.004167
2012-01-01 05:00:00   -2.704167
2012-01-01 06:00:00   -1.604167
2012-01-01 07:00:00   -0.604167
2012-01-01 08:00:00    0.395833
2012-01-01 09:00:00    1.395833
2012-01-01 10:00:00    1.395833
2012-01-01 11:00:00    1.395833
2012-01-01 12:00:00    2.395833
2012-01-01 13:00:00    3.395833
2012-01-01 14:00:00    3.095833
2012-01-01 15:00:00    2.695833
2012-01-01 16:00:00    2.395833
2012-01-01 17:00:00    0.395833
2012-01-01 18:00:00   -1.504167
2012-01-01 19:00:00   -1.604167
2012-01-01 20:00:00   -1.304167
2012-01-01 21:00:00   -1.604167
2012-01-01 22:00:00   -2.004167
2012-01-01 23:00:00   -2.704167
Name: To, dtype: float64
cuerna.To **2
tiempo
2012-01-01 00:00:00    372.49
2012-01-01 01:00:00    345.96
2012-01-01 02:00:00    320.41
2012-01-01 03:00:00    299.29
2012-01-01 04:00:00    275.56
2012-01-01 05:00:00    252.81
2012-01-01 06:00:00    289.00
2012-01-01 07:00:00    324.00
2012-01-01 08:00:00    361.00
2012-01-01 09:00:00    400.00
2012-01-01 10:00:00    400.00
2012-01-01 11:00:00    400.00
2012-01-01 12:00:00    441.00
2012-01-01 13:00:00    484.00
2012-01-01 14:00:00    470.89
2012-01-01 15:00:00    453.69
2012-01-01 16:00:00    441.00
2012-01-01 17:00:00    361.00
2012-01-01 18:00:00    292.41
2012-01-01 19:00:00    289.00
2012-01-01 20:00:00    299.29
2012-01-01 21:00:00    289.00
2012-01-01 22:00:00    275.56
2012-01-01 23:00:00    252.81
Name: To, dtype: float64
(cuerna.To - cuerna.To.mean()).abs()
tiempo
2012-01-01 00:00:00    0.695833
2012-01-01 01:00:00    0.004167
2012-01-01 02:00:00    0.704167
2012-01-01 03:00:00    1.304167
2012-01-01 04:00:00    2.004167
2012-01-01 05:00:00    2.704167
2012-01-01 06:00:00    1.604167
2012-01-01 07:00:00    0.604167
2012-01-01 08:00:00    0.395833
2012-01-01 09:00:00    1.395833
2012-01-01 10:00:00    1.395833
2012-01-01 11:00:00    1.395833
2012-01-01 12:00:00    2.395833
2012-01-01 13:00:00    3.395833
2012-01-01 14:00:00    3.095833
2012-01-01 15:00:00    2.695833
2012-01-01 16:00:00    2.395833
2012-01-01 17:00:00    0.395833
2012-01-01 18:00:00    1.504167
2012-01-01 19:00:00    1.604167
2012-01-01 20:00:00    1.304167
2012-01-01 21:00:00    1.604167
2012-01-01 22:00:00    2.004167
2012-01-01 23:00:00    2.704167
Name: To, dtype: float64
cuerna["To_avg"]  = cuerna.To.mean() #Esta puede ser con operaciones mas complejas
del cuerna["To_avg"]
cuerna.columns
Index(['To', 'Ws', 'Wd', 'P', 'Ig', 'Ib', 'Id'], dtype='object')
cuerna["To_avg"]  = cuerna.To.mean() #Esta puede ser con operaciones mas complejas
cuerna.head()
To Ws Wd P Ig Ib Id To_avg
tiempo
2012-01-01 00:00:00 19.3 0.0 26 87415 0 0 0 18.604167
2012-01-01 01:00:00 18.6 0.0 26 87602 0 0 0 18.604167
2012-01-01 02:00:00 17.9 0.0 30 87788 0 0 0 18.604167
2012-01-01 03:00:00 17.3 0.0 30 87554 0 0 0 18.604167
2012-01-01 04:00:00 16.6 0.0 27 87321 0 0 0 18.604167
cuerna.drop(columns=["To","To_avg"])
Ws Wd P Ig Ib Id
tiempo
2012-01-01 00:00:00 0.0 26 87415 0 0 0
2012-01-01 01:00:00 0.0 26 87602 0 0 0
2012-01-01 02:00:00 0.0 30 87788 0 0 0
2012-01-01 03:00:00 0.0 30 87554 0 0 0
2012-01-01 04:00:00 0.0 27 87321 0 0 0
2012-01-01 05:00:00 0.0 26 87087 0 0 0
2012-01-01 06:00:00 0.0 27 87096 0 0 0
2012-01-01 07:00:00 0.0 34 87140 20 151 11
2012-01-01 08:00:00 0.0 61 87185 164 522 37
2012-01-01 09:00:00 0.0 95 87229 369 812 58
2012-01-01 10:00:00 1.0 108 87229 568 931 68
2012-01-01 11:00:00 2.1 160 87229 717 981 75
2012-01-01 12:00:00 1.8 135 87273 800 999 79
2012-01-01 13:00:00 1.5 160 87316 810 998 80
2012-01-01 14:00:00 1.3 164 87302 747 977 79
2012-01-01 15:00:00 1.2 176 87287 617 932 74
2012-01-01 16:00:00 1.0 140 87273 433 846 65
2012-01-01 17:00:00 0.0 198 87185 219 650 46
2012-01-01 18:00:00 0.0 221 87104 0 0 0
2012-01-01 19:00:00 0.0 269 87101 0 0 0
2012-01-01 20:00:00 0.0 50 87115 0 0 0
2012-01-01 21:00:00 0.2 85 87080 0 0 0
2012-01-01 22:00:00 0.5 89 87089 0 0 0
2012-01-01 23:00:00 0.8 93 87143 0 0 0
cuerna
To Ws Wd P Ig Ib Id To_avg
tiempo
2012-01-01 00:00:00 19.3 0.0 26 87415 0 0 0 18.604167
2012-01-01 01:00:00 18.6 0.0 26 87602 0 0 0 18.604167
2012-01-01 02:00:00 17.9 0.0 30 87788 0 0 0 18.604167
2012-01-01 03:00:00 17.3 0.0 30 87554 0 0 0 18.604167
2012-01-01 04:00:00 16.6 0.0 27 87321 0 0 0 18.604167
2012-01-01 05:00:00 15.9 0.0 26 87087 0 0 0 18.604167
2012-01-01 06:00:00 17.0 0.0 27 87096 0 0 0 18.604167
2012-01-01 07:00:00 18.0 0.0 34 87140 20 151 11 18.604167
2012-01-01 08:00:00 19.0 0.0 61 87185 164 522 37 18.604167
2012-01-01 09:00:00 20.0 0.0 95 87229 369 812 58 18.604167
2012-01-01 10:00:00 20.0 1.0 108 87229 568 931 68 18.604167
2012-01-01 11:00:00 20.0 2.1 160 87229 717 981 75 18.604167
2012-01-01 12:00:00 21.0 1.8 135 87273 800 999 79 18.604167
2012-01-01 13:00:00 22.0 1.5 160 87316 810 998 80 18.604167
2012-01-01 14:00:00 21.7 1.3 164 87302 747 977 79 18.604167
2012-01-01 15:00:00 21.3 1.2 176 87287 617 932 74 18.604167
2012-01-01 16:00:00 21.0 1.0 140 87273 433 846 65 18.604167
2012-01-01 17:00:00 19.0 0.0 198 87185 219 650 46 18.604167
2012-01-01 18:00:00 17.1 0.0 221 87104 0 0 0 18.604167
2012-01-01 19:00:00 17.0 0.0 269 87101 0 0 0 18.604167
2012-01-01 20:00:00 17.3 0.0 50 87115 0 0 0 18.604167
2012-01-01 21:00:00 17.0 0.2 85 87080 0 0 0 18.604167
2012-01-01 22:00:00 16.6 0.5 89 87089 0 0 0 18.604167
2012-01-01 23:00:00 15.9 0.8 93 87143 0 0 0 18.604167
cuerna.drop(columns=["To","To_avg"],inplace=True)
cuerna
Ws Wd P Ig Ib Id
tiempo
2012-01-01 00:00:00 0.0 26 87415 0 0 0
2012-01-01 01:00:00 0.0 26 87602 0 0 0
2012-01-01 02:00:00 0.0 30 87788 0 0 0
2012-01-01 03:00:00 0.0 30 87554 0 0 0
2012-01-01 04:00:00 0.0 27 87321 0 0 0
2012-01-01 05:00:00 0.0 26 87087 0 0 0
2012-01-01 06:00:00 0.0 27 87096 0 0 0
2012-01-01 07:00:00 0.0 34 87140 20 151 11
2012-01-01 08:00:00 0.0 61 87185 164 522 37
2012-01-01 09:00:00 0.0 95 87229 369 812 58
2012-01-01 10:00:00 1.0 108 87229 568 931 68
2012-01-01 11:00:00 2.1 160 87229 717 981 75
2012-01-01 12:00:00 1.8 135 87273 800 999 79
2012-01-01 13:00:00 1.5 160 87316 810 998 80
2012-01-01 14:00:00 1.3 164 87302 747 977 79
2012-01-01 15:00:00 1.2 176 87287 617 932 74
2012-01-01 16:00:00 1.0 140 87273 433 846 65
2012-01-01 17:00:00 0.0 198 87185 219 650 46
2012-01-01 18:00:00 0.0 221 87104 0 0 0
2012-01-01 19:00:00 0.0 269 87101 0 0 0
2012-01-01 20:00:00 0.0 50 87115 0 0 0
2012-01-01 21:00:00 0.2 85 87080 0 0 0
2012-01-01 22:00:00 0.5 89 87089 0 0 0
2012-01-01 23:00:00 0.8 93 87143 0 0 0