diff --git a/promoção/promoção_EUD_ciclo07.ipynb b/promoção/promoção_EUD_ciclo07.ipynb
index 661a068..434a7ce 100644
--- a/promoção/promoção_EUD_ciclo07.ipynb
+++ b/promoção/promoção_EUD_ciclo07.ipynb
@@ -2,7 +2,7 @@
"cells": [
{
"cell_type": "code",
- "execution_count": 1,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -14,7 +14,7 @@
},
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -32,33 +32,14 @@
},
{
"cell_type": "code",
- "execution_count": 3,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "C:\\Users\\joao.herculano\\AppData\\Local\\Temp\\ipykernel_28528\\119945099.py:10: DtypeWarning: Columns (7) have mixed types. Specify dtype option on import or set low_memory=False.\n",
- " df_draft = pd.concat([pd.read_csv(file) for file in csv_files], ignore_index=True)\n"
- ]
- },
- {
- "data": {
- "text/plain": [
- "(115164, 46)"
- ]
- },
- "execution_count": 3,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"# Caminho onde estão as subpastas com os arquivos CSV\n",
"\n",
"# Set the path to the folder containing CSV files\n",
- "folder_path = r\"C:\\Users\\joao.herculano\\GRUPO GINSENG\\Assistência Suprimentos - 2025\\SUPRIMENTOS\\DB_PROMOÇÕES\\EUDORA\\202510\\DRAFT_PDVS_SEM\" # arquivo dos drafts\n",
+ "folder_path = r\"C:\\Users\\joao.herculano\\GRUPO GINSENG\\Assistência Suprimentos - 2025\\SUPRIMENTOS\\DB_PROMOÇÕES\\EUDORA\\202511\\DRAFT_PDVS_SEM_\" # arquivo dos drafts\n",
"\n",
"# Pattern to match all CSV files\n",
"csv_files = glob.glob(os.path.join(folder_path, '*.csv'))\n",
@@ -72,7 +53,7 @@
},
{
"cell_type": "code",
- "execution_count": 4,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -81,14 +62,14 @@
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"\n",
"\n",
"# Caminho onde estão as subpastas com os arquivos CSV\n",
- "pasta_entrada = r\"C:\\Users\\joao.herculano\\GRUPO GINSENG\\Assistência Suprimentos - 2025\\SUPRIMENTOS\\DB_PROMOÇÕES\\EUDORA\\202510\\estoque\"\n",
+ "pasta_entrada = r\"C:\\Users\\joao.herculano\\GRUPO GINSENG\\Assistência Suprimentos - 2025\\SUPRIMENTOS\\DB_PROMOÇÕES\\EUDORA\\202511\\estoque\"\n",
"\n",
"# Lista todas as subpastas dentro de \"ESTOQUE\"\n",
"subpastas = [os.path.join(pasta_entrada, d) for d in os.listdir(pasta_entrada) if os.path.isdir(os.path.join(pasta_entrada, d))]\n",
@@ -122,47 +103,25 @@
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "c:\\Users\\joao.herculano\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages\\openpyxl\\styles\\stylesheet.py:237: UserWarning: Workbook contains no default style, apply openpyxl's default\n",
- " warn(\"Workbook contains no default style, apply openpyxl's default\")\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
- "df_bi_preco = pd.read_excel(r\"C:\\Users\\joao.herculano\\GRUPO GINSENG\\Assistência Suprimentos - 2025\\SUPRIMENTOS\\DB_PROMOÇÕES\\EUDORA\\202510\\preçobi\\TABELA DE PREÇOS (4).xlsx\")"
+ "df_bi_preco = pd.read_excel(r\"C:\\Users\\joao.herculano\\GRUPO GINSENG\\Assistência Suprimentos - 2025\\SUPRIMENTOS\\DB_PROMOÇÕES\\EUDORA\\202511\\preço BI\\TABELA DE PREÇOS (2).xlsx\")"
]
},
{
"cell_type": "code",
- "execution_count": 7,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "Index(['SKU1', 'SKU2', 'Descrição', 'MARCA', 'CATEGORIA', 'LINHA', 'UF',\n",
- " 'Tipo Preço', 'PC', 'PV'],\n",
- " dtype='object')"
- ]
- },
- "execution_count": 7,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"df_bi_preco.columns"
]
},
{
"cell_type": "code",
- "execution_count": 8,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -174,7 +133,7 @@
},
{
"cell_type": "code",
- "execution_count": 9,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -184,7 +143,7 @@
},
{
"cell_type": "code",
- "execution_count": 10,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -206,7 +165,7 @@
},
{
"cell_type": "code",
- "execution_count": 11,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -215,7 +174,7 @@
},
{
"cell_type": "code",
- "execution_count": 12,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -224,7 +183,7 @@
},
{
"cell_type": "code",
- "execution_count": 13,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -256,80 +215,16 @@
},
{
"cell_type": "code",
- "execution_count": 14,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "
\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " | \n",
- " Ciclo | \n",
- " INICIO CICLO | \n",
- " FIM CICLO | \n",
- " DURAÇÃO | \n",
- " MARCA | \n",
- " Date | \n",
- " NUM_CICLO | \n",
- " ANO_CICLO | \n",
- " CICLOMAIS2 | \n",
- " dias_ate_inicio | \n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " | 2262 | \n",
- " C202511 | \n",
- " 2025-07-16 | \n",
- " 2025-08-05 | \n",
- " 21 | \n",
- " EUDORA | \n",
- " 2025-07-16 | \n",
- " 11 | \n",
- " C2025 | \n",
- " C202513 | \n",
- " 42 | \n",
- "
\n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " Ciclo INICIO CICLO FIM CICLO DURAÇÃO MARCA Date NUM_CICLO \\\n",
- "2262 C202511 2025-07-16 2025-08-05 21 EUDORA 2025-07-16 11 \n",
- "\n",
- " ANO_CICLO CICLOMAIS2 dias_ate_inicio \n",
- "2262 C2025 C202513 42 "
- ]
- },
- "execution_count": 14,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"filtered_calendario"
]
},
{
"cell_type": "code",
- "execution_count": 15,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -338,7 +233,7 @@
},
{
"cell_type": "code",
- "execution_count": 16,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -347,16 +242,16 @@
},
{
"cell_type": "code",
- "execution_count": 17,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
- "df_tabela = pd.read_excel(r\"C:\\Users\\joao.herculano\\GRUPO GINSENG\\Assistência Suprimentos - 2025\\SUPRIMENTOS\\DB_PROMOÇÕES\\EUDORA\\202510\\tabela promo\\Tabela-de-Promocoes_C10_att-1747056411627.xlsx.xlsx\")\n"
+ "df_tabela = pd.read_excel(r\"C:\\Users\\joao.herculano\\GRUPO GINSENG\\Assistência Suprimentos - 2025\\SUPRIMENTOS\\DB_PROMOÇÕES\\EUDORA\\202511\\tabela promo\\Tabela-de-Promocoes_C11-(1)-1747747476284.xlsx.xlsx\")\n"
]
},
{
"cell_type": "code",
- "execution_count": 18,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -373,7 +268,7 @@
},
{
"cell_type": "code",
- "execution_count": 19,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -382,7 +277,7 @@
},
{
"cell_type": "code",
- "execution_count": 20,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -391,7 +286,7 @@
},
{
"cell_type": "code",
- "execution_count": 21,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -400,7 +295,7 @@
},
{
"cell_type": "code",
- "execution_count": 22,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -409,33 +304,16 @@
},
{
"cell_type": "code",
- "execution_count": 23,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "Index(['Ciclo', 'Veiculo', 'Tipo de Promoção', 'Estratégia de Promoção',\n",
- " 'Tipo_mecanica', 'Promo Período Limitado?', 'EAM', 'Categoria',\n",
- " 'Cód. Combo', 'Código do Item', 'Descrição do Item',\n",
- " 'Chamada Promocional', 'Valor do Guia', 'Preço Promocionado',\n",
- " '% de Desconto', 'RE compra por', 'RE Vende por', 'RE lucra (R$)',\n",
- " 'MATCH', 'PDV', 'UF', 'DESCRIÇÃO PDV', 'ANALISTA'],\n",
- " dtype='object')"
- ]
- },
- "execution_count": 23,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"df_tabela.columns"
]
},
{
"cell_type": "code",
- "execution_count": 24,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -444,7 +322,7 @@
},
{
"cell_type": "code",
- "execution_count": 25,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -453,7 +331,7 @@
},
{
"cell_type": "code",
- "execution_count": 26,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -462,41 +340,19 @@
},
{
"cell_type": "code",
- "execution_count": 27,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "(1518, 69)"
- ]
- },
- "execution_count": 27,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
- "df_final = pd.merge(left=df_draft,right=df_tabela,right_on=['Código do Item','PDV'],left_on=['SKU','PDV'],how='inner')\n",
+ "df_final = pd.merge(left=df_draft,right=df_tabela,right_on=['Código do Item','PDV'],left_on=['SKU','PDV'],how='right')\n",
"df_final.shape "
]
},
{
"cell_type": "code",
- "execution_count": 28,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "(1518, 74)"
- ]
- },
- "execution_count": 28,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"df_final = pd.merge(left=df_final, right=filtered_calendario[['Ciclo','INICIO CICLO','FIM CICLO','DURAÇÃO','match','dias_ate_inicio']], on='match',how='inner')\n",
"df_final.shape"
@@ -504,20 +360,9 @@
},
{
"cell_type": "code",
- "execution_count": 29,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "(1518, 74)"
- ]
- },
- "execution_count": 29,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"#df_final = pd.merge(left=df_final,right=df_pdv[['PDV', 'CANAL', 'DESCRIÇÃO PDV', 'PDV DESC','UF', 'MARCA', 'ANALISTA']],on = 'PDV',how='inner')\n",
"df_final.shape"
@@ -525,20 +370,9 @@
},
{
"cell_type": "code",
- "execution_count": 30,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "(1831, 77)"
- ]
- },
- "execution_count": 30,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"df_final['SKU'] = df_final['SKU'].astype(str) \n",
"df_final['PDV'] = df_final['PDV'].astype(str) \n",
@@ -548,20 +382,9 @@
},
{
"cell_type": "code",
- "execution_count": 31,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "(1831, 82)"
- ]
- },
- "execution_count": 31,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"\n",
"df_bi_preco['SKU2'] = df_bi_preco['SKU2'].astype(str).str.replace('.0','',regex=False) \n",
@@ -572,20 +395,9 @@
},
{
"cell_type": "code",
- "execution_count": 32,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "(1831, 86)"
- ]
- },
- "execution_count": 32,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"df_bi_preco['SKU1'] = df_bi_preco['SKU1'].astype(str).str.replace('.0','',regex=False) \n",
"\n",
@@ -595,7 +407,7 @@
},
{
"cell_type": "code",
- "execution_count": 33,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -604,7 +416,7 @@
},
{
"cell_type": "code",
- "execution_count": 34,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -616,7 +428,7 @@
},
{
"cell_type": "code",
- "execution_count": 35,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -626,65 +438,16 @@
},
{
"cell_type": "code",
- "execution_count": 36,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "Index(['PDV', 'Classe', 'SKU', 'Descrição', 'Categoria_x', 'Subcategoria',\n",
- " 'Lançamento', 'Desativação', 'Histórico de Vendas do Ciclo 202408',\n",
- " 'Histórico de Vendas do Ciclo 202409',\n",
- " 'Histórico de Vendas do Ciclo 202410',\n",
- " 'Histórico de Vendas do Ciclo 202411',\n",
- " 'Histórico de Vendas do Ciclo 202412',\n",
- " 'Histórico de Vendas do Ciclo 202413',\n",
- " 'Histórico de Vendas do Ciclo 202414',\n",
- " 'Histórico de Vendas do Ciclo 202415',\n",
- " 'Histórico de Vendas do Ciclo 202416',\n",
- " 'Histórico de Vendas do Ciclo 202417',\n",
- " 'Histórico de Vendas do Ciclo 202501',\n",
- " 'Histórico de Vendas do Ciclo 202502',\n",
- " 'Histórico de Vendas do Ciclo 202503',\n",
- " 'Histórico de Vendas do Ciclo 202504',\n",
- " 'Histórico de Vendas do Ciclo 202505',\n",
- " 'Histórico de Vendas do Ciclo 202506',\n",
- " 'Histórico de Vendas do Ciclo 202507',\n",
- " 'Histórico de Vendas do Ciclo Atual', 'Dias sem venda',\n",
- " 'Projeção Próximo Ciclo', 'Projeção Próximo Ciclo + 1',\n",
- " 'Promoção Próximo Ciclo', 'Promoção Próximo Ciclo + 1', 'Estoque Atual',\n",
- " 'Estoque em Transito', 'Pedido Pendente',\n",
- " 'Compra inteligente semanal/Sugestão de compra',\n",
- " 'Compra inteligente Próximo Ciclo',\n",
- " 'Compra inteligente Próximo Ciclo + 1', 'Item Desativado',\n",
- " 'Data Prevista Regularização', 'Carteira Bloqueada Para Novos Pedidos',\n",
- " 'Planograma', 'Quantidade por caixa', 'Preço Sell In', 'Quantidade',\n",
- " 'Item analisado', 'Histórico de Vendas do Ciclo 202407', 'match',\n",
- " 'Ciclo_x', 'Veiculo', 'Tipo de Promoção', 'Estratégia de Promoção',\n",
- " 'Tipo_mecanica', 'Promo Período Limitado?', 'EAM', 'Categoria_y',\n",
- " 'Cód. Combo', 'Código do Item', 'Descrição do Item',\n",
- " 'Chamada Promocional', 'Valor do Guia', 'Preço Promocionado',\n",
- " '% de Desconto', 'RE compra por', 'RE Vende por', 'RE lucra (R$)',\n",
- " 'MATCH', 'UF', 'DESCRIÇÃO PDV', 'ANALISTA', 'Ciclo_y', 'INICIO CICLO',\n",
- " 'FIM CICLO', 'DURAÇÃO', 'dias_ate_inicio', 'SKU_FINAL', 'DDV PREVISTO',\n",
- " 'COBERTURA ATUAL', 'SKU1_x', 'SKU2_x', 'Tipo Preço', 'PC_x', 'PV_x',\n",
- " 'SKU1_y', 'SKU2_y', 'PC_y', 'PV_y', 'PRECO DE COMPRA', 'PRECO DE VENDA',\n",
- " 'SKU_PARA_VALIDACAO', 'Arquivo_Origem'],\n",
- " dtype='object')"
- ]
- },
- "execution_count": 36,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"df_final.columns"
]
},
{
"cell_type": "code",
- "execution_count": 37,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -704,20 +467,9 @@
},
{
"cell_type": "code",
- "execution_count": 38,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "(101091, 80)"
- ]
- },
- "execution_count": 38,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"df_final['PDV_SKU'] = df_final['PDV'].astype(str) + df_final['SKU'].astype(str) \n",
"df_final['UFPRODUTO'] = df_final['UF'].astype(str) + df_final['SKU'].astype(str)\n",
@@ -727,39 +479,16 @@
},
{
"cell_type": "code",
- "execution_count": 39,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "Projeção Próximo Ciclo + 1\n",
- "0 11230\n",
- "1 6095\n",
- "2 5693\n",
- "4 5037\n",
- "3 4691\n",
- " ... \n",
- "60 13\n",
- "575 13\n",
- "197 13\n",
- "351 13\n",
- "118 13\n",
- "Name: count, Length: 129, dtype: int64"
- ]
- },
- "execution_count": 39,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"df_final['Projeção Próximo Ciclo + 1'].value_counts()"
]
},
{
"cell_type": "code",
- "execution_count": 40,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -768,39 +497,16 @@
},
{
"cell_type": "code",
- "execution_count": 41,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "PROJEÇÃO DO CICLO PROMOCIONADO\n",
- "0 11243\n",
- "1 7913\n",
- "2 7288\n",
- "4 5839\n",
- "5 5191\n",
- " ... \n",
- "175 13\n",
- "312 13\n",
- "108 13\n",
- "69 13\n",
- "161 13\n",
- "Name: count, Length: 115, dtype: int64"
- ]
- },
- "execution_count": 41,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"df_final['PROJEÇÃO DO CICLO PROMOCIONADO'].value_counts()"
]
},
{
"cell_type": "code",
- "execution_count": 42,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -809,7 +515,7 @@
},
{
"cell_type": "code",
- "execution_count": 43,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -818,20 +524,9 @@
},
{
"cell_type": "code",
- "execution_count": 44,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "np.int64(0)"
- ]
- },
- "execution_count": 44,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"df_final = df_final[~df_final['MARCA'].isna()]\n",
"df_final['MARCA'].isna().sum()"
@@ -839,20 +534,9 @@
},
{
"cell_type": "code",
- "execution_count": 45,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "(1822, 81)"
- ]
- },
- "execution_count": 45,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"df_final = df_final.drop_duplicates()\n",
"df_final.shape"
@@ -860,62 +544,16 @@
},
{
"cell_type": "code",
- "execution_count": 46,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "Index(['PDV', 'Classe', 'SKU', 'Descrição', 'Categoria_x', 'Subcategoria',\n",
- " 'Histórico de Vendas do Ciclo 202408',\n",
- " 'Histórico de Vendas do Ciclo 202409',\n",
- " 'Histórico de Vendas do Ciclo 202410',\n",
- " 'Histórico de Vendas do Ciclo 202411',\n",
- " 'Histórico de Vendas do Ciclo 202412',\n",
- " 'Histórico de Vendas do Ciclo 202413',\n",
- " 'Histórico de Vendas do Ciclo 202414',\n",
- " 'Histórico de Vendas do Ciclo 202415',\n",
- " 'Histórico de Vendas do Ciclo 202416',\n",
- " 'Histórico de Vendas do Ciclo 202417',\n",
- " 'Histórico de Vendas do Ciclo 202501',\n",
- " 'Histórico de Vendas do Ciclo 202502',\n",
- " 'Histórico de Vendas do Ciclo 202503',\n",
- " 'Histórico de Vendas do Ciclo 202504',\n",
- " 'Histórico de Vendas do Ciclo 202505',\n",
- " 'Histórico de Vendas do Ciclo 202506',\n",
- " 'Histórico de Vendas do Ciclo 202507',\n",
- " 'Histórico de Vendas do Ciclo Atual', 'Dias sem venda',\n",
- " 'Projeção Próximo Ciclo', 'Projeção Próximo Ciclo + 1', 'Estoque Atual',\n",
- " 'Estoque em Transito', 'Pedido Pendente',\n",
- " 'Compra inteligente Próximo Ciclo',\n",
- " 'Compra inteligente Próximo Ciclo + 1', 'Item Desativado',\n",
- " 'Data Prevista Regularização', 'Quantidade por caixa',\n",
- " 'Histórico de Vendas do Ciclo 202407', 'match', 'Ciclo_x', 'Veiculo',\n",
- " 'Tipo de Promoção', 'Estratégia de Promoção', 'Tipo_mecanica',\n",
- " 'Promo Período Limitado?', 'EAM', 'Categoria_y', 'Cód. Combo',\n",
- " 'Código do Item', 'Descrição do Item', 'Chamada Promocional',\n",
- " 'Valor do Guia', 'Preço Promocionado', '% de Desconto', 'RE compra por',\n",
- " 'RE Vende por', 'RE lucra (R$)', 'MATCH', 'UF', 'DESCRIÇÃO PDV',\n",
- " 'ANALISTA', 'INICIO CICLO', 'FIM CICLO', 'DURAÇÃO', 'dias_ate_inicio',\n",
- " 'SKU_FINAL', 'DDV PREVISTO', 'COBERTURA ATUAL', 'SKU1_x', 'SKU2_x',\n",
- " 'Tipo Preço', 'PC_x', 'PV_x', 'SKU1_y', 'SKU2_y', 'PC_y', 'PV_y',\n",
- " 'PRECO DE COMPRA', 'PRECO DE VENDA', 'MARCA', 'PDV_SKU', 'UFPRODUTO',\n",
- " 'PROJEÇÃO DO CICLO PROMOCIONADO'],\n",
- " dtype='object')"
- ]
- },
- "execution_count": 46,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"df_final.columns"
]
},
{
"cell_type": "code",
- "execution_count": 47,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -928,7 +566,7 @@
},
{
"cell_type": "code",
- "execution_count": 48,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -939,54 +577,18 @@
},
{
"cell_type": "code",
- "execution_count": 49,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "Index(['Histórico de Vendas do Ciclo 202408',\n",
- " 'Histórico de Vendas do Ciclo 202409',\n",
- " 'Histórico de Vendas do Ciclo 202410',\n",
- " 'Histórico de Vendas do Ciclo 202411',\n",
- " 'Histórico de Vendas do Ciclo 202412',\n",
- " 'Histórico de Vendas do Ciclo 202413',\n",
- " 'Histórico de Vendas do Ciclo 202414',\n",
- " 'Histórico de Vendas do Ciclo 202415',\n",
- " 'Histórico de Vendas do Ciclo 202416',\n",
- " 'Histórico de Vendas do Ciclo 202417',\n",
- " 'Histórico de Vendas do Ciclo 202501',\n",
- " 'Histórico de Vendas do Ciclo 202502',\n",
- " 'Histórico de Vendas do Ciclo 202503',\n",
- " 'Histórico de Vendas do Ciclo 202504',\n",
- " 'Histórico de Vendas do Ciclo 202505',\n",
- " 'Histórico de Vendas do Ciclo 202506',\n",
- " 'Histórico de Vendas do Ciclo 202507'],\n",
- " dtype='object')"
- ]
- },
- "execution_count": 49,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"df_final.columns[6:23]"
]
},
{
"cell_type": "code",
- "execution_count": 50,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "0.167950276989596\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"CRESCIMENTO = (df_final[df_final.columns[6]].sum() - df_final[df_final.columns[22]].sum())/df_final[df_final.columns[6]].sum() \n",
"print(CRESCIMENTO)\n",
@@ -996,7 +598,7 @@
},
{
"cell_type": "code",
- "execution_count": 51,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1007,27 +609,16 @@
},
{
"cell_type": "code",
- "execution_count": 52,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "'202410'"
- ]
- },
- "execution_count": 52,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"df_final.columns[8:9].str.split(\" \")[0][-1]"
]
},
{
"cell_type": "code",
- "execution_count": 53,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1042,68 +633,25 @@
},
{
"cell_type": "code",
- "execution_count": 54,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "np.float64(0.167950276989596)"
- ]
- },
- "execution_count": 54,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"CRESCIMENTO"
]
},
{
"cell_type": "code",
- "execution_count": 88,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "Index(['PDV', 'Classe', 'SKU', 'Descrição', 'Categoria_x', 'Subcategoria',\n",
- " 'C-4', 'C-3', 'C-2', 'C-1', 'Histórico de Vendas do Ciclo 202507',\n",
- " 'Histórico de Vendas do Ciclo Atual', 'Dias sem venda',\n",
- " 'Projeção Próximo Ciclo', 'Projeção Próximo Ciclo + 1', 'Estoque Atual',\n",
- " 'Estoque em Transito', 'Pedido Pendente',\n",
- " 'Compra inteligente Próximo Ciclo',\n",
- " 'Compra inteligente Próximo Ciclo + 1', 'Item Desativado',\n",
- " 'Data Prevista Regularização', 'Quantidade por caixa',\n",
- " 'Histórico de Vendas do Ciclo 202407', 'match', 'Ciclo_x', 'Veiculo',\n",
- " 'Tipo de Promoção', 'Estratégia de Promoção', 'Tipo_mecanica',\n",
- " 'Promo Período Limitado?', 'EAM', 'Categoria_y', 'Cód. Combo',\n",
- " 'Código do Item', 'Descrição do Item', 'Chamada Promocional',\n",
- " 'Valor do Guia', 'Preço Promocionado', '% de Desconto', 'RE compra por',\n",
- " 'RE Vende por', 'RE lucra (R$)', 'MATCH', 'UF', 'DESCRIÇÃO PDV',\n",
- " 'ANALISTA', 'INICIO CICLO', 'FIM CICLO', 'DURAÇÃO', 'dias_ate_inicio',\n",
- " 'SKU_FINAL', 'DDV PREVISTO', 'COBERTURA ATUAL', 'SKU1_x', 'SKU2_x',\n",
- " 'Tipo Preço', 'PC_x', 'PV_x', 'SKU1_y', 'SKU2_y', 'PC_y', 'PV_y',\n",
- " 'PRECO DE COMPRA', 'PRECO DE VENDA', 'MARCA', 'PDV_SKU', 'UFPRODUTO',\n",
- " 'PROJEÇÃO DO CICLO PROMOCIONADO', 'PICO DE VENDAS 2024',\n",
- " 'Pico Vendas Ultimos 6 ciclos', 'CRESCIMENTO', '202410',\n",
- " 'MEDIANA DO HISTÓRICO', 'MEDIA DO HISTÓRICO', 'PV GINSENG'],\n",
- " dtype='object')"
- ]
- },
- "execution_count": 88,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"df_final.columns"
]
},
{
"cell_type": "code",
- "execution_count": 56,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1123,7 +671,7 @@
},
{
"cell_type": "code",
- "execution_count": 57,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1132,7 +680,7 @@
},
{
"cell_type": "code",
- "execution_count": 58,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1141,7 +689,7 @@
},
{
"cell_type": "code",
- "execution_count": 59,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1159,38 +707,16 @@
},
{
"cell_type": "code",
- "execution_count": 60,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "0 0\n",
- "24 0\n",
- "48 0\n",
- "72 9\n",
- "96 0\n",
- " ..\n",
- "101026 0\n",
- "101039 2\n",
- "101052 1\n",
- "101065 1\n",
- "101078 7\n",
- "Name: Compra inteligente Próximo Ciclo, Length: 1822, dtype: int64"
- ]
- },
- "execution_count": 60,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"df_final['Compra inteligente Próximo Ciclo']\n"
]
},
{
"cell_type": "code",
- "execution_count": 61,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1199,7 +725,7 @@
},
{
"cell_type": "code",
- "execution_count": 62,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1212,39 +738,16 @@
},
{
"cell_type": "code",
- "execution_count": 63,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "DDV PREVISTO\n",
- "0.01 302\n",
- "0.02 120\n",
- "0.04 109\n",
- "0.07 50\n",
- "0.13 36\n",
- " ... \n",
- "1.56 1\n",
- "3.58 1\n",
- "3.75 1\n",
- "6.98 1\n",
- "10.96 1\n",
- "Name: count, Length: 195, dtype: int64"
- ]
- },
- "execution_count": 63,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"df_final_dedup['DDV PREVISTO'].value_counts()"
]
},
{
"cell_type": "code",
- "execution_count": 64,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1253,7 +756,7 @@
},
{
"cell_type": "code",
- "execution_count": 65,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1262,49 +765,16 @@
},
{
"cell_type": "code",
- "execution_count": 66,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "Index(['% de Desconto', '202410', 'ANALISTA', 'C-1', 'C-2', 'C-3', 'C-4',\n",
- " 'CRESCIMENTO', 'Categoria_x', 'Categoria_y', 'Chamada Promocional',\n",
- " 'Ciclo_x', 'Classe', 'Compra inteligente Próximo Ciclo',\n",
- " 'Compra inteligente Próximo Ciclo + 1', 'Cód. Combo', 'Código do Item',\n",
- " 'DESCRIÇÃO PDV', 'DURAÇÃO', 'Data Prevista Regularização', 'Descrição',\n",
- " 'Descrição do Item', 'Dias sem venda', 'EAM', 'Estoque Atual',\n",
- " 'Estoque em Transito', 'Estratégia de Promoção', 'FIM CICLO',\n",
- " 'Histórico de Vendas do Ciclo 202407',\n",
- " 'Histórico de Vendas do Ciclo 202507',\n",
- " 'Histórico de Vendas do Ciclo Atual', 'INICIO CICLO', 'Item Desativado',\n",
- " 'MARCA', 'MATCH', 'MEDIA DO HISTÓRICO', 'MEDIANA DO HISTÓRICO', 'PC_x',\n",
- " 'PC_y', 'PDV', 'PDV_SKU', 'PICO DE VENDAS 2024', 'PRECO DE COMPRA',\n",
- " 'PRECO DE VENDA', 'PROJEÇÃO DO CICLO PROMOCIONADO', 'PV GINSENG',\n",
- " 'PV_x', 'PV_y', 'Pedido Pendente', 'Pico Vendas Ultimos 6 ciclos',\n",
- " 'Preço Promocionado', 'Projeção Próximo Ciclo',\n",
- " 'Projeção Próximo Ciclo + 1', 'Promo Período Limitado?',\n",
- " 'Quantidade por caixa', 'RE Vende por', 'RE compra por',\n",
- " 'RE lucra (R$)', 'SKU', 'SKU1_x', 'SKU1_y', 'SKU2_x', 'SKU2_y',\n",
- " 'SKU_FINAL', 'Subcategoria', 'Tipo Preço', 'Tipo de Promoção',\n",
- " 'Tipo_mecanica', 'UF', 'UFPRODUTO', 'Valor do Guia', 'Veiculo',\n",
- " 'dias_ate_inicio', 'match', 'DDV PREVISTO', 'COBERTURA ATUAL',\n",
- " 'EST PROJE FINAL CICLO ATUAL'],\n",
- " dtype='object')"
- ]
- },
- "execution_count": 66,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"df_final_dedup.columns"
]
},
{
"cell_type": "code",
- "execution_count": 67,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1313,7 +783,7 @@
},
{
"cell_type": "code",
- "execution_count": 68,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1322,7 +792,7 @@
},
{
"cell_type": "code",
- "execution_count": 69,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1332,7 +802,7 @@
},
{
"cell_type": "code",
- "execution_count": 70,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1341,7 +811,7 @@
},
{
"cell_type": "code",
- "execution_count": 71,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1353,7 +823,7 @@
},
{
"cell_type": "code",
- "execution_count": 72,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1363,7 +833,7 @@
},
{
"cell_type": "code",
- "execution_count": 73,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1372,7 +842,7 @@
},
{
"cell_type": "code",
- "execution_count": 74,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1381,62 +851,18 @@
},
{
"cell_type": "code",
- "execution_count": 75,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "Index(['% de Desconto', '202410', 'ANALISTA', 'C-1', 'C-2', 'C-3', 'C-4',\n",
- " 'Categoria_x', 'Categoria_y', 'Chamada Promocional', 'Ciclo', 'Classe',\n",
- " 'Compra inteligente Próximo Ciclo',\n",
- " 'Compra inteligente Próximo Ciclo + 1', 'Cód. Combo', 'Código do Item',\n",
- " 'DESCRIÇÃO PDV', 'DURAÇÃO', 'Data Prevista Regularização', 'Descrição',\n",
- " 'Descrição do Item', 'Dias sem venda', 'EAM', 'Estoque Atual',\n",
- " 'Estoque em Transito', 'Estratégia de Promoção', 'FIM CICLO',\n",
- " 'Histórico de Vendas do Ciclo 202407',\n",
- " 'Histórico de Vendas do Ciclo 202507',\n",
- " 'Histórico de Vendas do Ciclo Atual', 'INICIO CICLO', 'Item Desativado',\n",
- " 'MARCA', 'MATCH', 'MEDIA DO HISTÓRICO', 'MEDIANA DO HISTÓRICO', 'PC_x',\n",
- " 'PC_y', 'PDV', 'PDV_SKU', 'PICO DE VENDAS 2024', 'PRECO DE COMPRA',\n",
- " 'PRECO DE VENDA', 'PROJEÇÃO DO CICLO PROMOCIONADO', 'PV GINSENG',\n",
- " 'PV_x', 'PV_y', 'Pedido Pendente', 'Pico Vendas Ultimos 6 ciclos',\n",
- " 'Preço Promocionado', 'Projeção Próximo Ciclo',\n",
- " 'Promo Período Limitado?', 'Quantidade por caixa', 'RE Vende por',\n",
- " 'RE compra por', 'RE lucra (R$)', 'SKU', 'SKU1_x', 'SKU1_y', 'SKU2_x',\n",
- " 'SKU2_y', 'Subcategoria', 'Tipo Preço', 'Tipo de Promoção',\n",
- " 'Tipo_mecanica', 'UF', 'UFPRODUTO', 'Valor do Guia', 'Veiculo', 'match',\n",
- " 'DDV PREVISTO', 'COBERTURA ATUAL', 'EST PROJE FINAL CICLO ATUAL',\n",
- " 'VENDAS R$ PV GINSENG', 'SUGESTÃO ABTASTECIMENTO\\t',\n",
- " 'VENDAS R$ ABASTECIMENTO', 'RBV 202406', 'COB PROJETADA'],\n",
- " dtype='object')"
- ]
- },
- "execution_count": 75,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"df_final_dedup.columns"
]
},
{
"cell_type": "code",
- "execution_count": 76,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "'EUD'"
- ]
- },
- "execution_count": 76,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"marca_promo = df_estoque['Arquivo_Origem'].iloc[0].replace('.csv','')\n",
"marca_promo"
@@ -1444,48 +870,16 @@
},
{
"cell_type": "code",
- "execution_count": 77,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "Index(['PDV', 'Classe', 'SKU', 'Descrição', 'Categoria_x', 'Subcategoria',\n",
- " 'C-4', 'C-3', 'C-2', 'C-1', 'Histórico de Vendas do Ciclo 202507',\n",
- " 'Histórico de Vendas do Ciclo Atual', 'Dias sem venda',\n",
- " 'Projeção Próximo Ciclo', 'Projeção Próximo Ciclo + 1', 'Estoque Atual',\n",
- " 'Estoque em Transito', 'Pedido Pendente',\n",
- " 'Compra inteligente Próximo Ciclo',\n",
- " 'Compra inteligente Próximo Ciclo + 1', 'Item Desativado',\n",
- " 'Data Prevista Regularização', 'Quantidade por caixa',\n",
- " 'Histórico de Vendas do Ciclo 202407', 'match', 'Ciclo_x', 'Veiculo',\n",
- " 'Tipo de Promoção', 'Estratégia de Promoção', 'Tipo_mecanica',\n",
- " 'Promo Período Limitado?', 'EAM', 'Categoria_y', 'Cód. Combo',\n",
- " 'Código do Item', 'Descrição do Item', 'Chamada Promocional',\n",
- " 'Valor do Guia', 'Preço Promocionado', '% de Desconto', 'RE compra por',\n",
- " 'RE Vende por', 'RE lucra (R$)', 'MATCH', 'UF', 'DESCRIÇÃO PDV',\n",
- " 'ANALISTA', 'INICIO CICLO', 'FIM CICLO', 'DURAÇÃO', 'dias_ate_inicio',\n",
- " 'SKU_FINAL', 'DDV PREVISTO', 'COBERTURA ATUAL', 'SKU1_x', 'SKU2_x',\n",
- " 'Tipo Preço', 'PC_x', 'PV_x', 'SKU1_y', 'SKU2_y', 'PC_y', 'PV_y',\n",
- " 'PRECO DE COMPRA', 'PRECO DE VENDA', 'MARCA', 'PDV_SKU', 'UFPRODUTO',\n",
- " 'PROJEÇÃO DO CICLO PROMOCIONADO', 'PICO DE VENDAS 2024',\n",
- " 'Pico Vendas Ultimos 6 ciclos', 'CRESCIMENTO', '202410',\n",
- " 'MEDIANA DO HISTÓRICO', 'MEDIA DO HISTÓRICO', 'PV GINSENG'],\n",
- " dtype='object')"
- ]
- },
- "execution_count": 77,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"df_final.columns"
]
},
{
"cell_type": "code",
- "execution_count": 78,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1527,7 +921,7 @@
},
{
"cell_type": "code",
- "execution_count": 79,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1553,7 +947,7 @@
},
{
"cell_type": "code",
- "execution_count": 80,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1564,49 +958,16 @@
},
{
"cell_type": "code",
- "execution_count": 81,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "Index(['PDV_SKU', 'SKU', 'MARCA', 'INICIO CICLO', 'FIM CICLO', 'DURAÇÃO',\n",
- " 'dias_ate_inicio', 'UFPRODUTO', 'Item Desativado',\n",
- " 'Data Prevista Regularização', 'ANALISTA', 'UF', 'PDV', 'DESCRIÇÃO PDV',\n",
- " 'Classe', 'Descrição', 'MECÂNICA 1', 'MECÂNICA 2', 'MECÂNICA 3',\n",
- " 'Estoque Atual', 'COBERTURA ATUAL', 'Estoque em Transito',\n",
- " 'Pedido Pendente', 'PICO DE VENDAS 2024',\n",
- " 'Pico Vendas Ultimos 6 ciclos', 'C-4', 'C-3', 'C-2', 'C-1',\n",
- " 'Histórico de Vendas do Ciclo Atual', 'Dias sem venda', 'Categoria_x',\n",
- " 'Subcategoria', 'Histórico de Vendas do Ciclo 202507',\n",
- " 'Projeção Próximo Ciclo', 'Projeção Próximo Ciclo + 1',\n",
- " 'Compra inteligente Próximo Ciclo',\n",
- " 'Compra inteligente Próximo Ciclo + 1', 'Quantidade por caixa',\n",
- " 'Histórico de Vendas do Ciclo 202407', 'match', 'Ciclo_x', 'Veiculo',\n",
- " 'Tipo de Promoção', 'Estratégia de Promoção', 'Tipo_mecanica',\n",
- " 'Promo Período Limitado?', 'EAM', 'Categoria_y', 'Cód. Combo',\n",
- " 'Código do Item', 'Descrição do Item', 'Chamada Promocional',\n",
- " 'Valor do Guia', 'Preço Promocionado', '% de Desconto', 'RE compra por',\n",
- " 'RE Vende por', 'RE lucra (R$)', 'MATCH', 'SKU_FINAL', 'DDV PREVISTO',\n",
- " 'SKU1_x', 'SKU2_x', 'Tipo Preço', 'PC_x', 'PV_x', 'SKU1_y', 'SKU2_y',\n",
- " 'PC_y', 'PV_y', 'PRECO DE COMPRA', 'PRECO DE VENDA',\n",
- " 'PROJEÇÃO DO CICLO PROMOCIONADO', 'CRESCIMENTO', '202410',\n",
- " 'MEDIANA DO HISTÓRICO', 'MEDIA DO HISTÓRICO', 'PV GINSENG'],\n",
- " dtype='object')"
- ]
- },
- "execution_count": 81,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"df_merged.columns"
]
},
{
"cell_type": "code",
- "execution_count": 82,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1615,7 +976,7 @@
},
{
"cell_type": "code",
- "execution_count": 83,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1624,7 +985,7 @@
},
{
"cell_type": "code",
- "execution_count": 84,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1635,7 +996,7 @@
},
{
"cell_type": "code",
- "execution_count": 85,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1646,7 +1007,7 @@
},
{
"cell_type": "code",
- "execution_count": 87,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
diff --git a/promoção/promoção_boti_ciclo07.ipynb b/promoção/promoção_boti_ciclo07.ipynb
index a9f7606..ad04e7a 100644
--- a/promoção/promoção_boti_ciclo07.ipynb
+++ b/promoção/promoção_boti_ciclo07.ipynb
@@ -2,7 +2,7 @@
"cells": [
{
"cell_type": "code",
- "execution_count": 1,
+ "execution_count": 101,
"metadata": {},
"outputs": [],
"source": [
@@ -17,7 +17,7 @@
},
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": 102,
"metadata": {},
"outputs": [],
"source": [
@@ -26,7 +26,7 @@
},
{
"cell_type": "code",
- "execution_count": 3,
+ "execution_count": 103,
"metadata": {},
"outputs": [],
"source": [
@@ -44,11 +44,11 @@
},
{
"cell_type": "code",
- "execution_count": 4,
+ "execution_count": 104,
"metadata": {},
"outputs": [],
"source": [
- "df_tabela = pd.read_excel(r\"C:\\Users\\joao.herculano\\GRUPO GINSENG\\Assistência Suprimentos - 2025\\SUPRIMENTOS\\DB_PROMOÇÕES\\BOTICARIO\\C10\\TABELA DE PEDIDOS\\Pedidos Semanais Especiais - BOT - 202510.xlsx\")\n",
+ "df_tabela = pd.read_excel(r\"C:\\Users\\joao.herculano\\GRUPO GINSENG\\Assistência Suprimentos - 2025\\SUPRIMENTOS\\DB_PROMOÇÕES\\BOTICARIO\\C11\\TABELA DE PEDIDOS\\Pedidos Semanais Especiais - BOT - 202511 (1).xlsx\")\n",
"\n",
"df_tabela = df_tabela[df_tabela['Ação revendedor'].notna() | df_tabela['Ação consumidor'].notna()]\n",
"\n",
@@ -76,43 +76,36 @@
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": 105,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
- "Index(['Ciclo', 'Região', 'Canal', 'Código', 'Descrição', 'IAF',\n",
- " 'Tipo de pedido', 'Foco', 'Unidade de negócio', 'Marca', 'Categoria',\n",
- " 'Subcategoria', 'Quantidade por caixa', 'Tipo de promoção', 'Catálogo',\n",
- " 'Tipo de produto', 'Ação consumidor',\n",
- " 'Percentual de desconto consumidor', 'Ação revendedor',\n",
- " 'Percentual de desconto revendedor', 'Sortimento P', 'Sortimento M',\n",
- " 'Sortimento G', 'MATCH'],\n",
- " dtype='object')"
+ "(332,)"
]
},
- "execution_count": 5,
+ "execution_count": 105,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
- "df_tabela.columns"
+ "df_tabela['Código'].shape"
]
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": 106,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
- "(702, 24)"
+ "(332, 24)"
]
},
- "execution_count": 6,
+ "execution_count": 106,
"metadata": {},
"output_type": "execute_result"
}
@@ -123,17 +116,17 @@
},
{
"cell_type": "code",
- "execution_count": 7,
+ "execution_count": 107,
"metadata": {},
"outputs": [],
"source": [
- "df_pdv = pd.read_excel(r\"C:\\Users\\joao.herculano\\GRUPO GINSENG\\Assistência Suprimentos - 2025\\SUPRIMENTOS\\DB_PROMOÇÕES\\BOTICARIO\\C09\\arquivos pra gerar\\pdvs\\PDV_ATT.xlsx\")\n",
+ "df_pdv = pd.read_excel(r\"C:\\Users\\joao.herculano\\Documents\\PDV_ATT.xlsx\")\n",
"\n",
- "df_pdv_origi = pd.read_excel(r\"C:\\Users\\joao.herculano\\GRUPO GINSENG\\Assistência Suprimentos - 2025\\SUPRIMENTOS\\DB_PROMOÇÕES\\BOTICARIO\\C09\\arquivos pra gerar\\pdvs\\PDV_ATT.xlsx\")\n",
+ "df_pdv_origi = pd.read_excel(r\"C:\\Users\\joao.herculano\\Documents\\PDV_ATT.xlsx\")\n",
"\n",
"df_pdv = df_pdv.rename(columns={'DESCRIÇÃO':'DESCRIÇÃO PDV'})\n",
"\n",
- "df_pdv = df_pdv[df_pdv['STATUS']!=\"INATIVO\"]\n",
+ "df_pdv = df_pdv[df_pdv['GESTÃO']!=\"Inativa\"]\n",
"\n",
"df_pdv = df_pdv.drop(columns=['REGIÃO', 'ESTADO','CIDADE','GESTÃO', 'STATUS'])\n",
"\n",
@@ -149,7 +142,7 @@
},
{
"cell_type": "code",
- "execution_count": 8,
+ "execution_count": 108,
"metadata": {},
"outputs": [],
"source": [
@@ -158,24 +151,24 @@
},
{
"cell_type": "code",
- "execution_count": 9,
+ "execution_count": 109,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
- "C:\\Users\\joao.herculano\\AppData\\Local\\Temp\\ipykernel_54556\\4129764549.py:10: DtypeWarning: Columns (7) have mixed types. Specify dtype option on import or set low_memory=False.\n",
+ "C:\\Users\\joao.herculano\\AppData\\Local\\Temp\\ipykernel_17756\\3645011820.py:10: DtypeWarning: Columns (6,7) have mixed types. Specify dtype option on import or set low_memory=False.\n",
" df_draft = pd.concat([pd.read_csv(file) for file in csv_files], ignore_index=True)\n"
]
},
{
"data": {
"text/plain": [
- "(114430, 46)"
+ "(127198, 46)"
]
},
- "execution_count": 9,
+ "execution_count": 109,
"metadata": {},
"output_type": "execute_result"
}
@@ -184,7 +177,7 @@
"# Caminho onde estão as subpastas com os arquivos CSV\n",
"\n",
"# Set the path to the folder containing CSV files\n",
- "folder_path = r\"C:\\Users\\joao.herculano\\GRUPO GINSENG\\Assistência Suprimentos - 2025\\SUPRIMENTOS\\BD_LANÇAMENTOS\\BOT\\BOT - C11\\atualização\\DRAFT_\" # arquivo dos drafts\n",
+ "folder_path = r\"C:\\Users\\joao.herculano\\GRUPO GINSENG\\Assistência Suprimentos - 2025\\SUPRIMENTOS\\DB_PROMOÇÕES\\BOTICARIO\\C11\\DRAFT_PDVS_SEM_\" # arquivo dos drafts\n",
"\n",
"# Pattern to match all CSV files\n",
"csv_files = glob.glob(os.path.join(folder_path, '*.csv'))\n",
@@ -197,7 +190,7 @@
},
{
"cell_type": "code",
- "execution_count": 10,
+ "execution_count": 110,
"metadata": {},
"outputs": [],
"source": [
@@ -211,14 +204,14 @@
},
{
"cell_type": "code",
- "execution_count": 11,
+ "execution_count": 111,
"metadata": {},
"outputs": [],
"source": [
"\n",
"\n",
"# Caminho onde estão as subpastas com os arquivos CSV\n",
- "pasta_entrada = r\"C:\\Users\\joao.herculano\\GRUPO GINSENG\\Assistência Suprimentos - 2025\\SUPRIMENTOS\\BD_LANÇAMENTOS\\BOT\\BOT - C11\\atualização\\estoque\"\n",
+ "pasta_entrada = r\"C:\\Users\\joao.herculano\\GRUPO GINSENG\\Assistência Suprimentos - 2025\\SUPRIMENTOS\\DB_PROMOÇÕES\\BOTICARIO\\C11\\estoque\"\n",
"\n",
"# Lista todas as subpastas dentro de \"ESTOQUE\"\n",
"subpastas = [os.path.join(pasta_entrada, d) for d in os.listdir(pasta_entrada) if os.path.isdir(os.path.join(pasta_entrada, d))]\n",
@@ -252,7 +245,7 @@
},
{
"cell_type": "code",
- "execution_count": 12,
+ "execution_count": 112,
"metadata": {},
"outputs": [
{
@@ -268,7 +261,7 @@
" dtype='object')"
]
},
- "execution_count": 12,
+ "execution_count": 112,
"metadata": {},
"output_type": "execute_result"
}
@@ -279,11 +272,100 @@
},
{
"cell_type": "code",
- "execution_count": 13,
+ "execution_count": 113,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(332, 24)"
+ ]
+ },
+ "execution_count": 113,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df_tabela.shape"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 114,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Canal\n",
+ "Todos 183\n",
+ "Loja 72\n",
+ "VD 67\n",
+ "Loja | VD 6\n",
+ "Ecomm | VD 2\n",
+ "Ecomm | Loja 2\n",
+ "Name: count, dtype: int64"
+ ]
+ },
+ "execution_count": 114,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df_tabela['Canal'].value_counts()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
- "df_tabela = pd.merge(left=df_tabela,right=df_estoque[['SKU','SKU_FINAL']],left_on='Código',right_on='SKU',how='inner')\n",
+ "df_estoque['SKU_FINAL'] = df_estoque['SKU_FINAL'].astype('Int64')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "df_tabela = pd.merge(left=df_tabela,right=df_estoque[['SKU','SKU_FINAL']],left_on='Código',right_on='SKU',how='left')\n",
+ "\n",
+ "df_tabela['Código'] = df_tabela['SKU_FINAL']\n",
+ "\n",
+ "df_tabela = df_tabela.drop(columns=['SKU','SKU_FINAL'])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "315"
+ ]
+ },
+ "execution_count": 16,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df_tabela['Código'].nunique()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "df_tabela = pd.merge(left=df_tabela,right=df_estoque[['SKU','SKU_FINAL']],left_on='Código',right_on='SKU_FINAL',how='left')\n",
"\n",
"df_tabela['Código'] = df_tabela['SKU_FINAL']\n",
"\n",
@@ -293,7 +375,461 @@
},
{
"cell_type": "code",
- "execution_count": 14,
+ "execution_count": 18,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "df_tabela = df_tabela.drop_duplicates()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "df_tabela.to_excel(r\"C:\\Users\\joao.herculano\\GRUPO GINSENG\\Assistência Suprimentos - 2025\\SUPRIMENTOS\\DB_PROMOÇÕES\\BOTICARIO\\C11\\teste.xlsx\",index=False)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Ciclo | \n",
+ " Região | \n",
+ " Canal | \n",
+ " Código | \n",
+ " Descrição | \n",
+ " IAF | \n",
+ " Tipo de pedido | \n",
+ " Foco | \n",
+ " Unidade de negócio | \n",
+ " Marca | \n",
+ " ... | \n",
+ " Catálogo | \n",
+ " Tipo de produto | \n",
+ " Ação consumidor | \n",
+ " Percentual de desconto consumidor | \n",
+ " Ação revendedor | \n",
+ " Percentual de desconto revendedor | \n",
+ " Sortimento P | \n",
+ " Sortimento M | \n",
+ " Sortimento G | \n",
+ " MATCH | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 202511 | \n",
+ " NNE | \n",
+ " VD | \n",
+ " 74438 | \n",
+ " ARBO DES COL 100ml V4 | \n",
+ " Não | \n",
+ " Semanal | \n",
+ " Não | \n",
+ " BOT | \n",
+ " ARBO | \n",
+ " ... | \n",
+ " Sim | \n",
+ " REGULAR | \n",
+ " NaN | \n",
+ " 0,00 | \n",
+ " VD - FAVORITOS PARA INÍCIOS ARBO - C11 | \n",
+ " 35,00 | \n",
+ " Sortido | \n",
+ " Sortido | \n",
+ " Sortido | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 7440 | \n",
+ " 202511 | \n",
+ " NNE | \n",
+ " VD | \n",
+ " 57210 | \n",
+ " AU MIGOS PETS BANHO SECO ADULTOS 240ml | \n",
+ " Não | \n",
+ " Semanal | \n",
+ " Não | \n",
+ " BOT | \n",
+ " AU.MIGOS PETS | \n",
+ " ... | \n",
+ " Sim | \n",
+ " REGULAR | \n",
+ " NaN | \n",
+ " 0,00 | \n",
+ " VD - LUCRATIVIDADE BASE AUMIGOS - BRONZE | VD ... | \n",
+ " 10,00 | 13,00 | 15,00 | 17,00 | 19,00 | 20,00 ... | \n",
+ " Sortido | \n",
+ " Sortido | \n",
+ " Sortido | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 12624 | \n",
+ " 202511 | \n",
+ " NNE | \n",
+ " VD | \n",
+ " 57211 | \n",
+ " AU MIGOS PETS COL ADULTOS 60ml | \n",
+ " Não | \n",
+ " Semanal | \n",
+ " Não | \n",
+ " BOT | \n",
+ " AU.MIGOS PETS | \n",
+ " ... | \n",
+ " Sim | \n",
+ " REGULAR | \n",
+ " NaN | \n",
+ " 0,00 | \n",
+ " VD - LUCRATIVIDADE BASE AUMIGOS - BRONZE | VD ... | \n",
+ " 10,00 | 13,00 | 15,00 | 17,00 | 19,00 | 20,00 ... | \n",
+ " Sortido | \n",
+ " Sortido | \n",
+ " Sortido | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 17953 | \n",
+ " 202511 | \n",
+ " NNE | \n",
+ " VD | \n",
+ " 57209 | \n",
+ " AU MIGOS PETS COL FILHOTES 60ml | \n",
+ " Não | \n",
+ " Semanal | \n",
+ " Não | \n",
+ " BOT | \n",
+ " AU.MIGOS PETS | \n",
+ " ... | \n",
+ " Sim | \n",
+ " REGULAR | \n",
+ " NaN | \n",
+ " 0,00 | \n",
+ " VD - LUCRATIVIDADE BASE AUMIGOS - BRONZE | VD ... | \n",
+ " 10,00 | 13,00 | 15,00 | 17,00 | 19,00 | 20,00 ... | \n",
+ " Sortido | \n",
+ " Sortido | \n",
+ " Sortido | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 23578 | \n",
+ " 202511 | \n",
+ " NNE | \n",
+ " VD | \n",
+ " 57208 | \n",
+ " AU MIGOS PETS COND ADULTOS 400ml | \n",
+ " Não | \n",
+ " Semanal | \n",
+ " Não | \n",
+ " BOT | \n",
+ " AU.MIGOS PETS | \n",
+ " ... | \n",
+ " Sim | \n",
+ " REGULAR | \n",
+ " NaN | \n",
+ " 0,00 | \n",
+ " VD - LUCRATIVIDADE BASE AUMIGOS - BRONZE | VD ... | \n",
+ " 10,00 | 13,00 | 15,00 | 17,00 | 19,00 | 20,00 ... | \n",
+ " Sortido | \n",
+ " Sortido | \n",
+ " Sortido | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " | 1918086 | \n",
+ " 202511 | \n",
+ " NNE | \n",
+ " Loja | \n",
+ " 55477 | \n",
+ " SCH BOTIK SERUM FAC RESV/SILICIO VDA 2ml | \n",
+ " Não | \n",
+ " Semanal | \n",
+ " Não | \n",
+ " BOT | \n",
+ " BOTIK | \n",
+ " ... | \n",
+ " Sim | \n",
+ " REGULAR | \n",
+ " [BOT] AÇÃO DE FLUXO BOTIK CICACERAMIDAS COM DE... | \n",
+ " 10,00 | \n",
+ " [BOT] AÇÃO DE FLUXO BOTIK CICACERAMIDAS COM DE... | \n",
+ " 0,00 | \n",
+ " Sortido | \n",
+ " Sortido | \n",
+ " Sortido | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 1918662 | \n",
+ " 202511 | \n",
+ " NNE | \n",
+ " Ecomm | VD | \n",
+ " 83961 | \n",
+ " ARBO DES BDY SPR 100ml V6 | \n",
+ " Não | \n",
+ " Semanal | \n",
+ " Não | \n",
+ " BOT | \n",
+ " ARBO | \n",
+ " ... | \n",
+ " Sim | \n",
+ " REGULAR | \n",
+ " [ECOMM] PAIS 2025 - COMBO ARBO - NNE | \n",
+ " 21,49 | \n",
+ " VD - FAVORITOS PARA INÍCIOS BODY SPRAY ARBO - C11 | \n",
+ " 35,00 | \n",
+ " Sortido | \n",
+ " Sortido | \n",
+ " Sortido | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 1926362 | \n",
+ " 202511 | \n",
+ " NNE | \n",
+ " Ecomm | VD | \n",
+ " 73614 | \n",
+ " COFFEE DES COL DUO MAN 100ml | \n",
+ " Não | \n",
+ " Semanal | \n",
+ " Não | \n",
+ " BOT | \n",
+ " COFFEE | \n",
+ " ... | \n",
+ " Sim | \n",
+ " REGULAR | \n",
+ " [ECOMM] PAIS 2025 - COMBO COFFEE E BOTMEN | \n",
+ " 18,67 | \n",
+ " VD - COFFEE PERFUMARIA MASCULINA - LUCRO EXTRA... | \n",
+ " 20,00 | 25,00 | 30,00 | \n",
+ " Sortido | \n",
+ " Sortido | \n",
+ " Sortido | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 1931987 | \n",
+ " 202511 | \n",
+ " NNE | \n",
+ " Ecomm | Loja | \n",
+ " 52948 | \n",
+ " NSPA CREM ESF CPO AMEI DOUR 200g | \n",
+ " Não | \n",
+ " Semanal | \n",
+ " Não | \n",
+ " BOT | \n",
+ " NATIVA SPA | \n",
+ " ... | \n",
+ " Sim | \n",
+ " REGULAR | \n",
+ " [LOJA/ECOMM] ITENS SELECIONADOS DE NATIVA SPA ... | \n",
+ " 7,82 | \n",
+ " [LOJA/ECOMM] ITENS SELECIONADOS DE NATIVA SPA ... | \n",
+ " 0,00 | \n",
+ " Não sortido | \n",
+ " Sortido | \n",
+ " Sortido | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 1937171 | \n",
+ " 202511 | \n",
+ " NNE | \n",
+ " Ecomm | Loja | \n",
+ " 58987 | \n",
+ " NSPA OL BIF DES HID CPO UVA MERL 200ml | \n",
+ " Não | \n",
+ " Semanal | \n",
+ " Não | \n",
+ " BOT | \n",
+ " NATIVA SPA | \n",
+ " ... | \n",
+ " Sim | \n",
+ " REGULAR | \n",
+ " [LOJA/ECOMM] ITENS SELECIONADOS DE NATIVA SPA ... | \n",
+ " 14,88 | \n",
+ " [LOJA/ECOMM] ITENS SELECIONADOS DE NATIVA SPA ... | \n",
+ " 0,00 | \n",
+ " Sortido | \n",
+ " Sortido | \n",
+ " Sortido | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
332 rows × 24 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Ciclo Região Canal Código \\\n",
+ "0 202511 NNE VD 74438 \n",
+ "7440 202511 NNE VD 57210 \n",
+ "12624 202511 NNE VD 57211 \n",
+ "17953 202511 NNE VD 57209 \n",
+ "23578 202511 NNE VD 57208 \n",
+ "... ... ... ... ... \n",
+ "1918086 202511 NNE Loja 55477 \n",
+ "1918662 202511 NNE Ecomm | VD 83961 \n",
+ "1926362 202511 NNE Ecomm | VD 73614 \n",
+ "1931987 202511 NNE Ecomm | Loja 52948 \n",
+ "1937171 202511 NNE Ecomm | Loja 58987 \n",
+ "\n",
+ " Descrição IAF Tipo de pedido Foco \\\n",
+ "0 ARBO DES COL 100ml V4 Não Semanal Não \n",
+ "7440 AU MIGOS PETS BANHO SECO ADULTOS 240ml Não Semanal Não \n",
+ "12624 AU MIGOS PETS COL ADULTOS 60ml Não Semanal Não \n",
+ "17953 AU MIGOS PETS COL FILHOTES 60ml Não Semanal Não \n",
+ "23578 AU MIGOS PETS COND ADULTOS 400ml Não Semanal Não \n",
+ "... ... ... ... ... \n",
+ "1918086 SCH BOTIK SERUM FAC RESV/SILICIO VDA 2ml Não Semanal Não \n",
+ "1918662 ARBO DES BDY SPR 100ml V6 Não Semanal Não \n",
+ "1926362 COFFEE DES COL DUO MAN 100ml Não Semanal Não \n",
+ "1931987 NSPA CREM ESF CPO AMEI DOUR 200g Não Semanal Não \n",
+ "1937171 NSPA OL BIF DES HID CPO UVA MERL 200ml Não Semanal Não \n",
+ "\n",
+ " Unidade de negócio Marca ... Catálogo Tipo de produto \\\n",
+ "0 BOT ARBO ... Sim REGULAR \n",
+ "7440 BOT AU.MIGOS PETS ... Sim REGULAR \n",
+ "12624 BOT AU.MIGOS PETS ... Sim REGULAR \n",
+ "17953 BOT AU.MIGOS PETS ... Sim REGULAR \n",
+ "23578 BOT AU.MIGOS PETS ... Sim REGULAR \n",
+ "... ... ... ... ... ... \n",
+ "1918086 BOT BOTIK ... Sim REGULAR \n",
+ "1918662 BOT ARBO ... Sim REGULAR \n",
+ "1926362 BOT COFFEE ... Sim REGULAR \n",
+ "1931987 BOT NATIVA SPA ... Sim REGULAR \n",
+ "1937171 BOT NATIVA SPA ... Sim REGULAR \n",
+ "\n",
+ " Ação consumidor \\\n",
+ "0 NaN \n",
+ "7440 NaN \n",
+ "12624 NaN \n",
+ "17953 NaN \n",
+ "23578 NaN \n",
+ "... ... \n",
+ "1918086 [BOT] AÇÃO DE FLUXO BOTIK CICACERAMIDAS COM DE... \n",
+ "1918662 [ECOMM] PAIS 2025 - COMBO ARBO - NNE \n",
+ "1926362 [ECOMM] PAIS 2025 - COMBO COFFEE E BOTMEN \n",
+ "1931987 [LOJA/ECOMM] ITENS SELECIONADOS DE NATIVA SPA ... \n",
+ "1937171 [LOJA/ECOMM] ITENS SELECIONADOS DE NATIVA SPA ... \n",
+ "\n",
+ " Percentual de desconto consumidor \\\n",
+ "0 0,00 \n",
+ "7440 0,00 \n",
+ "12624 0,00 \n",
+ "17953 0,00 \n",
+ "23578 0,00 \n",
+ "... ... \n",
+ "1918086 10,00 \n",
+ "1918662 21,49 \n",
+ "1926362 18,67 \n",
+ "1931987 7,82 \n",
+ "1937171 14,88 \n",
+ "\n",
+ " Ação revendedor \\\n",
+ "0 VD - FAVORITOS PARA INÍCIOS ARBO - C11 \n",
+ "7440 VD - LUCRATIVIDADE BASE AUMIGOS - BRONZE | VD ... \n",
+ "12624 VD - LUCRATIVIDADE BASE AUMIGOS - BRONZE | VD ... \n",
+ "17953 VD - LUCRATIVIDADE BASE AUMIGOS - BRONZE | VD ... \n",
+ "23578 VD - LUCRATIVIDADE BASE AUMIGOS - BRONZE | VD ... \n",
+ "... ... \n",
+ "1918086 [BOT] AÇÃO DE FLUXO BOTIK CICACERAMIDAS COM DE... \n",
+ "1918662 VD - FAVORITOS PARA INÍCIOS BODY SPRAY ARBO - C11 \n",
+ "1926362 VD - COFFEE PERFUMARIA MASCULINA - LUCRO EXTRA... \n",
+ "1931987 [LOJA/ECOMM] ITENS SELECIONADOS DE NATIVA SPA ... \n",
+ "1937171 [LOJA/ECOMM] ITENS SELECIONADOS DE NATIVA SPA ... \n",
+ "\n",
+ " Percentual de desconto revendedor Sortimento P \\\n",
+ "0 35,00 Sortido \n",
+ "7440 10,00 | 13,00 | 15,00 | 17,00 | 19,00 | 20,00 ... Sortido \n",
+ "12624 10,00 | 13,00 | 15,00 | 17,00 | 19,00 | 20,00 ... Sortido \n",
+ "17953 10,00 | 13,00 | 15,00 | 17,00 | 19,00 | 20,00 ... Sortido \n",
+ "23578 10,00 | 13,00 | 15,00 | 17,00 | 19,00 | 20,00 ... Sortido \n",
+ "... ... ... \n",
+ "1918086 0,00 Sortido \n",
+ "1918662 35,00 Sortido \n",
+ "1926362 20,00 | 25,00 | 30,00 Sortido \n",
+ "1931987 0,00 Não sortido \n",
+ "1937171 0,00 Sortido \n",
+ "\n",
+ " Sortimento M Sortimento G MATCH \n",
+ "0 Sortido Sortido 1 \n",
+ "7440 Sortido Sortido 1 \n",
+ "12624 Sortido Sortido 1 \n",
+ "17953 Sortido Sortido 1 \n",
+ "23578 Sortido Sortido 1 \n",
+ "... ... ... ... \n",
+ "1918086 Sortido Sortido 1 \n",
+ "1918662 Sortido Sortido 1 \n",
+ "1926362 Sortido Sortido 1 \n",
+ "1931987 Sortido Sortido 1 \n",
+ "1937171 Sortido Sortido 1 \n",
+ "\n",
+ "[332 rows x 24 columns]"
+ ]
+ },
+ "execution_count": 20,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df_tabela"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
@@ -305,7 +841,7 @@
},
{
"cell_type": "code",
- "execution_count": 15,
+ "execution_count": 22,
"metadata": {},
"outputs": [
{
@@ -345,73 +881,73 @@
" \n",
" \n",
" | 0 | \n",
- " 90495 | \n",
+ " 94394 | \n",
" - | \n",
- " 20005 | \n",
- " 100.0 | \n",
+ " 20968 | \n",
+ " 0.0 | \n",
" 0.0 | \n",
" 0.0 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" BOT.csv | \n",
- " 90495 | \n",
+ " 94394 | \n",
"
\n",
" \n",
" | 1 | \n",
- " 90246 | \n",
+ " 94394 | \n",
" - | \n",
- " 4560 | \n",
+ " 20969 | \n",
+ " 0.0 | \n",
" 0.0 | \n",
- " NaN | \n",
" 0.0 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" BOT.csv | \n",
- " 90246 | \n",
+ " 94394 | \n",
"
\n",
" \n",
" | 2 | \n",
- " 90246 | \n",
+ " 94394 | \n",
" - | \n",
- " 5699 | \n",
+ " 20970 | \n",
+ " 0.0 | \n",
" 0.0 | \n",
- " NaN | \n",
" 0.0 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" BOT.csv | \n",
- " 90246 | \n",
+ " 94394 | \n",
"
\n",
" \n",
" | 3 | \n",
- " 90246 | \n",
+ " 94394 | \n",
" - | \n",
- " 12522 | \n",
+ " 20986 | \n",
+ " 0.0 | \n",
" 0.0 | \n",
- " NaN | \n",
" 0.0 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" BOT.csv | \n",
- " 90246 | \n",
+ " 94394 | \n",
"
\n",
" \n",
" | 4 | \n",
- " 90246 | \n",
+ " 94394 | \n",
" - | \n",
- " 12817 | \n",
+ " 20988 | \n",
+ " 0.0 | \n",
" 0.0 | \n",
- " NaN | \n",
" 0.0 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" BOT.csv | \n",
- " 90246 | \n",
+ " 94394 | \n",
"
\n",
" \n",
" | ... | \n",
@@ -428,10 +964,24 @@
" ... | \n",
"
\n",
" \n",
- " | 441216 | \n",
- " 1594 | \n",
+ " 454599 | \n",
+ " 4438 | \n",
" - | \n",
- " 20995 | \n",
+ " 910291 | \n",
+ " 9.0 | \n",
+ " 10.0 | \n",
+ " 0.0 | \n",
+ " 0.78 | \n",
+ " 11.0 | \n",
+ " 24.0 | \n",
+ " QDB.csv | \n",
+ " 4438 | \n",
+ "
\n",
+ " \n",
+ " | 454600 | \n",
+ " 4431 | \n",
+ " - | \n",
+ " 21007 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0.0 | \n",
@@ -439,56 +989,42 @@
" NaN | \n",
" NaN | \n",
" QDB.csv | \n",
- " 1594 | \n",
+ " 4431 | \n",
"
\n",
" \n",
- " | 441217 | \n",
- " 1594 | \n",
+ " 454601 | \n",
+ " 4431 | \n",
" - | \n",
- " 20998 | \n",
+ " 910173 | \n",
+ " 2.0 | \n",
+ " 10.0 | \n",
" 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
+ " 0.40 | \n",
+ " 5.0 | \n",
+ " 30.0 | \n",
" QDB.csv | \n",
- " 1594 | \n",
+ " 4431 | \n",
"
\n",
" \n",
- " | 441218 | \n",
- " 1594 | \n",
+ " 454602 | \n",
+ " 4431 | \n",
" - | \n",
- " 21001 | \n",
+ " 910291 | \n",
+ " 1.0 | \n",
+ " 10.0 | \n",
" 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
+ " 0.78 | \n",
+ " 1.0 | \n",
+ " 14.0 | \n",
" QDB.csv | \n",
- " 1594 | \n",
+ " 4431 | \n",
"
\n",
" \n",
- " | 441219 | \n",
+ " 454603 | \n",
" 1594 | \n",
" - | \n",
- " 21278 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " QDB.csv | \n",
- " 1594 | \n",
- "
\n",
- " \n",
- " | 441220 | \n",
- " 1594 | \n",
- " - | \n",
- " 21383 | \n",
- " 0.0 | \n",
+ " 21007 | \n",
+ " 2.0 | \n",
" 0.0 | \n",
" 0.0 | \n",
" NaN | \n",
@@ -499,22 +1035,22 @@
"
\n",
" \n",
"\n",
- "441221 rows × 11 columns
\n",
+ "454604 rows × 11 columns
\n",
""
],
"text/plain": [
- " SKU SKU_PARA PDV ESTOQUE ATUAL ESTOQUE EM TRANSITO \\\n",
- "0 90495 - 20005 100.0 0.0 \n",
- "1 90246 - 4560 0.0 NaN \n",
- "2 90246 - 5699 0.0 NaN \n",
- "3 90246 - 12522 0.0 NaN \n",
- "4 90246 - 12817 0.0 NaN \n",
- "... ... ... ... ... ... \n",
- "441216 1594 - 20995 0.0 0.0 \n",
- "441217 1594 - 20998 0.0 0.0 \n",
- "441218 1594 - 21001 0.0 0.0 \n",
- "441219 1594 - 21278 0.0 0.0 \n",
- "441220 1594 - 21383 0.0 0.0 \n",
+ " SKU SKU_PARA PDV ESTOQUE ATUAL ESTOQUE EM TRANSITO \\\n",
+ "0 94394 - 20968 0.0 0.0 \n",
+ "1 94394 - 20969 0.0 0.0 \n",
+ "2 94394 - 20970 0.0 0.0 \n",
+ "3 94394 - 20986 0.0 0.0 \n",
+ "4 94394 - 20988 0.0 0.0 \n",
+ "... ... ... ... ... ... \n",
+ "454599 4438 - 910291 9.0 10.0 \n",
+ "454600 4431 - 21007 0.0 0.0 \n",
+ "454601 4431 - 910173 2.0 10.0 \n",
+ "454602 4431 - 910291 1.0 10.0 \n",
+ "454603 1594 - 21007 2.0 0.0 \n",
"\n",
" PEDIDO PENDENTE DDV PREVISTO COBERTURA ATUAL \\\n",
"0 0.0 NaN NaN \n",
@@ -523,29 +1059,29 @@
"3 0.0 NaN NaN \n",
"4 0.0 NaN NaN \n",
"... ... ... ... \n",
- "441216 0.0 NaN NaN \n",
- "441217 0.0 NaN NaN \n",
- "441218 0.0 NaN NaN \n",
- "441219 0.0 NaN NaN \n",
- "441220 0.0 NaN NaN \n",
+ "454599 0.0 0.78 11.0 \n",
+ "454600 0.0 NaN NaN \n",
+ "454601 0.0 0.40 5.0 \n",
+ "454602 0.0 0.78 1.0 \n",
+ "454603 0.0 NaN NaN \n",
"\n",
- " COBERTURA ATUAL + TRANSITO Arquivo_Origem SKU_FINAL \n",
- "0 NaN BOT.csv 90495 \n",
- "1 NaN BOT.csv 90246 \n",
- "2 NaN BOT.csv 90246 \n",
- "3 NaN BOT.csv 90246 \n",
- "4 NaN BOT.csv 90246 \n",
- "... ... ... ... \n",
- "441216 NaN QDB.csv 1594 \n",
- "441217 NaN QDB.csv 1594 \n",
- "441218 NaN QDB.csv 1594 \n",
- "441219 NaN QDB.csv 1594 \n",
- "441220 NaN QDB.csv 1594 \n",
+ " COBERTURA ATUAL + TRANSITO Arquivo_Origem SKU_FINAL \n",
+ "0 NaN BOT.csv 94394 \n",
+ "1 NaN BOT.csv 94394 \n",
+ "2 NaN BOT.csv 94394 \n",
+ "3 NaN BOT.csv 94394 \n",
+ "4 NaN BOT.csv 94394 \n",
+ "... ... ... ... \n",
+ "454599 24.0 QDB.csv 4438 \n",
+ "454600 NaN QDB.csv 4431 \n",
+ "454601 30.0 QDB.csv 4431 \n",
+ "454602 14.0 QDB.csv 4431 \n",
+ "454603 NaN QDB.csv 1594 \n",
"\n",
- "[441221 rows x 11 columns]"
+ "[454604 rows x 11 columns]"
]
},
- "execution_count": 15,
+ "execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
@@ -556,7 +1092,7 @@
},
{
"cell_type": "code",
- "execution_count": 16,
+ "execution_count": 23,
"metadata": {},
"outputs": [
{
@@ -569,7 +1105,7 @@
}
],
"source": [
- "df_bi_preco = pd.read_excel(r\"C:\\Users\\joao.herculano\\GRUPO GINSENG\\Assistência Suprimentos - 2025\\SUPRIMENTOS\\DB_PROMOÇÕES\\BOTICARIO\\C09\\arquivos pra gerar\\preços bi\\TABELA DE PREÇOS (4).xlsx\")\n",
+ "df_bi_preco = pd.read_excel(r\"C:\\Users\\joao.herculano\\GRUPO GINSENG\\Assistência Suprimentos - 2025\\SUPRIMENTOS\\DB_PROMOÇÕES\\BOTICARIO\\C11\\preço BI\\TABELA DE PREÇOS (2).xlsx\")\n",
"\n",
"df_bi_preco = df_bi_preco.drop(columns=['Descrição','Tipo Preço','CATEGORIA','LINHA','MARCA'])\n",
"\n"
@@ -577,22 +1113,22 @@
},
{
"cell_type": "code",
- "execution_count": 17,
+ "execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
- "(44744, 31)"
+ "(25232, 31)"
]
},
- "execution_count": 17,
+ "execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
- "df_final = pd.merge(left=df_tabela,right=df_pdv,on='MATCH',how='inner')\n",
+ "df_final = pd.merge(left=df_tabela,right=df_pdv,on='MATCH',how='left')\n",
"\n",
"df_final = df_final.drop_duplicates()\n",
"\n",
@@ -601,16 +1137,16 @@
},
{
"cell_type": "code",
- "execution_count": 18,
+ "execution_count": 25,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
- "(44744, 62)"
+ "(25232, 62)"
]
},
- "execution_count": 18,
+ "execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
@@ -626,17 +1162,16 @@
},
{
"cell_type": "code",
- "execution_count": 19,
+ "execution_count": 26,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
- "26447 2.0\n",
- "Name: Histórico de Vendas do Ciclo 202505, dtype: float64"
+ "Series([], Name: Histórico de Vendas do Ciclo 202505, dtype: float64)"
]
},
- "execution_count": 19,
+ "execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
@@ -647,7 +1182,7 @@
},
{
"cell_type": "code",
- "execution_count": 20,
+ "execution_count": 27,
"metadata": {},
"outputs": [],
"source": [
@@ -657,7 +1192,7 @@
},
{
"cell_type": "code",
- "execution_count": 21,
+ "execution_count": 28,
"metadata": {},
"outputs": [],
"source": [
@@ -666,7 +1201,7 @@
},
{
"cell_type": "code",
- "execution_count": 22,
+ "execution_count": 29,
"metadata": {},
"outputs": [],
"source": [
@@ -689,7 +1224,7 @@
},
{
"cell_type": "code",
- "execution_count": 23,
+ "execution_count": 30,
"metadata": {},
"outputs": [
{
@@ -726,16 +1261,16 @@
" \n",
" \n",
" \n",
- " | 2199 | \n",
- " C202510 | \n",
- " 2025-06-30 | \n",
- " 2025-07-20 | \n",
+ " 2241 | \n",
+ " C202511 | \n",
+ " 2025-07-21 | \n",
+ " 2025-08-10 | \n",
" 21 | \n",
- " 2025-06-30 | \n",
- " 10 | \n",
+ " 2025-07-21 | \n",
+ " 11 | \n",
" C2025 | \n",
- " C202512 | \n",
- " 26 | \n",
+ " C202513 | \n",
+ " 38 | \n",
"
\n",
" \n",
"\n",
@@ -743,13 +1278,13 @@
],
"text/plain": [
" Ciclo INICIO CICLO FIM CICLO DURAÇÃO Date NUM_CICLO \\\n",
- "2199 C202510 2025-06-30 2025-07-20 21 2025-06-30 10 \n",
+ "2241 C202511 2025-07-21 2025-08-10 21 2025-07-21 11 \n",
"\n",
" ANO_CICLO CICLOMAIS2 dias_ate_inicio \n",
- "2199 C2025 C202512 26 "
+ "2241 C2025 C202513 38 "
]
},
- "execution_count": 23,
+ "execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
@@ -786,7 +1321,7 @@
},
{
"cell_type": "code",
- "execution_count": 24,
+ "execution_count": 31,
"metadata": {},
"outputs": [],
"source": [
@@ -795,7 +1330,7 @@
},
{
"cell_type": "code",
- "execution_count": 25,
+ "execution_count": 32,
"metadata": {},
"outputs": [],
"source": [
@@ -804,7 +1339,7 @@
},
{
"cell_type": "code",
- "execution_count": 26,
+ "execution_count": 33,
"metadata": {},
"outputs": [],
"source": [
@@ -813,7 +1348,7 @@
},
{
"cell_type": "code",
- "execution_count": 27,
+ "execution_count": 34,
"metadata": {},
"outputs": [],
"source": [
@@ -822,37 +1357,37 @@
},
{
"cell_type": "code",
- "execution_count": 28,
+ "execution_count": 35,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
- "(44744, 62)"
+ "(25232, 62)"
]
},
- "execution_count": 28,
+ "execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
- "df_final = pd.merge(left=df_final, right=filtered_calendario[['Ciclo','INICIO CICLO','FIM CICLO','DURAÇÃO','MATCH','dias_ate_inicio']], on='MATCH',how='inner')\n",
+ "df_final = pd.merge(left=df_final, right=filtered_calendario[['Ciclo','INICIO CICLO','FIM CICLO','DURAÇÃO','MATCH','dias_ate_inicio']], on='MATCH',how='left')\n",
"df_final.shape"
]
},
{
"cell_type": "code",
- "execution_count": 29,
+ "execution_count": 36,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
- "(54425, 72)"
+ "(30861, 72)"
]
},
- "execution_count": 29,
+ "execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
@@ -870,16 +1405,16 @@
},
{
"cell_type": "code",
- "execution_count": 30,
+ "execution_count": 37,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
- "(54425, 76)"
+ "(30861, 76)"
]
},
- "execution_count": 30,
+ "execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
@@ -895,16 +1430,16 @@
},
{
"cell_type": "code",
- "execution_count": 31,
+ "execution_count": 38,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
- "(54514, 80)"
+ "(30950, 80)"
]
},
- "execution_count": 31,
+ "execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
@@ -918,7 +1453,7 @@
},
{
"cell_type": "code",
- "execution_count": 32,
+ "execution_count": 39,
"metadata": {},
"outputs": [],
"source": [
@@ -930,19 +1465,19 @@
},
{
"cell_type": "code",
- "execution_count": 33,
+ "execution_count": 40,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"CANAL\n",
- "TODOS 42336\n",
- "VD 12178\n",
+ "TODOS 23509\n",
+ "VD 6445\n",
"Name: count, dtype: int64"
]
},
- "execution_count": 33,
+ "execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
@@ -955,33 +1490,9 @@
},
{
"cell_type": "code",
- "execution_count": 34,
+ "execution_count": 41,
"metadata": {},
- "outputs": [
- {
- "ename": "KeyboardInterrupt",
- "evalue": "",
- "output_type": "error",
- "traceback": [
- "\u001b[31m---------------------------------------------------------------------------\u001b[39m",
- "\u001b[31mKeyboardInterrupt\u001b[39m Traceback (most recent call last)",
- "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[34]\u001b[39m\u001b[32m, line 5\u001b[39m\n\u001b[32m 1\u001b[39m df_estoque = df_estoque.rename(columns={\u001b[33m'\u001b[39m\u001b[33mSKU_FINAL\u001b[39m\u001b[33m'\u001b[39m:\u001b[33m'\u001b[39m\u001b[33mSKU_PARA_VALIDACAO\u001b[39m\u001b[33m'\u001b[39m})\n\u001b[32m 3\u001b[39m df_estoque[\u001b[33m'\u001b[39m\u001b[33mSKU_PARA_VALIDACAO\u001b[39m\u001b[33m'\u001b[39m] = df_estoque[\u001b[33m'\u001b[39m\u001b[33mSKU_PARA_VALIDACAO\u001b[39m\u001b[33m'\u001b[39m].astype(\u001b[33m'\u001b[39m\u001b[33mInt64\u001b[39m\u001b[33m'\u001b[39m)\n\u001b[32m----> \u001b[39m\u001b[32m5\u001b[39m df_final = \u001b[43mpd\u001b[49m\u001b[43m.\u001b[49m\u001b[43mmerge\u001b[49m\u001b[43m(\u001b[49m\u001b[43m \u001b[49m\u001b[43mleft\u001b[49m\u001b[43m=\u001b[49m\u001b[43m \u001b[49m\u001b[43mdf_final\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mright\u001b[49m\u001b[43m \u001b[49m\u001b[43m=\u001b[49m\u001b[43m \u001b[49m\u001b[43mdf_estoque\u001b[49m\u001b[43m[\u001b[49m\u001b[43m[\u001b[49m\u001b[33;43m'\u001b[39;49m\u001b[33;43mSKU_PARA_VALIDACAO\u001b[39;49m\u001b[33;43m'\u001b[39;49m\u001b[43m,\u001b[49m\u001b[33;43m'\u001b[39;49m\u001b[33;43mArquivo_Origem\u001b[39;49m\u001b[33;43m'\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mleft_on\u001b[49m\u001b[43m=\u001b[49m\u001b[43m \u001b[49m\u001b[33;43m'\u001b[39;49m\u001b[33;43mSKU\u001b[39;49m\u001b[33;43m'\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mright_on\u001b[49m\u001b[43m=\u001b[49m\u001b[33;43m'\u001b[39;49m\u001b[33;43mSKU_PARA_VALIDACAO\u001b[39;49m\u001b[33;43m'\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mhow\u001b[49m\u001b[43m=\u001b[49m\u001b[33;43m'\u001b[39;49m\u001b[33;43mleft\u001b[39;49m\u001b[33;43m'\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[32m 7\u001b[39m df_final = df_final.drop_duplicates()\n",
- "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\joao.herculano\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages\\pandas\\core\\reshape\\merge.py:184\u001b[39m, in \u001b[36mmerge\u001b[39m\u001b[34m(left, right, how, on, left_on, right_on, left_index, right_index, sort, suffixes, copy, indicator, validate)\u001b[39m\n\u001b[32m 169\u001b[39m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[32m 170\u001b[39m op = _MergeOperation(\n\u001b[32m 171\u001b[39m left_df,\n\u001b[32m 172\u001b[39m right_df,\n\u001b[32m (...)\u001b[39m\u001b[32m 182\u001b[39m validate=validate,\n\u001b[32m 183\u001b[39m )\n\u001b[32m--> \u001b[39m\u001b[32m184\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mop\u001b[49m\u001b[43m.\u001b[49m\u001b[43mget_result\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcopy\u001b[49m\u001b[43m=\u001b[49m\u001b[43mcopy\u001b[49m\u001b[43m)\u001b[49m\n",
- "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\joao.herculano\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages\\pandas\\core\\reshape\\merge.py:888\u001b[39m, in \u001b[36m_MergeOperation.get_result\u001b[39m\u001b[34m(self, copy)\u001b[39m\n\u001b[32m 884\u001b[39m \u001b[38;5;28mself\u001b[39m.left, \u001b[38;5;28mself\u001b[39m.right = \u001b[38;5;28mself\u001b[39m._indicator_pre_merge(\u001b[38;5;28mself\u001b[39m.left, \u001b[38;5;28mself\u001b[39m.right)\n\u001b[32m 886\u001b[39m join_index, left_indexer, right_indexer = \u001b[38;5;28mself\u001b[39m._get_join_info()\n\u001b[32m--> \u001b[39m\u001b[32m888\u001b[39m result = \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_reindex_and_concat\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 889\u001b[39m \u001b[43m \u001b[49m\u001b[43mjoin_index\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mleft_indexer\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mright_indexer\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcopy\u001b[49m\u001b[43m=\u001b[49m\u001b[43mcopy\u001b[49m\n\u001b[32m 890\u001b[39m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 891\u001b[39m result = result.__finalize__(\u001b[38;5;28mself\u001b[39m, method=\u001b[38;5;28mself\u001b[39m._merge_type)\n\u001b[32m 893\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m.indicator:\n",
- "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\joao.herculano\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages\\pandas\\core\\reshape\\merge.py:879\u001b[39m, in \u001b[36m_MergeOperation._reindex_and_concat\u001b[39m\u001b[34m(self, join_index, left_indexer, right_indexer, copy)\u001b[39m\n\u001b[32m 877\u001b[39m left.columns = llabels\n\u001b[32m 878\u001b[39m right.columns = rlabels\n\u001b[32m--> \u001b[39m\u001b[32m879\u001b[39m result = \u001b[43mconcat\u001b[49m\u001b[43m(\u001b[49m\u001b[43m[\u001b[49m\u001b[43mleft\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mright\u001b[49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43maxis\u001b[49m\u001b[43m=\u001b[49m\u001b[32;43m1\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcopy\u001b[49m\u001b[43m=\u001b[49m\u001b[43mcopy\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 880\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m result\n",
- "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\joao.herculano\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages\\pandas\\core\\reshape\\concat.py:395\u001b[39m, in \u001b[36mconcat\u001b[39m\u001b[34m(objs, axis, join, ignore_index, keys, levels, names, verify_integrity, sort, copy)\u001b[39m\n\u001b[32m 380\u001b[39m copy = \u001b[38;5;28;01mFalse\u001b[39;00m\n\u001b[32m 382\u001b[39m op = _Concatenator(\n\u001b[32m 383\u001b[39m objs,\n\u001b[32m 384\u001b[39m axis=axis,\n\u001b[32m (...)\u001b[39m\u001b[32m 392\u001b[39m sort=sort,\n\u001b[32m 393\u001b[39m )\n\u001b[32m--> \u001b[39m\u001b[32m395\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mop\u001b[49m\u001b[43m.\u001b[49m\u001b[43mget_result\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n",
- "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\joao.herculano\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages\\pandas\\core\\reshape\\concat.py:684\u001b[39m, in \u001b[36m_Concatenator.get_result\u001b[39m\u001b[34m(self)\u001b[39m\n\u001b[32m 680\u001b[39m indexers[ax] = obj_labels.get_indexer(new_labels)\n\u001b[32m 682\u001b[39m mgrs_indexers.append((obj._mgr, indexers))\n\u001b[32m--> \u001b[39m\u001b[32m684\u001b[39m new_data = \u001b[43mconcatenate_managers\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 685\u001b[39m \u001b[43m \u001b[49m\u001b[43mmgrs_indexers\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mnew_axes\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mconcat_axis\u001b[49m\u001b[43m=\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mbm_axis\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcopy\u001b[49m\u001b[43m=\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mcopy\u001b[49m\n\u001b[32m 686\u001b[39m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 687\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mself\u001b[39m.copy \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m using_copy_on_write():\n\u001b[32m 688\u001b[39m new_data._consolidate_inplace()\n",
- "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\joao.herculano\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages\\pandas\\core\\internals\\concat.py:131\u001b[39m, in \u001b[36mconcatenate_managers\u001b[39m\u001b[34m(mgrs_indexers, axes, concat_axis, copy)\u001b[39m\n\u001b[32m 124\u001b[39m \u001b[38;5;66;03m# Assertions disabled for performance\u001b[39;00m\n\u001b[32m 125\u001b[39m \u001b[38;5;66;03m# for tup in mgrs_indexers:\u001b[39;00m\n\u001b[32m 126\u001b[39m \u001b[38;5;66;03m# # caller is responsible for ensuring this\u001b[39;00m\n\u001b[32m 127\u001b[39m \u001b[38;5;66;03m# indexers = tup[1]\u001b[39;00m\n\u001b[32m 128\u001b[39m \u001b[38;5;66;03m# assert concat_axis not in indexers\u001b[39;00m\n\u001b[32m 130\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m concat_axis == \u001b[32m0\u001b[39m:\n\u001b[32m--> \u001b[39m\u001b[32m131\u001b[39m mgrs = \u001b[43m_maybe_reindex_columns_na_proxy\u001b[49m\u001b[43m(\u001b[49m\u001b[43maxes\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmgrs_indexers\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mneeds_copy\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 132\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m mgrs[\u001b[32m0\u001b[39m].concat_horizontal(mgrs, axes)\n\u001b[32m 134\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(mgrs_indexers) > \u001b[32m0\u001b[39m \u001b[38;5;129;01mand\u001b[39;00m mgrs_indexers[\u001b[32m0\u001b[39m][\u001b[32m0\u001b[39m].nblocks > \u001b[32m0\u001b[39m:\n",
- "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\joao.herculano\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages\\pandas\\core\\internals\\concat.py:230\u001b[39m, in \u001b[36m_maybe_reindex_columns_na_proxy\u001b[39m\u001b[34m(axes, mgrs_indexers, needs_copy)\u001b[39m\n\u001b[32m 220\u001b[39m mgr = mgr.reindex_indexer(\n\u001b[32m 221\u001b[39m axes[i],\n\u001b[32m 222\u001b[39m indexers[i],\n\u001b[32m (...)\u001b[39m\u001b[32m 227\u001b[39m use_na_proxy=\u001b[38;5;28;01mTrue\u001b[39;00m, \u001b[38;5;66;03m# only relevant for i==0\u001b[39;00m\n\u001b[32m 228\u001b[39m )\n\u001b[32m 229\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m needs_copy \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m indexers:\n\u001b[32m--> \u001b[39m\u001b[32m230\u001b[39m mgr = \u001b[43mmgr\u001b[49m\u001b[43m.\u001b[49m\u001b[43mcopy\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 232\u001b[39m new_mgrs.append(mgr)\n\u001b[32m 233\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m new_mgrs\n",
- "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\joao.herculano\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages\\pandas\\core\\internals\\managers.py:604\u001b[39m, in \u001b[36mBaseBlockManager.copy\u001b[39m\u001b[34m(self, deep)\u001b[39m\n\u001b[32m 601\u001b[39m res._blklocs = \u001b[38;5;28mself\u001b[39m._blklocs.copy()\n\u001b[32m 603\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m deep:\n\u001b[32m--> \u001b[39m\u001b[32m604\u001b[39m \u001b[43mres\u001b[49m\u001b[43m.\u001b[49m\u001b[43m_consolidate_inplace\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 605\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m res\n",
- "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\joao.herculano\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages\\pandas\\core\\internals\\managers.py:1791\u001b[39m, in \u001b[36mBlockManager._consolidate_inplace\u001b[39m\u001b[34m(self)\u001b[39m\n\u001b[32m 1789\u001b[39m \u001b[38;5;28mself\u001b[39m._is_consolidated = \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[32m 1790\u001b[39m \u001b[38;5;28mself\u001b[39m._known_consolidated = \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[32m-> \u001b[39m\u001b[32m1791\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_rebuild_blknos_and_blklocs\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n",
- "\u001b[36mFile \u001b[39m\u001b[32minternals.pyx:755\u001b[39m, in \u001b[36mpandas._libs.internals.BlockManager._rebuild_blknos_and_blklocs\u001b[39m\u001b[34m()\u001b[39m\n",
- "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\joao.herculano\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages\\pandas\\core\\internals\\base.py:84\u001b[39m, in \u001b[36mDataManager.shape\u001b[39m\u001b[34m(self)\u001b[39m\n\u001b[32m 82\u001b[39m \u001b[38;5;129m@property\u001b[39m\n\u001b[32m 83\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34mshape\u001b[39m(\u001b[38;5;28mself\u001b[39m) -> Shape:\n\u001b[32m---> \u001b[39m\u001b[32m84\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mtuple\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mlen\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43max\u001b[49m\u001b[43m)\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43max\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43maxes\u001b[49m\u001b[43m)\u001b[49m\n",
- "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\joao.herculano\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages\\pandas\\core\\internals\\base.py:84\u001b[39m, in \u001b[36m\u001b[39m\u001b[34m(.0)\u001b[39m\n\u001b[32m 82\u001b[39m \u001b[38;5;129m@property\u001b[39m\n\u001b[32m 83\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34mshape\u001b[39m(\u001b[38;5;28mself\u001b[39m) -> Shape:\n\u001b[32m---> \u001b[39m\u001b[32m84\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mtuple\u001b[39m(\u001b[38;5;28mlen\u001b[39m(ax) \u001b[38;5;28;01mfor\u001b[39;00m ax \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m.axes)\n",
- "\u001b[31mKeyboardInterrupt\u001b[39m: "
- ]
- }
- ],
+ "outputs": [],
"source": [
"df_estoque = df_estoque.rename(columns={'SKU_FINAL':'SKU_PARA_VALIDACAO'})\n",
"\n",
@@ -994,7 +1505,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 42,
"metadata": {},
"outputs": [],
"source": [
@@ -1006,7 +1517,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 43,
"metadata": {},
"outputs": [],
"source": [
@@ -1015,7 +1526,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 44,
"metadata": {},
"outputs": [],
"source": [
@@ -1024,7 +1535,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 45,
"metadata": {},
"outputs": [],
"source": [
@@ -1033,7 +1544,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 46,
"metadata": {},
"outputs": [],
"source": [
@@ -1042,9 +1553,20 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 47,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "np.int64(0)"
+ ]
+ },
+ "execution_count": 47,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
"df_final = df_final[~df_final['Marca'].isna()]\n",
"df_final['Marca'].isna().sum()"
@@ -1052,9 +1574,20 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 48,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(30950, 74)"
+ ]
+ },
+ "execution_count": 48,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
"df_final = df_final.drop_duplicates()\n",
"df_final.shape"
@@ -1062,7 +1595,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 49,
"metadata": {},
"outputs": [],
"source": [
@@ -1071,16 +1604,45 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 50,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Index(['Histórico de Vendas do Ciclo 202409',\n",
+ " 'Histórico de Vendas do Ciclo 202410',\n",
+ " 'Histórico de Vendas do Ciclo 202411',\n",
+ " 'Histórico de Vendas do Ciclo 202412',\n",
+ " 'Histórico de Vendas do Ciclo 202413',\n",
+ " 'Histórico de Vendas do Ciclo 202414',\n",
+ " 'Histórico de Vendas do Ciclo 202415',\n",
+ " 'Histórico de Vendas do Ciclo 202416',\n",
+ " 'Histórico de Vendas do Ciclo 202417',\n",
+ " 'Histórico de Vendas do Ciclo 202501',\n",
+ " 'Histórico de Vendas do Ciclo 202502',\n",
+ " 'Histórico de Vendas do Ciclo 202503',\n",
+ " 'Histórico de Vendas do Ciclo 202504',\n",
+ " 'Histórico de Vendas do Ciclo 202505',\n",
+ " 'Histórico de Vendas do Ciclo 202506',\n",
+ " 'Histórico de Vendas do Ciclo 202507',\n",
+ " 'Histórico de Vendas do Ciclo 202508',\n",
+ " 'Histórico de Vendas do Ciclo Atual'],\n",
+ " dtype='object')"
+ ]
+ },
+ "execution_count": 50,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
"df_final.columns[26:44]"
]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 51,
"metadata": {},
"outputs": [],
"source": [
@@ -1093,16 +1655,34 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 52,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Index(['Histórico de Vendas do Ciclo 202503',\n",
+ " 'Histórico de Vendas do Ciclo 202504',\n",
+ " 'Histórico de Vendas do Ciclo 202505',\n",
+ " 'Histórico de Vendas do Ciclo 202506',\n",
+ " 'Histórico de Vendas do Ciclo 202507',\n",
+ " 'Histórico de Vendas do Ciclo 202508',\n",
+ " 'Histórico de Vendas do Ciclo Atual'],\n",
+ " dtype='object')"
+ ]
+ },
+ "execution_count": 52,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
"df_final.columns[37:44]"
]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 53,
"metadata": {},
"outputs": [],
"source": [
@@ -1113,18 +1693,45 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 54,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Index(['Histórico de Vendas do Ciclo 202503',\n",
+ " 'Histórico de Vendas do Ciclo 202504',\n",
+ " 'Histórico de Vendas do Ciclo 202505',\n",
+ " 'Histórico de Vendas do Ciclo 202506',\n",
+ " 'Histórico de Vendas do Ciclo 202507',\n",
+ " 'Histórico de Vendas do Ciclo 202508',\n",
+ " 'Histórico de Vendas do Ciclo Atual'],\n",
+ " dtype='object')"
+ ]
+ },
+ "execution_count": 54,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
"df_final.columns[37:44]"
]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 55,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "C:\\Users\\joao.herculano\\AppData\\Local\\Temp\\ipykernel_17756\\2592201544.py:24: DeprecationWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n",
+ " crescimento_por_pdv = df_final.groupby('PDV').apply(calcular_crescimento)\n"
+ ]
+ }
+ ],
"source": [
"# Define as colunas mensais\n",
"colunas_mensais = df_final.columns[26:43]\n",
@@ -1157,9 +1764,20 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 56,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "np.float64(0.0564)"
+ ]
+ },
+ "execution_count": 56,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
"# Suponha que os meses estão nas colunas 10 a 26 (17 colunas = 17 meses)\n",
"colunas_mensais = df_final.columns[26:43]\n",
@@ -1196,9 +1814,60 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 57,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " CANAL | \n",
+ " med_por_canal | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " TODOS | \n",
+ " 90.5 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " VD | \n",
+ " 715.0 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " CANAL med_por_canal\n",
+ "0 TODOS 90.5\n",
+ "1 VD 715.0"
+ ]
+ },
+ "execution_count": 57,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
"vendas_todos_historicos = df_final.columns[26:44]\n",
"\n",
@@ -1209,23 +1878,34 @@
"medi = df_final.groupby(['CANAL'])['MEDIANA DO HISTÓRICO'].max().reset_index()\n",
"medi = medi.rename(columns={'MEDIANA DO HISTÓRICO':'med_por_canal'})\n",
"\n",
- "df_final = pd.merge(left=df_final, right=medi,on='CANAL',how='inner')\n",
+ "df_final = pd.merge(left=df_final, right=medi,on='CANAL',how='left')\n",
"\n",
"medi"
]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 58,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'202411'"
+ ]
+ },
+ "execution_count": 58,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
"df_final.columns[28:29].str.split(\" \")[0][-1]"
]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 59,
"metadata": {},
"outputs": [],
"source": [
@@ -1236,9 +1916,20 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 60,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(30950, 84)"
+ ]
+ },
+ "execution_count": 60,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
"df_final['CRESCIMENTO_FINAL'] = df_final['CRESCIMENTO_GERAL'] + df_final['CRESCIMENTO'] #crescimento do pdv\n",
"\n",
@@ -1259,16 +1950,40 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 61,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Index(['Histórico de Vendas do Ciclo 202409',\n",
+ " 'Histórico de Vendas do Ciclo 202410',\n",
+ " 'Histórico de Vendas do Ciclo 202411',\n",
+ " 'Histórico de Vendas do Ciclo 202412',\n",
+ " 'Histórico de Vendas do Ciclo 202413',\n",
+ " 'Histórico de Vendas do Ciclo 202414',\n",
+ " 'Histórico de Vendas do Ciclo 202415',\n",
+ " 'Histórico de Vendas do Ciclo 202416',\n",
+ " 'Histórico de Vendas do Ciclo 202417',\n",
+ " 'Histórico de Vendas do Ciclo 202501',\n",
+ " 'Histórico de Vendas do Ciclo 202502',\n",
+ " 'Histórico de Vendas do Ciclo 202503',\n",
+ " 'Histórico de Vendas do Ciclo 202504'],\n",
+ " dtype='object')"
+ ]
+ },
+ "execution_count": 61,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
"df_final.columns[26:39]"
]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 62,
"metadata": {},
"outputs": [],
"source": [
@@ -1277,7 +1992,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 63,
"metadata": {},
"outputs": [],
"source": [
@@ -1286,7 +2001,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 64,
"metadata": {},
"outputs": [],
"source": [
@@ -1304,7 +2019,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 65,
"metadata": {},
"outputs": [],
"source": [
@@ -1313,16 +2028,38 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 66,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "76 9.0\n",
+ "152 0.0\n",
+ "228 0.0\n",
+ "304 0.0\n",
+ "380 0.0\n",
+ " ... \n",
+ "30610 18.0\n",
+ "30708 129.0\n",
+ "30785 744.0\n",
+ "30861 1074.0\n",
+ "30937 113.0\n",
+ "Name: C-3, Length: 371, dtype: float64"
+ ]
+ },
+ "execution_count": 66,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
"df_final_dedup[(df_final['PDV'] == 23712)]['C-3']"
]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 67,
"metadata": {},
"outputs": [],
"source": [
@@ -1335,16 +2072,47 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 68,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Index(['202411', 'ANALISTA', 'Arquivo_Origem_x', 'Arquivo_Origem_y',\n",
+ " 'Ação consumidor', 'Ação revendedor', 'C-1', 'C-2', 'C-3', 'C-4',\n",
+ " 'CANAL', 'COBERTURA ATUAL + TRANSITO', 'CRESCIMENTO',\n",
+ " 'CRESCIMENTO_FINAL', 'CRESCIMENTO_GERAL', 'Canal', 'Categoria',\n",
+ " 'Catálogo', 'Ciclo_x', 'Ciclo_y', 'Classe', 'Código', 'DESCRIÇÃO PDV',\n",
+ " 'DURAÇÃO', 'Data Prevista Regularização', 'Descrição', 'Dias sem venda',\n",
+ " 'ESTOQUE ATUAL', 'ESTOQUE EM TRANSITO', 'Estoque Atual',\n",
+ " 'Estoque em Transito', 'FIM CICLO', 'Foco',\n",
+ " 'Histórico de Vendas do Ciclo 202408',\n",
+ " 'Histórico de Vendas do Ciclo Atual', 'IAF', 'INICIO CICLO',\n",
+ " 'Item Desativado', 'MATCH', 'MEDIA DO HISTÓRICO',\n",
+ " 'MEDIANA DO HISTÓRICO', 'Marca', 'PDV', 'PEDIDO PENDENTE',\n",
+ " 'PICO DE VENDAS 2024', 'PRECO DE COMPRA', 'PRECO DE VENDA',\n",
+ " 'PV GINSENG', 'Pedido Pendente', 'Percentual de desconto consumidor',\n",
+ " 'Percentual de desconto revendedor', 'Pico Vendas Ultimos 6 ciclos',\n",
+ " 'Projeção Próximo Ciclo', 'Projeção Próximo Ciclo + 1',\n",
+ " 'Promoção Próximo Ciclo + 1', 'Região', 'SKU', 'SKU_FINAL', 'SKU_PARA',\n",
+ " 'SKU_PARA_VALIDACAO', 'SUPERVISOR', 'Tipo de pedido', 'Tipo de produto',\n",
+ " 'Tipo de promoção', 'UF', 'UFPRODUTO', 'Unidade de negócio',\n",
+ " 'dias_ate_inicio', 'med_por_canal', 'DDV PREVISTO', 'COBERTURA ATUAL'],\n",
+ " dtype='object')"
+ ]
+ },
+ "execution_count": 68,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
"df_final_dedup.columns"
]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 69,
"metadata": {},
"outputs": [],
"source": [
@@ -1353,7 +2121,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 70,
"metadata": {},
"outputs": [],
"source": [
@@ -1362,7 +2130,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 71,
"metadata": {},
"outputs": [],
"source": [
@@ -1371,18 +2139,47 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 72,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Index(['SKU', 'SKU_PARA', 'PDV', 'ESTOQUE ATUAL', 'ESTOQUE EM TRANSITO',\n",
+ " 'PEDIDO PENDENTE', 'DDV PREVISTO', 'COBERTURA ATUAL',\n",
+ " 'COBERTURA ATUAL + TRANSITO', 'Arquivo_Origem', 'SKU_PARA_VALIDACAO'],\n",
+ " dtype='object')"
+ ]
+ },
+ "execution_count": 72,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
"df_estoque.columns"
]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 73,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "('Ação consumidor',\n",
+ " 'Percentual de desconto consumidor',\n",
+ " 'Ação revendedor',\n",
+ " 'Percentual de desconto revendedor',\n",
+ " '202408')"
+ ]
+ },
+ "execution_count": 73,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
"# Columns to bring up front\n",
"priority_cols = [\n",
@@ -1406,7 +2203,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 74,
"metadata": {},
"outputs": [],
"source": [
@@ -1415,7 +2212,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 75,
"metadata": {},
"outputs": [],
"source": [
@@ -1424,7 +2221,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 76,
"metadata": {},
"outputs": [],
"source": [
@@ -1436,7 +2233,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 77,
"metadata": {},
"outputs": [],
"source": [
@@ -1445,7 +2242,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 78,
"metadata": {},
"outputs": [],
"source": [
@@ -1455,16 +2252,16 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 79,
"metadata": {},
"outputs": [],
"source": [
- "df_final_dedup['MARCA'] = df_final_dedup['MARCA'].str.replace('.csv','',regex=False)"
+ "#df_final_dedup['MARCA'] = df_final_dedup['MARCA'].str.replace('.csv','',regex=False)"
]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 80,
"metadata": {},
"outputs": [],
"source": [
@@ -1473,9 +2270,20 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 81,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'BOT'"
+ ]
+ },
+ "execution_count": 81,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
"marca_promo = df_estoque['Arquivo_Origem'].iloc[0].replace('.csv','')\n",
"marca_promo"
@@ -1483,7 +2291,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 82,
"metadata": {},
"outputs": [],
"source": [
@@ -1494,7 +2302,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 83,
"metadata": {},
"outputs": [],
"source": [
@@ -1503,7 +2311,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 84,
"metadata": {},
"outputs": [],
"source": [
@@ -1511,12 +2319,50 @@
"df_final_dedup['PDV'] = df_final_dedup['PDV'].astype('Int64')\n",
"\n",
"\n",
- "df_final_dedup = pd.merge(left=df_final_dedup,right=df_pdv_origi[['PDV','CANAL','UF']],how='inner',on='PDV')"
+ "df_final_dedup = pd.merge(left=df_final_dedup,right=df_pdv_origi[['PDV','CANAL','UF']],how='left',on='PDV')"
]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 85,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "np.int64(0)"
+ ]
+ },
+ "execution_count": 85,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df_final_dedup['Código'].isna().sum()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 86,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "df_final_dedup.to_excel(r'C:\\Users\\joao.herculano\\GRUPO GINSENG\\Assistência Suprimentos - 2025\\SUPRIMENTOS\\DB_PROMOÇÕES\\BOTICARIO\\C11\\teste.xlsx')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 87,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "df_final_dedup = df_final_dedup[df_final_dedup['Código']!= '']\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 88,
"metadata": {},
"outputs": [],
"source": [
@@ -1528,30 +2374,264 @@
"\n",
"df_final_dedup =pd.merge(left=df_final_dedup,right=df_vdc[['PDV GINSENG','PRODUTO',ciclo_ano_passado]],left_on= ['PDV','Código'],right_on= ['PDV GINSENG','PRODUTO'],how='left' )\n",
"\n",
- "df_final_dedup['202410_y'] = df_final_dedup['202410_y'].fillna(0)"
+ "df_final_dedup[df_final_dedup.columns[-1]] = df_final_dedup[df_final_dedup.columns[-1]].fillna(0)"
]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 89,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " 202411_x | \n",
+ " ANALISTA | \n",
+ " Arquivo_Origem_x | \n",
+ " Arquivo_Origem_y | \n",
+ " Ação consumidor | \n",
+ " Ação revendedor | \n",
+ " C-1 | \n",
+ " C-2 | \n",
+ " C-3 | \n",
+ " C-4 | \n",
+ " ... | \n",
+ " COBERTURA ATUAL | \n",
+ " EST PROJE FINAL CICLO ATUAL | \n",
+ " VENDAS R$ PV GINSENG | \n",
+ " RBV 202406 | \n",
+ " COB PROJETADA | \n",
+ " CANAL_y | \n",
+ " UF_y | \n",
+ " PDV GINSENG | \n",
+ " PRODUTO | \n",
+ " 202411_y | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 0.0 | \n",
+ " DANIEL | \n",
+ " BOT.csv | \n",
+ " BOT.csv | \n",
+ " BODY SPRAY BOTICOLLECTION COM 20% DE DESCONTO | \n",
+ " BODY SPRAY BOTICOLLECTION COM 20% DE DESCONTO | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 1.0 | \n",
+ " ... | \n",
+ " 166.0 | \n",
+ " 4.0 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " 166.666667 | \n",
+ " LJ | \n",
+ " BA | \n",
+ " NaN | \n",
+ " <NA> | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 0.0 | \n",
+ " DANIEL | \n",
+ " BOT.csv | \n",
+ " BOT.csv | \n",
+ " BODY SPRAY BOTICOLLECTION COM 20% DE DESCONTO | \n",
+ " BODY SPRAY BOTICOLLECTION COM 20% DE DESCONTO | \n",
+ " 0.0 | \n",
+ " 2.0 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " ... | \n",
+ " 45.0 | \n",
+ " 1.0 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " 100.000000 | \n",
+ " LJ | \n",
+ " VDC | \n",
+ " NaN | \n",
+ " <NA> | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 0.0 | \n",
+ " DANIEL | \n",
+ " BOT.csv | \n",
+ " BOT.csv | \n",
+ " BODY SPRAY BOTICOLLECTION COM 20% DE DESCONTO | \n",
+ " BODY SPRAY BOTICOLLECTION COM 20% DE DESCONTO | \n",
+ " 2.0 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 1.0 | \n",
+ " ... | \n",
+ " 200.0 | \n",
+ " 2.0 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " 200.000000 | \n",
+ " LJ | \n",
+ " BA | \n",
+ " NaN | \n",
+ " <NA> | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 0.0 | \n",
+ " DANIEL | \n",
+ " BOT.csv | \n",
+ " BOT.csv | \n",
+ " BODY SPRAY BOTICOLLECTION COM 20% DE DESCONTO | \n",
+ " BODY SPRAY BOTICOLLECTION COM 20% DE DESCONTO | \n",
+ " 3.0 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 3.0 | \n",
+ " ... | \n",
+ " 0.0 | \n",
+ " 3.0 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " 83.333333 | \n",
+ " LJ | \n",
+ " BA | \n",
+ " NaN | \n",
+ " <NA> | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 0.0 | \n",
+ " DANIEL | \n",
+ " BOT.csv | \n",
+ " BOT.csv | \n",
+ " BODY SPRAY BOTICOLLECTION COM 20% DE DESCONTO | \n",
+ " BODY SPRAY BOTICOLLECTION COM 20% DE DESCONTO | \n",
+ " 4.0 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " ... | \n",
+ " 100.0 | \n",
+ " 1.0 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " 100.000000 | \n",
+ " VD | \n",
+ " VDC | \n",
+ " 23703.0 | \n",
+ " 29046 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
5 rows × 76 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " 202411_x ANALISTA Arquivo_Origem_x Arquivo_Origem_y \\\n",
+ "0 0.0 DANIEL BOT.csv BOT.csv \n",
+ "1 0.0 DANIEL BOT.csv BOT.csv \n",
+ "2 0.0 DANIEL BOT.csv BOT.csv \n",
+ "3 0.0 DANIEL BOT.csv BOT.csv \n",
+ "4 0.0 DANIEL BOT.csv BOT.csv \n",
+ "\n",
+ " Ação consumidor \\\n",
+ "0 BODY SPRAY BOTICOLLECTION COM 20% DE DESCONTO \n",
+ "1 BODY SPRAY BOTICOLLECTION COM 20% DE DESCONTO \n",
+ "2 BODY SPRAY BOTICOLLECTION COM 20% DE DESCONTO \n",
+ "3 BODY SPRAY BOTICOLLECTION COM 20% DE DESCONTO \n",
+ "4 BODY SPRAY BOTICOLLECTION COM 20% DE DESCONTO \n",
+ "\n",
+ " Ação revendedor C-1 C-2 C-3 C-4 ... \\\n",
+ "0 BODY SPRAY BOTICOLLECTION COM 20% DE DESCONTO 0.0 0.0 0.0 1.0 ... \n",
+ "1 BODY SPRAY BOTICOLLECTION COM 20% DE DESCONTO 0.0 2.0 0.0 0.0 ... \n",
+ "2 BODY SPRAY BOTICOLLECTION COM 20% DE DESCONTO 2.0 0.0 0.0 1.0 ... \n",
+ "3 BODY SPRAY BOTICOLLECTION COM 20% DE DESCONTO 3.0 0.0 0.0 3.0 ... \n",
+ "4 BODY SPRAY BOTICOLLECTION COM 20% DE DESCONTO 4.0 0.0 0.0 0.0 ... \n",
+ "\n",
+ " COBERTURA ATUAL EST PROJE FINAL CICLO ATUAL VENDAS R$ PV GINSENG \\\n",
+ "0 166.0 4.0 NaN \n",
+ "1 45.0 1.0 NaN \n",
+ "2 200.0 2.0 NaN \n",
+ "3 0.0 3.0 NaN \n",
+ "4 100.0 1.0 NaN \n",
+ "\n",
+ " RBV 202406 COB PROJETADA CANAL_y UF_y PDV GINSENG PRODUTO 202411_y \n",
+ "0 NaN 166.666667 LJ BA NaN 0.0 \n",
+ "1 NaN 100.000000 LJ VDC NaN 0.0 \n",
+ "2 NaN 200.000000 LJ BA NaN 0.0 \n",
+ "3 NaN 83.333333 LJ BA NaN 0.0 \n",
+ "4 NaN 100.000000 VD VDC 23703.0 29046 0.0 \n",
+ "\n",
+ "[5 rows x 76 columns]"
+ ]
+ },
+ "execution_count": 89,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
"df_final_dedup.head()"
]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 90,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'202411_y'"
+ ]
+ },
+ "execution_count": 90,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
- "df_final_dedup['202410_x'] = np.where(df_final_dedup['202410_y']>0,df_final_dedup['202410_y'],df_final_dedup['202410_x'])"
+ "df_final_dedup.columns[-1]"
]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 91,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "df_final_dedup[df_final_dedup.columns[0]] = np.where(df_final_dedup[df_final_dedup.columns[-1]]>0,df_final_dedup[df_final_dedup.columns[-1]],df_final_dedup[df_final_dedup.columns[0]])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 92,
"metadata": {},
"outputs": [],
"source": [
@@ -1560,7 +2640,7 @@
" 'PRECO DE COMPRA','SKU','SKU_PARA','SKU_PARA_VALIDACAO',\n",
" 'Tipo de pedido',\t'Tipo de produto','UFPRODUTO','Unidade de negócio','EST PROJE FINAL CICLO ATUAL',\n",
" 'UF_x','RBV 202406','Região','Catálogo','SKU','VENDAS R$ PV GINSENG','Data Prevista Regularização',\n",
- " 'IAF', 'Item Desativado','Tipo de promoção','PDV GINSENG','PRODUTO','202410_y',\n",
+ " 'IAF', 'Item Desativado','Tipo de promoção','PDV GINSENG','PRODUTO','202411_y',\n",
" 'ESTOQUE ATUAL', 'ESTOQUE EM TRANSITO','COBERTURA ATUAL + TRANSITO',\n",
" 'DDV PREVISTO',\t'COB PROJETADA','COBERTURA ATUAL',\n",
" 'CRESCIMENTO_FINAL',\t'CRESCIMENTO_GERAL','med_por_canal','PEDIDO PENDENTE'])"
@@ -1568,7 +2648,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 93,
"metadata": {},
"outputs": [],
"source": [
@@ -1577,25 +2657,76 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 94,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Index(['202411_x', 'ANALISTA', 'Ação consumidor', 'Ação revendedor', 'C-1',\n",
+ " 'C-2', 'C-3', 'C-4', 'Categoria', 'Classe', 'Código', 'DESCRIÇÃO PDV',\n",
+ " 'Descrição', 'Dias sem venda', 'Estoque Atual', 'Estoque em Transito',\n",
+ " 'Histórico de Vendas do Ciclo 202408',\n",
+ " 'Histórico de Vendas do Ciclo Atual', 'MEDIANA DO HISTÓRICO', 'LINHA',\n",
+ " 'PDV', 'PICO DE VENDAS 2024', 'PRECO DE VENDA', 'PV GINSENG',\n",
+ " 'Pedido Pendente', 'Percentual de desconto consumidor',\n",
+ " 'Percentual de desconto revendedor', 'Pico Vendas Ultimos 6 ciclos',\n",
+ " 'Projeção Próximo Ciclo', 'Projeção Próximo Ciclo + 1',\n",
+ " 'Promoção Próximo Ciclo + 1', 'SUPERVISOR', 'CANAL', 'UF'],\n",
+ " dtype='object')"
+ ]
+ },
+ "execution_count": 94,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
"df_final_dedup.columns"
]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 95,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "C:\\Users\\joao.herculano\\AppData\\Local\\Temp\\ipykernel_17756\\4017566689.py:1: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n",
+ " df_final_dedup[(df_final['PDV'] == 23712)]['C-3']\n"
+ ]
+ },
+ {
+ "data": {
+ "text/plain": [
+ "76 9.0\n",
+ "152 0.0\n",
+ "228 0.0\n",
+ "304 0.0\n",
+ "380 0.0\n",
+ " ... \n",
+ "29314 6.0\n",
+ "29390 26.0\n",
+ "29466 137.0\n",
+ "29542 116.0\n",
+ "29618 23.0\n",
+ "Name: C-3, Length: 355, dtype: float64"
+ ]
+ },
+ "execution_count": 95,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
"df_final_dedup[(df_final['PDV'] == 23712)]['C-3']"
]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 96,
"metadata": {},
"outputs": [],
"source": [
@@ -1615,7 +2746,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 97,
"metadata": {},
"outputs": [],
"source": [
@@ -1624,25 +2755,47 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 98,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "np.float64(75876.0)"
+ ]
+ },
+ "execution_count": 98,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
"df_final_dedup['PV GINSENG'].sum()"
]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 99,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "np.int64(0)"
+ ]
+ },
+ "execution_count": 99,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
"df_final_dedup[df_final_dedup['PDV'] == 23712]['PICO DE VENDAS 2024'].isna().sum()"
]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 100,
"metadata": {},
"outputs": [],
"source": [