# -*- coding: utf-8 -*-
"""Cópia de Untitled16.ipynb

Automatically generated by Colab.

Original file is located at
    https://colab.research.google.com/drive/1nxJrQGdl-ooixXh2rpImTPdN6vljZS5s
"""

import numpy as np
import pandas as pd
import sqlite3
from sklearn.preprocessing import MinMaxScaler, StandardScaler

# 1. Leitura do CSV
df = pd.read_csv('dados_climaticos_sp.csv')

# Verificar valores ausentes antes do tratamento usando os nomes originais (Maiúsculas)
print('Valores ausentes por coluna:')
print(df.isnull().sum())

# Tratamento de nulos com os nomes originais do arquivo
df['Temperatura (°C)'] = df['Temperatura (°C)'].interpolate()
df['Umidade (%)'] = df['Umidade (%)'].fillna(df['Umidade (%)'].mean())
print('\nValores ausentes tratados.')

# Verificar e remover duplicatas
print('Número de registros duplicados:', df.duplicated().sum())
df = df.drop_duplicates().reset_index(drop=True)

# --- CORREÇÃO DO ERRO AQUI ---
# Força explicitamente os nomes exatos das colunas, evitando erros de caracteres especiais
df.columns = ['tempo', 'temperatura_c', 'umidade']

# Garantir formato datetime na coluna 'tempo'
df['tempo'] = pd.to_datetime(df['tempo'], errors='coerce')
print('\nInformações do DataFrame após padronização manual:')
print(df.info())

# Normalização (escala 0–1) - Agora vai encontrar as colunas perfeitamente!
scaler = MinMaxScaler()
df[['temperatura_normalizada', 'umidade_normalizada']] = scaler.fit_transform(
    df[['temperatura_c', 'umidade']]
)

# Padronização (Z-score)
scaler_std = StandardScaler()
df[['temperatura_z', 'umidade_z']] = scaler_std.fit_transform(
    df[['temperatura_c', 'umidade']]
)

# Criar o DataFrame sintético de poluição
dado_pol = {
    'tempo': df['tempo'],
    'pm25': np.random.uniform(10, 40, size=len(df)),
    'co2': np.random.uniform(380, 420, size=len(df)),
}
df_pol = pd.DataFrame(dado_pol)

# Integrar (merge) as duas bases pelo campo tempo
df_final = pd.merge(df, df_pol, on='tempo', how='inner')
print('\nIntegração concluída. Primeiras linhas do DataFrame Final:')
print(df_final.head())

# Salvar no banco de dados SQLite
con = sqlite3.connect('Clima.db')
df_final.to_sql('dados_climaticos', con, if_exists='replace', index=False)

# Consulta SQL ajustada
query = """
SELECT tempo, temperatura_c, umidade, pm25, co2
FROM dados_climaticos
WHERE temperatura_c > 25
ORDER BY tempo ASC
LIMIT 10;
"""

df_sql = pd.read_sql_query(query, con)
print('\nResultado da consulta SQL (Temperatura > 25°C):')
print(df_sql)

# Fechar a conexão
con.close()