from mpl_toolkits.basemap import Basemap import numpy as np import pandas as pd import matplotlib.pyplot as plt from tqdm import tqdm import glob from datetime import datetime, date, timezone, timedelta import os.path import os import seaborn as sns import matplotlib.gridspec as gridspec import pandas.plotting._converter as pandacnv pandacnv.register() import calc_data latlon145_file_name = calc_data.latlon145_file_name latlon900_file_name = calc_data.latlon900_file_name grid900to145_file_name = calc_data.grid900to145_file_name ocean_grid_file = calc_data.ocean_grid_file ocean_grid_145 = calc_data.ocean_grid_145 ocean_idx = calc_data.ocean_idx latlon_ex = calc_data.get_lonlat_data() start_list = [] n = 20000000 y_list = [3, 4, 5, 6, 7, 8, 9, 10, 13, 14, 15, 16] for i in y_list: m = n + i * 10000
""" Plotting api """ # flake8: noqa try: # mpl optional from pandas.plotting import _converter _converter.register() # needs to override so set_xlim works with str/number except ImportError: pass from pandas.plotting._misc import (scatter_matrix, radviz, andrews_curves, bootstrap_plot, parallel_coordinates, lag_plot, autocorrelation_plot) from pandas.plotting._core import boxplot from pandas.plotting._style import plot_params from pandas.plotting._tools import table
# -*- coding: utf-8 -*- # external imports from numpy import * import pandas as pd import pandas.plotting._converter as pandacnv # FIXME: only necessary due to Pandas 0.21.0 bug with Datetime plotting pandacnv.register( ) # FIXME: only necessary due to Pandas 0.21.0 bug with Datetime plotting from scipy import signal from astropy.timeseries import LombScargle import matplotlib.pyplot as plt # internal imports import load_product as ldp # data directories data_dir = '/Users/Ethan/Documents/Research/2016-08 - UW/Data/Argo/Drift/' output_dir = '/Users/Ethan/Documents/Research/Git/Weddell_polynya/Temporary results/' ######### load APEX data ######### wmoid = 5904471 drift_data = ldp.argo_drift_data(data_dir, wmoid, status='R', bad_pres_range=(500, 1500)) drift_pres = pd.Series(index=drift_data['datetime'], data=drift_data['pres']) drift_temp = pd.Series(index=drift_data['datetime'], data=drift_data['temp']) t = (drift_temp.index - drift_temp.index[0]).astype('timedelta64[m]') / ( 24 * 60) # units: days y = drift_temp.values.copy()
def arimaForecasting(self): from pandas import datetime def parser(x): return datetime.strptime(x, '%Y-%m-%d') indexedDataset = pd.read_csv("/home/fidel/Downloads/aTenDataset.csv", index_col=0) print (indexedDataset) #, date_parser=parser, parse_dates=[0],index_col=0 # indexedDatasetFreq = pd.date_range(indexedDataset,freq=30) # print datasetExtracted.dtypes # print datasetExtracted # indexColm = "Month" # targetColm = "#Passengers" # salesCarsDatasetDateUpdated.csv(Month,Sales,y-m-d),/Downloads/AirPassengers.csv(Month,#Passengers),/Downloads/aTenDastaset(date,value) indexColm = "Date" targetColm = "Collections" # indexedDatasetDate = pd.to_datetime(indexedDataset, infer_datetime_format=True) # indexedDatasetDate.set_index(indexColm,inplace=True) indexedDataset = indexedDataset.filter([indexColm,targetColm]) import pandas.plotting._converter as pandascnv pandascnv.register() # indexedDataset.to_csv("/home/fidel/Downloads/BIDataset.csv") # plt.plot(indexedDataset) # plt.show() # plt.plot(indexedDataset) # plt.show() modelAuto = auto_arima(indexedDataset,m=12,max_p=3,max_q=3 ,trace=True, error_action="ignore", suppress_warnings=True,seasonal=True,stepwise=True) # modelAutoFit = modelAuto.fit(indexedDataset.values) # forecasting newDatesLength = 20 modelAutoPredict,confint = modelAuto.predict(n_periods=newDatesLength,return_conf_int=True) indexOfFc = pd.date_range(indexedDataset.index[-1],periods=newDatesLength,freq="MS") # modelAutoPredict = pd.DataFrame(modelAutoPredict, index=indexedDataset.index, columns=["Prediction"]) # making series for plotting modelAutoPredictSeries = pd.Series(modelAutoPredict,index=indexOfFc) lowerSeries = pd.Series(confint[:,0],index=indexOfFc) upperSeries = pd.Series(confint[:,1],index=indexOfFc) #plotting the forecasting model plt.plot(indexedDataset) plt.plot(modelAutoPredictSeries,color="darkgreen") plt.fill_between(lowerSeries.index,lowerSeries,upperSeries,color='k',alpha=.15) plt.title("arima model forecasting") plt.show() # plt.plot(modelAutoPredict, label="Prediction") # plt.plot(indexedDataset) # plt.show() from math import sqrt from sklearn.metrics import mean_squared_error rms = sqrt(mean_squared_error(indexedDataset, modelAutoPredict)) print(rms) rolmean = indexedDataset.rolling(window=12).mean() rolstddev = indexedDataset.rolling(window=12).std() print (rolmean, rolstddev) from statsmodels.tsa.stattools import adfuller datasetTest = adfuller(indexedDataset[targetColm], autolag="AIC") datasetOutput = pd.Series(datasetTest[0:4], index=["Test Statistic", "p-value", "#Lags Used", "Number of Observations Used"]) for key, value in datasetTest[4].items(): datasetOutput[key] = value print (datasetOutput) indexedDatasetDiff = indexedDataset.diff(periods=1) indexedDatasetDiff = indexedDatasetDiff[1:] # order_selection = sm.tsa.arma_order_select_ic(indexedDataset, max_ar=12, max_ma=2, ic="aic") # P = order_selection.aic_min_order[0] # Q = order_selection.aic_min_order[1] D=1 P=12 Q=0 print (P,Q) model = ARIMA(indexedDataset[targetColm], order=(P, D, Q)) modelFit = model.fit() prediction = modelFit.forecast(len(indexedDataset))[0] plt.plot(prediction, color='red') plt.plot(indexedDataset) plt.show()
def showGUI(): _converter.register() window = Tk() window.title("Wada Report Generator") window.geometry('350x150') csvPath_lbl = Label(window, text="File csv", background='#335469', foreground="white") csvPath_lbl.grid(column=0, row=0) csv_default_text = StringVar(window, value='test3.csv') csvPath_txt = Entry(window, width=30, textvariable=csv_default_text) csvPath_txt.grid(column=1, row=0) browse_file_btn = Button(window, text="Browse File", command=lambda: OpenFile(csvPath_txt)) browse_file_btn.grid(column=2, row=0) entidade_lbl = Label(window, text="Entidade", background='#335469', foreground="white") entidade_lbl.grid(column=0, row=1) entidade_default_text = StringVar(window, value="Município de Penacova") entidade_txt = Entry(window, width=30, textvariable=entidade_default_text) entidade_txt.grid(column=1, row=1) local_lbl = Label(window, text="Local", background='#335469', foreground="white") local_lbl.grid(column=0, row=2) local_default_text = StringVar(window, value="Reservatório da Aveleira ") local_txt = Entry(window, width=30, textvariable=local_default_text) local_txt.grid(column=1, row=2) canal_lbl = Label(window, text="Canal", background='#335469', foreground="white") canal_lbl.grid(column=0, row=3) canal_default_text = StringVar(window, value="example canal") canal_txt = Entry(window, width=30, textvariable=canal_default_text) canal_txt.grid(column=1, row=3) ramais_lbl = Label(window, text="Ramais", background='#335469', foreground="white") ramais_lbl.grid(column=0, row=4) ramais_default_text = StringVar(window, value='2') ramais_txt = Entry(window, width=30, textvariable=ramais_default_text) ramais_txt.grid(column=1, row=4) km_de_conduta_lbl = Label(window, text="Km de conduta", background='#335469', foreground="white") km_de_conduta_lbl.grid(column=0, row=5) km_de_conduta_default_text = StringVar(window, value='10') km_de_conduta_txt = Entry(window, width=30, textvariable=km_de_conduta_default_text) km_de_conduta_txt.grid(column=1, row=5) btn = Button(window, text="Generate", command=lambda: generate(csvPath_txt.get(), entidade_txt.get( ), local_txt.get(), canal_txt.get(), ramais_txt.get(), km_de_conduta_txt.get())) btn.grid(column=2, row=5) window.protocol("WM_DELETE_WINDOW", on_closing) window.configure(background='#335469') window.mainloop()
""" Plotting api """ # flake8: noqa try: # mpl optional from pandas.plotting import _converter _converter.register( ) # needs to override so set_xlim works with str/number except ImportError: pass from pandas.plotting._misc import (scatter_matrix, radviz, andrews_curves, bootstrap_plot, parallel_coordinates, lag_plot, autocorrelation_plot) from pandas.plotting._core import boxplot from pandas.plotting._style import plot_params from pandas.plotting._tools import table