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
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="...")
Se tienen básicamente los siguientes tres sitios:
Abajo se presentan
#df_sit["CUERPO DE AGUA"].str.contains("METZTITLAN")
df_Metztitlan = df_sit[df_sit["CUERPO DE AGUA"].str.contains("METZTITLAN", na=False)]
df_Metztitlan
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)]
#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")
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())
print("Para el sitio TLACOTEPEC tenemos las " +str(len(vartm10[0]))+ " siguientes variables:")
vartm10[0]
#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)
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]]
tlacotepec_csv_2018.to_csv('data/tlacotepec_2018_mim.csv',index=False)
tlacotepec_csv_2019.to_csv('data/tlacotepec_2019_mim.csv',index=False)
!tail -1 data/tlacotepec_2019_mim.csv >> data/tlacotepec_2018_mim.csv
tlacotepec = pd.read_csv("data/tlacotepec_2018_mim.csv", na_values=None)
tlacotepec.fillna(0)
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
tlacoltepec = normalize(tlacotepec)
tlacotepec.to_csv('data/tlacotepec_mim.csv',index=False)
print("Para el sitio LAGUNA DE METZTITLAN 2 tenemos las " +str(len(vartm10[1]))+ " siguientes variables:")
vartm10[1]
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)
metztitlan_2_csv_2018 = df_mim_metztitlan_2_2018.transpose()
metztitlan_2_csv_2019 = df_mim_metztitlan_2_2019.transpose()
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)
!tail -1 data/metztitlan_2_2019_mim.csv >> data/metztitlan_2_2018_mim.csv
metztitlan_2 = pd.read_csv("data/metztitlan_2_2018_mim.csv", na_values=None)
metztitlan_2.fillna(0)
metztitlan_2.fillna(0)
metztitlan_2 = normalize(metztitlan_2)
metztitlan_2.to_csv('data/metztitlan_2_mim.csv',index=False)
print("Para el sitio LAGUNA DE METZTITLAN 1 tenemos las " +str(len(vartm10[2]))+ " siguientes variables:")
vartm10[2]
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)
metztitlan_1_csv_2018 = df_mim_metztitlan_1_2018.transpose()
metztitlan_1_csv_2019 = df_mim_metztitlan_1_2019.transpose()
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)
!tail -1 data/metztitlan_1_2019_mim.csv >> data/metztitlan_1_2018_mim.csv
metztitlan_1 = pd.read_csv("data/metztitlan_1_2018_mim.csv", na_values=None)
metztitlan_1.fillna(0)
metztitlan_1 = normalize(metztitlan_1)
metztitlan_1.to_csv('data/metztitlan_1_mim.csv',index=False)
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
print("La intersección de variables de los tres sitios es:")
common_ele(vartm10[0], vartm10[1], vartm10[2])
# Variables con por lo menos 10 datos
#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")
#df_eti.loc[df_eti['NOMBRE DEL PARÁMETRO'].isin(vartm10)]
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})