14  Valores nulos en datos y DataFrames

Los valores nulos representan un desafío significativo en la gestión de DataFrames y el análisis de datos. En esta sesión, abordaremos su relevancia y las técnicas efectivas para manejarlos, asegurando así la precisión y fiabilidad de nuestros análisis.

El primer paso es la limpieza de datos, un proceso vital que implica la identificación y eliminación de valores nulos, lo que resulta en una mejora sustancial de la calidad de tus conjuntos de datos. Un tratamiento adecuado de los mismos es esencial para garantizar resultados fiables y prevenir errores en tu análisis.

Los valores nulos no siempre deben ser vistos como simples huecos en tus datos; pueden revelar información crucial sobre tu conjunto de datos. Aprender a interpretar y utilizar esta información puede proporcionar una perspectiva más enriquecedora y completa en tu análisis.

# pip install missingno
#pip install missingno --upgrade
import pandas as pd
import missingno as msno
f = "../data/Cuernavaca_1dia_comas_Nans.csv"
cuerna = pd.read_csv(f,index_col=0,parse_dates=True)
cuerna.info()
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 24 entries, 2012-01-01 00:00:00 to 2012-01-01 23:00:00
Data columns (total 8 columns):
 #   Column       Non-Null Count  Dtype  
---  ------       --------------  -----  
 0   To           13 non-null     float64
 1   Ws           24 non-null     float64
 2   Wd           24 non-null     int64  
 3   P            24 non-null     int64  
 4   Ig           24 non-null     int64  
 5   Ib           24 non-null     int64  
 6   Id           24 non-null     int64  
 7   observacion  24 non-null     object 
dtypes: float64(2), int64(5), object(1)
memory usage: 1.7+ KB
f = "../data/Cuernavaca_1dia_comas_NULOS.csv"
cuerna = pd.read_csv(f)
cuerna.To.mean()
TypeError: Could not convert Nulo18.617.9Nulo16.615.917.018.019.020.020.0NuloNulo22.0NuloNuloNuloNuloNulo17.0Nulo17.016.6Nulo to numeric
f = "../data/Cuernavaca_1dia_comas_NULOS.csv"
cuerna = pd.read_csv(f,na_values="Nulo")
cuerna
tiempo To Ws Wd P Ig Ib Id observacion
0 2012-01-01 00:00:00 NaN 0.0 26 87415 0 0 0
1 2012-01-01 01:00:00 18.6 0.0 26 87602 0 0 0 No
2 2012-01-01 02:00:00 17.9 0.0 30 87788 0 0 0 No
3 2012-01-01 03:00:00 NaN 0.0 30 87554 0 0 0 No
4 2012-01-01 04:00:00 16.6 0.0 27 87321 0 0 0 No
5 2012-01-01 05:00:00 15.9 0.0 26 87087 0 0 0
6 2012-01-01 06:00:00 17.0 0.0 27 87096 0 0 0 No
7 2012-01-01 07:00:00 18.0 0.0 34 87140 20 151 11
8 2012-01-01 08:00:00 19.0 0.0 61 87185 164 522 37 No
9 2012-01-01 09:00:00 20.0 0.0 95 87229 369 812 58
10 2012-01-01 10:00:00 20.0 1.0 108 87229 568 931 68 No
11 2012-01-01 11:00:00 NaN 2.1 160 87229 717 981 75 No
12 2012-01-01 12:00:00 NaN 1.8 135 87273 800 999 79
13 2012-01-01 13:00:00 22.0 1.5 160 87316 810 998 80 No
14 2012-01-01 14:00:00 NaN 1.3 164 87302 747 977 79 No
15 2012-01-01 15:00:00 NaN 1.2 176 87287 617 932 74
16 2012-01-01 16:00:00 NaN 1.0 140 87273 433 846 65
17 2012-01-01 17:00:00 NaN 0.0 198 87185 219 650 46 No
18 2012-01-01 18:00:00 NaN 0.0 221 87104 0 0 0
19 2012-01-01 19:00:00 17.0 0.0 269 87101 0 0 0 No
20 2012-01-01 20:00:00 NaN 0.0 50 87115 0 0 0 No
21 2012-01-01 21:00:00 17.0 0.2 85 87080 0 0 0 No
22 2012-01-01 22:00:00 16.6 0.5 89 87089 0 0 0 No
23 2012-01-01 23:00:00 NaN 0.8 93 87143 0 0 0 No
cuerna.To
0      NaN
1     18.6
2     17.9
3      NaN
4     16.6
5     15.9
6     17.0
7     18.0
8     19.0
9     20.0
10    20.0
11     NaN
12     NaN
13    22.0
14     NaN
15     NaN
16     NaN
17     NaN
18     NaN
19    17.0
20     NaN
21    17.0
22    16.6
23     NaN
Name: To, dtype: float64
msno.matrix(cuerna)

msno.bar(cuerna,)