<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 Analise e Tratamento Basico (Triagem) de dados
Analises por Hans. 2015
2012 (10sec)
2013 (10sec)
2014 (10sec ate 1Min seguinte)
2015 (1Min)
Step1:  Em busca dos GAPs
Step2:  Analises Diarias
Step3:  Quais dias o Acumulado de chuva foi superior a 20mm em 2015 ?
Step4:  Quantos dias o Acumulado de chuva foi superior a 20mm em 2015 ?
Step5:  Estatistica geral do DataFrame
<ASSISTANT_TASK:>
Python Code:
import sys
import numpy as np
import pandas as pd
print(sys.version) # Versao do python - Opcional
print(np.__version__) # VErsao do modulo numpy - Opcional
import matplotlib
import matplotlib.pyplot as plt
%matplotlib inline
import datetime
import time
#?pd.date_range
#rng = pd.date_range('1/1/2011', periods=90, freq='10mS')
#rng
# Carregando dados no dataframe df_dados a partir do arquivo .csv em servidor remoto.
#df_dados = pd.read_csv('http://fortran-zrhans.c9.io/csdapy/sr311-2014.csv', index_col=None)
#Dados local
df_dados = pd.read_csv('../dados/sr311-2015.csv', index_col=None,parse_dates=['Timestamp'])
print("Dados Importados OK")
df_dados.columns.tolist()
df_dados.head()
#removendo a primeira coluna, e ajustando a coluna Timestamp para ser o indice
del(df_dados['Unnamed: 0'])
df_dados.set_index('Timestamp', inplace=True)
# Selecionando apenas algumas colunas de interesse
df_dados = df_dados[['AirTC', 'RH', 'Rain_mm']]
#df_dados = df_dados.dropna()
df_dados.head()
#s_chuva = df_dados.Rain_mm
#s_chuva.cumsum()
plt.figure(figsize=(16,8))
plt.subplot(2, 1, 1)
plt.title("Dados Brutos")
df_dados.AirTC.plot()
df_dados.RH.plot()
plt.subplot(2, 1, 2)
df_dados.Rain_mm.plot()
#plt.savefig('figs/nome-da-figura.png')
#df_dados.index.min(), df_dados.index.max(), 
## (Timestamp('2015-01-01 00:00:00'), Timestamp('2015-05-29 10:00:00'))
# Criando um novo dominio continuo com base no inicio e fim da serie de dados original
d = pd.DataFrame(index=pd.date_range(pd.datetime(2015,1,1), pd.datetime(2015,5,29), freq='Min'))
print("Indice criado OK")
d.head()
# Unindo os dois DataFrames pela esquerda (o que não houver em d será substituído por NaN
ndf_dados = d.join(df_dados)
#ndf_dados.fillna(0) #Substitui valor NaN por 0
print("Junçao OK")
plt.figure(figsize=(16,15))
#Grafico Temperatura
plt.subplot(3, 1, 1)
plt.title('Dados Brutos Reindexados')
plt.ylabel('Graus')
plt.xlabel('')
ndf_dados.AirTC.plot(legend=True)
#Grafico Umidade
plt.subplot(3, 1, 2)
#plt.title('Dados Brutos Reindexados')
plt.xlabel('')
plt.ylabel('%')
ndf_dados.RH.plot(legend=True)
#Grafico Chuva
plt.subplot(3, 1, 3)
#plt.title('Dados Brutos Reindexados')
plt.xlabel('')
plt.ylabel('mm')
ndf_dados.Rain_mm.plot(legend=True)
#plt.savefig('figs/nome-da-figura.png')
Explanation: Analise e Tratamento Basico (Triagem) de dados
Analises por Hans. 2015
2012 (10sec)
2013 (10sec)
2014 (10sec ate 1Min seguinte)
2015 (1Min)
End of explanation
#numpy.all(numpy.isnan(data_list))
# np.any(np.isnan(ndf_dados))   Se returnar True eh porque algum valor NaN foi encontrado
# Mostra onde os dados Possuem valor NaN
ndf_dados[np.isnan(ndf_dados.Rain_mm)]
 
ndf_dados.head()
#Exportando para um novo arquivo
ndf_dados.to_csv('sao_roque_2015-AirTC-RH-Rain.csv')
# TODO: Este arquivo nao possui mais gaps no dominio temporal (as imagens foram ajustadas para o valor NaN), portanto pode-se pular a etapa reindexar caso seja utilizado no futuro.
Explanation: Em busca dos GAPs
End of explanation
df_dados_diarios = ndf_dados[['AirTC','RH']] .resample('D', how='mean')
chuva = ndf_dados.Rain_mm.resample('D', how='sum')
df_dados_diarios['Acum_Chuva'] = chuva
df_dados_diarios.head()
#Mostrando tudo
plt.figure(figsize=(16,8))
plt.subplot(2,1,1)
plt.title('Media Diaria 2015')
plt.xlabel("")
plt.ylabel("mm, Graus, %")
df_dados_diarios.AirTC.plot(legend=True)
df_dados_diarios.RH.plot(legend=True)
df_dados_diarios.Acum_Chuva.plot(legend=True)
plt.subplot(2,1,2)
acumulado = df_dados_diarios.Acum_Chuva.cumsum()
plt.xlabel("Data")
plt.ylabel("mm")
acumulado.plot(legend=True)
#plt.savefig('figs/nome-da-figura.png')
# Histograma do Acumulado Diario
plt.figure(figsize=(16,8))
plt.xlabel("Acorrencia")
plt.ylabel("mm")
df_dados_diarios.Acum_Chuva.plot(kind='hist', orientation='horizontal', alpha=.75,legend=True)
#plt.savefig('figs/nome-da-figura.png')
Explanation: Analises Diarias
End of explanation
# Quais dias o Acumulado de chuva foi superior a 20mm em 2015?
df_dados_diarios.Acum_Chuva[df_dados_diarios.Acum_Chuva > 20.]
Explanation: Quais dias o Acumulado de chuva foi superior a 20mm em 2015 ?
End of explanation
# Quantos dias o Acumulado de chuva foi superior a 20mm em 2015?
df_dados_diarios.Acum_Chuva[df_dados_diarios.Acum_Chuva > 20.].count()
Explanation: Quantos dias o Acumulado de chuva foi superior a 20mm em 2015 ?
End of explanation
ndf_dados.describe(), df_dados_diarios.describe()
Explanation: Estatistica geral do DataFrame
End of explanation
<END_TASK>