arti resolve

This commit is contained in:
2026-06-18 17:20:21 +03:00
parent 3a415129a0
commit b7f5a27671
3 changed files with 19 additions and 12 deletions

View File

@@ -6,9 +6,9 @@
"Выкупы": 7,
"Возвраты":13,
"Не_выкупы":16,
"Налог_в_руб":115,
"Прибыль":118,
"Все_удержания_магазина": 104,
"Налог_в_руб":117,
"Прибыль":120,
"Все_удержания_магазина": 106,
"Эквайринг":26,
"Логистика":35,
"Себестоимость":22,

View File

@@ -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:

View File

@@ -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