arti resolve
This commit is contained in:
@@ -6,9 +6,9 @@
|
|||||||
"Выкупы": 7,
|
"Выкупы": 7,
|
||||||
"Возвраты":13,
|
"Возвраты":13,
|
||||||
"Не_выкупы":16,
|
"Не_выкупы":16,
|
||||||
"Налог_в_руб":115,
|
"Налог_в_руб":117,
|
||||||
"Прибыль":118,
|
"Прибыль":120,
|
||||||
"Все_удержания_магазина": 104,
|
"Все_удержания_магазина": 106,
|
||||||
"Эквайринг":26,
|
"Эквайринг":26,
|
||||||
"Логистика":35,
|
"Логистика":35,
|
||||||
"Себестоимость":22,
|
"Себестоимость":22,
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import pandas as pd
|
import pandas as pd
|
||||||
from schema.pydantic import settings, Translit
|
from schema.pydantic import settings, Translit
|
||||||
import os
|
import os
|
||||||
|
import re
|
||||||
|
|
||||||
class BaseHandler:
|
class BaseHandler:
|
||||||
|
|
||||||
@@ -45,12 +45,20 @@ class Handler(BaseHandler):
|
|||||||
|
|
||||||
self.df['Артикул'] = self.df['Артикул'].replace(Translit.TRANSLIT, regex=True)
|
self.df['Артикул'] = self.df['Артикул'].replace(Translit.TRANSLIT, regex=True)
|
||||||
|
|
||||||
|
self.df['Артикул'] = self.df['Артикул'].astype(str).str.upper().str.extract(f'({settings.PATTERN})')
|
||||||
|
self.df.dropna(subset=["Артикул"], inplace=True) # Удаляем пустые строки
|
||||||
|
|
||||||
|
def normalize(arti):
|
||||||
|
if re.search(r'\d{3,}$', arti):
|
||||||
|
return re.sub(r'(\d)\d{2,}$', r'\1', arti)
|
||||||
|
else:
|
||||||
|
return re.sub(r'\d{1,2}$', '', arti)
|
||||||
|
|
||||||
|
self.df['Артикул'] = self.df['Артикул'].apply(normalize)
|
||||||
|
|
||||||
|
|
||||||
def grouping(self): #группировка
|
def grouping(self): #группировка
|
||||||
|
|
||||||
self.df['Артикул'] = self.df['Артикул'].astype(str).str.upper().str.extract(f'({settings.PATTERN})') # Отбираем Артикула по регексу
|
|
||||||
self.df.dropna(subset=["Артикул"], inplace=True) # Удаляем пустые строки
|
|
||||||
|
|
||||||
agg_dict = {col: "sum" for col in self.df.columns if col != "Артикул" and col != "Наименование"} # По умолчанию суммируем все кроме Артикула и наименования
|
agg_dict = {col: "sum" for col in self.df.columns if col != "Артикул" and col != "Наименование"} # По умолчанию суммируем все кроме Артикула и наименования
|
||||||
|
|
||||||
if "Наименование" in self.df.columns:
|
if "Наименование" in self.df.columns:
|
||||||
@@ -72,9 +80,8 @@ class Handler(BaseHandler):
|
|||||||
|
|
||||||
|
|
||||||
def calculations(self): #Исчисляемые колонки
|
def calculations(self): #Исчисляемые колонки
|
||||||
|
|
||||||
self.df["Все удержания в %"] = self.df.apply(
|
self.df["Все удержания в %"] = self.df.apply(
|
||||||
lambda row: (row["Все_удержания_магазина"] / row["Выручка"] * 100) if row["Выручка"] != 0 else 100, #Возможно все удержания в таком случае 100%
|
lambda row: (row["Все_удержания_магазина"] / row["Выручка"] * 100) if abs(row["Выручка"]) > 0.01 else 100, #Возможно все удержания в таком случае 100%
|
||||||
axis=1
|
axis=1
|
||||||
)
|
)
|
||||||
if "Выкупы" in self.df.columns and "Не_выкупы" in self.df.columns:
|
if "Выкупы" in self.df.columns and "Не_выкупы" in self.df.columns:
|
||||||
@@ -93,7 +100,7 @@ class Handler(BaseHandler):
|
|||||||
axis=1
|
axis=1
|
||||||
)
|
)
|
||||||
self.df["Маржинальность"] = self.df.apply(
|
self.df["Маржинальность"] = self.df.apply(
|
||||||
lambda row: (row["Прибыль"] / row["Выручка"] * 100) if row["Выручка"] != 0 else 0,
|
lambda row: (row["Прибыль"] / row["Выручка"] * 100) if abs(row["Выручка"]) > 0.01 else 0,
|
||||||
axis=1
|
axis=1
|
||||||
)
|
)
|
||||||
if "Себестоимость" in self.df.columns:
|
if "Себестоимость" in self.df.columns:
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ for i in ("input", "output"):
|
|||||||
path.mkdir(exist_ok=True)
|
path.mkdir(exist_ok=True)
|
||||||
# Print the files
|
# Print the files
|
||||||
for file in files:
|
for file in files:
|
||||||
file=file.lower
|
|
||||||
if file.startswith("~$"): #Проверка не редактируемый ли файл
|
if file.startswith("~$"): #Проверка не редактируемый ли файл
|
||||||
continue
|
continue
|
||||||
# Check if item is a file, not a directory
|
# Check if item is a file, not a directory
|
||||||
|
|||||||
Reference in New Issue
Block a user