Ruptura_Projetada/Lançamentos/Script_lançamento_EUD_v2.ipynb
2025-10-24 15:54:54 -03:00

4342 lines
119 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "6ad35669",
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np \n",
"import glob\n",
"import os "
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "9fcdc77a",
"metadata": {},
"outputs": [],
"source": [
"calendario = pd.read_excel(r\"C:\\Users\\darlin.cunha\\OneDrive - GRUPO GINSENG\\Assistência Suprimentos - Documentos\\2025\\SUPRIMENTOS\\BD_LANÇAMENTOS\\EUDORA\\Ciclo_Expandido_com_Datas.xlsx\")\n",
"\n",
"calendario['Date'] = pd.to_datetime(calendario['Date'])\n",
"\n",
"# Get today (normalized to midnight)\n",
"today = pd.Timestamp(\"today\").normalize()\n",
"\n",
"calendario['NUM_CICLO'] = calendario['Ciclo'].str[-2:].astype(int)\n",
"\n",
"calendario['ANO_CICLO'] = calendario['Ciclo'].str[0:5]\n",
"\n",
"calendario = calendario[calendario['MARCA'] == \"EUDORA\"]\n",
"\n",
"calendario['CICLOMAIS2'] = calendario['ANO_CICLO'].astype(str) + (calendario['NUM_CICLO'].astype(int) + 3).astype(str).str.zfill(2) #<<< MUDAR O \"4\" (CICLO ATUAL + 4 PARA ACHAR O CICLO DA SUGESTÃO) EX: C202505 -> C202509\n",
"ciclo_mais2 = calendario[calendario['Date'].dt.normalize() == today]['CICLOMAIS2'].iloc[0]\n",
"\n",
"# Filter rows where date matches today\n",
"filtered_calendario = calendario[calendario['Ciclo'] == ciclo_mais2][:1]\n",
"\n",
"filtered_calendario['dias_ate_inicio'] = filtered_calendario['INICIO CICLO'].iloc[0] - today\n",
"\n",
"filtered_calendario['dias_ate_inicio'] = filtered_calendario['dias_ate_inicio'].dt.days.astype(int)\n",
"\n",
"filtered_calendario['match'] = 1\n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "bbec229d",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.microsoft.datawrangler.viewer.v0+json": {
"columns": [
{
"name": "index",
"rawType": "int64",
"type": "integer"
},
{
"name": "Ciclo",
"rawType": "object",
"type": "string"
},
{
"name": "INICIO CICLO",
"rawType": "datetime64[ns]",
"type": "datetime"
},
{
"name": "FIM CICLO",
"rawType": "datetime64[ns]",
"type": "datetime"
},
{
"name": "DURAÇÃO",
"rawType": "int64",
"type": "integer"
},
{
"name": "MARCA",
"rawType": "object",
"type": "string"
},
{
"name": "Date",
"rawType": "datetime64[ns]",
"type": "datetime"
},
{
"name": "NUM_CICLO",
"rawType": "int64",
"type": "integer"
},
{
"name": "ANO_CICLO",
"rawType": "object",
"type": "string"
},
{
"name": "CICLOMAIS2",
"rawType": "object",
"type": "string"
},
{
"name": "dias_ate_inicio",
"rawType": "int64",
"type": "integer"
},
{
"name": "match",
"rawType": "int64",
"type": "integer"
}
],
"ref": "93d436c2-a64f-4442-b87c-63ab83cd4053",
"rows": [
[
"2532",
"C202517",
"2025-11-26 00:00:00",
"2025-12-16 00:00:00",
"21",
"EUDORA",
"2025-11-26 00:00:00",
"17",
"C2025",
"C202520",
"51",
"1"
]
],
"shape": {
"columns": 11,
"rows": 1
}
},
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Ciclo</th>\n",
" <th>INICIO CICLO</th>\n",
" <th>FIM CICLO</th>\n",
" <th>DURAÇÃO</th>\n",
" <th>MARCA</th>\n",
" <th>Date</th>\n",
" <th>NUM_CICLO</th>\n",
" <th>ANO_CICLO</th>\n",
" <th>CICLOMAIS2</th>\n",
" <th>dias_ate_inicio</th>\n",
" <th>match</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2532</th>\n",
" <td>C202517</td>\n",
" <td>2025-11-26</td>\n",
" <td>2025-12-16</td>\n",
" <td>21</td>\n",
" <td>EUDORA</td>\n",
" <td>2025-11-26</td>\n",
" <td>17</td>\n",
" <td>C2025</td>\n",
" <td>C202520</td>\n",
" <td>51</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Ciclo INICIO CICLO FIM CICLO DURAÇÃO MARCA Date NUM_CICLO \\\n",
"2532 C202517 2025-11-26 2025-12-16 21 EUDORA 2025-11-26 17 \n",
"\n",
" ANO_CICLO CICLOMAIS2 dias_ate_inicio match \n",
"2532 C2025 C202520 51 1 "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"filtered_calendario"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "61ffc777",
"metadata": {},
"outputs": [],
"source": [
"df_similares = pd.read_excel(r\"C:\\Users\\darlin.cunha\\OneDrive - GRUPO GINSENG\\Assistência Suprimentos - Documentos\\2025\\SUPRIMENTOS\\BD_LANÇAMENTOS\\EUDORA\\C17\\SIMILARES\\PRODUTOS SIMILARES - EUD.xlsx\")\n",
"\n",
"df_similares = pd.merge(left=df_similares,right=calendario[['Ciclo','INICIO CICLO','FIM CICLO','DURAÇÃO']], how= 'left', left_on = 'CICLO SIMILAR',right_on = 'Ciclo' )\n",
"\n",
"df_similares = df_similares.drop(columns=['Ciclo'])\n",
"\n",
"df_similares = df_similares.rename(columns={'INICIO CICLO':'INICIO CICLO SIMILAR','FIM CICLO':'FIM CICLO SIMILAR','DURAÇÃO':'DURAÇÃO CICLO SIMILAR'})\n",
"df_similares.drop_duplicates(inplace=True)\n",
"\n",
"df_similares['MATCH'] = 1\n",
"\n",
"df_similares = df_similares.drop(columns=['INICIO DO CICLO',\n",
" 'FIM DO CICLO', 'DURAÇÃO CICLO','INICIO CICLO SIMILAR','FIM CICLO SIMILAR','DURAÇÃO CICLO SIMILAR'])"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "99ea95e6",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Index(['PRODUTO LANÇAMENTO', 'DESCRIÇÃO DO LANÇAMENTO', 'PRODUTO SIMILAR',\n",
" 'DESCRIÇÃO SIMILAR', 'CICLO SIMILAR', 'FOCO', 'IAF', 'CATEGORIA',\n",
" 'MARCA', '% CONSUMIDOR', 'MECANICA CONSUMIDOR', '% REVENDEDOR',\n",
" 'MECANICA REVENDEDOR', 'TIPO DE PRODUTO', 'CAMPANHA', 'JANELA',\n",
" 'MATCH'],\n",
" dtype='object')"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_similares.columns"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "fe922f62",
"metadata": {},
"outputs": [],
"source": [
"df_tabela = pd.read_excel(r\"C:\\Users\\darlin.cunha\\OneDrive - GRUPO GINSENG\\Assistência Suprimentos - Documentos\\2025\\SUPRIMENTOS\\BD_LANÇAMENTOS\\EUDORA\\C17\\tabela de pedido\\Pedidos Semanais Especiais - GKD - 202517.xlsx\")\n",
"\n",
"df_tabela = df_tabela[df_tabela['Região'] == 'NNE'] \n",
"\n",
"df_tabela = df_tabela[(df_tabela['Canal'] != 'Ecomm') | (df_tabela['Canal'] != 'Ecomm | VD') | (df_tabela['Canal'] != 'Ecomm | Loja')] \n",
"\n",
"df_tabela['Canal'] = np.where((df_tabela['Canal'] == \"Loja\") | (df_tabela['Canal'] == \"Todos\") | (df_tabela['Canal'] == \"Loja | VD\"),\"TODOS\",\"VD\")\n",
"\n",
"#df_tabela = df_tabela[df_tabela['Tipo de promoção'].str.contains('Lançamentos', na=False)]"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "a3a045d9",
"metadata": {},
"outputs": [],
"source": [
"df_pdv = pd.read_excel(r\"C:\\Users\\darlin.cunha\\OneDrive - GRUPO GINSENG\\Documents\\PDV_ATT 5.xlsx\")\n",
"\n",
"df_pdv_origi = pd.read_excel(r\"C:\\Users\\darlin.cunha\\OneDrive - GRUPO GINSENG\\Documents\\PDV_ATT 5.xlsx\")\n",
"\n",
"df_pdv = df_pdv.rename(columns={'DESCRIÇÃO':'DESCRIÇÃO PDV'})\n",
"\n",
"df_pdv = df_pdv.drop(columns=['REGIÃO', 'ESTADO','CIDADE','GESTÃO','MARCA'])\n",
"\n",
"df_pdv = df_pdv[df_pdv['CANAL'].isin(['HIB','VD', 'CD'])]\n",
"\n",
"df_pdv = df_pdv[df_pdv['STATUS'] == 'ATIVO']\n",
"\n",
"df_pdv['PDV DESC'] = df_pdv['DESCRIÇÃO PDV']\n",
"\n",
"df_pdv['MATCH'] = 1"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "737ade5c",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.microsoft.datawrangler.viewer.v0+json": {
"columns": [
{
"name": "index",
"rawType": "int64",
"type": "integer"
},
{
"name": "PDV",
"rawType": "int64",
"type": "integer"
},
{
"name": "CANAL",
"rawType": "object",
"type": "string"
},
{
"name": "DESCRIÇÃO PDV",
"rawType": "object",
"type": "string"
},
{
"name": "PDV DESC",
"rawType": "object",
"type": "string"
},
{
"name": "UF",
"rawType": "object",
"type": "string"
},
{
"name": "ANALISTA",
"rawType": "object",
"type": "string"
},
{
"name": "SUPERVISOR",
"rawType": "object",
"type": "string"
},
{
"name": "STATUS",
"rawType": "object",
"type": "string"
},
{
"name": "ANALISTA EUD",
"rawType": "object",
"type": "string"
},
{
"name": "MATCH",
"rawType": "int64",
"type": "integer"
}
],
"ref": "879f8015-f69b-4de5-93f0-c89751da8eda",
"rows": [
[
"77",
"24255",
"VD",
"VD Irecê",
"VD Irecê",
"BA3",
"JEFFERSON",
"JOAQUIM",
"ATIVO",
"DIELLY",
"1"
]
],
"shape": {
"columns": 10,
"rows": 1
}
},
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>PDV</th>\n",
" <th>CANAL</th>\n",
" <th>DESCRIÇÃO PDV</th>\n",
" <th>PDV DESC</th>\n",
" <th>UF</th>\n",
" <th>ANALISTA</th>\n",
" <th>SUPERVISOR</th>\n",
" <th>STATUS</th>\n",
" <th>ANALISTA EUD</th>\n",
" <th>MATCH</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>77</th>\n",
" <td>24255</td>\n",
" <td>VD</td>\n",
" <td>VD Irecê</td>\n",
" <td>VD Irecê</td>\n",
" <td>BA3</td>\n",
" <td>JEFFERSON</td>\n",
" <td>JOAQUIM</td>\n",
" <td>ATIVO</td>\n",
" <td>DIELLY</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" PDV CANAL DESCRIÇÃO PDV PDV DESC UF ANALISTA SUPERVISOR STATUS \\\n",
"77 24255 VD VD Irecê VD Irecê BA3 JEFFERSON JOAQUIM ATIVO \n",
"\n",
" ANALISTA EUD MATCH \n",
"77 DIELLY 1 "
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_pdv[df_pdv['PDV']==24255]"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "849d5297",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Index(['PDV', 'CANAL', 'DESCRIÇÃO PDV', 'PDV DESC', 'UF', 'ANALISTA',\n",
" 'SUPERVISOR', 'STATUS', 'ANALISTA EUD', 'MATCH'],\n",
" dtype='object')"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_pdv.columns"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "df04a501",
"metadata": {},
"outputs": [],
"source": [
"df_similares = pd.merge(left=df_similares,right=df_pdv,right_on=['MATCH'],left_on=['MATCH'],how='inner')\n",
"\n",
"df_similares = df_similares.drop_duplicates()"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "a7d04631",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.microsoft.datawrangler.viewer.v0+json": {
"columns": [
{
"name": "index",
"rawType": "int64",
"type": "integer"
},
{
"name": "PRODUTO LANÇAMENTO",
"rawType": "int64",
"type": "integer"
},
{
"name": "DESCRIÇÃO DO LANÇAMENTO",
"rawType": "object",
"type": "string"
},
{
"name": "PRODUTO SIMILAR",
"rawType": "int64",
"type": "integer"
},
{
"name": "DESCRIÇÃO SIMILAR",
"rawType": "object",
"type": "string"
},
{
"name": "CICLO SIMILAR",
"rawType": "object",
"type": "string"
},
{
"name": "FOCO",
"rawType": "object",
"type": "string"
},
{
"name": "IAF",
"rawType": "object",
"type": "string"
},
{
"name": "CATEGORIA",
"rawType": "object",
"type": "string"
},
{
"name": "MARCA",
"rawType": "object",
"type": "string"
},
{
"name": "% CONSUMIDOR",
"rawType": "object",
"type": "string"
},
{
"name": "MECANICA CONSUMIDOR",
"rawType": "object",
"type": "string"
},
{
"name": "% REVENDEDOR",
"rawType": "object",
"type": "unknown"
},
{
"name": "MECANICA REVENDEDOR",
"rawType": "object",
"type": "string"
},
{
"name": "TIPO DE PRODUTO",
"rawType": "object",
"type": "string"
},
{
"name": "CAMPANHA",
"rawType": "object",
"type": "string"
},
{
"name": "JANELA",
"rawType": "object",
"type": "string"
},
{
"name": "MATCH",
"rawType": "int64",
"type": "integer"
},
{
"name": "PDV",
"rawType": "int64",
"type": "integer"
},
{
"name": "CANAL",
"rawType": "object",
"type": "string"
},
{
"name": "DESCRIÇÃO PDV",
"rawType": "object",
"type": "string"
},
{
"name": "PDV DESC",
"rawType": "object",
"type": "string"
},
{
"name": "UF",
"rawType": "object",
"type": "string"
},
{
"name": "ANALISTA",
"rawType": "object",
"type": "string"
},
{
"name": "SUPERVISOR",
"rawType": "object",
"type": "string"
},
{
"name": "STATUS",
"rawType": "object",
"type": "string"
},
{
"name": "ANALISTA EUD",
"rawType": "object",
"type": "string"
}
],
"ref": "72ea0225-9f77-499c-8bea-c397fb9ada2c",
"rows": [
[
"26",
"94092",
"CLUB 6 DES COL VOYAGE V2 95ml",
"94092",
"CLUB 6 DES COL VOYAGE V2 95ml",
"C202401",
"Sim",
"Não",
"PERFUMARIA",
"CLUB 6",
"-",
"-",
"32.16",
"-",
"REGULAR",
"Hero",
"Especial",
"1",
"24255",
"VD",
"VD Irecê",
"VD Irecê",
"BA3",
"JEFFERSON",
"JOAQUIM",
"ATIVO",
"DIELLY"
],
[
"57",
"94505",
"NIINA SCRT LIP OIL SH/FLW ROS/SUBLIM 7ml",
"54613",
"NIINA SCRT LIP OIL SHIN FLOW R/SILV 7ml",
"C202408",
"Não",
"Não",
"MAQUIAGEM",
"NIINA",
"-",
"-",
"30.24",
"-",
"REGULAR",
"REGULAR",
"Especial",
"1",
"24255",
"VD",
"VD Irecê",
"VD Irecê",
"BA3",
"JEFFERSON",
"JOAQUIM",
"ATIVO",
"DIELLY"
],
[
"88",
"94506",
"NIINA SCRT LIP OIL SH/FLW ROS/MAGNIF 7ml",
"54613",
"NIINA SCRT LIP OIL SHIN FLOW R/SILV 7ml",
"C202408",
"Não",
"Não",
"MAQUIAGEM",
"NIINA",
"-",
"-",
"30.24",
"-",
"EDICAO LIMITADA",
"EDICAO LIMITADA",
"Especial",
"1",
"24255",
"VD",
"VD Irecê",
"VD Irecê",
"BA3",
"JEFFERSON",
"JOAQUIM",
"ATIVO",
"DIELLY"
],
[
"119",
"94507",
"NIINA SCRT LIP OIL SH/FLW ROS/ETERNA 7ml",
"54613",
"NIINA SCRT LIP OIL SHIN FLOW R/SILV 7ml",
"C202408",
"Não",
"Não",
"MAQUIAGEM",
"NIINA",
"-",
"-",
"30.24",
"-",
"EDICAO LIMITADA",
"EDICAO LIMITADA",
"Especial",
"1",
"24255",
"VD",
"VD Irecê",
"VD Irecê",
"BA3",
"JEFFERSON",
"JOAQUIM",
"ATIVO",
"DIELLY"
],
[
"150",
"87307",
"NIINA SCRT NECESS PUFFER PINK PU",
"56164",
"NIINA SECRETS NECESSAIRE PU 24",
"C202403",
"Não",
"Não",
"ACESSÓRIOS",
"EUD MAKE",
"-",
"-",
"21,15",
"-",
"EDICAO LIMITADA",
"EDICAO LIMITADA",
"Especial",
"1",
"24255",
"VD",
"VD Irecê",
"VD Irecê",
"BA3",
"JEFFERSON",
"JOAQUIM",
"ATIVO",
"DIELLY"
],
[
"181",
"58815",
"EUD MAKE BAT LIQ GLIT K/M NUDE 5,2ml",
"58815",
"EUD MAKE BAT LIQ GLIT K/M NUDE 5,2ml",
"C202513",
"Não",
"Não",
"MAQUIAGEM",
"EUD MAKE",
"-",
"-",
"33,54",
"-",
"EDICAO LIMITADA",
"EDICAO LIMITADA",
"Especial",
"1",
"24255",
"VD",
"VD Irecê",
"VD Irecê",
"BA3",
"JEFFERSON",
"JOAQUIM",
"ATIVO",
"DIELLY"
],
[
"212",
"58816",
"EUD MAKE BAT LIQ GLIT K/M VERMELHO 5,2ml",
"58816",
"EUD MAKE BAT LIQ GLIT K/M VERMELHO 5,2ml",
"C202513",
"Não",
"Não",
"MAQUIAGEM",
"EUD MAKE",
"-",
"-",
"33,54",
"-",
"EDICAO LIMITADA",
"EDICAO LIMITADA",
"Especial",
"1",
"24255",
"VD",
"VD Irecê",
"VD Irecê",
"BA3",
"JEFFERSON",
"JOAQUIM",
"ATIVO",
"DIELLY"
],
[
"243",
"58819",
"EUD MAKE BAT LIQ GLIT K/M ROSA 5,2ml",
"58819",
"EUD MAKE BAT LIQ GLIT K/M ROSA 5,2ml",
"C202513",
"Não",
"Não",
"MAQUIAGEM",
"EUD MAKE",
"-",
"-",
"33,54",
"-",
"EDICAO LIMITADA",
"EDICAO LIMITADA",
"Especial",
"1",
"24255",
"VD",
"VD Irecê",
"VD Irecê",
"BA3",
"JEFFERSON",
"JOAQUIM",
"ATIVO",
"DIELLY"
],
[
"274",
"94516",
"EUD MAKE BAT LIQ MAT SUPR NUD/DELIC 4ml",
"87440",
"EUD MAKE BAT LIQ MAT SUPR NUD/CONFOR 4ml",
"C202510",
"Não",
"Não",
"MAQUIAGEM",
"EUD MAKE",
"-",
"-",
"28,73",
"-",
"EDICAO LIMITADA",
"EDICAO LIMITADA",
"Especial",
"1",
"24255",
"VD",
"VD Irecê",
"VD Irecê",
"BA3",
"JEFFERSON",
"JOAQUIM",
"ATIVO",
"DIELLY"
],
[
"305",
"94517",
"EUD MAKE BAT LIQ MAT SUPR NUD/DESEJO 4ml",
"87440",
"EUD MAKE BAT LIQ MAT SUPR NUD/CONFOR 4ml",
"C202510",
"Não",
"Não",
"MAQUIAGEM",
"EUD MAKE",
"-",
"-",
"28,74",
"-",
"EDICAO LIMITADA",
"EDICAO LIMITADA",
"Especial",
"1",
"24255",
"VD",
"VD Irecê",
"VD Irecê",
"BA3",
"JEFFERSON",
"JOAQUIM",
"ATIVO",
"DIELLY"
],
[
"336",
"94518",
"EUD MAKE BAT LIQ MAT SUPR NUD/SEGRED 4ml",
"87440",
"EUD MAKE BAT LIQ MAT SUPR NUD/CONFOR 4ml",
"C202510",
"Não",
"Não",
"MAQUIAGEM",
"EUD MAKE",
"-",
"-",
"28,75",
"-",
"EDICAO LIMITADA",
"EDICAO LIMITADA",
"Especial",
"1",
"24255",
"VD",
"VD Irecê",
"VD Irecê",
"BA3",
"JEFFERSON",
"JOAQUIM",
"ATIVO",
"DIELLY"
],
[
"367",
"94519",
"EUD MAKE BAT LIQ MAT SUPR NUDE/EXCL 4ml",
"87440",
"EUD MAKE BAT LIQ MAT SUPR NUD/CONFOR 4ml",
"C202510",
"Não",
"Não",
"MAQUIAGEM",
"EUD MAKE",
"-",
"-",
"28,76",
"-",
"EDICAO LIMITADA",
"EDICAO LIMITADA",
"Especial",
"1",
"24255",
"VD",
"VD Irecê",
"VD Irecê",
"BA3",
"JEFFERSON",
"JOAQUIM",
"ATIVO",
"DIELLY"
],
[
"398",
"94520",
"EUD MAKE BAT LIQ MAT SUPR NUD/INST 4ml",
"87440",
"EUD MAKE BAT LIQ MAT SUPR NUD/CONFOR 4ml",
"C202510",
"Não",
"Não",
"MAQUIAGEM",
"EUD MAKE",
"-",
"-",
"28,73",
"-",
"EDICAO LIMITADA",
"EDICAO LIMITADA",
"Especial",
"1",
"24255",
"VD",
"VD Irecê",
"VD Irecê",
"BA3",
"JEFFERSON",
"JOAQUIM",
"ATIVO",
"DIELLY"
],
[
"429",
"94521",
"EUD MAKE BAT LIQ MAT SUPR NUD/SUPREM 4ml",
"87440",
"EUD MAKE BAT LIQ MAT SUPR NUD/CONFOR 4ml",
"C202510",
"Não",
"Não",
"MAQUIAGEM",
"EUD MAKE",
"-",
"-",
"28,73",
"-",
"EDICAO LIMITADA",
"EDICAO LIMITADA",
"Especial",
"1",
"24255",
"VD",
"VD Irecê",
"VD Irecê",
"BA3",
"JEFFERSON",
"JOAQUIM",
"ATIVO",
"DIELLY"
]
],
"shape": {
"columns": 26,
"rows": 14
}
},
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>PRODUTO LANÇAMENTO</th>\n",
" <th>DESCRIÇÃO DO LANÇAMENTO</th>\n",
" <th>PRODUTO SIMILAR</th>\n",
" <th>DESCRIÇÃO SIMILAR</th>\n",
" <th>CICLO SIMILAR</th>\n",
" <th>FOCO</th>\n",
" <th>IAF</th>\n",
" <th>CATEGORIA</th>\n",
" <th>MARCA</th>\n",
" <th>% CONSUMIDOR</th>\n",
" <th>...</th>\n",
" <th>MATCH</th>\n",
" <th>PDV</th>\n",
" <th>CANAL</th>\n",
" <th>DESCRIÇÃO PDV</th>\n",
" <th>PDV DESC</th>\n",
" <th>UF</th>\n",
" <th>ANALISTA</th>\n",
" <th>SUPERVISOR</th>\n",
" <th>STATUS</th>\n",
" <th>ANALISTA EUD</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>94092</td>\n",
" <td>CLUB 6 DES COL VOYAGE V2 95ml</td>\n",
" <td>94092</td>\n",
" <td>CLUB 6 DES COL VOYAGE V2 95ml</td>\n",
" <td>C202401</td>\n",
" <td>Sim</td>\n",
" <td>Não</td>\n",
" <td>PERFUMARIA</td>\n",
" <td>CLUB 6</td>\n",
" <td>-</td>\n",
" <td>...</td>\n",
" <td>1</td>\n",
" <td>24255</td>\n",
" <td>VD</td>\n",
" <td>VD Irecê</td>\n",
" <td>VD Irecê</td>\n",
" <td>BA3</td>\n",
" <td>JEFFERSON</td>\n",
" <td>JOAQUIM</td>\n",
" <td>ATIVO</td>\n",
" <td>DIELLY</td>\n",
" </tr>\n",
" <tr>\n",
" <th>57</th>\n",
" <td>94505</td>\n",
" <td>NIINA SCRT LIP OIL SH/FLW ROS/SUBLIM 7ml</td>\n",
" <td>54613</td>\n",
" <td>NIINA SCRT LIP OIL SHIN FLOW R/SILV 7ml</td>\n",
" <td>C202408</td>\n",
" <td>Não</td>\n",
" <td>Não</td>\n",
" <td>MAQUIAGEM</td>\n",
" <td>NIINA</td>\n",
" <td>-</td>\n",
" <td>...</td>\n",
" <td>1</td>\n",
" <td>24255</td>\n",
" <td>VD</td>\n",
" <td>VD Irecê</td>\n",
" <td>VD Irecê</td>\n",
" <td>BA3</td>\n",
" <td>JEFFERSON</td>\n",
" <td>JOAQUIM</td>\n",
" <td>ATIVO</td>\n",
" <td>DIELLY</td>\n",
" </tr>\n",
" <tr>\n",
" <th>88</th>\n",
" <td>94506</td>\n",
" <td>NIINA SCRT LIP OIL SH/FLW ROS/MAGNIF 7ml</td>\n",
" <td>54613</td>\n",
" <td>NIINA SCRT LIP OIL SHIN FLOW R/SILV 7ml</td>\n",
" <td>C202408</td>\n",
" <td>Não</td>\n",
" <td>Não</td>\n",
" <td>MAQUIAGEM</td>\n",
" <td>NIINA</td>\n",
" <td>-</td>\n",
" <td>...</td>\n",
" <td>1</td>\n",
" <td>24255</td>\n",
" <td>VD</td>\n",
" <td>VD Irecê</td>\n",
" <td>VD Irecê</td>\n",
" <td>BA3</td>\n",
" <td>JEFFERSON</td>\n",
" <td>JOAQUIM</td>\n",
" <td>ATIVO</td>\n",
" <td>DIELLY</td>\n",
" </tr>\n",
" <tr>\n",
" <th>119</th>\n",
" <td>94507</td>\n",
" <td>NIINA SCRT LIP OIL SH/FLW ROS/ETERNA 7ml</td>\n",
" <td>54613</td>\n",
" <td>NIINA SCRT LIP OIL SHIN FLOW R/SILV 7ml</td>\n",
" <td>C202408</td>\n",
" <td>Não</td>\n",
" <td>Não</td>\n",
" <td>MAQUIAGEM</td>\n",
" <td>NIINA</td>\n",
" <td>-</td>\n",
" <td>...</td>\n",
" <td>1</td>\n",
" <td>24255</td>\n",
" <td>VD</td>\n",
" <td>VD Irecê</td>\n",
" <td>VD Irecê</td>\n",
" <td>BA3</td>\n",
" <td>JEFFERSON</td>\n",
" <td>JOAQUIM</td>\n",
" <td>ATIVO</td>\n",
" <td>DIELLY</td>\n",
" </tr>\n",
" <tr>\n",
" <th>150</th>\n",
" <td>87307</td>\n",
" <td>NIINA SCRT NECESS PUFFER PINK PU</td>\n",
" <td>56164</td>\n",
" <td>NIINA SECRETS NECESSAIRE PU 24</td>\n",
" <td>C202403</td>\n",
" <td>Não</td>\n",
" <td>Não</td>\n",
" <td>ACESSÓRIOS</td>\n",
" <td>EUD MAKE</td>\n",
" <td>-</td>\n",
" <td>...</td>\n",
" <td>1</td>\n",
" <td>24255</td>\n",
" <td>VD</td>\n",
" <td>VD Irecê</td>\n",
" <td>VD Irecê</td>\n",
" <td>BA3</td>\n",
" <td>JEFFERSON</td>\n",
" <td>JOAQUIM</td>\n",
" <td>ATIVO</td>\n",
" <td>DIELLY</td>\n",
" </tr>\n",
" <tr>\n",
" <th>181</th>\n",
" <td>58815</td>\n",
" <td>EUD MAKE BAT LIQ GLIT K/M NUDE 5,2ml</td>\n",
" <td>58815</td>\n",
" <td>EUD MAKE BAT LIQ GLIT K/M NUDE 5,2ml</td>\n",
" <td>C202513</td>\n",
" <td>Não</td>\n",
" <td>Não</td>\n",
" <td>MAQUIAGEM</td>\n",
" <td>EUD MAKE</td>\n",
" <td>-</td>\n",
" <td>...</td>\n",
" <td>1</td>\n",
" <td>24255</td>\n",
" <td>VD</td>\n",
" <td>VD Irecê</td>\n",
" <td>VD Irecê</td>\n",
" <td>BA3</td>\n",
" <td>JEFFERSON</td>\n",
" <td>JOAQUIM</td>\n",
" <td>ATIVO</td>\n",
" <td>DIELLY</td>\n",
" </tr>\n",
" <tr>\n",
" <th>212</th>\n",
" <td>58816</td>\n",
" <td>EUD MAKE BAT LIQ GLIT K/M VERMELHO 5,2ml</td>\n",
" <td>58816</td>\n",
" <td>EUD MAKE BAT LIQ GLIT K/M VERMELHO 5,2ml</td>\n",
" <td>C202513</td>\n",
" <td>Não</td>\n",
" <td>Não</td>\n",
" <td>MAQUIAGEM</td>\n",
" <td>EUD MAKE</td>\n",
" <td>-</td>\n",
" <td>...</td>\n",
" <td>1</td>\n",
" <td>24255</td>\n",
" <td>VD</td>\n",
" <td>VD Irecê</td>\n",
" <td>VD Irecê</td>\n",
" <td>BA3</td>\n",
" <td>JEFFERSON</td>\n",
" <td>JOAQUIM</td>\n",
" <td>ATIVO</td>\n",
" <td>DIELLY</td>\n",
" </tr>\n",
" <tr>\n",
" <th>243</th>\n",
" <td>58819</td>\n",
" <td>EUD MAKE BAT LIQ GLIT K/M ROSA 5,2ml</td>\n",
" <td>58819</td>\n",
" <td>EUD MAKE BAT LIQ GLIT K/M ROSA 5,2ml</td>\n",
" <td>C202513</td>\n",
" <td>Não</td>\n",
" <td>Não</td>\n",
" <td>MAQUIAGEM</td>\n",
" <td>EUD MAKE</td>\n",
" <td>-</td>\n",
" <td>...</td>\n",
" <td>1</td>\n",
" <td>24255</td>\n",
" <td>VD</td>\n",
" <td>VD Irecê</td>\n",
" <td>VD Irecê</td>\n",
" <td>BA3</td>\n",
" <td>JEFFERSON</td>\n",
" <td>JOAQUIM</td>\n",
" <td>ATIVO</td>\n",
" <td>DIELLY</td>\n",
" </tr>\n",
" <tr>\n",
" <th>274</th>\n",
" <td>94516</td>\n",
" <td>EUD MAKE BAT LIQ MAT SUPR NUD/DELIC 4ml</td>\n",
" <td>87440</td>\n",
" <td>EUD MAKE BAT LIQ MAT SUPR NUD/CONFOR 4ml</td>\n",
" <td>C202510</td>\n",
" <td>Não</td>\n",
" <td>Não</td>\n",
" <td>MAQUIAGEM</td>\n",
" <td>EUD MAKE</td>\n",
" <td>-</td>\n",
" <td>...</td>\n",
" <td>1</td>\n",
" <td>24255</td>\n",
" <td>VD</td>\n",
" <td>VD Irecê</td>\n",
" <td>VD Irecê</td>\n",
" <td>BA3</td>\n",
" <td>JEFFERSON</td>\n",
" <td>JOAQUIM</td>\n",
" <td>ATIVO</td>\n",
" <td>DIELLY</td>\n",
" </tr>\n",
" <tr>\n",
" <th>305</th>\n",
" <td>94517</td>\n",
" <td>EUD MAKE BAT LIQ MAT SUPR NUD/DESEJO 4ml</td>\n",
" <td>87440</td>\n",
" <td>EUD MAKE BAT LIQ MAT SUPR NUD/CONFOR 4ml</td>\n",
" <td>C202510</td>\n",
" <td>Não</td>\n",
" <td>Não</td>\n",
" <td>MAQUIAGEM</td>\n",
" <td>EUD MAKE</td>\n",
" <td>-</td>\n",
" <td>...</td>\n",
" <td>1</td>\n",
" <td>24255</td>\n",
" <td>VD</td>\n",
" <td>VD Irecê</td>\n",
" <td>VD Irecê</td>\n",
" <td>BA3</td>\n",
" <td>JEFFERSON</td>\n",
" <td>JOAQUIM</td>\n",
" <td>ATIVO</td>\n",
" <td>DIELLY</td>\n",
" </tr>\n",
" <tr>\n",
" <th>336</th>\n",
" <td>94518</td>\n",
" <td>EUD MAKE BAT LIQ MAT SUPR NUD/SEGRED 4ml</td>\n",
" <td>87440</td>\n",
" <td>EUD MAKE BAT LIQ MAT SUPR NUD/CONFOR 4ml</td>\n",
" <td>C202510</td>\n",
" <td>Não</td>\n",
" <td>Não</td>\n",
" <td>MAQUIAGEM</td>\n",
" <td>EUD MAKE</td>\n",
" <td>-</td>\n",
" <td>...</td>\n",
" <td>1</td>\n",
" <td>24255</td>\n",
" <td>VD</td>\n",
" <td>VD Irecê</td>\n",
" <td>VD Irecê</td>\n",
" <td>BA3</td>\n",
" <td>JEFFERSON</td>\n",
" <td>JOAQUIM</td>\n",
" <td>ATIVO</td>\n",
" <td>DIELLY</td>\n",
" </tr>\n",
" <tr>\n",
" <th>367</th>\n",
" <td>94519</td>\n",
" <td>EUD MAKE BAT LIQ MAT SUPR NUDE/EXCL 4ml</td>\n",
" <td>87440</td>\n",
" <td>EUD MAKE BAT LIQ MAT SUPR NUD/CONFOR 4ml</td>\n",
" <td>C202510</td>\n",
" <td>Não</td>\n",
" <td>Não</td>\n",
" <td>MAQUIAGEM</td>\n",
" <td>EUD MAKE</td>\n",
" <td>-</td>\n",
" <td>...</td>\n",
" <td>1</td>\n",
" <td>24255</td>\n",
" <td>VD</td>\n",
" <td>VD Irecê</td>\n",
" <td>VD Irecê</td>\n",
" <td>BA3</td>\n",
" <td>JEFFERSON</td>\n",
" <td>JOAQUIM</td>\n",
" <td>ATIVO</td>\n",
" <td>DIELLY</td>\n",
" </tr>\n",
" <tr>\n",
" <th>398</th>\n",
" <td>94520</td>\n",
" <td>EUD MAKE BAT LIQ MAT SUPR NUD/INST 4ml</td>\n",
" <td>87440</td>\n",
" <td>EUD MAKE BAT LIQ MAT SUPR NUD/CONFOR 4ml</td>\n",
" <td>C202510</td>\n",
" <td>Não</td>\n",
" <td>Não</td>\n",
" <td>MAQUIAGEM</td>\n",
" <td>EUD MAKE</td>\n",
" <td>-</td>\n",
" <td>...</td>\n",
" <td>1</td>\n",
" <td>24255</td>\n",
" <td>VD</td>\n",
" <td>VD Irecê</td>\n",
" <td>VD Irecê</td>\n",
" <td>BA3</td>\n",
" <td>JEFFERSON</td>\n",
" <td>JOAQUIM</td>\n",
" <td>ATIVO</td>\n",
" <td>DIELLY</td>\n",
" </tr>\n",
" <tr>\n",
" <th>429</th>\n",
" <td>94521</td>\n",
" <td>EUD MAKE BAT LIQ MAT SUPR NUD/SUPREM 4ml</td>\n",
" <td>87440</td>\n",
" <td>EUD MAKE BAT LIQ MAT SUPR NUD/CONFOR 4ml</td>\n",
" <td>C202510</td>\n",
" <td>Não</td>\n",
" <td>Não</td>\n",
" <td>MAQUIAGEM</td>\n",
" <td>EUD MAKE</td>\n",
" <td>-</td>\n",
" <td>...</td>\n",
" <td>1</td>\n",
" <td>24255</td>\n",
" <td>VD</td>\n",
" <td>VD Irecê</td>\n",
" <td>VD Irecê</td>\n",
" <td>BA3</td>\n",
" <td>JEFFERSON</td>\n",
" <td>JOAQUIM</td>\n",
" <td>ATIVO</td>\n",
" <td>DIELLY</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>14 rows × 26 columns</p>\n",
"</div>"
],
"text/plain": [
" PRODUTO LANÇAMENTO DESCRIÇÃO DO LANÇAMENTO \\\n",
"26 94092 CLUB 6 DES COL VOYAGE V2 95ml \n",
"57 94505 NIINA SCRT LIP OIL SH/FLW ROS/SUBLIM 7ml \n",
"88 94506 NIINA SCRT LIP OIL SH/FLW ROS/MAGNIF 7ml \n",
"119 94507 NIINA SCRT LIP OIL SH/FLW ROS/ETERNA 7ml \n",
"150 87307 NIINA SCRT NECESS PUFFER PINK PU \n",
"181 58815 EUD MAKE BAT LIQ GLIT K/M NUDE 5,2ml \n",
"212 58816 EUD MAKE BAT LIQ GLIT K/M VERMELHO 5,2ml \n",
"243 58819 EUD MAKE BAT LIQ GLIT K/M ROSA 5,2ml \n",
"274 94516 EUD MAKE BAT LIQ MAT SUPR NUD/DELIC 4ml \n",
"305 94517 EUD MAKE BAT LIQ MAT SUPR NUD/DESEJO 4ml \n",
"336 94518 EUD MAKE BAT LIQ MAT SUPR NUD/SEGRED 4ml \n",
"367 94519 EUD MAKE BAT LIQ MAT SUPR NUDE/EXCL 4ml \n",
"398 94520 EUD MAKE BAT LIQ MAT SUPR NUD/INST 4ml \n",
"429 94521 EUD MAKE BAT LIQ MAT SUPR NUD/SUPREM 4ml \n",
"\n",
" PRODUTO SIMILAR DESCRIÇÃO SIMILAR CICLO SIMILAR \\\n",
"26 94092 CLUB 6 DES COL VOYAGE V2 95ml C202401 \n",
"57 54613 NIINA SCRT LIP OIL SHIN FLOW R/SILV 7ml C202408 \n",
"88 54613 NIINA SCRT LIP OIL SHIN FLOW R/SILV 7ml C202408 \n",
"119 54613 NIINA SCRT LIP OIL SHIN FLOW R/SILV 7ml C202408 \n",
"150 56164 NIINA SECRETS NECESSAIRE PU 24 C202403 \n",
"181 58815 EUD MAKE BAT LIQ GLIT K/M NUDE 5,2ml C202513 \n",
"212 58816 EUD MAKE BAT LIQ GLIT K/M VERMELHO 5,2ml C202513 \n",
"243 58819 EUD MAKE BAT LIQ GLIT K/M ROSA 5,2ml C202513 \n",
"274 87440 EUD MAKE BAT LIQ MAT SUPR NUD/CONFOR 4ml C202510 \n",
"305 87440 EUD MAKE BAT LIQ MAT SUPR NUD/CONFOR 4ml C202510 \n",
"336 87440 EUD MAKE BAT LIQ MAT SUPR NUD/CONFOR 4ml C202510 \n",
"367 87440 EUD MAKE BAT LIQ MAT SUPR NUD/CONFOR 4ml C202510 \n",
"398 87440 EUD MAKE BAT LIQ MAT SUPR NUD/CONFOR 4ml C202510 \n",
"429 87440 EUD MAKE BAT LIQ MAT SUPR NUD/CONFOR 4ml C202510 \n",
"\n",
" FOCO IAF CATEGORIA MARCA % CONSUMIDOR ... MATCH PDV CANAL \\\n",
"26 Sim Não PERFUMARIA CLUB 6 - ... 1 24255 VD \n",
"57 Não Não MAQUIAGEM NIINA - ... 1 24255 VD \n",
"88 Não Não MAQUIAGEM NIINA - ... 1 24255 VD \n",
"119 Não Não MAQUIAGEM NIINA - ... 1 24255 VD \n",
"150 Não Não ACESSÓRIOS EUD MAKE - ... 1 24255 VD \n",
"181 Não Não MAQUIAGEM EUD MAKE - ... 1 24255 VD \n",
"212 Não Não MAQUIAGEM EUD MAKE - ... 1 24255 VD \n",
"243 Não Não MAQUIAGEM EUD MAKE - ... 1 24255 VD \n",
"274 Não Não MAQUIAGEM EUD MAKE - ... 1 24255 VD \n",
"305 Não Não MAQUIAGEM EUD MAKE - ... 1 24255 VD \n",
"336 Não Não MAQUIAGEM EUD MAKE - ... 1 24255 VD \n",
"367 Não Não MAQUIAGEM EUD MAKE - ... 1 24255 VD \n",
"398 Não Não MAQUIAGEM EUD MAKE - ... 1 24255 VD \n",
"429 Não Não MAQUIAGEM EUD MAKE - ... 1 24255 VD \n",
"\n",
" DESCRIÇÃO PDV PDV DESC UF ANALISTA SUPERVISOR STATUS ANALISTA EUD \n",
"26 VD Irecê VD Irecê BA3 JEFFERSON JOAQUIM ATIVO DIELLY \n",
"57 VD Irecê VD Irecê BA3 JEFFERSON JOAQUIM ATIVO DIELLY \n",
"88 VD Irecê VD Irecê BA3 JEFFERSON JOAQUIM ATIVO DIELLY \n",
"119 VD Irecê VD Irecê BA3 JEFFERSON JOAQUIM ATIVO DIELLY \n",
"150 VD Irecê VD Irecê BA3 JEFFERSON JOAQUIM ATIVO DIELLY \n",
"181 VD Irecê VD Irecê BA3 JEFFERSON JOAQUIM ATIVO DIELLY \n",
"212 VD Irecê VD Irecê BA3 JEFFERSON JOAQUIM ATIVO DIELLY \n",
"243 VD Irecê VD Irecê BA3 JEFFERSON JOAQUIM ATIVO DIELLY \n",
"274 VD Irecê VD Irecê BA3 JEFFERSON JOAQUIM ATIVO DIELLY \n",
"305 VD Irecê VD Irecê BA3 JEFFERSON JOAQUIM ATIVO DIELLY \n",
"336 VD Irecê VD Irecê BA3 JEFFERSON JOAQUIM ATIVO DIELLY \n",
"367 VD Irecê VD Irecê BA3 JEFFERSON JOAQUIM ATIVO DIELLY \n",
"398 VD Irecê VD Irecê BA3 JEFFERSON JOAQUIM ATIVO DIELLY \n",
"429 VD Irecê VD Irecê BA3 JEFFERSON JOAQUIM ATIVO DIELLY \n",
"\n",
"[14 rows x 26 columns]"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_similares[df_similares['PDV'] == 24255]"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "0da911af",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\darlin.cunha\\AppData\\Local\\Temp\\ipykernel_3004\\1272656638.py:10: DtypeWarning: Columns (6) 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": [
"(82909, 52)"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"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\\darlin.cunha\\OneDrive - GRUPO GINSENG\\Assistência Suprimentos - Documentos\\2025\\SUPRIMENTOS\\BD_LANÇAMENTOS\\EUDORA\\C17\\draft\" # arquivo dos drafts\n",
"\n",
"# Pattern to match all CSV files\n",
"csv_files = glob.glob(os.path.join(folder_path, '*.csv'))\n",
"\n",
"# Read and concat all CSVs\n",
"df_draft = pd.concat([pd.read_csv(file) for file in csv_files], ignore_index=True)\n",
"\n",
"df_draft['match'] = 1 \n",
"\n",
"df_draft.shape\n"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "0c8c7493",
"metadata": {},
"outputs": [],
"source": [
"df_draft = df_draft.drop(columns=['Categoria'])"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "91298cde",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Index(['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 202509',\n",
" 'Histórico de Vendas do Ciclo 202510',\n",
" 'Histórico de Vendas do Ciclo 202511',\n",
" 'Histórico de Vendas do Ciclo 202512',\n",
" 'Histórico de Vendas do Ciclo 202513',\n",
" 'Histórico de Vendas do Ciclo Atual'],\n",
" dtype='object')"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_draft.columns[7:25]"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "34e179cb",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\darlin.cunha\\AppData\\Local\\Temp\\ipykernel_3004\\1463083786.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_draft.groupby('PDV').apply(calcular_crescimento)\n"
]
}
],
"source": [
"# Define as colunas mensais\n",
"colunas_mensais = df_draft.columns[7:25]\n",
"\n",
"# Agrupa por PDV e calcula crescimento médio por PDV\n",
"def calcular_crescimento(grupo):\n",
" soma_mensal = grupo[colunas_mensais].sum() # soma por mês\n",
" variacao_mensal = soma_mensal.pct_change().dropna() # variação percentual mês a mês\n",
" variacao_mensal = variacao_mensal[np.isfinite(variacao_mensal)]\n",
"\n",
" if len(variacao_mensal) == 0:\n",
" return pd.Series({'CRESCIMENTO': np.nan})\n",
"\n",
" media = variacao_mensal.mean()\n",
" desvio = variacao_mensal.std()\n",
"\n",
" limite_sup = media + 2 * desvio\n",
" limite_inf = media - 2 * desvio\n",
"\n",
" variacoes_filtradas = variacao_mensal[variacao_mensal.between(limite_inf, limite_sup)]\n",
" crescimento = round(variacoes_filtradas.mean(), 4)\n",
" return pd.Series({'CRESCIMENTO': crescimento})\n",
"\n",
"# Aplica a função por PDV\n",
"crescimento_por_pdv = df_draft.groupby('PDV').apply(calcular_crescimento)\n",
"\n",
"# Merge do resultado de volta no dataframe original\n",
"df_draft = df_draft.merge(crescimento_por_pdv, on='PDV', how='left')\n"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "4bc8c2b4",
"metadata": {},
"outputs": [],
"source": [
"df_similares['PDV'] = df_similares['PDV'].astype('Int64')\n",
"\n",
"df_final = pd.merge(left=df_similares,right=df_draft,right_on=['PDV', 'SKU'],left_on=['PDV','PRODUTO SIMILAR'],how='left')"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "867eef0d",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\darlin.cunha\\AppData\\Local\\Temp\\ipykernel_3004\\2157441860.py:29: UserWarning: pandas only supports SQLAlchemy connectable (engine/connection) or database string URI or sqlite3 DBAPI2 connection. Other DBAPI2 objects are not tested. Please consider using SQLAlchemy.\n",
" dfi = pd.read_sql(query, conn)\n"
]
}
],
"source": [
"import pyodbc\n",
"import configparser\n",
"\n",
"\n",
"config = configparser.ConfigParser()\n",
"config.read(r\"C:\\Users\\darlin.cunha\\OneDrive - GRUPO GINSENG\\Assistência Suprimentos - Documentos\\2025\\SUPRIMENTOS\\BD_LANÇAMENTOS\\EUDORA\\credenciais.ini\")\n",
"\n",
"conn = pyodbc.connect(\n",
" f\"DRIVER={{SQL Server}};\"\n",
" f\"SERVER={config['banco']['host']},1433;\"\n",
" f\"DATABASE=GINSENG;\"\n",
" f\"UID={config['banco']['user']};\"\n",
" f\"PWD={config['banco']['password']}\"\n",
")\n",
"\n",
"query = '''\n",
"SELECT \n",
" b.[DATA] AS Dia,\n",
" b.pdv AS PDV,\n",
" b.sku as 'Código do Produto',\n",
" b.VENDAS AS Quantidade\n",
"FROM base_vendas_bi b\n",
"LEFT JOIN (\n",
" SELECT SKU, MAX(ORIGEM) AS ORIGEM\n",
" FROM estoque_mar\n",
" GROUP BY SKU\n",
") e ON b.SKU = e.SKU\n",
"'''\n",
"dfi = pd.read_sql(query, conn)\n",
"conn.close()"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "297526e2",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.microsoft.datawrangler.viewer.v0+json": {
"columns": [
{
"name": "index",
"rawType": "int64",
"type": "integer"
},
{
"name": "Dia",
"rawType": "object",
"type": "string"
},
{
"name": "PDV",
"rawType": "object",
"type": "string"
},
{
"name": "Código do Produto",
"rawType": "int64",
"type": "integer"
},
{
"name": "Quantidade",
"rawType": "object",
"type": "string"
}
],
"ref": "5da68dcc-3701-461e-ba7b-d9333453198b",
"rows": [
[
"0",
"2025-08-28",
"12838",
"1317",
"0"
],
[
"1",
"2025-08-10",
"12838",
"1317",
"1"
],
[
"2",
"2025-08-06",
"12838",
"48683",
"1"
],
[
"3",
"2025-08-07",
"12838",
"80729",
"1"
],
[
"4",
"2025-08-12",
"12838",
"53159",
"1"
]
],
"shape": {
"columns": 4,
"rows": 5
}
},
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Dia</th>\n",
" <th>PDV</th>\n",
" <th>Código do Produto</th>\n",
" <th>Quantidade</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>2025-08-28</td>\n",
" <td>12838</td>\n",
" <td>1317</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2025-08-10</td>\n",
" <td>12838</td>\n",
" <td>1317</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2025-08-06</td>\n",
" <td>12838</td>\n",
" <td>48683</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>2025-08-07</td>\n",
" <td>12838</td>\n",
" <td>80729</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2025-08-12</td>\n",
" <td>12838</td>\n",
" <td>53159</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Dia PDV Código do Produto Quantidade\n",
"0 2025-08-28 12838 1317 0\n",
"1 2025-08-10 12838 1317 1\n",
"2 2025-08-06 12838 48683 1\n",
"3 2025-08-07 12838 80729 1\n",
"4 2025-08-12 12838 53159 1"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dfi.head()"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "80021c11",
"metadata": {},
"outputs": [],
"source": [
"df_venda_diaria = dfi "
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "46accb64",
"metadata": {},
"outputs": [],
"source": [
"df_venda_diaria['Dia'] = pd.to_datetime(df_venda_diaria['Dia'], errors='coerce').dt.strftime('%d/%m/%Y')"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "c1451562",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.microsoft.datawrangler.viewer.v0+json": {
"columns": [
{
"name": "index",
"rawType": "int64",
"type": "integer"
},
{
"name": "Dia",
"rawType": "object",
"type": "string"
},
{
"name": "PDV",
"rawType": "object",
"type": "string"
},
{
"name": "Código do Produto",
"rawType": "int64",
"type": "integer"
},
{
"name": "Quantidade",
"rawType": "object",
"type": "string"
}
],
"ref": "34e82f1b-e253-4886-9358-9f26559068f0",
"rows": [
[
"0",
"28/08/2025",
"12838",
"1317",
"0"
],
[
"1",
"10/08/2025",
"12838",
"1317",
"1"
],
[
"2",
"06/08/2025",
"12838",
"48683",
"1"
],
[
"3",
"07/08/2025",
"12838",
"80729",
"1"
],
[
"4",
"12/08/2025",
"12838",
"53159",
"1"
]
],
"shape": {
"columns": 4,
"rows": 5
}
},
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Dia</th>\n",
" <th>PDV</th>\n",
" <th>Código do Produto</th>\n",
" <th>Quantidade</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>28/08/2025</td>\n",
" <td>12838</td>\n",
" <td>1317</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>10/08/2025</td>\n",
" <td>12838</td>\n",
" <td>1317</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>06/08/2025</td>\n",
" <td>12838</td>\n",
" <td>48683</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>07/08/2025</td>\n",
" <td>12838</td>\n",
" <td>80729</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>12/08/2025</td>\n",
" <td>12838</td>\n",
" <td>53159</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Dia PDV Código do Produto Quantidade\n",
"0 28/08/2025 12838 1317 0\n",
"1 10/08/2025 12838 1317 1\n",
"2 06/08/2025 12838 48683 1\n",
"3 07/08/2025 12838 80729 1\n",
"4 12/08/2025 12838 53159 1"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#df_venda_diaria = pd.read_excel(r\"C:\\Users\\joao.herculano\\GRUPO GINSENG\\Assistência Suprimentos - 2025\\SUPRIMENTOS\\BD_LANÇAMENTOS\\EUDORA\\C13\\venda diaria\\FormFiltroConsultaVendaSintetica_10_07_2025_15_27_42.xls\")\n",
"\n",
"df_venda_diaria.head()"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "7ec747bc",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.microsoft.datawrangler.viewer.v0+json": {
"columns": [
{
"name": "index",
"rawType": "int64",
"type": "integer"
},
{
"name": "Dia",
"rawType": "object",
"type": "string"
},
{
"name": "PDV",
"rawType": "object",
"type": "string"
},
{
"name": "Código do Produto",
"rawType": "int64",
"type": "integer"
},
{
"name": "Quantidade",
"rawType": "object",
"type": "string"
}
],
"ref": "9a8111a4-9da0-42ae-ac41-12c1e63b3cb0",
"rows": [
[
"0",
"28/08/2025",
"12838",
"1317",
"0"
],
[
"1",
"10/08/2025",
"12838",
"1317",
"1"
],
[
"2",
"06/08/2025",
"12838",
"48683",
"1"
],
[
"3",
"07/08/2025",
"12838",
"80729",
"1"
],
[
"4",
"12/08/2025",
"12838",
"53159",
"1"
]
],
"shape": {
"columns": 4,
"rows": 5
}
},
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Dia</th>\n",
" <th>PDV</th>\n",
" <th>Código do Produto</th>\n",
" <th>Quantidade</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>28/08/2025</td>\n",
" <td>12838</td>\n",
" <td>1317</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>10/08/2025</td>\n",
" <td>12838</td>\n",
" <td>1317</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>06/08/2025</td>\n",
" <td>12838</td>\n",
" <td>48683</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>07/08/2025</td>\n",
" <td>12838</td>\n",
" <td>80729</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>12/08/2025</td>\n",
" <td>12838</td>\n",
" <td>53159</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Dia PDV Código do Produto Quantidade\n",
"0 28/08/2025 12838 1317 0\n",
"1 10/08/2025 12838 1317 1\n",
"2 06/08/2025 12838 48683 1\n",
"3 07/08/2025 12838 80729 1\n",
"4 12/08/2025 12838 53159 1"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_venda_diaria.head()"
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "05c77fd8",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.microsoft.datawrangler.viewer.v0+json": {
"columns": [
{
"name": "index",
"rawType": "object",
"type": "string"
},
{
"name": "0",
"rawType": "object",
"type": "unknown"
}
],
"ref": "fb645ea5-5b75-4ce1-8cf4-2355524c9254",
"rows": [
[
"Dia",
"object"
],
[
"PDV",
"object"
],
[
"Código do Produto",
"int64"
],
[
"Quantidade",
"object"
]
],
"shape": {
"columns": 1,
"rows": 4
}
},
"text/plain": [
"Dia object\n",
"PDV object\n",
"Código do Produto int64\n",
"Quantidade object\n",
"dtype: object"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_venda_diaria.dtypes"
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "eb8e3a26",
"metadata": {},
"outputs": [],
"source": [
"df_venda_diaria['Quantidade'] = df_venda_diaria['Quantidade'].astype('float')"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "882e68aa",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Index(['Dia', 'PDV', 'Código do Produto', 'Quantidade'], dtype='object')"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_venda_diaria.columns"
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "c7ddaf20",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(8375608, 5)"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#df_venda_diaria['PDV'] = df_venda_diaria['Unidade de Negócio'].str.split(\"-\").str[0].str.strip()\n",
"\n",
"df_venda_diaria['Dia'] = pd.to_datetime(df_venda_diaria['Dia'], format='%d/%m/%Y')\n",
"\n",
"df_venda_diaria = pd.merge(left=df_venda_diaria,right=calendario[['Ciclo','Date']],left_on='Dia',right_on='Date',how='inner')\n",
"\n",
"df_venda_diaria = df_venda_diaria.drop(columns='Date')\n",
"\n",
"df_venda_diaria.shape"
]
},
{
"cell_type": "code",
"execution_count": 27,
"id": "7119556a",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(8375608, 6)"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 'Dia' já está em formato datetime, então renomeamos para 'Data' diretamente\n",
"# ou apenas usamos 'Dia' como referência de data\n",
"\n",
"# Ordena o DataFrame para garantir que a cumulativa funcione corretamente\n",
"df_venda_diaria = df_venda_diaria.sort_values(by=['PDV', 'Código do Produto', 'Dia'])\n",
"\n",
"# Calcula a quantidade acumulada até o dia para cada grupo\n",
"df_venda_diaria['Quantidade Acumulada'] = (\n",
" df_venda_diaria\n",
" .groupby(['PDV', 'Código do Produto'])['Quantidade']\n",
" .cumsum()\n",
") # acumulado por grupo até a data da linha\n",
"\n",
"df_venda_diaria.shape"
]
},
{
"cell_type": "code",
"execution_count": 28,
"id": "c707a1b6",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.microsoft.datawrangler.viewer.v0+json": {
"columns": [
{
"name": "index",
"rawType": "int64",
"type": "integer"
},
{
"name": "PDV",
"rawType": "object",
"type": "string"
},
{
"name": "Código do Produto",
"rawType": "int64",
"type": "integer"
},
{
"name": "Ciclo",
"rawType": "object",
"type": "string"
},
{
"name": "Quantidade Acumulada",
"rawType": "float64",
"type": "float"
}
],
"ref": "37175c0e-864f-4798-b557-21a56b26b7f6",
"rows": [
[
"0",
"11111",
"48130",
"C202309",
"0.0"
],
[
"1",
"11201",
"1004",
"C202509",
"0.0"
],
[
"2",
"11201",
"1005",
"C202509",
"0.0"
],
[
"3",
"11201",
"1078",
"C202509",
"0.0"
],
[
"4",
"11201",
"1296",
"C202509",
"0.0"
],
[
"5",
"11201",
"1302",
"C202509",
"0.0"
],
[
"6",
"11201",
"1317",
"C202509",
"0.0"
],
[
"7",
"11201",
"1428",
"C202509",
"0.0"
],
[
"8",
"11201",
"1630",
"C202509",
"0.0"
],
[
"9",
"11201",
"1640",
"C202509",
"0.0"
],
[
"10",
"11201",
"1650",
"C202509",
"0.0"
],
[
"11",
"11201",
"1672",
"C202509",
"0.0"
],
[
"12",
"11201",
"1676",
"C202509",
"0.0"
],
[
"13",
"11201",
"1680",
"C202509",
"0.0"
],
[
"14",
"11201",
"1685",
"C202509",
"0.0"
],
[
"15",
"11201",
"1697",
"C202509",
"0.0"
],
[
"16",
"11201",
"1786",
"C202509",
"0.0"
],
[
"17",
"11201",
"1787",
"C202509",
"0.0"
],
[
"18",
"11201",
"1788",
"C202509",
"0.0"
],
[
"19",
"11201",
"1789",
"C202509",
"0.0"
],
[
"20",
"11201",
"1790",
"C202509",
"0.0"
],
[
"21",
"11201",
"1806",
"C202509",
"0.0"
],
[
"22",
"11201",
"1808",
"C202509",
"0.0"
],
[
"23",
"11201",
"1861",
"C202509",
"0.0"
],
[
"24",
"11201",
"1862",
"C202509",
"0.0"
],
[
"25",
"11201",
"1863",
"C202509",
"0.0"
],
[
"26",
"11201",
"2094",
"C202509",
"0.0"
],
[
"27",
"11201",
"2100",
"C202509",
"0.0"
],
[
"28",
"11201",
"2150",
"C202509",
"0.0"
],
[
"29",
"11201",
"2186",
"C202509",
"0.0"
],
[
"30",
"11201",
"2192",
"C202509",
"0.0"
],
[
"31",
"11201",
"2215",
"C202509",
"0.0"
],
[
"32",
"11201",
"2239",
"C202509",
"0.0"
],
[
"33",
"11201",
"2240",
"C202509",
"0.0"
],
[
"34",
"11201",
"2252",
"C202509",
"0.0"
],
[
"35",
"11201",
"2256",
"C202509",
"0.0"
],
[
"36",
"11201",
"2257",
"C202509",
"0.0"
],
[
"37",
"11201",
"2258",
"C202509",
"0.0"
],
[
"38",
"11201",
"2259",
"C202509",
"0.0"
],
[
"39",
"11201",
"2260",
"C202509",
"0.0"
],
[
"40",
"11201",
"2274",
"C202509",
"0.0"
],
[
"41",
"11201",
"2276",
"C202509",
"0.0"
],
[
"42",
"11201",
"2285",
"C202509",
"0.0"
],
[
"43",
"11201",
"2286",
"C202509",
"0.0"
],
[
"44",
"11201",
"2483",
"C202509",
"0.0"
],
[
"45",
"11201",
"2940",
"C202509",
"0.0"
],
[
"46",
"11201",
"3219",
"C202509",
"0.0"
],
[
"47",
"11201",
"3220",
"C202509",
"0.0"
],
[
"48",
"11201",
"3505",
"C202509",
"0.0"
],
[
"49",
"11201",
"3517",
"C202509",
"0.0"
]
],
"shape": {
"columns": 4,
"rows": 2851886
}
},
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>PDV</th>\n",
" <th>Código do Produto</th>\n",
" <th>Ciclo</th>\n",
" <th>Quantidade Acumulada</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>11111</td>\n",
" <td>48130</td>\n",
" <td>C202309</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>11201</td>\n",
" <td>1004</td>\n",
" <td>C202509</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>11201</td>\n",
" <td>1005</td>\n",
" <td>C202509</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>11201</td>\n",
" <td>1078</td>\n",
" <td>C202509</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>11201</td>\n",
" <td>1296</td>\n",
" <td>C202509</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2851881</th>\n",
" <td>72110</td>\n",
" <td>87373</td>\n",
" <td>C202415</td>\n",
" <td>13.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2851882</th>\n",
" <td>72110</td>\n",
" <td>87373</td>\n",
" <td>C202416</td>\n",
" <td>16.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2851883</th>\n",
" <td>8074</td>\n",
" <td>43151</td>\n",
" <td>C202505</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2851884</th>\n",
" <td>8074</td>\n",
" <td>48676</td>\n",
" <td>C202512</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2851885</th>\n",
" <td>8074</td>\n",
" <td>82689</td>\n",
" <td>C202512</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>2851886 rows × 4 columns</p>\n",
"</div>"
],
"text/plain": [
" PDV Código do Produto Ciclo Quantidade Acumulada\n",
"0 11111 48130 C202309 0.0\n",
"1 11201 1004 C202509 0.0\n",
"2 11201 1005 C202509 0.0\n",
"3 11201 1078 C202509 0.0\n",
"4 11201 1296 C202509 0.0\n",
"... ... ... ... ...\n",
"2851881 72110 87373 C202415 13.0\n",
"2851882 72110 87373 C202416 16.0\n",
"2851883 8074 43151 C202505 0.0\n",
"2851884 8074 48676 C202512 0.0\n",
"2851885 8074 82689 C202512 0.0\n",
"\n",
"[2851886 rows x 4 columns]"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_venda_diaria = df_venda_diaria.drop_duplicates()\n",
"\n",
"df_venda_agrupado = df_venda_diaria.groupby(['PDV', 'Código do Produto','Ciclo'])['Quantidade Acumulada'].max().reset_index()\n",
"df_venda_agrupado"
]
},
{
"cell_type": "code",
"execution_count": 29,
"id": "e2ae413b",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"np.float64(268817879.434)"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_venda_agrupado['Quantidade Acumulada'].sum()"
]
},
{
"cell_type": "code",
"execution_count": 30,
"id": "dc452c72",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(434, 83)"
]
},
"execution_count": 30,
"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']], right_on='match',left_on='MATCH',how='left')\n",
"df_final.shape"
]
},
{
"cell_type": "code",
"execution_count": 31,
"id": "c260e0e3",
"metadata": {},
"outputs": [],
"source": [
"#df_final = df_final.drop(columns=['PDV DESC','status','SKU','Descrição','Lançamento','Item analisado','Planograma','Quantidade por caixa'])"
]
},
{
"cell_type": "code",
"execution_count": 32,
"id": "8a05450c",
"metadata": {},
"outputs": [],
"source": [
"df_final = pd.merge(left=df_final, right=calendario[['Ciclo','INICIO CICLO','FIM CICLO','DURAÇÃO']], right_on='Ciclo',left_on='CICLO SIMILAR',how='left')\n",
"df_final.shape\n",
"\n",
"df_final = df_final.drop_duplicates()"
]
},
{
"cell_type": "code",
"execution_count": 33,
"id": "cc65edab",
"metadata": {},
"outputs": [],
"source": [
"\n",
"df_venda_agrupado = df_venda_agrupado.rename(columns={'Quantidade Acumulada':'Vendas Ciclo Lançamento'})"
]
},
{
"cell_type": "code",
"execution_count": 34,
"id": "c5cd5f42",
"metadata": {},
"outputs": [],
"source": [
"df_final['PRODUTO LANÇAMENTO'] = df_final['PRODUTO LANÇAMENTO'].astype('Int64')\n",
"\n",
"df_venda_agrupado['PDV'] = df_venda_agrupado['PDV'].astype('Int64')\n",
"\n",
"df_final = pd.merge(left=df_final, right = df_venda_agrupado, right_on=['Ciclo','Código do Produto','PDV'],left_on=['CICLO SIMILAR','PRODUTO SIMILAR','PDV'],how='left')\n",
"\n",
"df_final = df_final.drop_duplicates()"
]
},
{
"cell_type": "code",
"execution_count": 35,
"id": "69c88d20",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"np.int64(14)"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_final['PDV'].value_counts().min()"
]
},
{
"cell_type": "code",
"execution_count": 36,
"id": "f5206f50",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Index(['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 202509',\n",
" 'Histórico de Vendas do Ciclo 202510',\n",
" 'Histórico de Vendas do Ciclo 202511',\n",
" 'Histórico de Vendas do Ciclo 202512',\n",
" 'Histórico de Vendas do Ciclo 202513'],\n",
" dtype='object')"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_final.columns[32:49]"
]
},
{
"cell_type": "code",
"execution_count": 37,
"id": "2a049809",
"metadata": {},
"outputs": [],
"source": [
"colunas = df_final.columns[32:49]\n",
"\n",
"df_final[colunas] = df_final[colunas].fillna(0)\n"
]
},
{
"cell_type": "code",
"execution_count": 38,
"id": "0a1bb832",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"np.float64(0.4368)"
]
},
"execution_count": 38,
"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[32:49]\n",
"\n",
"# Passo 1: Soma todas as linhas (itens) por mês → resultado: total por mês\n",
"soma_mensal = df_final[colunas_mensais].sum()\n",
"\n",
"# Passo 2: Calcula a variação percentual de um mês para o outro\n",
"variacao_mensal = soma_mensal.pct_change()\n",
"variacao_mensal = variacao_mensal.dropna()\n",
"\n",
"variacao_mensal = variacao_mensal[np.isfinite(variacao_mensal)]\n",
"\n",
"# Passo 3: Calcula a média da variação (ignorando o primeiro NaN)\n",
"media_variacao = variacao_mensal[1:].mean()\n",
"\n",
"# Calcula média e desvio padrão\n",
"media = variacao_mensal.mean()\n",
"desvio = variacao_mensal.std()\n",
"\n",
"# Define limite (ex: 2 desvios padrão)\n",
"limite_superior = media + 2 * desvio\n",
"limite_inferior = media - 2 * desvio\n",
"\n",
"# Filtra dados dentro do limite\n",
"filtro = variacao_mensal.between(limite_inferior, limite_superior)\n",
"df_filtrado = variacao_mensal[filtro]\n",
"CRESCIMENTO = round(df_filtrado.mean(),4)\n",
"\n",
"df_final['CRESCIMENTO_GERAL'] = CRESCIMENTO\n",
"\n",
"CRESCIMENTO\n"
]
},
{
"cell_type": "code",
"execution_count": 39,
"id": "a9647c32",
"metadata": {},
"outputs": [],
"source": [
"df_final = df_final.drop(columns='Ciclo_y')\n",
"\n",
"df_final = df_final.rename(columns={'Ciclo_x': 'Ciclo',\t'INICIO CICLO_x': 'INICIO CICLO',\t'FIM CICLO_x':'FIM CICLO' ,'DURAÇÃO_x':'DURAÇÃO',\n",
" \t'INICIO CICLO_y': 'INICIO CICLO SIMILAR' ,\t'FIM CICLO_y': 'FIM CICLO SIMILAR','DURAÇÃO_y':'DURAÇÃO CICLO SIMILAR'})"
]
},
{
"cell_type": "code",
"execution_count": 40,
"id": "8290853c",
"metadata": {},
"outputs": [],
"source": [
"VENDA_SIMILAR_6_MESES= df_final.columns[42:49]\n",
"\n",
"df_final['Pico Vendas Similar Ultimos 6 ciclos'] = df_final[VENDA_SIMILAR_6_MESES].max(axis=1)\n",
"\n",
"\n",
"df_final['MEDIANA DO HISTÓRICO'] = df_final[colunas_mensais].dropna().median(axis=1)\n",
"\n",
"df_final['MEDIA DO HISTÓRICO'] = df_final[colunas_mensais].dropna().mean(axis=1)\n",
"\n",
"df_final['Vendas Ciclo Lançamento'] = df_final['Vendas Ciclo Lançamento'].fillna(0)"
]
},
{
"cell_type": "code",
"execution_count": 41,
"id": "d3228386",
"metadata": {},
"outputs": [],
"source": [
"df_final['MEDIANA DO HISTÓRICO USADA'] = np.where(df_final['MEDIA DO HISTÓRICO']<df_final['MEDIANA DO HISTÓRICO'],df_final['MEDIANA DO HISTÓRICO'],df_final['MEDIA DO HISTÓRICO'])\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 42,
"id": "09cc2f82",
"metadata": {},
"outputs": [],
"source": [
"df_depara_vdc = pd.read_excel(r\"C:\\Users\\darlin.cunha\\OneDrive - GRUPO GINSENG\\Assistência Suprimentos - Documentos\\2025\\SUPRIMENTOS\\Vitoria da Conquista\\HISTORICO VENDAS VITORIA DA CONQUISTA\\Filiais - Vitoria da Conquista 4.xlsx\")\n",
"\n",
"\n",
"df_vdc = pd.read_parquet(r\"C:\\Users\\darlin.cunha\\OneDrive - GRUPO GINSENG\\Assistência Suprimentos - Documentos\\2025\\SUPRIMENTOS\\Vitoria da Conquista\\HISTORICO VENDAS VITORIA DA CONQUISTA\\vendas_compilado_VDC.parquet\")\n",
"\n",
"\n",
"########################################\n",
"df_vdc['Quantidade Acumulada vdc'] = (\n",
" df_vdc\n",
" .groupby(['Practico', 'Código'])['Quantidade']\n",
" .cumsum())\n"
]
},
{
"cell_type": "code",
"execution_count": 43,
"id": "013cad23",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.microsoft.datawrangler.viewer.v0+json": {
"columns": [
{
"name": "index",
"rawType": "int64",
"type": "integer"
},
{
"name": "Ciclo",
"rawType": "object",
"type": "string"
},
{
"name": "PDVDEPARA.Practico",
"rawType": "object",
"type": "string"
},
{
"name": "Código",
"rawType": "int64",
"type": "integer"
},
{
"name": "Descrição",
"rawType": "object",
"type": "string"
},
{
"name": "Quantidade",
"rawType": "Int64",
"type": "integer"
},
{
"name": "Quantidade Acumulada vdc",
"rawType": "Int64",
"type": "integer"
}
],
"ref": "45939903-4a22-4984-bfa3-017830cd1313",
"rows": [
[
"0",
"C202201",
"23701",
"1061",
"SOPHIE LOC HID CPO MOANA 200ml",
"5",
"5"
],
[
"1",
"C202201",
"23701",
"1078",
"MATCH SRUM CAP POS QUIMICA 50ml",
"1",
"1"
],
[
"2",
"C202201",
"23701",
"1296",
"PMPCK THE BLEND DES ANTIT AER 2x75g",
"1",
"1"
],
[
"3",
"C202201",
"23701",
"1302",
"PMPCK LILY DES ANTIT AER 2x75g",
"6",
"6"
],
[
"4",
"C202201",
"23701",
"1314",
"PMPCK ZAAD DES ANTIT AER 2x75g",
"7",
"7"
]
],
"shape": {
"columns": 6,
"rows": 5
}
},
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Ciclo</th>\n",
" <th>PDVDEPARA.Practico</th>\n",
" <th>Código</th>\n",
" <th>Descrição</th>\n",
" <th>Quantidade</th>\n",
" <th>Quantidade Acumulada vdc</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>C202201</td>\n",
" <td>23701</td>\n",
" <td>1061</td>\n",
" <td>SOPHIE LOC HID CPO MOANA 200ml</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>C202201</td>\n",
" <td>23701</td>\n",
" <td>1078</td>\n",
" <td>MATCH SRUM CAP POS QUIMICA 50ml</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>C202201</td>\n",
" <td>23701</td>\n",
" <td>1296</td>\n",
" <td>PMPCK THE BLEND DES ANTIT AER 2x75g</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>C202201</td>\n",
" <td>23701</td>\n",
" <td>1302</td>\n",
" <td>PMPCK LILY DES ANTIT AER 2x75g</td>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>C202201</td>\n",
" <td>23701</td>\n",
" <td>1314</td>\n",
" <td>PMPCK ZAAD DES ANTIT AER 2x75g</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Ciclo PDVDEPARA.Practico Código Descrição \\\n",
"0 C202201 23701 1061 SOPHIE LOC HID CPO MOANA 200ml \n",
"1 C202201 23701 1078 MATCH SRUM CAP POS QUIMICA 50ml \n",
"2 C202201 23701 1296 PMPCK THE BLEND DES ANTIT AER 2x75g \n",
"3 C202201 23701 1302 PMPCK LILY DES ANTIT AER 2x75g \n",
"4 C202201 23701 1314 PMPCK ZAAD DES ANTIT AER 2x75g \n",
"\n",
" Quantidade Quantidade Acumulada vdc \n",
"0 5 5 \n",
"1 1 1 \n",
"2 1 1 \n",
"3 6 6 \n",
"4 7 7 "
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_vdc=df_vdc.rename(columns={'Practico':'PDVDEPARA.Practico'})\n",
"df_vdc.head()"
]
},
{
"cell_type": "code",
"execution_count": 44,
"id": "5a827c08",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.microsoft.datawrangler.viewer.v0+json": {
"columns": [
{
"name": "index",
"rawType": "int64",
"type": "integer"
},
{
"name": "PDVDEPARA.Practico",
"rawType": "object",
"type": "string"
},
{
"name": "Código",
"rawType": "int64",
"type": "integer"
},
{
"name": "Ciclo vdc",
"rawType": "object",
"type": "string"
},
{
"name": "Quantidade Acumulada vdc",
"rawType": "Int64",
"type": "integer"
}
],
"ref": "148a7d46-a8af-4538-aebb-d00e8e5bb858",
"rows": [
[
"0",
"23701",
"1004",
"C202203",
"37"
],
[
"1",
"23701",
"1004",
"C202204",
"59"
],
[
"2",
"23701",
"1004",
"C202205",
"63"
],
[
"3",
"23701",
"1004",
"C202206",
"69"
],
[
"4",
"23701",
"1004",
"C202207",
"75"
]
],
"shape": {
"columns": 4,
"rows": 5
}
},
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>PDVDEPARA.Practico</th>\n",
" <th>Código</th>\n",
" <th>Ciclo vdc</th>\n",
" <th>Quantidade Acumulada vdc</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>23701</td>\n",
" <td>1004</td>\n",
" <td>C202203</td>\n",
" <td>37</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>23701</td>\n",
" <td>1004</td>\n",
" <td>C202204</td>\n",
" <td>59</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>23701</td>\n",
" <td>1004</td>\n",
" <td>C202205</td>\n",
" <td>63</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>23701</td>\n",
" <td>1004</td>\n",
" <td>C202206</td>\n",
" <td>69</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>23701</td>\n",
" <td>1004</td>\n",
" <td>C202207</td>\n",
" <td>75</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" PDVDEPARA.Practico Código Ciclo vdc Quantidade Acumulada vdc\n",
"0 23701 1004 C202203 37\n",
"1 23701 1004 C202204 59\n",
"2 23701 1004 C202205 63\n",
"3 23701 1004 C202206 69\n",
"4 23701 1004 C202207 75"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_vdc_agrupado = df_vdc.groupby(['PDVDEPARA.Practico',\t'Código','Ciclo'])['Quantidade Acumulada vdc'].max().reset_index()\n",
"\n",
"df_vdc_agrupado = df_vdc_agrupado.rename(columns={'Ciclo':'Ciclo vdc'})\n",
"\n",
"df_vdc_agrupado['PDVDEPARA.Practico'] = df_vdc_agrupado['PDVDEPARA.Practico'].fillna(0)\n",
"\n",
"df_vdc_agrupado.head()"
]
},
{
"cell_type": "code",
"execution_count": 45,
"id": "e01b2f8d",
"metadata": {},
"outputs": [],
"source": [
"df_vdc_agrupado = df_vdc_agrupado[df_vdc_agrupado['PDVDEPARA.Practico'] != 'nan']"
]
},
{
"cell_type": "code",
"execution_count": 46,
"id": "4861b401",
"metadata": {},
"outputs": [],
"source": [
"df_vdc_agrupado['PDVDEPARA.Practico'] = df_vdc_agrupado['PDVDEPARA.Practico'].astype('Int64')"
]
},
{
"cell_type": "code",
"execution_count": 47,
"id": "8ec14143",
"metadata": {},
"outputs": [],
"source": [
"df_final = pd.merge(left=df_final, right = df_vdc_agrupado, right_on=['Ciclo vdc','Código','PDVDEPARA.Practico'],left_on=['CICLO SIMILAR','PRODUTO SIMILAR','PDV'],how='left')\n",
"\n",
"df_final['Quantidade Acumulada vdc'] = df_final['Quantidade Acumulada vdc'].fillna(0)\n",
"\n",
"\n",
"df_final['Vendas Ciclo Lançamento'] = np.where(df_final['Quantidade Acumulada vdc']>0, df_final['Quantidade Acumulada vdc'], df_final['Vendas Ciclo Lançamento'])\n",
"\n",
"df_final = df_final.drop(columns='Quantidade Acumulada vdc')\n",
"\n",
"\n",
"df_final = df_final.drop(columns='Ciclo vdc')\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 48,
"id": "b107e519",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Index(['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 202509',\n",
" 'Histórico de Vendas do Ciclo 202510',\n",
" 'Histórico de Vendas do Ciclo 202511'],\n",
" dtype='object')"
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_final.columns[40:47]"
]
},
{
"cell_type": "code",
"execution_count": 49,
"id": "07f043f2",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.microsoft.datawrangler.viewer.v0+json": {
"columns": [
{
"name": "index",
"rawType": "int64",
"type": "integer"
},
{
"name": "CANAL",
"rawType": "object",
"type": "string"
},
{
"name": "UF",
"rawType": "object",
"type": "string"
},
{
"name": "med_por_canal",
"rawType": "float64",
"type": "float"
}
],
"ref": "7a34aa39-4238-4d51-9625-754cf7a9557a",
"rows": [
[
"0",
"CD",
"AL",
"110.88235294117646"
],
[
"1",
"HIB",
"AL",
"9.0"
],
[
"2",
"HIB",
"BA",
"6.0588235294117645"
],
[
"3",
"HIB",
"BA3",
"2.6470588235294117"
],
[
"4",
"HIB",
"SE",
"4.470588235294118"
],
[
"5",
"HIB",
"VDC",
"1.2941176470588236"
],
[
"6",
"VD",
"AL",
"61.1764705882353"
],
[
"7",
"VD",
"BA",
"14.117647058823529"
],
[
"8",
"VD",
"BA3",
"8.117647058823529"
],
[
"9",
"VD",
"SE",
"26.941176470588236"
],
[
"10",
"VD",
"VDC",
"44.705882352941174"
]
],
"shape": {
"columns": 3,
"rows": 11
}
},
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>CANAL</th>\n",
" <th>UF</th>\n",
" <th>med_por_canal</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>CD</td>\n",
" <td>AL</td>\n",
" <td>110.882353</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>HIB</td>\n",
" <td>AL</td>\n",
" <td>9.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>HIB</td>\n",
" <td>BA</td>\n",
" <td>6.058824</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>HIB</td>\n",
" <td>BA3</td>\n",
" <td>2.647059</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>HIB</td>\n",
" <td>SE</td>\n",
" <td>4.470588</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>HIB</td>\n",
" <td>VDC</td>\n",
" <td>1.294118</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>VD</td>\n",
" <td>AL</td>\n",
" <td>61.176471</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>VD</td>\n",
" <td>BA</td>\n",
" <td>14.117647</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>VD</td>\n",
" <td>BA3</td>\n",
" <td>8.117647</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>VD</td>\n",
" <td>SE</td>\n",
" <td>26.941176</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>VD</td>\n",
" <td>VDC</td>\n",
" <td>44.705882</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" CANAL UF med_por_canal\n",
"0 CD AL 110.882353\n",
"1 HIB AL 9.000000\n",
"2 HIB BA 6.058824\n",
"3 HIB BA3 2.647059\n",
"4 HIB SE 4.470588\n",
"5 HIB VDC 1.294118\n",
"6 VD AL 61.176471\n",
"7 VD BA 14.117647\n",
"8 VD BA3 8.117647\n",
"9 VD SE 26.941176\n",
"10 VD VDC 44.705882"
]
},
"execution_count": 49,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"medi = df_final.groupby(['CANAL','UF'])['MEDIANA DO HISTÓRICO USADA'].max().reset_index()\n",
"medi = medi.rename(columns={'MEDIANA DO HISTÓRICO USADA':'med_por_canal'})\n",
"medi"
]
},
{
"cell_type": "code",
"execution_count": 50,
"id": "94abddce",
"metadata": {},
"outputs": [],
"source": [
"df_final = pd.merge(left=df_final, right=medi,on=['CANAL','UF'],how='inner')\n",
"\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 51,
"id": "27906593",
"metadata": {},
"outputs": [],
"source": [
"df_final['CRESCIMENTO_FINAL'] = df_final['CRESCIMENTO_GERAL'] + CRESCIMENTO #crescimento do pdv\n",
"\n",
"df_final['CRESCIMENTO_FINAL'] = np.where(df_final['CRESCIMENTO_GERAL'] + CRESCIMENTO>0.8,0.8,df_final['CRESCIMENTO_GERAL'] + CRESCIMENTO)\n",
"\n",
"df_final['CRESCIMENTO_FINAL'] = np.where(df_final['CRESCIMENTO_GERAL'] + df_final['CRESCIMENTO']<0,0,df_final['CRESCIMENTO_GERAL'] + df_final['CRESCIMENTO'])\n",
"\n",
"#df_final['MEDIANA DO HISTÓRICO USADA'] = np.where(df_final['MEDIANA DO HISTÓRICO']==0, df_final['med_por_canal'],df_final['MEDIANA DO HISTÓRICO'])\n"
]
},
{
"cell_type": "code",
"execution_count": 52,
"id": "5ba0586e",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"np.int64(0)"
]
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_final['med_por_canal'].isna().sum()"
]
},
{
"cell_type": "code",
"execution_count": 53,
"id": "1a625e69",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(434, 99)"
]
},
"execution_count": 53,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\n",
"# Primeiro cálculo intermediário\n",
"df_final['PV GINSENG'] = np.where(df_final['CRESCIMENTO_FINAL'] * df_final['Vendas Ciclo Lançamento'] + df_final['Vendas Ciclo Lançamento'] < df_final['MEDIANA DO HISTÓRICO USADA'],\n",
" round(df_final['CRESCIMENTO_FINAL'] * df_final['MEDIANA DO HISTÓRICO USADA']+ df_final['MEDIANA DO HISTÓRICO USADA'],0), \n",
" round(df_final['CRESCIMENTO_FINAL']*df_final['Vendas Ciclo Lançamento']+df_final['Vendas Ciclo Lançamento'],0))\n",
"\n",
"df_final['PV GINSENG'] = np.where(df_final['PV GINSENG'].isna(),df_final['med_por_canal'] ,df_final['PV GINSENG'])\n",
"\n",
"df_final.shape"
]
},
{
"cell_type": "code",
"execution_count": 54,
"id": "ad10c069",
"metadata": {},
"outputs": [],
"source": [
"df_final.drop(columns=df_final.columns[29:42],inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": 55,
"id": "f9bddbb1",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Index(['PRODUTO LANÇAMENTO', 'DESCRIÇÃO DO LANÇAMENTO', 'PRODUTO SIMILAR',\n",
" 'DESCRIÇÃO SIMILAR', 'CICLO SIMILAR', 'FOCO', 'IAF', 'CATEGORIA',\n",
" 'MARCA', '% CONSUMIDOR', 'MECANICA CONSUMIDOR', '% REVENDEDOR',\n",
" 'MECANICA REVENDEDOR', 'TIPO DE PRODUTO', 'CAMPANHA', 'JANELA', 'MATCH',\n",
" 'PDV', 'CANAL', 'DESCRIÇÃO PDV', 'PDV DESC', 'UF', 'ANALISTA',\n",
" 'SUPERVISOR', 'STATUS', 'ANALISTA EUD', 'Classe', 'SKU', 'Descrição',\n",
" 'Histórico de Vendas do Ciclo 202507',\n",
" 'Histórico de Vendas do Ciclo 202508',\n",
" 'Histórico de Vendas do Ciclo 202509',\n",
" 'Histórico de Vendas do Ciclo 202510',\n",
" 'Histórico de Vendas do Ciclo 202511',\n",
" 'Histórico de Vendas do Ciclo 202512',\n",
" 'Histórico de Vendas do Ciclo 202513',\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',\n",
" 'Foco Ciclo Atual', 'Foco Próximo Ciclo', 'Foco Próximo Ciclo + 1',\n",
" 'IAF Ciclo Atual', 'IAF Próximo Ciclo', 'IAF Próximo Ciclo + 1',\n",
" 'Estoque Atual', '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', 'match_x', 'CRESCIMENTO', 'Ciclo', 'INICIO CICLO',\n",
" 'FIM CICLO', 'DURAÇÃO', 'match_y', 'dias_ate_inicio',\n",
" 'INICIO CICLO SIMILAR', 'FIM CICLO SIMILAR', 'DURAÇÃO CICLO SIMILAR',\n",
" 'Código do Produto', 'Ciclo', 'Vendas Ciclo Lançamento',\n",
" 'CRESCIMENTO_GERAL', 'Pico Vendas Similar Ultimos 6 ciclos',\n",
" 'MEDIANA DO HISTÓRICO', 'MEDIA DO HISTÓRICO',\n",
" 'MEDIANA DO HISTÓRICO USADA', 'PDVDEPARA.Practico', 'Código',\n",
" 'med_por_canal', 'CRESCIMENTO_FINAL', 'PV GINSENG'],\n",
" dtype='object')"
]
},
"execution_count": 55,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_final.columns"
]
},
{
"cell_type": "code",
"execution_count": 57,
"id": "04f31c2b",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Index(['PRODUTO LANÇAMENTO', 'DESCRIÇÃO DO LANÇAMENTO', 'PRODUTO SIMILAR',\n",
" 'DESCRIÇÃO SIMILAR', 'CICLO SIMILAR', 'FOCO', 'IAF', 'CATEGORIA',\n",
" 'MARCA', '% CONSUMIDOR', 'MECANICA CONSUMIDOR', '% REVENDEDOR',\n",
" 'MECANICA REVENDEDOR', 'TIPO DE PRODUTO', 'CAMPANHA', 'JANELA', 'MATCH',\n",
" 'PDV', 'CANAL', 'DESCRIÇÃO PDV', 'PDV DESC', 'UF', 'ANALISTA',\n",
" 'SUPERVISOR', 'STATUS', 'ANALISTA EUD', 'Classe', 'SKU', 'Descrição',\n",
" 'Histórico de Vendas do Ciclo 202507',\n",
" 'Histórico de Vendas do Ciclo 202508',\n",
" 'Histórico de Vendas do Ciclo 202509',\n",
" 'Histórico de Vendas do Ciclo 202510',\n",
" 'Histórico de Vendas do Ciclo 202511',\n",
" 'Histórico de Vendas do Ciclo 202512',\n",
" 'Histórico de Vendas do Ciclo 202513',\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',\n",
" 'Foco Ciclo Atual', 'Foco Próximo Ciclo', 'Foco Próximo Ciclo + 1',\n",
" 'IAF Ciclo Atual', 'IAF Próximo Ciclo', 'IAF Próximo Ciclo + 1',\n",
" 'Estoque Atual', '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', 'match_x', 'CRESCIMENTO', 'Ciclo', 'INICIO CICLO',\n",
" 'FIM CICLO', 'DURAÇÃO', 'match_y', 'dias_ate_inicio',\n",
" 'INICIO CICLO SIMILAR', 'FIM CICLO SIMILAR', 'DURAÇÃO CICLO SIMILAR',\n",
" 'Código do Produto', 'Ciclo', 'Vendas Ciclo Lançamento',\n",
" 'CRESCIMENTO_GERAL', 'Pico Vendas Similar Ultimos 6 ciclos',\n",
" 'MEDIANA DO HISTÓRICO', 'MEDIA DO HISTÓRICO',\n",
" 'MEDIANA DO HISTÓRICO USADA', 'PDVDEPARA.Practico', 'Código',\n",
" 'med_por_canal', 'CRESCIMENTO_FINAL', 'PV GINSENG'],\n",
" dtype='object')"
]
},
"execution_count": 57,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_final.columns"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "fe73c93e",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Index(['PRODUTO LANÇAMENTO', 'DESCRIÇÃO DO LANÇAMENTO', 'PRODUTO SIMILAR',\n",
" 'DESCRIÇÃO SIMILAR', 'CICLO SIMILAR', 'FOCO', 'IAF', 'CATEGORIA',\n",
" 'MARCA', '% CONSUMIDOR', 'MECANICA CONSUMIDOR', '% REVENDEDOR',\n",
" 'MECANICA REVENDEDOR', 'TIPO DE PRODUTO', 'PDV', 'CANAL',\n",
" 'DESCRIÇÃO PDV', 'PDV DESC', 'UF', 'ANALISTA', 'SUPERVISOR',\n",
" 'ANALISTA EUD', 'SKU', 'Descrição',\n",
" 'Histórico de Vendas do Ciclo 202507',\n",
" 'Histórico de Vendas do Ciclo 202508',\n",
" 'Histórico de Vendas do Ciclo 202509',\n",
" 'Histórico de Vendas do Ciclo 202510',\n",
" 'Histórico de Vendas do Ciclo 202511',\n",
" 'Histórico de Vendas do Ciclo 202512',\n",
" 'Histórico de Vendas do Ciclo 202513',\n",
" 'Histórico de Vendas do Ciclo Atual', 'Projeção Próximo Ciclo',\n",
" 'Projeção Próximo Ciclo + 1', 'Foco Ciclo Atual', 'Foco Próximo Ciclo',\n",
" 'Foco Próximo Ciclo + 1', 'IAF Ciclo Atual', 'IAF Próximo Ciclo',\n",
" 'IAF Próximo Ciclo + 1', 'Estoque Atual', 'Estoque em Transito',\n",
" 'Pedido Pendente', 'Preço Sell In', 'Código do Produto',\n",
" 'Vendas Ciclo Lançamento', 'Pico Vendas Similar Ultimos 6 ciclos',\n",
" 'MEDIANA DO HISTÓRICO', 'MEDIA DO HISTÓRICO',\n",
" 'MEDIANA DO HISTÓRICO USADA', 'PV GINSENG'],\n",
" dtype='object')"
]
},
"execution_count": 58,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dropar = ['CAMPANHA', 'JANELA', 'MATCH','STATUS', 'SUP', 'Classe','Dias sem venda','Promoção Próximo Ciclo', 'Promoção Próximo Ciclo + 1',\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','Quantidade',\n",
" 'Item analisado', 'match_x', 'CRESCIMENTO', 'Ciclo', 'INICIO CICLO',\n",
" 'FIM CICLO', 'DURAÇÃO', 'match_y', 'dias_ate_inicio',\n",
" 'INICIO CICLO SIMILAR', 'FIM CICLO SIMILAR', 'DURAÇÃO CICLO SIMILAR','Ciclo',\n",
" 'CRESCIMENTO_GERAL','PDVDEPARA.Practico', 'Código',\n",
" 'med_por_canal', 'CRESCIMENTO_FINAL']\n",
"\n",
"for i in dropar:\n",
" try:\n",
" df_final.drop(columns=i,inplace=True)\n",
" except:\n",
" pass\n",
"df_final.columns"
]
},
{
"cell_type": "code",
"execution_count": 61,
"id": "66772a9a",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'Histórico de Vendas do Ciclo Atual'"
]
},
"execution_count": 61,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_final.columns[31]"
]
},
{
"cell_type": "code",
"execution_count": 62,
"id": "15b7149f",
"metadata": {},
"outputs": [],
"source": [
"df_final = df_final.rename(columns={df_final.columns[27]: \"C-4\", df_final.columns[28]: \"C-3\",df_final.columns[29]: \"C-2\",df_final.columns[30]: \"C-1\",df_final.columns[31]:'VENDAS CICLO ATUAL'})\n"
]
},
{
"cell_type": "code",
"execution_count": 63,
"id": "9333bc77",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Index(['PRODUTO LANÇAMENTO', 'DESCRIÇÃO DO LANÇAMENTO', 'PRODUTO SIMILAR',\n",
" 'DESCRIÇÃO SIMILAR', 'CICLO SIMILAR', 'FOCO', 'IAF', 'CATEGORIA',\n",
" 'MARCA', '% CONSUMIDOR', 'MECANICA CONSUMIDOR', '% REVENDEDOR',\n",
" 'MECANICA REVENDEDOR', 'TIPO DE PRODUTO', 'PDV', 'CANAL',\n",
" 'DESCRIÇÃO PDV', 'PDV DESC', 'UF', 'ANALISTA', 'SUPERVISOR',\n",
" 'ANALISTA EUD', 'SKU', 'DESCRIÇÃO', 'C-4', 'C-3', 'C-2', 'C-1',\n",
" 'VENDAS CICLO ATUAL', 'PROJEÇÃO PRÓXIMO CICLO',\n",
" 'PROJEÇÃO PRÓXIMO CICLO + 1', 'FOCO CICLO ATUAL', 'FOCO PRÓXIMO CICLO',\n",
" 'FOCO PRÓXIMO CICLO + 1', 'IAF CICLO ATUAL', 'IAF PRÓXIMO CICLO',\n",
" 'IAF PRÓXIMO CICLO + 1', 'ESTOQUE ATUAL', 'ESTOQUE EM TRANSITO',\n",
" 'PEDIDO PENDENTE', 'PREÇO SELL IN', 'CÓDIGO DO PRODUTO',\n",
" 'VENDAS CICLO LANÇAMENTO', 'PICO VENDAS SIMILAR ULTIMOS 6 CICLOS',\n",
" 'MEDIANA DO HISTÓRICO', 'MEDIA DO HISTÓRICO',\n",
" 'MEDIANA DO HISTÓRICO USADA', 'PV GINSENG'],\n",
" dtype='object')"
]
},
"execution_count": 63,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_final.columns = df_final.columns.str.upper()\n",
"\n",
"df_final.drop(columns=df_final.filter(regex='HISTÓRICO DE VENDAS DO CICLO').columns, inplace=True)\n",
"\n",
"df_final.columns"
]
},
{
"cell_type": "code",
"execution_count": 64,
"id": "5abd4bae",
"metadata": {},
"outputs": [],
"source": [
"df_final = df_final.drop(columns=['DESCRIÇÃO','MEDIANA DO HISTÓRICO'])"
]
},
{
"cell_type": "code",
"execution_count": 65,
"id": "62ce5c62",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(434, 46)"
]
},
"execution_count": 65,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_final.shape"
]
},
{
"cell_type": "code",
"execution_count": 66,
"id": "10975651",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Index(['PRODUTO LANÇAMENTO', 'DESCRIÇÃO DO LANÇAMENTO', 'PRODUTO SIMILAR',\n",
" 'DESCRIÇÃO SIMILAR', 'CICLO SIMILAR', 'FOCO', 'IAF', 'CATEGORIA',\n",
" 'MARCA', '% CONSUMIDOR', 'MECANICA CONSUMIDOR', '% REVENDEDOR',\n",
" 'MECANICA REVENDEDOR', 'TIPO DE PRODUTO', 'PDV', 'CANAL',\n",
" 'DESCRIÇÃO PDV', 'PDV DESC', 'UF', 'ANALISTA', 'SUPERVISOR',\n",
" 'ANALISTA EUD', 'SKU', 'C-4', 'C-3', 'C-2', 'C-1', 'VENDAS CICLO ATUAL',\n",
" 'PROJEÇÃO PRÓXIMO CICLO', 'PROJEÇÃO PRÓXIMO CICLO + 1',\n",
" 'FOCO CICLO ATUAL', 'FOCO PRÓXIMO CICLO', 'FOCO PRÓXIMO CICLO + 1',\n",
" 'IAF CICLO ATUAL', 'IAF PRÓXIMO CICLO', 'IAF PRÓXIMO CICLO + 1',\n",
" 'ESTOQUE ATUAL', 'ESTOQUE EM TRANSITO', 'PEDIDO PENDENTE',\n",
" 'PREÇO SELL IN', 'CÓDIGO DO PRODUTO', 'VENDAS CICLO LANÇAMENTO',\n",
" 'PICO VENDAS SIMILAR ULTIMOS 6 CICLOS', 'MEDIA DO HISTÓRICO',\n",
" 'MEDIANA DO HISTÓRICO USADA', 'PV GINSENG'],\n",
" dtype='object')"
]
},
"execution_count": 66,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_final.columns"
]
},
{
"cell_type": "code",
"execution_count": 67,
"id": "25cbff26",
"metadata": {},
"outputs": [],
"source": [
"df_final = df_final.reindex(columns=[\n",
" 'SUPERVISOR',\n",
" 'CANAL',\n",
" 'UF',\n",
" 'PDV',\n",
" 'PDV DESC',\n",
" 'PRODUTO LANÇAMENTO',\n",
" 'DESCRIÇÃO DO LANÇAMENTO',\n",
" 'MARCA',\n",
" 'CATEGORIA',\n",
" 'MECANICA CONSUMIDOR',\n",
" '% CONSUMIDOR',\n",
" 'MECANICA REVENDEDOR',\n",
" '% REVENDEDOR',\n",
" 'TIPO DE PRODUTO',\n",
" 'IAF',\n",
" 'FOCO',\n",
" 'PRODUTO SIMILAR',\n",
" 'DESCRIÇÃO SIMILAR',\n",
" 'CICLO SIMILAR',\n",
" 'VENDAS CICLO LANÇAMENTO',\n",
" 'C-4',\n",
" 'C-3',\n",
" 'C-2',\n",
" 'C-1',\n",
" 'VENDAS CICLO ATUAL',\n",
" 'PICO VENDAS SIMILAR ULTIMOS 6 CICLOS',\n",
" 'PV GINSENG',\n",
" 'PROJEÇÃO PRÓXIMO CICLO',\n",
" 'PROJEÇÃO PRÓXIMO CICLO + 1',\n",
" ])\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "0ab3a1fc",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 68,
"id": "a3e80cb4",
"metadata": {},
"outputs": [],
"source": [
"df_final['SUGESTÃO METASELLIN'] = ''\n",
"df_final['SUGESTÃO ABASTECIMENTO'] = ''\n",
"df_final['SUGESTÃO COMERCIAL'] = ''\n"
]
},
{
"cell_type": "code",
"execution_count": 69,
"id": "aa11b320",
"metadata": {},
"outputs": [],
"source": [
"df_final['PV GINSENG'] = np.ceil(df_final['PV GINSENG'])"
]
},
{
"cell_type": "code",
"execution_count": 70,
"id": "2df3e2e9",
"metadata": {},
"outputs": [],
"source": [
"df_final.to_excel(r'C:\\Users\\darlin.cunha\\Documents\\lançamentosugest_15.09.xlsx',index=False)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "391a0e3c",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.13.2"
}
},
"nbformat": 4,
"nbformat_minor": 5
}