Wiki

Clone wiki

topicos / Analise de Dados Anuais - Estacao ATMOS

Analise e Tratamento Basico (Triagem) de dados

Analises por Hans. 2015

  • 2012 (10sec)
  • 2013 (10sec)
  • 2014 (10sec ate 1Min seguinte)
  • 2015 (1Min)

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
3.4.2 (default, Oct  8 2014, 13:08:17)
[GCC 4.9.1]
1.9.2
#?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")
Dados Importados OK
df_dados.columns.tolist()
The slowest run took 15.60 times longer than the fastest. This could mean that an intermediate result is being cached
100000 loops, best of 3: 2.72 µs per loop
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')
<matplotlib.axes.AxesSubplot at 0x7fb05dfeaa90>
output_10_1.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()
Indice criado OK
# 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")
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')
<matplotlib.axes.AxesSubplot at 0x7fb06108d860>
output_13_1.png

Em busca dos GAPs

#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.

Analises Diarias

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')
<matplotlib.axes.AxesSubplot at 0x7fb05dbf5c50>
output_20_1.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')
<matplotlib.axes.AxesSubplot at 0x7fb05de09898>
output_21_1.png

Quais dias o Acumulado de chuva foi superior a 20mm em 2015 ?

# Quais dias o Acumulado de chuva foi superior a 20mm em 2015?
df_dados_diarios.Acum_Chuva[df_dados_diarios.Acum_Chuva > 20.]
Timestamp
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

Quantos dias o Acumulado de chuva foi superior a 20mm em 2015 ?

# Quantos dias o Acumulado de chuva foi superior a 20mm em 2015?
df_dados_diarios.Acum_Chuva[df_dados_diarios.Acum_Chuva > 20.].count()
7

Estatistica geral do DataFrame

ndf_dados.describe(), df_dados_diarios.describe()
(               AirTC             RH        Rain_mm
 count  204513.000000  204513.000000  204513.000000
 mean       19.453614      80.962955       0.002573
 std         4.293105      14.318227       0.039800
 min         7.030000       0.000000       0.000000
 25%        16.570000      71.560000       0.000000
 50%        19.280000      83.900000       0.000000
 75%        22.250000      92.600000       0.000000
 max        32.080000     100.000000       5.800000,
             AirTC          RH  Acum_Chuva
 count  147.000000  147.000000  147.000000
 mean    19.477713   80.830773    3.579878
 std      3.160460    7.848394    8.697315
 min     10.897843   56.890602    0.000000
 25%     17.346858   75.739872    0.000000
 50%     19.605347   80.935653    0.000000
 75%     21.442038   86.432545    2.794000
 max     28.191128   98.972410   70.104000)

## Resultados apos executar os procedimentos para cada ano a partir de 2012.

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.

Updated