MAI/LabWork01/LoadDB.py

105 lines
3.9 KiB
Python
Raw Normal View History

from flask import Flask, redirect, url_for, request, render_template
2023-09-28 20:48:51 +04:00
from LabWork01.AnalysCustomers import analysCustomersDataFrame
from LabWork01.AnalysSales import analysSalesDataFrame
from LabWork01.AnalysSalesCustomers import analysSalesCustomersDataFrame
from LabWork01.DataFrameAnalys import analysItemsDataFrame
from LabWork01.FuncLoad import createDataFrame
from LabWork01.LabWork3.AddData import addData
2023-10-12 12:26:41 +04:00
from LabWork01.LabWork3.CreateGraphics import createGraphics
from LabWork01.LabWork3.DeletePng import deleteAllPng
app = Flask(__name__)
#сразу загружаем весь док, чтобы потом просто прыгать по нему
listShops = createDataFrame()
#список типов данных по столбцам
listTypes = listShops.dtypes.to_list()
#формируем записи о кол-ве пустых ячеек в каждом столбце
countNull = listShops.isnull().sum()
@app.route("/")
def home():
2023-10-12 12:26:41 +04:00
additionListShops = addData(createDataFrame())
# удаляем текущие диаграммы
deleteAllPng()
# создаём новые диаграммы
createGraphics(additionListShops)
2023-10-12 12:26:41 +04:00
image_names = ['file1.jpg', 'file2.jpg', 'file3.jpg']
2023-10-12 12:26:41 +04:00
return render_template('main_page.html', context=[], image_names=image_names, tableAnalys=[], titles=[''], listTypes=listTypes, countNull=countNull, firstRow=1, secondRow=4, firstColumn=1, secondColumn=4)
@app.route("/showDiapason", methods=['GET','POST'])
def numtext():
data = request.args
#получаем срез и таблицы по введёным параметрам
newListShops = listShops.iloc[int(data['firstRow'])-1:int(data['secondRow']), int(data['firstColumn']):int(data['secondColumn'])+1]
_range = range(int(data['firstColumn']), int(data['secondColumn'])+1)
#список списков для шаблона
totalList = []
print(countNull[1])
#формирование 4-х списков для шаблонизатора
if 1 in _range:
listStoreArea = newListShops['Store_Area'].to_list()
totalList.append(listStoreArea)
if 2 in _range:
listItemsAvailable = newListShops['Items_Available'].to_list()
totalList.append(listItemsAvailable)
if 3 in _range:
listDailyCustomerCount = newListShops['Daily_Customer_Count'].to_list()
totalList.append(listDailyCustomerCount)
if 4 in _range:
listStoreSales = newListShops['Store_Sales'].to_list()
totalList.append(listStoreSales)
if int(data['firstRow']) and int(data['secondRow']) and int(data['firstColumn']) and int(data['secondColumn']):
2023-10-12 12:26:41 +04:00
return render_template('main_page.html', context=totalList, image_names=[], listTypes=listTypes, countNull=countNull,
firstColumn=int(data['firstColumn']), secondColumn=int(data['secondColumn']),
firstRow=int(data['firstRow']), secondRow=int(data['secondRow']))
2023-09-28 15:14:37 +04:00
return home()
#функция для проведения анализа данных
@app.route("/analysis", methods=['GET', 'POST'])
def analysis():
2023-09-28 20:48:51 +04:00
firstAnalys = analysItemsDataFrame(listShops)
2023-09-28 15:14:37 +04:00
2023-09-28 20:48:51 +04:00
secondAnalys = analysCustomersDataFrame(listShops)
2023-09-28 15:14:37 +04:00
2023-09-28 20:48:51 +04:00
thirdAnalys = analysSalesDataFrame(listShops)
2023-09-28 15:14:37 +04:00
2023-09-28 20:48:51 +04:00
fourthAnalys = analysSalesCustomersDataFrame(listShops)
2023-09-28 15:14:37 +04:00
2023-09-28 20:48:51 +04:00
print(firstAnalys)
2023-09-28 15:14:37 +04:00
2023-10-12 12:26:41 +04:00
return render_template('main_page.html', context=[], image_names=[],
tableAnalysOne=[firstAnalys.to_html()],
2023-09-28 20:48:51 +04:00
tableAnalysTwo=[secondAnalys.to_html()],
tableAnalysThree=[thirdAnalys.to_html()],
tableAnalysFour=[fourthAnalys.to_html()],
titles=[''],
listTypes=listTypes, countNull=countNull, firstRow=1,
secondRow=4, firstColumn=1, secondColumn=4)
if __name__=="__main__":
app.run(debug=True)
2023-09-14 14:30:19 +04:00