Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
ad3e169
chat feature
Jervx Feb 18, 2023
c630492
for dataset
zalven-official Feb 19, 2023
655bafd
adding api for resetting database and getting forecasts
zalven-official Feb 19, 2023
9570494
adding latest data column for dashboard
zalven-official Feb 19, 2023
614445f
adding date format
zalven-official Feb 19, 2023
1538119
adding forefcasting component for dashboard
zalven-official Feb 19, 2023
28e25bd
adding dashboard
zalven-official Feb 19, 2023
c741379
finishing dashboard forecasting
zalven-official Feb 19, 2023
4cf4e22
changing name
zalven-official Feb 19, 2023
395e6a7
Updates
Jervx Feb 19, 2023
69f2599
fixing build errors
zalven-official Feb 20, 2023
884fb89
fixing dashboard
zalven-official Feb 20, 2023
809c5b7
Fixed Chat
Jervx Feb 20, 2023
a4c3c4f
Chat Fix
Jervx Feb 20, 2023
a769e58
+Email Notification & Templates, Fixed Invoice numbers & alignment
Jervx Feb 26, 2023
3353fcb
enhanced dashboard
Jervx Feb 26, 2023
1eba8f3
Account Summary (Dashboard)
Jervx Feb 26, 2023
cc8f5db
adding dashboard
zalven-official Feb 26, 2023
30dfcaf
Inventory, Rice sorted newest first
Jervx Feb 27, 2023
8f4f1a5
Email template submessage, Deleted user on Chat, Receipt/invoice, das…
Jervx Feb 27, 2023
e90a8c6
finishing awx
zalven-official Feb 27, 2023
b66439f
dashboard fix cors
zalven-official Feb 27, 2023
a233c40
dashboard fix ssl
zalven-official Feb 27, 2023
701647f
adding ssl functionality
zalven-official Feb 27, 2023
4f5320d
Fx order not pushing to forecast
Jervx Mar 3, 2023
89978f1
sales
Mar 5, 2023
706fd10
Fix : Order not adding to current today sales, +Added sort on All, Co…
Jervx Mar 6, 2023
1eca1d1
Fix : days variability to months, years
Jervx Mar 6, 2023
3e25f3d
fix: MAPE Formula
Mar 12, 2023
0d41202
adding env
Apr 17, 2023
eb1b849
Fix typo
Jervx Apr 17, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified .DS_Store
Binary file not shown.
9,377 changes: 9,377 additions & 0 deletions prd_analysis/Dataset.json

Large diffs are not rendered by default.

122 changes: 122 additions & 0 deletions prd_analysis/generator.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
import random
from datetime import datetime
from dateutil.parser import parse
import csv
import xgboost as xgb
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
from datetime import datetime
import json

color_pal = sns.color_palette()
plt.style.use('fivethirtyeight')

data_path = "./prd-sales.csv"

months_list = [
'January', "Febuary", "March", "April", "May", "June", "July", "August", "Septemnber", "October", "November", "December"
]
# Get data from drive
df = pd.read_csv(data_path, index_col=False)

# Fill the null values by 0 and convert the numbers by float
df['Sale'] = df['Sale'].fillna(0)
df['totalSale'] = df['Sale'].apply(lambda x: 0 if x == 0 or x == '' or x == ' ' else float(
str(x).replace(',', '').replace(' ', '')))
# Create date as index / key
df = df.set_index('Date')
df.index = pd.to_datetime(df.index)

# Sort the value by Date
df = df.sort_values(by="Date")
re = df


def predict_future(model, begin_date, days=7):
df_preds_future = pd.DataFrame(
{'totalSale': 0, 'Date': pd.date_range(begin_date, periods=days)})
df_preds_future = df_preds_future.set_index('Date')
df_preds_future.index = pd.to_datetime(df_preds_future.index)
df_preds_future = df_preds_future.sort_values(by="Date")
X, y = create_features(df_preds_future, 'totalSale')
predicted_results_future = model.predict(X)
X['totalSale'] = predicted_results_future
return X


def create_features(df, target_variable):
df['date'] = df.index
df['hour'] = df['date'].dt.hour
df['dayofweek'] = df['date'].dt.dayofweek
df['quarter'] = df['date'].dt.quarter
df['month'] = df['date'].dt.month
df['year'] = df['date'].dt.year
df['dayofyear'] = df['date'].dt.dayofyear
df['dayofmonth'] = df['date'].dt.day
df['weekofyear'] = df['date'].dt.weekofyear
X = df[['hour', 'dayofweek', 'quarter', 'month',
'year', 'dayofyear', 'dayofmonth', 'weekofyear']]
if target_variable:
y = df[target_variable]
return X, y
return X


def days_between(d1, d2):
d1 = datetime.strptime(d1, date_time_format)
d2 = datetime.strptime(d2, date_time_format)
return abs((d2 - d1).days)


date_time_format = "%Y-%m-%d %H:%M:%S"
datew_time_format = "%Y-%m-%d"

csv_date = df.index.date.max().strftime(date_time_format)
date_now = datetime.now().strftime(date_time_format)
oldest_date = csv_date if parse(csv_date) < parse(date_now) else date_now

model_path = 'prd-sales.bin'
xgboost_model = xgb.XGBRegressor()
xgboost_model.load_model(model_path)

preds = predict_future(xgboost_model, oldest_date,
days_between(csv_date, date_now))
df_preds_future = preds.sort_values(by="Date")


dates = []
totalSale = []
for index, row in df_preds_future.iterrows():
dates.append(index)
value = int(row['totalSale'])
res = random.randint(value-100, value+300)
totalSale.append(res)


new_value = {
'totalSale': totalSale
}
df_res = pd.DataFrame(new_value, index=dates)
df_all_rows = pd.concat([df, df_res])
plt.show()

result = []
x = False
for index, row in df_all_rows.iterrows():

if (re.index[-1] == index) and x == False:
x = True
continue
result.append({
"datew": index.strftime(datew_time_format),
"date": index.strftime(date_time_format),
"totalSale": row['totalSale']
})


# Function to convert a CSV to JSON
# Takes the file paths as arguments
jsonFilePath = 'Dataset.json'
with open(jsonFilePath, 'w', encoding='utf-8') as jsonf:
jsonf.write(json.dumps(result, indent=4))
Binary file added prd_analysis/prd-sales.bin
Binary file not shown.
Loading