Series de tiempo del cuerpo de agua: Río Metztitlán

  • Dra. Melanie Kolb
  • M. en F. C. Gustavo Magallanes-Guijón
  • Dr. Oliver López-Corona
In [1]:
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import sys, os
from matplotlib.pylab import rcParams
%matplotlib inline
#from matplotlib import pyplot as plt
#import seaborn as sns
In [2]:
df_res_2018 = pd.read_excel('data/ResultadosCalidadDeAgua2012-2018.xlsx',
                    sheet_name='Resultados-calidad de agua 2012',na_values="...")
df_eti = pd.read_excel('data/ResultadosCalidadDeAgua2012-2018.xlsx',
                    sheet_name='Etiquetas',na_values="...")
df_sit = pd.read_excel('data/ResultadosCalidadDeAgua2012-2018.xlsx',
                    sheet_name='Sitios',na_values="...")
df_res_2019 = pd.read_excel('data/Resultados de Calidad del Agua 2019.xlsx',
                    sheet_name='Resultados 2019',na_values="...")

Sitios que corresponden al mismo cuerpo de agua: Río Metztitlán

Se tienen básicamente los siguientes tres sitios:

  1. TLACOTEPEC
  2. LAGUNA DE METZTITLAN 1
  3. LAGUNA DE METZTITLAN 2

Abajo se presentan

In [3]:
#df_sit["CUERPO DE AGUA"].str.contains("METZTITLAN")
df_Metztitlan = df_sit[df_sit["CUERPO DE AGUA"].str.contains("METZTITLAN", na=False)]
df_Metztitlan
Out[3]:
CLAVE SITIO NOMBRE DEL SITIO CUENCA CLAVE ACUÍFERO ACUÍFERO ORGANISMO CUENCA DIRECCIÓN LOCAL ESTADO MUNICIPIO CUERPO DE AGUA TIPO DE CUERPO DE AGUA SUBTIPO CUERPO AGUA LATITUD LONGITUD
1451 DLHID1469 TLACOTEPEC RÍO METZTITLÁN 2 NaN NaN GOLFO NORTE HIDALGO HIDALGO METZTITLÁN RIO METZTITLAN LÓTICO RÍO 20.650806 -98.82925
1490 DLHID1508 LAGUNA DE METZTITLAN 2 RÍO METZTITLÁN 2 NaN NaN GOLFO NORTE HIDALGO HIDALGO METZTITLÁN RIO METZTITLAN LÉNTICO (HUMEDAL) LAGO 20.687570 -98.87022
1491 DLHID1509 LAGUNA DE METZTITLAN 1 RÍO METZTITLÁN 2 NaN NaN GOLFO NORTE HIDALGO HIDALGO METZTITLÁN RIO METZTITLAN LÉNTICO (HUMEDAL) LAGO 20.681760 -98.86408

Tenemos 22 variables relevantes según el documento 08_06_20_Base de datos CONAGUA.docx (página 12)

Las variables son:

In [4]:
cols = ['SAAM','OD_mg/L','COLI_TOT','pH_CAMPO','TEMP_AGUA','NI_TOT','E_COLI','HG_TOT','PB_TOT',
        'CD_TOT','CR_TOT','AS_TOT','TURBIEDAD','SST','COLOR_VER','DUR_TOT','N_TOT','COLI_FEC',
        'PO4_TOT','N_NH3','N_NO2','N_NO3']
df_eti.loc[df_eti['CLAVE PARÁMETRO'].isin(cols)]
Out[4]:
CLAVE PARÁMETRO NOMBRE DEL PARÁMETRO UNIDAD MEDIDA
5 AS_TOT Arsénico Total mg/L
15 CD_TOT Cadmio Total mg/L
27 COLI_FEC Coliformes Fecales NMP/100 mL
28 COLI_TOT Coliformes Totales NMP/100 mL
29 COLOR_VER Color Verdadero U Pt/Co
36 CR_TOT Cromo Total mg/L
44 DUR_TOT Dureza Total mg CaCO3/L
45 E_COLI Escherichia coli NMP/100 mL
54 HG_TOT Mercurio Total mg/L
62 N_NH3 Nitrógeno Amoniacal mg/L
63 N_NO2 Nitrógeno de Nitritos mg/L
64 N_NO3 Nitrógeno de Nitratos mg/L
66 N_TOT Nitrógeno Total (Cálculo) mg/L
69 NI_TOT Níquel Total mg/L
76 OD_mg/L Oxígeno Disuelto mg/L
83 PB_TOT Plomo Total mg/L
85 pH_CAMPO Potencial de Hidrógeno UpH
89 PO4_TOT Fosfatos Totales (a partir de P total) mg/L
95 SAAM Sustancias Activas al Azul de Metileno mg/L
104 SST Sólidos Suspendidos Totales mg/L
105 TEMP_AGUA Temperatura agua °C
139 TURBIEDAD Turbiedad UNT
In [5]:
#print("tenemos "+str(df_eti.loc[df_eti['CLAVE PARÁMETRO'].isin(cols)].shape[0])+" variables relevantes según el documento 08_06_20_Base de datos CONAGUA.docx página 12")

De las variables relevantes calculamos aquellas que por lo menos tengan 10 datos

In [6]:
vartm10 = {}
df_nom_par_2018 = {}
df_nom_par_2019 = {}
for i in range (0,3):#index of sitios
    df_Metztitlan = df_sit[df_sit["CUERPO DE AGUA"].str.contains("METZTITLAN", na=False)]
    nombre_sitio = df_Metztitlan["NOMBRE DEL SITIO"].array[i]
    index_namecols = df_Metztitlan.iloc[:,:]
    for j in range(len(cols)):#index of cols variable
        #for j in range(5,6):
            df_rows = df_eti[df_eti['CLAVE PARÁMETRO'] == cols[j]]
            titulo = df_rows['NOMBRE DEL PARÁMETRO']
            titulo = df_rows.iloc[0,1]        

            df_res_2018[cols[j]] = pd.to_numeric(df_res_2018[cols[j]], downcast="float",errors='coerce')
            df_res_2019[cols[j]] = pd.to_numeric(df_res_2019[cols[j]], downcast="float",errors='coerce')

            df_cuerpo_de_agua = df_sit[df_sit["CUERPO DE AGUA"].str.contains("METZTITLAN", na=False)]        

            key_array_df = df_cuerpo_de_agua["CLAVE SITIO"].array[i]

            #Data 2012-2018
            serie_2018 = df_res_2018[df_res_2018["CLAVE SITIO"].str.contains(key_array_df, na=False)]
            serie_2018[cols[j]].replace('\< | \>', '')
            serie_2018[cols[j]].dropna()                

            #Data 2019
            serie_2019 = df_res_2019[df_res_2019["CLAVE SITIO"].str.contains(key_array_df, na=False)]
            serie_2019[cols[j]].replace('\< | \>', '')
            serie_2019[cols[j]].dropna()

            if ((serie_2018[cols[j]].dropna().shape[0]+serie_2019[cols[j]].dropna().shape[0])>=10):
                vartm10.setdefault(i, []).append(titulo)                
                df_nom_par_2018.setdefault(i, []).append(serie_2018[cols[j]].dropna())
                df_nom_par_2019.setdefault(i, []).append(serie_2019[cols[j]].dropna())
In [ ]:
 

TLACOTEPEC

In [7]:
print("Para el sitio TLACOTEPEC tenemos las " +str(len(vartm10[0]))+ " siguientes variables:")
Para el sitio TLACOTEPEC tenemos las 19 siguientes variables:
In [8]:
vartm10[0]
Out[8]:
['Sustancias Activas al Azul de Metileno',
 'Oxígeno Disuelto',
 'Coliformes Totales',
 'Potencial de Hidrógeno',
 'Temperatura agua',
 'Níquel Total',
 'Escherichia coli',
 'Mercurio Total',
 'Cromo Total',
 'Arsénico Total',
 'Turbiedad',
 'Sólidos Suspendidos Totales',
 'Color Verdadero',
 'Dureza Total',
 'Nitrógeno Total (Cálculo)',
 'Coliformes Fecales',
 'Nitrógeno Amoniacal',
 'Nitrógeno de Nitritos',
 'Nitrógeno de Nitratos']
In [9]:
#for first site
df_mim_tlacotepec_2018 = pd.DataFrame.from_dict(df_nom_par_2018[0], orient='columns', dtype=None)
df_mim_tlacotepec_2019 = pd.DataFrame.from_dict(df_nom_par_2019[0], orient='columns', dtype=None)
In [10]:
tlacotepec_csv_2018 = df_mim_tlacotepec_2018.transpose()
tlacotepec_csv_2019 = df_mim_tlacotepec_2019.transpose()
#tlacotepec_csv.columns
#tlacotepec_csv[tlacotepec_csv.columns[0]]
In [11]:
tlacotepec_csv_2018.to_csv('data/tlacotepec_2018_mim.csv',index=False)
tlacotepec_csv_2019.to_csv('data/tlacotepec_2019_mim.csv',index=False)
In [12]:
!tail -1 data/tlacotepec_2019_mim.csv >> data/tlacotepec_2018_mim.csv
In [13]:
tlacotepec = pd.read_csv("data/tlacotepec_2018_mim.csv", na_values=None)
In [14]:
tlacotepec.fillna(0)
Out[14]:
SAAM OD_mg/L COLI_TOT pH_CAMPO TEMP_AGUA NI_TOT E_COLI HG_TOT CR_TOT AS_TOT TURBIEDAD SST COLOR_VER DUR_TOT N_TOT COLI_FEC N_NH3 N_NO2 N_NO3
0 0.000 6.9633 10462.0 7.85 20.3333 0.00000 301.0 0.000000 0.00000 0.0132 6.9 5.5000 12.5 242.3640 0.726800 301.0 0.164600 0.017900 0.433200
1 0.000 7.1200 6131.0 8.04 20.5000 0.00000 473.0 0.000600 0.00000 0.0000 3.5 5.7692 15.0 235.5240 0.663700 1236.0 0.248600 0.020300 0.354500
2 0.000 8.1200 3448.0 8.04 19.5000 0.00000 30.0 0.000100 0.00000 0.0394 5.5 0.0000 10.0 320.8248 0.831200 400.0 0.512600 0.034600 0.131700
3 0.000 5.0000 5794.0 8.02 25.3000 0.00770 201.0 0.000100 0.00660 0.0000 4.5 31.5000 20.0 180.3060 0.862100 2481.0 0.129000 0.032000 0.634200
4 0.000 11.2200 7270.0 8.29 24.5000 0.00000 20.0 0.000100 0.00000 0.0194 4.0 7.3300 15.0 297.4220 0.744500 120.0 0.070200 0.024300 0.150300
5 0.000 7.4200 0.0 7.99 20.2000 0.00880 12997.0 0.001800 0.01120 0.0000 112.5 460.0000 312.5 175.8290 2.016900 0.0 0.084400 0.037300 0.708500
6 0.882 7.6300 0.0 7.94 18.1000 0.00000 9804.0 0.000000 0.00000 0.0000 39.0 67.5000 40.0 163.9560 1.616000 19863.0 0.008000 0.037000 0.881000
7 0.063 11.2000 0.0 8.20 21.2000 0.00000 24196.0 0.000180 0.00000 0.0181 2.0 9.3000 7.5 324.9000 0.699000 24196.0 0.279000 0.016000 0.118000
8 0.028 10.0000 2613.0 8.00 23.5000 0.00000 171.0 0.001320 0.00000 0.0192 2.8 9.8000 10.0 198.0000 0.521000 437.0 0.098000 0.004000 0.080000
9 0.011 8.0000 0.0 8.20 26.0000 0.00000 1039.0 0.000440 0.00000 0.0289 6.5 12.7000 10.0 243.6000 0.800000 24196.0 0.111000 0.005000 0.188000
10 0.000 4.5000 19863.0 7.80 24.0000 0.00000 489.0 0.000310 0.00000 0.0163 2.5 23.1000 7.5 236.5000 0.913000 3448.0 0.242000 0.029000 0.383000
11 0.030 5.7000 17329.0 8.00 23.8000 0.00330 1723.0 0.000140 0.00440 0.0000 92.5 98.0000 75.0 164.0000 1.943000 5794.0 0.097000 0.039000 1.256000
12 0.051 6.5000 0.0 8.30 23.1000 0.00000 4611.0 0.000310 0.00000 0.0000 36.0 64.0000 40.0 128.3000 1.258000 12033.0 0.178000 0.030000 0.758000
13 0.019 6.0400 3654.0 8.30 23.0000 0.00820 459.0 0.001485 0.00460 0.0000 10.6 31.0000 13.0 175.5700 0.950613 1576.0 0.208313 0.041200 0.701100
14 0.017 6.5700 2909.0 8.10 25.3000 0.00000 20.0 0.000101 0.00000 0.0000 8.2 15.3800 8.0 232.1800 1.139561 880.0 0.319010 0.023611 0.070415
15 0.000 6.4200 2613.0 7.80 25.8000 0.00000 10.0 0.000096 0.00490 0.0139 5.1 15.0000 10.0 244.1900 0.618837 1246.0 0.097999 0.002875 0.037583
16 0.000 5.4000 19863.0 8.10 25.9000 0.00760 496.0 0.000000 0.01440 0.0000 52.0 44.0000 75.0 163.9700 1.042271 5475.0 0.139792 0.037480 0.588304
17 0.022 6.8600 0.0 7.70 22.1000 0.01970 5475.0 0.000230 0.03470 0.0000 90.0 183.3300 100.0 154.7100 1.853759 9208.0 0.096771 0.030934 1.166088
18 0.127 6.1900 0.0 8.10 22.9000 0.00000 6488.0 0.000267 0.01260 0.0000 48.0 103.6400 50.0 149.7600 1.983690 15531.0 0.158423 0.027965 1.408629
19 0.024 14.8400 1014.0 8.40 22.3000 0.00000 31.0 0.000102 0.00580 0.0197 7.3 9.0000 10.0 276.5800 0.922659 309.0 0.032482 0.016863 0.049949
20 0.031 4.2400 12033.0 7.90 25.3000 0.00000 187.0 0.000000 0.00000 0.0000 21.0 20.0000 18.0 208.6400 1.301812 3873.0 0.422454 0.058535 0.426900
21 0.063 6.9400 12033.0 8.30 26.5000 0.00000 41.0 0.000075 0.00000 0.0000 5.4 9.5000 15.0 280.2400 0.180522 3609.0 0.165468 0.001835 0.013219
22 0.026 6.5500 0.0 8.10 23.3000 0.07140 36540.0 0.002547 0.10050 0.0000 0.0 0.0000 325.0 225.2900 0.000000 104620.0 0.205571 0.020928 0.817734
23 0.063 5.2100 7701.0 7.90 23.6000 0.00000 52.0 0.000101 0.00000 0.0000 16.0 18.0000 13.0 197.4100 1.368339 2224.0 0.112780 0.045480 0.824911
24 0.000 7.5400 0.0 7.60 21.6000 0.00000 11199.0 0.000135 0.00000 0.0000 18.0 23.0000 30.0 130.3700 0.959882 17329.0 0.060794 0.015819 0.487273
25 0.068 7.5300 2359.0 7.90 19.9000 0.00000 0.0 0.000000 0.00000 0.0294 5.7 10.0000 18.0 282.9100 0.950412 905.0 0.318180 0.025330 0.300980
26 0.010 7.6200 0.0 7.70 30.1000 0.00000 20.0 0.000068 0.00000 0.0472 7.0 18.0000 25.0 325.7100 0.753732 3076.0 0.134560 0.002950 0.024020
27 0.015 6.3200 0.0 8.20 25.7000 0.00000 15531.0 0.000178 0.00000 0.0533 5.5 10.0000 25.0 326.9800 0.815892 0.0 0.212530 0.008660 0.055980
28 0.058 6.5900 155310.0 8.20 23.2000 0.01177 11300.0 0.000256 0.01405 0.0000 150.0 198.0000 150.0 132.4700 4.525243 27550.0 0.931213 0.188686 1.251739
29 0.057 6.6200 0.0 7.90 25.9000 0.00000 4884.0 0.000368 0.00340 0.0000 34.0 70.0000 50.0 175.7500 2.152425 19863.0 0.151516 0.055305 0.946546
30 0.023 7.3500 155310.0 8.00 21.7000 0.00690 21420.0 0.000745 0.00990 0.0000 90.0 155.0000 100.0 122.9400 1.782493 27550.0 0.373770 0.017500 0.713810
31 0.110 7.6900 1036.0 8.10 20.7000 0.00000 74.0 0.000000 0.00000 0.0135 4.1 0.0000 10.0 220.6550 0.863120 538.0 0.151770 0.026406 0.487336
32 0.010 4.5000 0.0 8.20 21.6000 0.00000 0.0 0.000036 0.00670 0.0165 2.3 0.0000 25.0 253.6040 1.554220 0.0 0.194069 0.037418 0.827015
33 0.029 4.6000 24196.0 8.20 25.8000 0.00000 96.0 0.000000 0.00000 0.0435 5.9 0.0000 13.0 283.2720 0.722890 1408.0 0.040874 0.004143 0.008323
34 0.048 4.3600 0.0 8.30 27.3000 0.00000 10.0 0.000000 0.00000 0.0485 7.3 16.0000 30.0 319.7600 0.890980 4611.0 0.000000 0.002905 0.032173
35 0.120 7.0800 19863.0 8.00 22.0000 0.00000 2382.0 0.000089 0.00320 0.0000 20.0 44.0000 30.0 125.8790 1.439380 2755.0 0.161588 0.036460 0.975699
36 0.054 7.5400 1956.0 8.00 18.6000 0.00470 41.0 0.000000 0.00340 0.0208 4.8 0.0000 8.0 231.8830 0.934260 605.0 0.121305 0.021230 0.415529
37 0.053 8.9800 14136.0 8.50 23.5000 0.00000 20.0 0.000000 0.00000 0.0335 9.5 24.0000 13.0 294.3140 0.930861 420.0 0.026774 0.002813 0.008934

Función para normalizar

In [15]:
def normalize(df):
       result = df.copy()
       for feature_name in df.columns:
           max_value = df[feature_name].max()
           min_value = df[feature_name].min()
           result[feature_name] = (df[feature_name] - min_value) / (max_value - min_value)
       return result
In [16]:
tlacoltepec = normalize(tlacotepec)
tlacotepec.to_csv('data/tlacotepec_mim.csv',index=False)

LAGUNA DE METZTITLAN 2

In [17]:
print("Para el sitio LAGUNA DE METZTITLAN 2 tenemos las " +str(len(vartm10[1]))+ " siguientes variables:")
Para el sitio LAGUNA DE METZTITLAN 2 tenemos las 10 siguientes variables:
In [18]:
vartm10[1]
Out[18]:
['Mercurio Total',
 'Turbiedad',
 'Sólidos Suspendidos Totales',
 'Color Verdadero',
 'Dureza Total',
 'Nitrógeno Total (Cálculo)',
 'Coliformes Fecales',
 'Nitrógeno Amoniacal',
 'Nitrógeno de Nitritos',
 'Nitrógeno de Nitratos']
In [19]:
df_mim_metztitlan_2_2018 = pd.DataFrame.from_dict(df_nom_par_2018[1], orient='columns', dtype=None)
df_mim_metztitlan_2_2019 = pd.DataFrame.from_dict(df_nom_par_2019[1], orient='columns', dtype=None)
In [20]:
metztitlan_2_csv_2018 = df_mim_metztitlan_2_2018.transpose()
metztitlan_2_csv_2019 = df_mim_metztitlan_2_2019.transpose()
In [21]:
metztitlan_2_csv_2018.to_csv('data/metztitlan_2_2018_mim.csv',index=False)
metztitlan_2_csv_2019.to_csv('data/metztitlan_2_2019_mim.csv',index=False)
In [22]:
!tail -1 data/metztitlan_2_2019_mim.csv >> data/metztitlan_2_2018_mim.csv
In [23]:
metztitlan_2 = pd.read_csv("data/metztitlan_2_2018_mim.csv", na_values=None)
In [24]:
metztitlan_2.fillna(0)
Out[24]:
HG_TOT TURBIEDAD SST COLOR_VER DUR_TOT N_TOT COLI_FEC N_NH3 N_NO2 N_NO3
0 0.000000 37.0 36.00 187.5 170.0800 0.953400 0.0 0.028200 0.004000 0.515500
1 0.000400 51.0 80.00 37.5 247.1072 0.841600 663.0 0.072200 0.003000 0.054300
2 0.000600 54.0 74.00 50.0 168.6610 1.194600 262.0 0.063400 0.020100 0.053000
3 0.000310 38.0 50.00 15.0 222.3000 0.697000 1236.0 0.218000 0.002000 0.107000
4 0.000110 85.0 50.00 75.0 146.0000 1.158000 282.0 0.156000 0.017000 0.445000
5 0.000148 25.0 42.00 30.0 193.8000 0.755858 98.0 0.055934 0.002798 0.096172
6 0.000096 30.0 54.00 30.0 165.0200 0.753085 301.0 0.036198 0.007603 0.104798
7 0.000206 35.0 64.00 30.0 200.2100 0.975848 98.0 0.290231 0.002440 0.042899
8 0.000104 30.0 30.00 40.0 134.3200 1.275159 568.0 0.041521 0.002132 0.163656
9 0.000853 31.0 0.00 50.0 220.5000 1.297000 135.0 0.110372 0.003491 0.180371
10 0.000065 24.0 34.00 18.0 222.7200 0.853729 605.0 0.080838 0.023360 0.198454
11 0.000156 60.0 62.86 70.0 202.4200 1.162524 189.0 0.064808 0.002286 0.026042
12 0.000076 33.0 39.00 40.0 164.7700 1.204825 160.0 0.081437 0.008458 0.331278
13 0.000000 18.0 27.74 30.0 194.7400 0.627657 20.0 0.026275 0.025164 0.071418
In [25]:
metztitlan_2.fillna(0)
metztitlan_2 = normalize(metztitlan_2)
metztitlan_2.to_csv('data/metztitlan_2_mim.csv',index=False)

LAGUNA DE METZTITLAN 1

In [26]:
print("Para el sitio LAGUNA DE METZTITLAN 1 tenemos las " +str(len(vartm10[2]))+ " siguientes variables:")
Para el sitio LAGUNA DE METZTITLAN 1 tenemos las 11 siguientes variables:
In [27]:
vartm10[2]
Out[27]:
['Escherichia coli',
 'Mercurio Total',
 'Turbiedad',
 'Sólidos Suspendidos Totales',
 'Color Verdadero',
 'Dureza Total',
 'Nitrógeno Total (Cálculo)',
 'Coliformes Fecales',
 'Nitrógeno Amoniacal',
 'Nitrógeno de Nitritos',
 'Nitrógeno de Nitratos']
In [28]:
df_mim_metztitlan_1_2018 = pd.DataFrame.from_dict(df_nom_par_2018[2], orient='columns', dtype=None)
df_mim_metztitlan_1_2019 = pd.DataFrame.from_dict(df_nom_par_2019[2], orient='columns', dtype=None)
In [29]:
metztitlan_1_csv_2018 = df_mim_metztitlan_1_2018.transpose()
metztitlan_1_csv_2019 = df_mim_metztitlan_1_2019.transpose()
In [30]:
metztitlan_1_csv_2018.to_csv('data/metztitlan_1_2018_mim.csv',index=False)
metztitlan_1_csv_2019.to_csv('data/metztitlan_1_2019_mim.csv',index=False)
In [31]:
!tail -1 data/metztitlan_1_2019_mim.csv >> data/metztitlan_1_2018_mim.csv
In [32]:
metztitlan_1 = pd.read_csv("data/metztitlan_1_2018_mim.csv", na_values=None)
In [33]:
metztitlan_1.fillna(0)
metztitlan_1 = normalize(metztitlan_1)
metztitlan_1.to_csv('data/metztitlan_1_mim.csv',index=False)

Intersección de las variables (de por lo menos 10 puntos de) los tres sitios

In [34]:
def common_ele(my_A, my_B, my_C):
   my_s1 = set(my_A)
   my_s2 = set(my_B)
   my_s3 = set(my_C)
   my_set1 = my_s1.intersection(my_s2)
   output_set = my_set1.intersection(my_s3)
   return output_set
In [35]:
print("La intersección de variables de los tres sitios es:")
La intersección de variables de los tres sitios es:
In [36]:
common_ele(vartm10[0], vartm10[1], vartm10[2])
Out[36]:
{'Coliformes Fecales',
 'Color Verdadero',
 'Dureza Total',
 'Mercurio Total',
 'Nitrógeno Amoniacal',
 'Nitrógeno Total (Cálculo)',
 'Nitrógeno de Nitratos',
 'Nitrógeno de Nitritos',
 'Sólidos Suspendidos Totales',
 'Turbiedad'}
In [37]:
# Variables con por lo menos 10 datos
In [38]:
#print("tenemos "+str(df_eti.loc[df_eti['NOMBRE DEL PARÁMETRO'].isin(vartm10)].shape[0])+" variables relevantes que tienen más de 10 datos")
In [39]:
#df_eti.loc[df_eti['NOMBRE DEL PARÁMETRO'].isin(vartm10)]

Gráficas de las variables de por lo menos 10 puntos

In [40]:
for i in range (0,3):#index of sitios
    df_Metztitlan = df_sit[df_sit["CUERPO DE AGUA"].str.contains("METZTITLAN", na=False)]
    nombre_sitio = df_Metztitlan["NOMBRE DEL SITIO"].array[i]
    index_namecols = df_Metztitlan.iloc[:,:]
    subtitulo = index_namecols.columns[1]+': '+nombre_sitio
    subtitulo_2 = index_namecols.columns[2]+': '+index_namecols.iloc[0+i,2]
    subtitulo_5 = index_namecols.columns[5]+': '+index_namecols.iloc[0+i,5]
    subtitulo_6 = index_namecols.columns[6]+': '+index_namecols.iloc[0+i,6]
    subtitulo_7 = index_namecols.columns[7]+': '+index_namecols.iloc[0+i,7]
    subtitulo_8 = index_namecols.columns[8]+': '+index_namecols.iloc[0+i,8]
    subtitulo_9 = index_namecols.columns[9]+': '+index_namecols.iloc[0+i,9]
    subtitulo_10 = index_namecols.columns[10]+': '+index_namecols.iloc[0+i,10]
    subtitulo_11 = index_namecols.columns[11]+': '+index_namecols.iloc[0+i,11]
    
    
    for j in range(len(cols)):#index of cols variable
    #for j in range(5,6):
        df_rows = df_eti[df_eti['CLAVE PARÁMETRO'] == cols[j]]
        titulo = df_rows['NOMBRE DEL PARÁMETRO']
        titulo = df_rows.iloc[0,1]
        
        
        df_res_2018[cols[j]] = pd.to_numeric(df_res_2018[cols[j]], downcast="float",errors='coerce')
        df_res_2019[cols[j]] = pd.to_numeric(df_res_2019[cols[j]], downcast="float",errors='coerce')
        df_cuerpo_de_agua = df_sit[df_sit["CUERPO DE AGUA"].str.contains("METZTITLAN", na=False)]        

        key_array_df = df_cuerpo_de_agua["CLAVE SITIO"].array[i]
        
        #Data 2012-2018
        serie_2018 = df_res_2018[df_res_2018["CLAVE SITIO"].str.contains(key_array_df, na=False)]
        serie_2018[cols[j]].replace('\< | \>', '')
        serie_2018[cols[j]].dropna()                
        
        #Data 2019
        serie_2019 = df_res_2019[df_res_2019["CLAVE SITIO"].str.contains(key_array_df, na=False)]
        serie_2019[cols[j]].replace('\< | \>', '')
        serie_2019[cols[j]].dropna()
        
        if ((serie_2018[cols[j]].dropna().shape[0]+serie_2019[cols[j]].dropna().shape[0])>=10):        
            
            rcParams['figure.figsize'] = 18, 8
            
            plt.figure()
            plt.title(titulo, fontsize=24)
            plt.suptitle(subtitulo, fontsize=24)
            
            plt.figtext(-0.2, 0.9, subtitulo_2, ha="left", fontsize=16)
            plt.figtext(-0.2, 0.8, subtitulo_5, ha="left", fontsize=16)
            plt.figtext(-0.2, 0.7, subtitulo_6, ha="left", fontsize=16)
            plt.figtext(-0.2, 0.6, subtitulo_7, ha="left", fontsize=16)
            plt.figtext(-0.2, 0.5, subtitulo_8, ha="left", fontsize=16)
            plt.figtext(-0.2, 0.4, subtitulo_9, ha="left", fontsize=16, bbox={"facecolor":"blue", "alpha":0.5, "pad":5})
            plt.figtext(-0.2, 0.3, subtitulo_10, ha="left", fontsize=16, bbox={"facecolor":"orange", "alpha":0.5, "pad":5})
            plt.figtext(-0.2, 0.2, subtitulo_11, ha="left", fontsize=16, bbox={"facecolor":"green", "alpha":0.5, "pad":5})

            
            plt.plot(serie_2018['FECHA'], serie_2018[cols[j]], '-o')
            plt.plot(serie_2019['FECHA REALIZACIÓN'], serie_2019[cols[j]], '-o')
            #plt.xticks(np.arange(0, serie.shape[0], step=serie.shape[0]/6), fontsize=14) #Numberlines, nnumberlines/6
            plt.yticks(fontsize=14)
            plt.ylabel(df_rows.iloc[0,2], fontsize=14)
            
            plt.grid()
            plt.rcParams.update({'figure.max_open_warning': 0})