arti resolve
This commit is contained in:
@@ -6,9 +6,9 @@
|
||||
"Выкупы": 7,
|
||||
"Возвраты":13,
|
||||
"Не_выкупы":16,
|
||||
"Налог_в_руб":115,
|
||||
"Прибыль":118,
|
||||
"Все_удержания_магазина": 104,
|
||||
"Налог_в_руб":117,
|
||||
"Прибыль":120,
|
||||
"Все_удержания_магазина": 106,
|
||||
"Эквайринг":26,
|
||||
"Логистика":35,
|
||||
"Себестоимость":22,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import pandas as pd
|
||||
from schema.pydantic import settings, Translit
|
||||
import os
|
||||
|
||||
import re
|
||||
|
||||
class BaseHandler:
|
||||
|
||||
@@ -45,12 +45,20 @@ class Handler(BaseHandler):
|
||||
|
||||
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): #группировка
|
||||
|
||||
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 != "Наименование"} # По умолчанию суммируем все кроме Артикула и наименования
|
||||
|
||||
if "Наименование" in self.df.columns:
|
||||
@@ -72,9 +80,8 @@ class Handler(BaseHandler):
|
||||
|
||||
|
||||
def calculations(self): #Исчисляемые колонки
|
||||
|
||||
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
|
||||
)
|
||||
if "Выкупы" in self.df.columns and "Не_выкупы" in self.df.columns:
|
||||
@@ -93,7 +100,7 @@ class Handler(BaseHandler):
|
||||
axis=1
|
||||
)
|
||||
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
|
||||
)
|
||||
if "Себестоимость" in self.df.columns:
|
||||
|
||||
@@ -9,7 +9,7 @@ for i in ("input", "output"):
|
||||
path.mkdir(exist_ok=True)
|
||||
# Print the files
|
||||
for file in files:
|
||||
file=file.lower
|
||||
|
||||
if file.startswith("~$"): #Проверка не редактируемый ли файл
|
||||
continue
|
||||
# Check if item is a file, not a directory
|
||||
|
||||
Reference in New Issue
Block a user