In [2]:
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
In [10]:
#?pd.date_range
#rng = pd.date_range('1/1/2011', periods=90, freq='10mS')
#rng
In [3]:
# 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-2011.csv', index_col=None,parse_dates=['Timestamp'])
df_dados = pd.read_csv('sr311-2011.csv', index_col=None,parse_dates=['Timestamp'])
print("Dados Importados OK")
In [4]:
#Verificanco o nome das colunas
df_dados.columns.tolist()
Out[4]:
In [5]:
df_dados.head(3)
Out[5]:
In [6]:
#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)
In [7]:
# Selecionando apenas algumas colunas de interesse
df_dados = df_dados[['AirTC', 'RH', 'Rain_mm']]
In [8]:
#df_dados = df_dados.dropna()
df_dados.head()
#s_chuva = df_dados.Rain_mm
Out[8]:
In [73]:
#s_chuva.cumsum()
In [9]:
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')
Out[9]:
In [12]:
#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'))
d = pd.DataFrame(index=pd.date_range(pd.datetime(2011,1,1), pd.datetime(2011,12,31,23,59,00), freq='Min'))
print("Indice 2011 criado OK")
d.head(2),d.tail(2)
Out[12]:
In [13]:
# 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")
In [14]:
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')
Out[14]:
In [35]:
#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)]
Out[35]:
In [16]:
np.count_nonzero(~np.isnan(ndf_dados))
Out[16]:
In [36]:
def numberOfNonNans(data):
count = 0
for i in data:
if not np.isnan(i):
count += 1
return count
print(numberOfNonNans(ndf_dados.AirTC))
print(numberOfNonNans(ndf_dados.RH))
print(numberOfNonNans(ndf_dados.Rain_mm))
In [29]:
ndf_dados.head()
#Exportando para um novo arquivo
ndf_dados.to_csv('sao_roque_2011-AirTC-RH-Rain.csv',na_rep='NaN')
# 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.
In [31]:
df_dados_diarios = ndf_dados[['AirTC','RH']] .resample('D', how='mean')
chuva = ndf_dados.Rain_mm.resample('D', how='sum')
In [32]:
df_dados_diarios['Acum_Chuva'] = chuva
df_dados_diarios.head()
Out[32]:
In [33]:
#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')
Out[33]:
In [34]:
# 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')
Out[34]:
In [37]:
# Quais dias o Acumulado de chuva foi superior a 20mm em 2015?
df_dados_diarios.Acum_Chuva[df_dados_diarios.Acum_Chuva > 20.]
Out[37]:
In [39]:
# Quantos dias o Acumulado de chuva foi superior a 20mm em 2015?
df_dados_diarios.Acum_Chuva[df_dados_diarios.Acum_Chuva > 20.].count()
Out[39]:
In [40]:
ndf_dados.describe(), df_dados_diarios.describe()
Out[40]:
hans@hasus:~/Dropbox/workspace/spyder/spyderprj01$ python3 ATMOS-Anuais.py -i 2012; python3 ATMOS-Anuais.py -i 201
3.4.3 |Anaconda 2.2.0 (64-bit)| (default, Mar 6 2015, 12:03:53)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)]
1.9.2
Analisando ano 2012
Dados 2012 Importados OK
Gerando Graficos Brutos - 2012
Indice criado OK
Junção OK
Gerando Graficos Brutos Reindexados - 2012
Gerando Graficos Media Diaria - 2012
Gerando Graficos Acumulado de Chuva - 2012
Gerando Graficos Histograma Acumulado diario de Chuva - 2012
2012-01-01 41.402
2012-01-13 24.638
2012-02-05 45.466
2012-06-17 30.480
2012-07-06 62.992
2012-07-24 37.592
2012-08-26 28.956
2012-09-09 20.320
2012-09-10 52.578
2012-09-16 31.242
2012-09-18 35.814
2012-09-19 27.432
2012-10-07 20.320
2012-10-22 24.638
2012-11-23 26.924
2012-12-27 43.180
2012-12-28 29.972
Name: Acum_Chuva, dtype: float64
17
________
FINALIZADO!!
________
3.4.3 |Anaconda 2.2.0 (64-bit)| (default, Mar 6 2015, 12:03:53)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)]
1.9.2
Analisando ano 2013
Dados 2013 Importados OK
Gerando Graficos Brutos - 2013
Indice criado OK
Junção OK
Gerando Graficos Brutos Reindexados - 2013
Gerando Graficos Media Diaria - 2013
Gerando Graficos Acumulado de Chuva - 2013
Gerando Graficos Histograma Acumulado diario de Chuva - 2013
2013-02-25 29.718
2013-03-09 22.352
2013-03-12 44.958
2013-03-20 34.798
2013-04-04 25.908
2013-04-12 26.924
2013-05-19 41.402
2013-05-29 20.828
2013-06-01 20.828
2013-06-28 24.638
2013-06-29 20.828
2013-07-07 27.178
2013-08-09 28.702
2013-08-13 22.860
2013-08-23 25.654
2013-08-24 61.722
2013-08-25 34.036
2013-08-26 22.860
2013-09-20 51.816
2013-09-21 44.704
2013-10-21 27.940
2013-11-11 53.340
2013-11-15 20.320
2013-11-20 23.368
2013-11-21 20.828
2013-12-05 22.098
Name: Acum_Chuva, dtype: float64
26
________
FINALIZADO!!
________
3.4.3 |Anaconda 2.2.0 (64-bit)| (default, Mar 6 2015, 12:03:53)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)]
1.9.2
Analisando ano 2014
Dados 2014 Importados OK
Gerando Graficos Brutos - 2014
Indice criado OK
Junção OK
Gerando Graficos Brutos Reindexados - 2014
Gerando Graficos Media Diaria - 2014
Gerando Graficos Acumulado de Chuva - 2014
Gerando Graficos Histograma Acumulado diario de Chuva - 2014
2014-01-03 23.622
2014-01-10 21.844
2014-02-12 20.574
2014-02-25 22.352
2014-03-17 22.352
2014-03-31 24.130
2014-04-08 49.784
2014-04-11 44.196
2014-05-21 37.338
2014-05-31 37.846
2014-06-05 53.594
2014-06-13 37.084
2014-06-24 25.908
2014-06-26 30.226
2014-07-03 23.876
2014-07-23 34.798
2014-08-31 25.146
2014-09-02 25.654
2014-09-06 29.972
2014-09-11 27.686
2014-09-26 25.146
2014-10-13 37.338
2014-10-17 46.990
2014-10-19 23.368
2014-12-12 44.704
2014-12-20 33.274
2014-12-21 35.306
2014-12-27 30.226
Name: Acum_Chuva, dtype: float64
28
________
FINALIZADO!!
________
3.4.3 |Anaconda 2.2.0 (64-bit)| (default, Mar 6 2015, 12:03:53)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)]
1.9.2
Analisando ano 2015
Dados 2015 Importados OK
Gerando Graficos Brutos - 2015
Indice criado OK
Junção OK
Gerando Graficos Brutos Reindexados - 2015
Gerando Graficos Media Diaria - 2015
Gerando Graficos Acumulado de Chuva - 2015
Gerando Graficos Histograma Acumulado diario de Chuva - 2015
2015-01-28 29.718
2015-02-09 21.590
2015-02-21 70.104
2015-03-09 23.368
2015-03-30 21.844
2015-04-05 28.448
2015-04-20 44.450
Name: Acum_Chuva, dtype: float64
7
________
FINALIZADO!!
________
Elaborado por Hans Rogerio Zimermann para o curso FSC878 - Topicos Especiais II PPGMET - UFSM.