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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
CANALmed_por_canal
0TODOS92.5
1VD715.0
\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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
202410_xANALISTAArquivo_Origem_xArquivo_Origem_yAção consumidorAção revendedorC-1C-2C-3C-4...COBERTURA ATUALEST PROJE FINAL CICLO ATUALVENDAS R$ PV GINSENGRBV 202406COB PROJETADACANAL_yUF_yPDV GINSENGPRODUTO202410_y
00.0DANIELBOT.csvBOT.csvACESSÓRIOS SELECIONADOS COM ATÉ 15% DE DESCONTO.ACESSÓRIOS SELECIONADOS COM ATÉ 15% DE DESCONTO.0.00.00.00.0...45.07.0NaNNaN700.0LJVDCNaN<NA>0.0
10.0DANIELBOT.csvBOT.csvACESSÓRIOS SELECIONADOS COM ATÉ 15% DE DESCONTO.ACESSÓRIOS SELECIONADOS COM ATÉ 15% DE DESCONTO.0.00.00.00.0...45.04.0NaNNaN400.0VDVDC23703.0539012.0
20.0DANIELBOT.csvBOT.csvACESSÓRIOS SELECIONADOS COM ATÉ 15% DE DESCONTO.ACESSÓRIOS SELECIONADOS COM ATÉ 15% DE DESCONTO.0.00.00.02.0...0.00.075.90.050.0HIBALNaN<NA>0.0
30.0DANIELBOT.csvBOT.csvACESSÓRIOS SELECIONADOS COM ATÉ 15% DE DESCONTO.ACESSÓRIOS SELECIONADOS COM ATÉ 15% DE DESCONTO.0.01.00.00.0...50.00.00.00.00.0LJBANaN<NA>0.0
40.0DANIELBOT.csvBOT.csvACESSÓRIOS SELECIONADOS COM ATÉ 15% DE DESCONTO.ACESSÓRIOS SELECIONADOS COM ATÉ 15% DE DESCONTO.3.00.00.01.0...260.012.075.90.0260.0LJBANaN<NA>0.0
\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()" ]