diff --git a/promoção/promoção_EUD_ciclo07.ipynb b/promoção/promoção_EUD_ciclo07.ipynb
index 4342b28..661a068 100644
--- a/promoção/promoção_EUD_ciclo07.ipynb
+++ b/promoção/promoção_EUD_ciclo07.ipynb
@@ -39,7 +39,7 @@
"name": "stderr",
"output_type": "stream",
"text": [
- "C:\\Users\\joao.herculano\\AppData\\Local\\Temp\\ipykernel_42880\\119945099.py:10: DtypeWarning: Columns (7) have mixed types. Specify dtype option on import or set low_memory=False.\n",
+ "C:\\Users\\joao.herculano\\AppData\\Local\\Temp\\ipykernel_28528\\119945099.py:10: DtypeWarning: Columns (7) have mixed types. Specify dtype option on import or set low_memory=False.\n",
" df_draft = pd.concat([pd.read_csv(file) for file in csv_files], ignore_index=True)\n"
]
},
@@ -941,17 +941,54 @@
"cell_type": "code",
"execution_count": 49,
"metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Index(['Histórico de Vendas do Ciclo 202408',\n",
+ " 'Histórico de Vendas do Ciclo 202409',\n",
+ " 'Histórico de Vendas do Ciclo 202410',\n",
+ " 'Histórico de Vendas do Ciclo 202411',\n",
+ " 'Histórico de Vendas do Ciclo 202412',\n",
+ " 'Histórico de Vendas do Ciclo 202413',\n",
+ " 'Histórico de Vendas do Ciclo 202414',\n",
+ " 'Histórico de Vendas do Ciclo 202415',\n",
+ " 'Histórico de Vendas do Ciclo 202416',\n",
+ " 'Histórico de Vendas do Ciclo 202417',\n",
+ " 'Histórico de Vendas do Ciclo 202501',\n",
+ " 'Histórico de Vendas do Ciclo 202502',\n",
+ " 'Histórico de Vendas do Ciclo 202503',\n",
+ " 'Histórico de Vendas do Ciclo 202504',\n",
+ " 'Histórico de Vendas do Ciclo 202505',\n",
+ " 'Histórico de Vendas do Ciclo 202506',\n",
+ " 'Histórico de Vendas do Ciclo 202507'],\n",
+ " dtype='object')"
+ ]
+ },
+ "execution_count": 49,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df_final.columns[6:23]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 50,
+ "metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
- "-0.14227416063810053\n"
+ "0.167950276989596\n"
]
}
],
"source": [
- "CRESCIMENTO = (df_final[df_final.columns[17]].sum() - df_final[df_final.columns[22]].sum())/df_final[df_final.columns[17]].sum() \n",
+ "CRESCIMENTO = (df_final[df_final.columns[6]].sum() - df_final[df_final.columns[22]].sum())/df_final[df_final.columns[6]].sum() \n",
"print(CRESCIMENTO)\n",
"\n",
"df_final['CRESCIMENTO'] = .2"
@@ -959,7 +996,7 @@
},
{
"cell_type": "code",
- "execution_count": 50,
+ "execution_count": 51,
"metadata": {},
"outputs": [],
"source": [
@@ -970,7 +1007,7 @@
},
{
"cell_type": "code",
- "execution_count": 51,
+ "execution_count": 52,
"metadata": {},
"outputs": [
{
@@ -979,7 +1016,7 @@
"'202410'"
]
},
- "execution_count": 51,
+ "execution_count": 52,
"metadata": {},
"output_type": "execute_result"
}
@@ -990,11 +1027,11 @@
},
{
"cell_type": "code",
- "execution_count": 52,
+ "execution_count": 53,
"metadata": {},
"outputs": [],
"source": [
- "vendas_todos_historicos = df_final.columns[17:23]\n",
+ "vendas_todos_historicos = df_final.columns[6:23]\n",
"\n",
"df_final['MEDIANA DO HISTÓRICO'] = df_final[vendas_todos_historicos].median(axis=1)\n",
"\n",
@@ -1005,16 +1042,16 @@
},
{
"cell_type": "code",
- "execution_count": 53,
+ "execution_count": 54,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
- "np.float64(-0.14227416063810053)"
+ "np.float64(0.167950276989596)"
]
},
- "execution_count": 53,
+ "execution_count": 54,
"metadata": {},
"output_type": "execute_result"
}
@@ -1025,22 +1062,43 @@
},
{
"cell_type": "code",
- "execution_count": 54,
+ "execution_count": 88,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Index(['PDV', 'Classe', 'SKU', 'Descrição', 'Categoria_x', 'Subcategoria',\n",
+ " 'C-4', 'C-3', 'C-2', 'C-1', 'Histórico de Vendas do Ciclo 202507',\n",
+ " 'Histórico de Vendas do Ciclo Atual', 'Dias sem venda',\n",
+ " 'Projeção Próximo Ciclo', 'Projeção Próximo Ciclo + 1', 'Estoque Atual',\n",
+ " 'Estoque em Transito', 'Pedido Pendente',\n",
+ " 'Compra inteligente Próximo Ciclo',\n",
+ " 'Compra inteligente Próximo Ciclo + 1', 'Item Desativado',\n",
+ " 'Data Prevista Regularização', 'Quantidade por caixa',\n",
+ " 'Histórico de Vendas do Ciclo 202407', 'match', 'Ciclo_x', 'Veiculo',\n",
+ " 'Tipo de Promoção', 'Estratégia de Promoção', 'Tipo_mecanica',\n",
+ " 'Promo Período Limitado?', 'EAM', 'Categoria_y', 'Cód. Combo',\n",
+ " 'Código do Item', 'Descrição do Item', 'Chamada Promocional',\n",
+ " 'Valor do Guia', 'Preço Promocionado', '% de Desconto', 'RE compra por',\n",
+ " 'RE Vende por', 'RE lucra (R$)', 'MATCH', 'UF', 'DESCRIÇÃO PDV',\n",
+ " 'ANALISTA', 'INICIO CICLO', 'FIM CICLO', 'DURAÇÃO', 'dias_ate_inicio',\n",
+ " 'SKU_FINAL', 'DDV PREVISTO', 'COBERTURA ATUAL', 'SKU1_x', 'SKU2_x',\n",
+ " 'Tipo Preço', 'PC_x', 'PV_x', 'SKU1_y', 'SKU2_y', 'PC_y', 'PV_y',\n",
+ " 'PRECO DE COMPRA', 'PRECO DE VENDA', 'MARCA', 'PDV_SKU', 'UFPRODUTO',\n",
+ " 'PROJEÇÃO DO CICLO PROMOCIONADO', 'PICO DE VENDAS 2024',\n",
+ " 'Pico Vendas Ultimos 6 ciclos', 'CRESCIMENTO', '202410',\n",
+ " 'MEDIANA DO HISTÓRICO', 'MEDIA DO HISTÓRICO', 'PV GINSENG'],\n",
+ " dtype='object')"
+ ]
+ },
+ "execution_count": 88,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
- "df_final['PV GINSENG'] = np.where(df_final['CRESCIMENTO'] * df_final[ciclo_ano_passado] + df_final[ciclo_ano_passado] < df_final['MEDIANA DO HISTÓRICO'],\n",
- " round(df_final['CRESCIMENTO'] * df_final['MEDIANA DO HISTÓRICO']+ df_final['MEDIANA DO HISTÓRICO'],0), \n",
- " round(df_final['CRESCIMENTO']*df_final[ciclo_ano_passado]+df_final[ciclo_ano_passado],0))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 55,
- "metadata": {},
- "outputs": [],
- "source": [
- "df_final = df_final.rename(columns={df_final.columns[18]: \"C-4\", df_final.columns[19]: \"C-3\",df_final.columns[20]: \"C-2\",df_final.columns[21]: \"C-1\"})"
+ "df_final.columns"
]
},
{
@@ -1049,7 +1107,18 @@
"metadata": {},
"outputs": [],
"source": [
- "df_final.drop(columns=df_final.columns[6:18], inplace=True)\n"
+ "df_final['PV GINSENG'] = np.where(df_final['CRESCIMENTO'] * df_final[ciclo_ano_passado] + df_final[ciclo_ano_passado] < df_final['MEDIANA DO HISTÓRICO'],\n",
+ " np.ceil(df_final['CRESCIMENTO'] * df_final['MEDIANA DO HISTÓRICO']+ df_final['MEDIANA DO HISTÓRICO']), \n",
+ " np.ceil(df_final['CRESCIMENTO']*df_final[ciclo_ano_passado]+df_final[ciclo_ano_passado]))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "df_final['PV GINSENG'] = np.where(df_final['PV GINSENG']<1, df_final['Projeção Próximo Ciclo + 1'],df_final['PV GINSENG'])"
]
},
{
@@ -1057,6 +1126,24 @@
"execution_count": 57,
"metadata": {},
"outputs": [],
+ "source": [
+ "df_final = df_final.rename(columns={df_final.columns[18]: \"C-4\", df_final.columns[19]: \"C-3\",df_final.columns[20]: \"C-2\",df_final.columns[21]: \"C-1\"})"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 58,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "df_final.drop(columns=df_final.columns[6:18], inplace=True)\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 59,
+ "metadata": {},
+ "outputs": [],
"source": [
"# List all columns except the two\n",
"cols_to_group_by = df_final.columns.difference(['DDV PREVISTO', 'COBERTURA ATUAL'])\n",
@@ -1072,7 +1159,7 @@
},
{
"cell_type": "code",
- "execution_count": 58,
+ "execution_count": 60,
"metadata": {},
"outputs": [
{
@@ -1092,7 +1179,7 @@
"Name: Compra inteligente Próximo Ciclo, Length: 1822, dtype: int64"
]
},
- "execution_count": 58,
+ "execution_count": 60,
"metadata": {},
"output_type": "execute_result"
}
@@ -1103,7 +1190,7 @@
},
{
"cell_type": "code",
- "execution_count": 59,
+ "execution_count": 61,
"metadata": {},
"outputs": [],
"source": [
@@ -1112,7 +1199,7 @@
},
{
"cell_type": "code",
- "execution_count": 60,
+ "execution_count": 62,
"metadata": {},
"outputs": [],
"source": [
@@ -1125,7 +1212,7 @@
},
{
"cell_type": "code",
- "execution_count": 61,
+ "execution_count": 63,
"metadata": {},
"outputs": [
{
@@ -1146,7 +1233,7 @@
"Name: count, Length: 195, dtype: int64"
]
},
- "execution_count": 61,
+ "execution_count": 63,
"metadata": {},
"output_type": "execute_result"
}
@@ -1157,7 +1244,7 @@
},
{
"cell_type": "code",
- "execution_count": 62,
+ "execution_count": 64,
"metadata": {},
"outputs": [],
"source": [
@@ -1166,7 +1253,7 @@
},
{
"cell_type": "code",
- "execution_count": 63,
+ "execution_count": 65,
"metadata": {},
"outputs": [],
"source": [
@@ -1175,7 +1262,7 @@
},
{
"cell_type": "code",
- "execution_count": 64,
+ "execution_count": 66,
"metadata": {},
"outputs": [
{
@@ -1206,7 +1293,7 @@
" dtype='object')"
]
},
- "execution_count": 64,
+ "execution_count": 66,
"metadata": {},
"output_type": "execute_result"
}
@@ -1217,7 +1304,7 @@
},
{
"cell_type": "code",
- "execution_count": 65,
+ "execution_count": 67,
"metadata": {},
"outputs": [],
"source": [
@@ -1226,7 +1313,7 @@
},
{
"cell_type": "code",
- "execution_count": 66,
+ "execution_count": 68,
"metadata": {},
"outputs": [],
"source": [
@@ -1235,7 +1322,7 @@
},
{
"cell_type": "code",
- "execution_count": 67,
+ "execution_count": 69,
"metadata": {},
"outputs": [],
"source": [
@@ -1245,7 +1332,7 @@
},
{
"cell_type": "code",
- "execution_count": 68,
+ "execution_count": 70,
"metadata": {},
"outputs": [],
"source": [
@@ -1254,7 +1341,7 @@
},
{
"cell_type": "code",
- "execution_count": 69,
+ "execution_count": 71,
"metadata": {},
"outputs": [],
"source": [
@@ -1266,7 +1353,7 @@
},
{
"cell_type": "code",
- "execution_count": 70,
+ "execution_count": 72,
"metadata": {},
"outputs": [],
"source": [
@@ -1276,7 +1363,7 @@
},
{
"cell_type": "code",
- "execution_count": 71,
+ "execution_count": 73,
"metadata": {},
"outputs": [],
"source": [
@@ -1285,7 +1372,7 @@
},
{
"cell_type": "code",
- "execution_count": 72,
+ "execution_count": 74,
"metadata": {},
"outputs": [],
"source": [
@@ -1294,7 +1381,7 @@
},
{
"cell_type": "code",
- "execution_count": 73,
+ "execution_count": 75,
"metadata": {},
"outputs": [
{
@@ -1325,7 +1412,7 @@
" dtype='object')"
]
},
- "execution_count": 73,
+ "execution_count": 75,
"metadata": {},
"output_type": "execute_result"
}
@@ -1336,7 +1423,7 @@
},
{
"cell_type": "code",
- "execution_count": 74,
+ "execution_count": 76,
"metadata": {},
"outputs": [
{
@@ -1345,7 +1432,7 @@
"'EUD'"
]
},
- "execution_count": 74,
+ "execution_count": 76,
"metadata": {},
"output_type": "execute_result"
}
@@ -1357,7 +1444,7 @@
},
{
"cell_type": "code",
- "execution_count": 75,
+ "execution_count": 77,
"metadata": {},
"outputs": [
{
@@ -1387,7 +1474,7 @@
" dtype='object')"
]
},
- "execution_count": 75,
+ "execution_count": 77,
"metadata": {},
"output_type": "execute_result"
}
@@ -1398,7 +1485,7 @@
},
{
"cell_type": "code",
- "execution_count": 76,
+ "execution_count": 78,
"metadata": {},
"outputs": [],
"source": [
@@ -1440,7 +1527,7 @@
},
{
"cell_type": "code",
- "execution_count": 77,
+ "execution_count": 79,
"metadata": {},
"outputs": [],
"source": [
@@ -1466,7 +1553,7 @@
},
{
"cell_type": "code",
- "execution_count": 78,
+ "execution_count": 80,
"metadata": {},
"outputs": [],
"source": [
@@ -1477,7 +1564,7 @@
},
{
"cell_type": "code",
- "execution_count": 79,
+ "execution_count": 81,
"metadata": {},
"outputs": [
{
@@ -1508,7 +1595,7 @@
" dtype='object')"
]
},
- "execution_count": 79,
+ "execution_count": 81,
"metadata": {},
"output_type": "execute_result"
}
@@ -1519,7 +1606,7 @@
},
{
"cell_type": "code",
- "execution_count": 80,
+ "execution_count": 82,
"metadata": {},
"outputs": [],
"source": [
@@ -1528,7 +1615,7 @@
},
{
"cell_type": "code",
- "execution_count": 81,
+ "execution_count": 83,
"metadata": {},
"outputs": [],
"source": [
@@ -1537,7 +1624,7 @@
},
{
"cell_type": "code",
- "execution_count": 82,
+ "execution_count": 84,
"metadata": {},
"outputs": [],
"source": [
@@ -1548,7 +1635,7 @@
},
{
"cell_type": "code",
- "execution_count": 83,
+ "execution_count": 85,
"metadata": {},
"outputs": [],
"source": [
@@ -1559,7 +1646,7 @@
},
{
"cell_type": "code",
- "execution_count": 84,
+ "execution_count": 87,
"metadata": {},
"outputs": [],
"source": [
diff --git a/promoção/promoção_boti_ciclo07.ipynb b/promoção/promoção_boti_ciclo07.ipynb
index 8e90a8e..a9f7606 100644
--- a/promoção/promoção_boti_ciclo07.ipynb
+++ b/promoção/promoção_boti_ciclo07.ipynb
@@ -165,7 +165,7 @@
"name": "stderr",
"output_type": "stream",
"text": [
- "C:\\Users\\joao.herculano\\AppData\\Local\\Temp\\ipykernel_37488\\4129764549.py:10: DtypeWarning: Columns (7) have mixed types. Specify dtype option on import or set low_memory=False.\n",
+ "C:\\Users\\joao.herculano\\AppData\\Local\\Temp\\ipykernel_54556\\4129764549.py:10: DtypeWarning: Columns (7) have mixed types. Specify dtype option on import or set low_memory=False.\n",
" df_draft = pd.concat([pd.read_csv(file) for file in csv_files], ignore_index=True)\n"
]
},
@@ -735,7 +735,7 @@
"
10 | \n",
" C2025 | \n",
" C202512 | \n",
- " 28 | \n",
+ " 26 | \n",
" \n",
" \n",
"\n",
@@ -746,7 +746,7 @@
"2199 C202510 2025-06-30 2025-07-20 21 2025-06-30 10 \n",
"\n",
" ANO_CICLO CICLOMAIS2 dias_ate_inicio \n",
- "2199 C2025 C202512 28 "
+ "2199 C2025 C202512 26 "
]
},
"execution_count": 23,
@@ -957,7 +957,31 @@
"cell_type": "code",
"execution_count": 34,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "ename": "KeyboardInterrupt",
+ "evalue": "",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[31m---------------------------------------------------------------------------\u001b[39m",
+ "\u001b[31mKeyboardInterrupt\u001b[39m Traceback (most recent call last)",
+ "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[34]\u001b[39m\u001b[32m, line 5\u001b[39m\n\u001b[32m 1\u001b[39m df_estoque = df_estoque.rename(columns={\u001b[33m'\u001b[39m\u001b[33mSKU_FINAL\u001b[39m\u001b[33m'\u001b[39m:\u001b[33m'\u001b[39m\u001b[33mSKU_PARA_VALIDACAO\u001b[39m\u001b[33m'\u001b[39m})\n\u001b[32m 3\u001b[39m df_estoque[\u001b[33m'\u001b[39m\u001b[33mSKU_PARA_VALIDACAO\u001b[39m\u001b[33m'\u001b[39m] = df_estoque[\u001b[33m'\u001b[39m\u001b[33mSKU_PARA_VALIDACAO\u001b[39m\u001b[33m'\u001b[39m].astype(\u001b[33m'\u001b[39m\u001b[33mInt64\u001b[39m\u001b[33m'\u001b[39m)\n\u001b[32m----> \u001b[39m\u001b[32m5\u001b[39m df_final = \u001b[43mpd\u001b[49m\u001b[43m.\u001b[49m\u001b[43mmerge\u001b[49m\u001b[43m(\u001b[49m\u001b[43m \u001b[49m\u001b[43mleft\u001b[49m\u001b[43m=\u001b[49m\u001b[43m \u001b[49m\u001b[43mdf_final\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mright\u001b[49m\u001b[43m \u001b[49m\u001b[43m=\u001b[49m\u001b[43m \u001b[49m\u001b[43mdf_estoque\u001b[49m\u001b[43m[\u001b[49m\u001b[43m[\u001b[49m\u001b[33;43m'\u001b[39;49m\u001b[33;43mSKU_PARA_VALIDACAO\u001b[39;49m\u001b[33;43m'\u001b[39;49m\u001b[43m,\u001b[49m\u001b[33;43m'\u001b[39;49m\u001b[33;43mArquivo_Origem\u001b[39;49m\u001b[33;43m'\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mleft_on\u001b[49m\u001b[43m=\u001b[49m\u001b[43m \u001b[49m\u001b[33;43m'\u001b[39;49m\u001b[33;43mSKU\u001b[39;49m\u001b[33;43m'\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mright_on\u001b[49m\u001b[43m=\u001b[49m\u001b[33;43m'\u001b[39;49m\u001b[33;43mSKU_PARA_VALIDACAO\u001b[39;49m\u001b[33;43m'\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mhow\u001b[49m\u001b[43m=\u001b[49m\u001b[33;43m'\u001b[39;49m\u001b[33;43mleft\u001b[39;49m\u001b[33;43m'\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[32m 7\u001b[39m df_final = df_final.drop_duplicates()\n",
+ "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\joao.herculano\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages\\pandas\\core\\reshape\\merge.py:184\u001b[39m, in \u001b[36mmerge\u001b[39m\u001b[34m(left, right, how, on, left_on, right_on, left_index, right_index, sort, suffixes, copy, indicator, validate)\u001b[39m\n\u001b[32m 169\u001b[39m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[32m 170\u001b[39m op = _MergeOperation(\n\u001b[32m 171\u001b[39m left_df,\n\u001b[32m 172\u001b[39m right_df,\n\u001b[32m (...)\u001b[39m\u001b[32m 182\u001b[39m validate=validate,\n\u001b[32m 183\u001b[39m )\n\u001b[32m--> \u001b[39m\u001b[32m184\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mop\u001b[49m\u001b[43m.\u001b[49m\u001b[43mget_result\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcopy\u001b[49m\u001b[43m=\u001b[49m\u001b[43mcopy\u001b[49m\u001b[43m)\u001b[49m\n",
+ "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\joao.herculano\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages\\pandas\\core\\reshape\\merge.py:888\u001b[39m, in \u001b[36m_MergeOperation.get_result\u001b[39m\u001b[34m(self, copy)\u001b[39m\n\u001b[32m 884\u001b[39m \u001b[38;5;28mself\u001b[39m.left, \u001b[38;5;28mself\u001b[39m.right = \u001b[38;5;28mself\u001b[39m._indicator_pre_merge(\u001b[38;5;28mself\u001b[39m.left, \u001b[38;5;28mself\u001b[39m.right)\n\u001b[32m 886\u001b[39m join_index, left_indexer, right_indexer = \u001b[38;5;28mself\u001b[39m._get_join_info()\n\u001b[32m--> \u001b[39m\u001b[32m888\u001b[39m result = \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_reindex_and_concat\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 889\u001b[39m \u001b[43m \u001b[49m\u001b[43mjoin_index\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mleft_indexer\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mright_indexer\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcopy\u001b[49m\u001b[43m=\u001b[49m\u001b[43mcopy\u001b[49m\n\u001b[32m 890\u001b[39m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 891\u001b[39m result = result.__finalize__(\u001b[38;5;28mself\u001b[39m, method=\u001b[38;5;28mself\u001b[39m._merge_type)\n\u001b[32m 893\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m.indicator:\n",
+ "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\joao.herculano\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages\\pandas\\core\\reshape\\merge.py:879\u001b[39m, in \u001b[36m_MergeOperation._reindex_and_concat\u001b[39m\u001b[34m(self, join_index, left_indexer, right_indexer, copy)\u001b[39m\n\u001b[32m 877\u001b[39m left.columns = llabels\n\u001b[32m 878\u001b[39m right.columns = rlabels\n\u001b[32m--> \u001b[39m\u001b[32m879\u001b[39m result = \u001b[43mconcat\u001b[49m\u001b[43m(\u001b[49m\u001b[43m[\u001b[49m\u001b[43mleft\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mright\u001b[49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43maxis\u001b[49m\u001b[43m=\u001b[49m\u001b[32;43m1\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcopy\u001b[49m\u001b[43m=\u001b[49m\u001b[43mcopy\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 880\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m result\n",
+ "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\joao.herculano\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages\\pandas\\core\\reshape\\concat.py:395\u001b[39m, in \u001b[36mconcat\u001b[39m\u001b[34m(objs, axis, join, ignore_index, keys, levels, names, verify_integrity, sort, copy)\u001b[39m\n\u001b[32m 380\u001b[39m copy = \u001b[38;5;28;01mFalse\u001b[39;00m\n\u001b[32m 382\u001b[39m op = _Concatenator(\n\u001b[32m 383\u001b[39m objs,\n\u001b[32m 384\u001b[39m axis=axis,\n\u001b[32m (...)\u001b[39m\u001b[32m 392\u001b[39m sort=sort,\n\u001b[32m 393\u001b[39m )\n\u001b[32m--> \u001b[39m\u001b[32m395\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mop\u001b[49m\u001b[43m.\u001b[49m\u001b[43mget_result\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n",
+ "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\joao.herculano\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages\\pandas\\core\\reshape\\concat.py:684\u001b[39m, in \u001b[36m_Concatenator.get_result\u001b[39m\u001b[34m(self)\u001b[39m\n\u001b[32m 680\u001b[39m indexers[ax] = obj_labels.get_indexer(new_labels)\n\u001b[32m 682\u001b[39m mgrs_indexers.append((obj._mgr, indexers))\n\u001b[32m--> \u001b[39m\u001b[32m684\u001b[39m new_data = \u001b[43mconcatenate_managers\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 685\u001b[39m \u001b[43m \u001b[49m\u001b[43mmgrs_indexers\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mnew_axes\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mconcat_axis\u001b[49m\u001b[43m=\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mbm_axis\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcopy\u001b[49m\u001b[43m=\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mcopy\u001b[49m\n\u001b[32m 686\u001b[39m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 687\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mself\u001b[39m.copy \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m using_copy_on_write():\n\u001b[32m 688\u001b[39m new_data._consolidate_inplace()\n",
+ "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\joao.herculano\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages\\pandas\\core\\internals\\concat.py:131\u001b[39m, in \u001b[36mconcatenate_managers\u001b[39m\u001b[34m(mgrs_indexers, axes, concat_axis, copy)\u001b[39m\n\u001b[32m 124\u001b[39m \u001b[38;5;66;03m# Assertions disabled for performance\u001b[39;00m\n\u001b[32m 125\u001b[39m \u001b[38;5;66;03m# for tup in mgrs_indexers:\u001b[39;00m\n\u001b[32m 126\u001b[39m \u001b[38;5;66;03m# # caller is responsible for ensuring this\u001b[39;00m\n\u001b[32m 127\u001b[39m \u001b[38;5;66;03m# indexers = tup[1]\u001b[39;00m\n\u001b[32m 128\u001b[39m \u001b[38;5;66;03m# assert concat_axis not in indexers\u001b[39;00m\n\u001b[32m 130\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m concat_axis == \u001b[32m0\u001b[39m:\n\u001b[32m--> \u001b[39m\u001b[32m131\u001b[39m mgrs = \u001b[43m_maybe_reindex_columns_na_proxy\u001b[49m\u001b[43m(\u001b[49m\u001b[43maxes\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmgrs_indexers\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mneeds_copy\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 132\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m mgrs[\u001b[32m0\u001b[39m].concat_horizontal(mgrs, axes)\n\u001b[32m 134\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(mgrs_indexers) > \u001b[32m0\u001b[39m \u001b[38;5;129;01mand\u001b[39;00m mgrs_indexers[\u001b[32m0\u001b[39m][\u001b[32m0\u001b[39m].nblocks > \u001b[32m0\u001b[39m:\n",
+ "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\joao.herculano\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages\\pandas\\core\\internals\\concat.py:230\u001b[39m, in \u001b[36m_maybe_reindex_columns_na_proxy\u001b[39m\u001b[34m(axes, mgrs_indexers, needs_copy)\u001b[39m\n\u001b[32m 220\u001b[39m mgr = mgr.reindex_indexer(\n\u001b[32m 221\u001b[39m axes[i],\n\u001b[32m 222\u001b[39m indexers[i],\n\u001b[32m (...)\u001b[39m\u001b[32m 227\u001b[39m use_na_proxy=\u001b[38;5;28;01mTrue\u001b[39;00m, \u001b[38;5;66;03m# only relevant for i==0\u001b[39;00m\n\u001b[32m 228\u001b[39m )\n\u001b[32m 229\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m needs_copy \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m indexers:\n\u001b[32m--> \u001b[39m\u001b[32m230\u001b[39m mgr = \u001b[43mmgr\u001b[49m\u001b[43m.\u001b[49m\u001b[43mcopy\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 232\u001b[39m new_mgrs.append(mgr)\n\u001b[32m 233\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m new_mgrs\n",
+ "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\joao.herculano\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages\\pandas\\core\\internals\\managers.py:604\u001b[39m, in \u001b[36mBaseBlockManager.copy\u001b[39m\u001b[34m(self, deep)\u001b[39m\n\u001b[32m 601\u001b[39m res._blklocs = \u001b[38;5;28mself\u001b[39m._blklocs.copy()\n\u001b[32m 603\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m deep:\n\u001b[32m--> \u001b[39m\u001b[32m604\u001b[39m \u001b[43mres\u001b[49m\u001b[43m.\u001b[49m\u001b[43m_consolidate_inplace\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 605\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m res\n",
+ "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\joao.herculano\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages\\pandas\\core\\internals\\managers.py:1791\u001b[39m, in \u001b[36mBlockManager._consolidate_inplace\u001b[39m\u001b[34m(self)\u001b[39m\n\u001b[32m 1789\u001b[39m \u001b[38;5;28mself\u001b[39m._is_consolidated = \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[32m 1790\u001b[39m \u001b[38;5;28mself\u001b[39m._known_consolidated = \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[32m-> \u001b[39m\u001b[32m1791\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_rebuild_blknos_and_blklocs\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n",
+ "\u001b[36mFile \u001b[39m\u001b[32minternals.pyx:755\u001b[39m, in \u001b[36mpandas._libs.internals.BlockManager._rebuild_blknos_and_blklocs\u001b[39m\u001b[34m()\u001b[39m\n",
+ "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\joao.herculano\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages\\pandas\\core\\internals\\base.py:84\u001b[39m, in \u001b[36mDataManager.shape\u001b[39m\u001b[34m(self)\u001b[39m\n\u001b[32m 82\u001b[39m \u001b[38;5;129m@property\u001b[39m\n\u001b[32m 83\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34mshape\u001b[39m(\u001b[38;5;28mself\u001b[39m) -> Shape:\n\u001b[32m---> \u001b[39m\u001b[32m84\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mtuple\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mlen\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43max\u001b[49m\u001b[43m)\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43max\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43maxes\u001b[49m\u001b[43m)\u001b[49m\n",
+ "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\joao.herculano\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages\\pandas\\core\\internals\\base.py:84\u001b[39m, in \u001b[36m\u001b[39m\u001b[34m(.0)\u001b[39m\n\u001b[32m 82\u001b[39m \u001b[38;5;129m@property\u001b[39m\n\u001b[32m 83\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34mshape\u001b[39m(\u001b[38;5;28mself\u001b[39m) -> Shape:\n\u001b[32m---> \u001b[39m\u001b[32m84\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mtuple\u001b[39m(\u001b[38;5;28mlen\u001b[39m(ax) \u001b[38;5;28;01mfor\u001b[39;00m ax \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m.axes)\n",
+ "\u001b[31mKeyboardInterrupt\u001b[39m: "
+ ]
+ }
+ ],
"source": [
"df_estoque = df_estoque.rename(columns={'SKU_FINAL':'SKU_PARA_VALIDACAO'})\n",
"\n",
@@ -970,7 +994,7 @@
},
{
"cell_type": "code",
- "execution_count": 35,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -982,7 +1006,7 @@
},
{
"cell_type": "code",
- "execution_count": 36,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -991,7 +1015,7 @@
},
{
"cell_type": "code",
- "execution_count": 37,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1000,7 +1024,7 @@
},
{
"cell_type": "code",
- "execution_count": 38,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1009,7 +1033,7 @@
},
{
"cell_type": "code",
- "execution_count": 39,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1018,20 +1042,9 @@
},
{
"cell_type": "code",
- "execution_count": 40,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "np.int64(0)"
- ]
- },
- "execution_count": 40,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"df_final = df_final[~df_final['Marca'].isna()]\n",
"df_final['Marca'].isna().sum()"
@@ -1039,20 +1052,9 @@
},
{
"cell_type": "code",
- "execution_count": 41,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "(54514, 74)"
- ]
- },
- "execution_count": 41,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"df_final = df_final.drop_duplicates()\n",
"df_final.shape"
@@ -1060,7 +1062,7 @@
},
{
"cell_type": "code",
- "execution_count": 42,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1069,45 +1071,16 @@
},
{
"cell_type": "code",
- "execution_count": 43,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "Index(['Histórico de Vendas do Ciclo 202408',\n",
- " 'Histórico de Vendas do Ciclo 202409',\n",
- " 'Histórico de Vendas do Ciclo 202410',\n",
- " 'Histórico de Vendas do Ciclo 202411',\n",
- " 'Histórico de Vendas do Ciclo 202412',\n",
- " 'Histórico de Vendas do Ciclo 202413',\n",
- " 'Histórico de Vendas do Ciclo 202414',\n",
- " 'Histórico de Vendas do Ciclo 202415',\n",
- " 'Histórico de Vendas do Ciclo 202416',\n",
- " 'Histórico de Vendas do Ciclo 202417',\n",
- " 'Histórico de Vendas do Ciclo 202501',\n",
- " 'Histórico de Vendas do Ciclo 202502',\n",
- " 'Histórico de Vendas do Ciclo 202503',\n",
- " 'Histórico de Vendas do Ciclo 202504',\n",
- " 'Histórico de Vendas do Ciclo 202505',\n",
- " 'Histórico de Vendas do Ciclo 202506',\n",
- " 'Histórico de Vendas do Ciclo 202507',\n",
- " 'Histórico de Vendas do Ciclo Atual'],\n",
- " dtype='object')"
- ]
- },
- "execution_count": 43,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"df_final.columns[26:44]"
]
},
{
"cell_type": "code",
- "execution_count": 44,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1120,34 +1093,16 @@
},
{
"cell_type": "code",
- "execution_count": 45,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "Index(['Histórico de Vendas do Ciclo 202502',\n",
- " 'Histórico de Vendas do Ciclo 202503',\n",
- " 'Histórico de Vendas do Ciclo 202504',\n",
- " 'Histórico de Vendas do Ciclo 202505',\n",
- " 'Histórico de Vendas do Ciclo 202506',\n",
- " 'Histórico de Vendas do Ciclo 202507',\n",
- " 'Histórico de Vendas do Ciclo Atual'],\n",
- " dtype='object')"
- ]
- },
- "execution_count": 45,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"df_final.columns[37:44]"
]
},
{
"cell_type": "code",
- "execution_count": 46,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1158,45 +1113,18 @@
},
{
"cell_type": "code",
- "execution_count": 47,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "Index(['Histórico de Vendas do Ciclo 202502',\n",
- " 'Histórico de Vendas do Ciclo 202503',\n",
- " 'Histórico de Vendas do Ciclo 202504',\n",
- " 'Histórico de Vendas do Ciclo 202505',\n",
- " 'Histórico de Vendas do Ciclo 202506',\n",
- " 'Histórico de Vendas do Ciclo 202507',\n",
- " 'Histórico de Vendas do Ciclo Atual'],\n",
- " dtype='object')"
- ]
- },
- "execution_count": 47,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"df_final.columns[37:44]"
]
},
{
"cell_type": "code",
- "execution_count": 48,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "C:\\Users\\joao.herculano\\AppData\\Local\\Temp\\ipykernel_37488\\2592201544.py:24: DeprecationWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n",
- " crescimento_por_pdv = df_final.groupby('PDV').apply(calcular_crescimento)\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"# Define as colunas mensais\n",
"colunas_mensais = df_final.columns[26:43]\n",
@@ -1229,20 +1157,9 @@
},
{
"cell_type": "code",
- "execution_count": 49,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "np.float64(0.0528)"
- ]
- },
- "execution_count": 49,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"# Suponha que os meses estão nas colunas 10 a 26 (17 colunas = 17 meses)\n",
"colunas_mensais = df_final.columns[26:43]\n",
@@ -1279,60 +1196,9 @@
},
{
"cell_type": "code",
- "execution_count": 50,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " | \n",
- " CANAL | \n",
- " med_por_canal | \n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " | 0 | \n",
- " TODOS | \n",
- " 92.5 | \n",
- "
\n",
- " \n",
- " | 1 | \n",
- " VD | \n",
- " 715.0 | \n",
- "
\n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " CANAL med_por_canal\n",
- "0 TODOS 92.5\n",
- "1 VD 715.0"
- ]
- },
- "execution_count": 50,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"vendas_todos_historicos = df_final.columns[26:44]\n",
"\n",
@@ -1350,27 +1216,16 @@
},
{
"cell_type": "code",
- "execution_count": 51,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "'202410'"
- ]
- },
- "execution_count": 51,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"df_final.columns[28:29].str.split(\" \")[0][-1]"
]
},
{
"cell_type": "code",
- "execution_count": 52,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1381,20 +1236,9 @@
},
{
"cell_type": "code",
- "execution_count": 53,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "(54514, 84)"
- ]
- },
- "execution_count": 53,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"df_final['CRESCIMENTO_FINAL'] = df_final['CRESCIMENTO_GERAL'] + df_final['CRESCIMENTO'] #crescimento do pdv\n",
"\n",
@@ -1415,40 +1259,16 @@
},
{
"cell_type": "code",
- "execution_count": 54,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "Index(['Histórico de Vendas do Ciclo 202408',\n",
- " 'Histórico de Vendas do Ciclo 202409',\n",
- " 'Histórico de Vendas do Ciclo 202410',\n",
- " 'Histórico de Vendas do Ciclo 202411',\n",
- " 'Histórico de Vendas do Ciclo 202412',\n",
- " 'Histórico de Vendas do Ciclo 202413',\n",
- " 'Histórico de Vendas do Ciclo 202414',\n",
- " 'Histórico de Vendas do Ciclo 202415',\n",
- " 'Histórico de Vendas do Ciclo 202416',\n",
- " 'Histórico de Vendas do Ciclo 202417',\n",
- " 'Histórico de Vendas do Ciclo 202501',\n",
- " 'Histórico de Vendas do Ciclo 202502',\n",
- " 'Histórico de Vendas do Ciclo 202503'],\n",
- " dtype='object')"
- ]
- },
- "execution_count": 54,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"df_final.columns[26:39]"
]
},
{
"cell_type": "code",
- "execution_count": 55,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1457,7 +1277,7 @@
},
{
"cell_type": "code",
- "execution_count": 56,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1466,7 +1286,7 @@
},
{
"cell_type": "code",
- "execution_count": 57,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1484,7 +1304,7 @@
},
{
"cell_type": "code",
- "execution_count": 58,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1493,38 +1313,16 @@
},
{
"cell_type": "code",
- "execution_count": 59,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "158 2.0\n",
- "159 1.0\n",
- "160 0.0\n",
- "327 0.0\n",
- "328 0.0\n",
- " ... \n",
- "54257 18.0\n",
- "54347 32.0\n",
- "54440 0.0\n",
- "54441 112.0\n",
- "54509 694.0\n",
- "Name: C-3, Length: 731, dtype: float64"
- ]
- },
- "execution_count": 59,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"df_final_dedup[(df_final['PDV'] == 23712)]['C-3']"
]
},
{
"cell_type": "code",
- "execution_count": 60,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1537,47 +1335,16 @@
},
{
"cell_type": "code",
- "execution_count": 61,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "Index(['202410', 'ANALISTA', 'Arquivo_Origem_x', 'Arquivo_Origem_y',\n",
- " 'Ação consumidor', 'Ação revendedor', 'C-1', 'C-2', 'C-3', 'C-4',\n",
- " 'CANAL', 'COBERTURA ATUAL + TRANSITO', 'CRESCIMENTO',\n",
- " 'CRESCIMENTO_FINAL', 'CRESCIMENTO_GERAL', 'Canal', 'Categoria',\n",
- " 'Catálogo', 'Ciclo_x', 'Ciclo_y', 'Classe', 'Código', 'DESCRIÇÃO PDV',\n",
- " 'DURAÇÃO', 'Data Prevista Regularização', 'Descrição', 'Dias sem venda',\n",
- " 'ESTOQUE ATUAL', 'ESTOQUE EM TRANSITO', 'Estoque Atual',\n",
- " 'Estoque em Transito', 'FIM CICLO', 'Foco',\n",
- " 'Histórico de Vendas do Ciclo 202407',\n",
- " 'Histórico de Vendas do Ciclo Atual', 'IAF', 'INICIO CICLO',\n",
- " 'Item Desativado', 'MATCH', 'MEDIA DO HISTÓRICO',\n",
- " 'MEDIANA DO HISTÓRICO', 'Marca', 'PDV', 'PEDIDO PENDENTE',\n",
- " 'PICO DE VENDAS 2024', 'PRECO DE COMPRA', 'PRECO DE VENDA',\n",
- " 'PV GINSENG', 'Pedido Pendente', 'Percentual de desconto consumidor',\n",
- " 'Percentual de desconto revendedor', 'Pico Vendas Ultimos 6 ciclos',\n",
- " 'Projeção Próximo Ciclo', 'Projeção Próximo Ciclo + 1',\n",
- " 'Promoção Próximo Ciclo + 1', 'Região', 'SKU', 'SKU_FINAL', 'SKU_PARA',\n",
- " 'SKU_PARA_VALIDACAO', 'SUPERVISOR', 'Tipo de pedido', 'Tipo de produto',\n",
- " 'Tipo de promoção', 'UF', 'UFPRODUTO', 'Unidade de negócio',\n",
- " 'dias_ate_inicio', 'med_por_canal', 'DDV PREVISTO', 'COBERTURA ATUAL'],\n",
- " dtype='object')"
- ]
- },
- "execution_count": 61,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"df_final_dedup.columns"
]
},
{
"cell_type": "code",
- "execution_count": 62,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1586,7 +1353,7 @@
},
{
"cell_type": "code",
- "execution_count": 63,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1595,7 +1362,7 @@
},
{
"cell_type": "code",
- "execution_count": 64,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1604,47 +1371,18 @@
},
{
"cell_type": "code",
- "execution_count": 65,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "Index(['SKU', 'SKU_PARA', 'PDV', 'ESTOQUE ATUAL', 'ESTOQUE EM TRANSITO',\n",
- " 'PEDIDO PENDENTE', 'DDV PREVISTO', 'COBERTURA ATUAL',\n",
- " 'COBERTURA ATUAL + TRANSITO', 'Arquivo_Origem', 'SKU_PARA_VALIDACAO'],\n",
- " dtype='object')"
- ]
- },
- "execution_count": 65,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"df_estoque.columns"
]
},
{
"cell_type": "code",
- "execution_count": 66,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "('Ação consumidor',\n",
- " 'Percentual de desconto consumidor',\n",
- " 'Ação revendedor',\n",
- " 'Percentual de desconto revendedor',\n",
- " '202408')"
- ]
- },
- "execution_count": 66,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"# Columns to bring up front\n",
"priority_cols = [\n",
@@ -1668,7 +1406,7 @@
},
{
"cell_type": "code",
- "execution_count": 67,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1677,7 +1415,7 @@
},
{
"cell_type": "code",
- "execution_count": 68,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1686,7 +1424,7 @@
},
{
"cell_type": "code",
- "execution_count": 69,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1698,7 +1436,7 @@
},
{
"cell_type": "code",
- "execution_count": 70,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1707,7 +1445,7 @@
},
{
"cell_type": "code",
- "execution_count": 71,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1717,16 +1455,16 @@
},
{
"cell_type": "code",
- "execution_count": 72,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
- "#df_final_dedup['MARCA'] = df_final_dedup['MARCA'].str.replace('.csv','',regex=False)"
+ "df_final_dedup['MARCA'] = df_final_dedup['MARCA'].str.replace('.csv','',regex=False)"
]
},
{
"cell_type": "code",
- "execution_count": 73,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1735,20 +1473,9 @@
},
{
"cell_type": "code",
- "execution_count": 74,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "'BOT'"
- ]
- },
- "execution_count": 74,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"marca_promo = df_estoque['Arquivo_Origem'].iloc[0].replace('.csv','')\n",
"marca_promo"
@@ -1756,7 +1483,7 @@
},
{
"cell_type": "code",
- "execution_count": 75,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1767,7 +1494,7 @@
},
{
"cell_type": "code",
- "execution_count": 76,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1776,7 +1503,7 @@
},
{
"cell_type": "code",
- "execution_count": 77,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1789,7 +1516,7 @@
},
{
"cell_type": "code",
- "execution_count": 78,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -1806,230 +1533,16 @@
},
{
"cell_type": "code",
- "execution_count": 79,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " | \n",
- " 202410_x | \n",
- " ANALISTA | \n",
- " Arquivo_Origem_x | \n",
- " Arquivo_Origem_y | \n",
- " Ação consumidor | \n",
- " Ação revendedor | \n",
- " C-1 | \n",
- " C-2 | \n",
- " C-3 | \n",
- " C-4 | \n",
- " ... | \n",
- " COBERTURA ATUAL | \n",
- " EST PROJE FINAL CICLO ATUAL | \n",
- " VENDAS R$ PV GINSENG | \n",
- " RBV 202406 | \n",
- " COB PROJETADA | \n",
- " CANAL_y | \n",
- " UF_y | \n",
- " PDV GINSENG | \n",
- " PRODUTO | \n",
- " 202410_y | \n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " | 0 | \n",
- " 0.0 | \n",
- " DANIEL | \n",
- " BOT.csv | \n",
- " BOT.csv | \n",
- " ACESSÓRIOS SELECIONADOS COM ATÉ 15% DE DESCONTO. | \n",
- " ACESSÓRIOS SELECIONADOS COM ATÉ 15% DE DESCONTO. | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " ... | \n",
- " 45.0 | \n",
- " 7.0 | \n",
- " NaN | \n",
- " NaN | \n",
- " 700.0 | \n",
- " LJ | \n",
- " VDC | \n",
- " NaN | \n",
- " <NA> | \n",
- " 0.0 | \n",
- "
\n",
- " \n",
- " | 1 | \n",
- " 0.0 | \n",
- " DANIEL | \n",
- " BOT.csv | \n",
- " BOT.csv | \n",
- " ACESSÓRIOS SELECIONADOS COM ATÉ 15% DE DESCONTO. | \n",
- " ACESSÓRIOS SELECIONADOS COM ATÉ 15% DE DESCONTO. | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " ... | \n",
- " 45.0 | \n",
- " 4.0 | \n",
- " NaN | \n",
- " NaN | \n",
- " 400.0 | \n",
- " VD | \n",
- " VDC | \n",
- " 23703.0 | \n",
- " 53901 | \n",
- " 2.0 | \n",
- "
\n",
- " \n",
- " | 2 | \n",
- " 0.0 | \n",
- " DANIEL | \n",
- " BOT.csv | \n",
- " BOT.csv | \n",
- " ACESSÓRIOS SELECIONADOS COM ATÉ 15% DE DESCONTO. | \n",
- " ACESSÓRIOS SELECIONADOS COM ATÉ 15% DE DESCONTO. | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 2.0 | \n",
- " ... | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 75.9 | \n",
- " 0.0 | \n",
- " 50.0 | \n",
- " HIB | \n",
- " AL | \n",
- " NaN | \n",
- " <NA> | \n",
- " 0.0 | \n",
- "
\n",
- " \n",
- " | 3 | \n",
- " 0.0 | \n",
- " DANIEL | \n",
- " BOT.csv | \n",
- " BOT.csv | \n",
- " ACESSÓRIOS SELECIONADOS COM ATÉ 15% DE DESCONTO. | \n",
- " ACESSÓRIOS SELECIONADOS COM ATÉ 15% DE DESCONTO. | \n",
- " 0.0 | \n",
- " 1.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " ... | \n",
- " 50.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " LJ | \n",
- " BA | \n",
- " NaN | \n",
- " <NA> | \n",
- " 0.0 | \n",
- "
\n",
- " \n",
- " | 4 | \n",
- " 0.0 | \n",
- " DANIEL | \n",
- " BOT.csv | \n",
- " BOT.csv | \n",
- " ACESSÓRIOS SELECIONADOS COM ATÉ 15% DE DESCONTO. | \n",
- " ACESSÓRIOS SELECIONADOS COM ATÉ 15% DE DESCONTO. | \n",
- " 3.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 1.0 | \n",
- " ... | \n",
- " 260.0 | \n",
- " 12.0 | \n",
- " 75.9 | \n",
- " 0.0 | \n",
- " 260.0 | \n",
- " LJ | \n",
- " BA | \n",
- " NaN | \n",
- " <NA> | \n",
- " 0.0 | \n",
- "
\n",
- " \n",
- "
\n",
- "
5 rows × 76 columns
\n",
- "
"
- ],
- "text/plain": [
- " 202410_x ANALISTA Arquivo_Origem_x Arquivo_Origem_y \\\n",
- "0 0.0 DANIEL BOT.csv BOT.csv \n",
- "1 0.0 DANIEL BOT.csv BOT.csv \n",
- "2 0.0 DANIEL BOT.csv BOT.csv \n",
- "3 0.0 DANIEL BOT.csv BOT.csv \n",
- "4 0.0 DANIEL BOT.csv BOT.csv \n",
- "\n",
- " Ação consumidor \\\n",
- "0 ACESSÓRIOS SELECIONADOS COM ATÉ 15% DE DESCONTO. \n",
- "1 ACESSÓRIOS SELECIONADOS COM ATÉ 15% DE DESCONTO. \n",
- "2 ACESSÓRIOS SELECIONADOS COM ATÉ 15% DE DESCONTO. \n",
- "3 ACESSÓRIOS SELECIONADOS COM ATÉ 15% DE DESCONTO. \n",
- "4 ACESSÓRIOS SELECIONADOS COM ATÉ 15% DE DESCONTO. \n",
- "\n",
- " Ação revendedor C-1 C-2 C-3 C-4 ... \\\n",
- "0 ACESSÓRIOS SELECIONADOS COM ATÉ 15% DE DESCONTO. 0.0 0.0 0.0 0.0 ... \n",
- "1 ACESSÓRIOS SELECIONADOS COM ATÉ 15% DE DESCONTO. 0.0 0.0 0.0 0.0 ... \n",
- "2 ACESSÓRIOS SELECIONADOS COM ATÉ 15% DE DESCONTO. 0.0 0.0 0.0 2.0 ... \n",
- "3 ACESSÓRIOS SELECIONADOS COM ATÉ 15% DE DESCONTO. 0.0 1.0 0.0 0.0 ... \n",
- "4 ACESSÓRIOS SELECIONADOS COM ATÉ 15% DE DESCONTO. 3.0 0.0 0.0 1.0 ... \n",
- "\n",
- " COBERTURA ATUAL EST PROJE FINAL CICLO ATUAL VENDAS R$ PV GINSENG \\\n",
- "0 45.0 7.0 NaN \n",
- "1 45.0 4.0 NaN \n",
- "2 0.0 0.0 75.9 \n",
- "3 50.0 0.0 0.0 \n",
- "4 260.0 12.0 75.9 \n",
- "\n",
- " RBV 202406 COB PROJETADA CANAL_y UF_y PDV GINSENG PRODUTO 202410_y \n",
- "0 NaN 700.0 LJ VDC NaN 0.0 \n",
- "1 NaN 400.0 VD VDC 23703.0 53901 2.0 \n",
- "2 0.0 50.0 HIB AL NaN 0.0 \n",
- "3 0.0 0.0 LJ BA NaN 0.0 \n",
- "4 0.0 260.0 LJ BA NaN 0.0 \n",
- "\n",
- "[5 rows x 76 columns]"
- ]
- },
- "execution_count": 79,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"df_final_dedup.head()"
]
},
{
"cell_type": "code",
- "execution_count": 80,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -2038,7 +1551,7 @@
},
{
"cell_type": "code",
- "execution_count": 81,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -2055,7 +1568,7 @@
},
{
"cell_type": "code",
- "execution_count": 82,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -2064,68 +1577,25 @@
},
{
"cell_type": "code",
- "execution_count": 83,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "Index(['202410', 'ANALISTA', 'Ação consumidor', 'Ação revendedor', 'C-1',\n",
- " 'C-2', 'C-3', 'C-4', 'Categoria', 'Classe', 'Código', 'DESCRIÇÃO PDV',\n",
- " 'Descrição', 'Dias sem venda', 'Estoque Atual', 'Estoque em Transito',\n",
- " 'Histórico de Vendas do Ciclo 202407',\n",
- " 'Histórico de Vendas do Ciclo Atual', 'MEDIANA DO HISTÓRICO', 'LINHA',\n",
- " 'PDV', 'PICO DE VENDAS 2024', 'PRECO DE VENDA', 'PV GINSENG',\n",
- " 'Pedido Pendente', 'Percentual de desconto consumidor',\n",
- " 'Percentual de desconto revendedor', 'Pico Vendas Ultimos 6 ciclos',\n",
- " 'Projeção Próximo Ciclo', 'Projeção Próximo Ciclo + 1',\n",
- " 'Promoção Próximo Ciclo + 1', 'SUPERVISOR', 'CANAL', 'UF'],\n",
- " dtype='object')"
- ]
- },
- "execution_count": 83,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"df_final_dedup.columns"
]
},
{
"cell_type": "code",
- "execution_count": 84,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "158 2.0\n",
- "159 1.0\n",
- "160 0.0\n",
- "327 0.0\n",
- "328 0.0\n",
- " ... \n",
- "54257 18.0\n",
- "54347 32.0\n",
- "54440 0.0\n",
- "54441 112.0\n",
- "54509 694.0\n",
- "Name: C-3, Length: 731, dtype: float64"
- ]
- },
- "execution_count": 84,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"df_final_dedup[(df_final['PDV'] == 23712)]['C-3']"
]
},
{
"cell_type": "code",
- "execution_count": 85,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -2145,7 +1615,7 @@
},
{
"cell_type": "code",
- "execution_count": 86,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -2154,40 +1624,18 @@
},
{
"cell_type": "code",
- "execution_count": 87,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "np.float64(157499.0)"
- ]
- },
- "execution_count": 87,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"df_final_dedup['PV GINSENG'].sum()"
]
},
{
"cell_type": "code",
- "execution_count": 88,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "np.int64(0)"
- ]
- },
- "execution_count": 88,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"df_final_dedup[df_final_dedup['PDV'] == 23712]['PICO DE VENDAS 2024'].isna().sum()"
]