4342 lines
119 KiB
Plaintext
4342 lines
119 KiB
Plaintext
{
|
||
"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
|
||
}
|