{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "colab": { "provenance": [], "collapsed_sections": [ "EueHsNk89AsY", "7DwSpkkZ9BqV", "ZuJuLGxe9D9O", "BvZAfrSH9F2U", "Uz5dgcJm9HW5", "1dG8udJJdo9J", "H10uH0bygw9h", "FgFhRpKHmYp8", "dsaC5DpCq1IR", "XwCbvZHDq7Y5" ], "gpuType": "T4" }, "kernelspec": { "name": "python3", "display_name": "Python 3" }, "language_info": { "name": "python" }, "accelerator": "GPU" }, "cells": [ { "cell_type": "markdown", "source": [ "\\# Proyek Analisis Data: E-Commerce Public Dataset\n", "- Nama:Muhamad Ilyas\n", "- Email:181240000831@unisnu.ac.id\n", "- Id Dicoding:" ], "metadata": { "id": "cP5zh7Ww85Fm" } }, { "cell_type": "markdown", "source": [ "## Menentukan Pertanyaan Bisnis" ], "metadata": { "id": "ggwOFmpI88dG" } }, { "cell_type": "markdown", "source": [ "- Bagaimana performa penjualan dan payment Value dalam bebebrapa bulan terakhir ?\n", "- Produk apa yang paling banyak dan paling sedikit dicari ?\n" ], "metadata": { "id": "6irqmTtg8-IC" } }, { "cell_type": "markdown", "source": [ "## Menyaipkan semua library yang dibutuhkan" ], "metadata": { "id": "EueHsNk89AsY" } }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "4cmWv4qc8xWu" }, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "import datetime" ] }, { "cell_type": "markdown", "source": [ "## Data Wrangling" ], "metadata": { "id": "7DwSpkkZ9BqV" } }, { "cell_type": "markdown", "source": [ "### Gathering Data" ], "metadata": { "id": "ZuJuLGxe9D9O" } }, { "cell_type": "markdown", "source": [ "**Table Customer Dataset**" ], "metadata": { "id": "OAl9mhNskCGQ" } }, { "cell_type": "code", "source": [ "customer_url = 'https://raw.githubusercontent.com/MuhamdIlyas/ProjectDicodingDataScience/master/E-Commerce_Public_Dataset/customers_dataset.csv'\n", "customer = pd.read_csv(customer_url)\n", "customer.head()" ], "metadata": { "id": "Rg3wtvOr9DUm", "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "86e06609-0bcf-4635-a96f-54b522609d34" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " customer_id customer_unique_id \\\n", "0 06b8999e2fba1a1fbc88172c00ba8bc7 861eff4711a542e4b93843c6dd7febb0 \n", "1 18955e83d337fd6b2def6b18a428ac77 290c77bc529b7ac935b93aa66c333dc3 \n", "2 4e7b3e00288586ebd08712fdd0374a03 060e732b5b29e8181a18229c7b0b2b5e \n", "3 b2b6027bc5c5109e529d4dc6358b12c3 259dac757896d24d7702b9acbbff3f3c \n", "4 4f2d8ab171c80ec8364f7c12e35b23ad 345ecd01c38d18a9036ed96c73b8d066 \n", "\n", " customer_zip_code_prefix customer_city customer_state \n", "0 14409 franca SP \n", "1 9790 sao bernardo do campo SP \n", "2 1151 sao paulo SP \n", "3 8775 mogi das cruzes SP \n", "4 13056 campinas SP " ], "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", "
customer_idcustomer_unique_idcustomer_zip_code_prefixcustomer_citycustomer_state
006b8999e2fba1a1fbc88172c00ba8bc7861eff4711a542e4b93843c6dd7febb014409francaSP
118955e83d337fd6b2def6b18a428ac77290c77bc529b7ac935b93aa66c333dc39790sao bernardo do campoSP
24e7b3e00288586ebd08712fdd0374a03060e732b5b29e8181a18229c7b0b2b5e1151sao pauloSP
3b2b6027bc5c5109e529d4dc6358b12c3259dac757896d24d7702b9acbbff3f3c8775mogi das cruzesSP
44f2d8ab171c80ec8364f7c12e35b23ad345ecd01c38d18a9036ed96c73b8d06613056campinasSP
\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "
\n", "
\n" ] }, "metadata": {}, "execution_count": 2 } ] }, { "cell_type": "markdown", "source": [ "**Table Geolocation Dataset**" ], "metadata": { "id": "XjcotCB6kKNP" } }, { "cell_type": "code", "source": [ "geolocation_url = 'https://raw.githubusercontent.com/MuhamdIlyas/ProjectDicodingDataScience/master/E-Commerce_Public_Dataset/geolocation_dataset.csv'\n", "geolocation = pd.read_csv(geolocation_url)\n", "geolocation.head()" ], "metadata": { "id": "n6NQc4NIls6k", "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "61e3b403-de76-4b4a-81b7-30bd24942c2a" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " geolocation_zip_code_prefix geolocation_lat geolocation_lng \\\n", "0 1037 -23.545621 -46.639292 \n", "1 1046 -23.546081 -46.644820 \n", "2 1046 -23.546129 -46.642951 \n", "3 1041 -23.544392 -46.639499 \n", "4 1035 -23.541578 -46.641607 \n", "\n", " geolocation_city geolocation_state \n", "0 sao paulo SP \n", "1 sao paulo SP \n", "2 sao paulo SP \n", "3 sao paulo SP \n", "4 sao paulo SP " ], "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", "
geolocation_zip_code_prefixgeolocation_latgeolocation_lnggeolocation_citygeolocation_state
01037-23.545621-46.639292sao pauloSP
11046-23.546081-46.644820sao pauloSP
21046-23.546129-46.642951sao pauloSP
31041-23.544392-46.639499sao pauloSP
41035-23.541578-46.641607sao pauloSP
\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "
\n", "
\n" ] }, "metadata": {}, "execution_count": 3 } ] }, { "cell_type": "markdown", "source": [ "**Table Order Item Dataset**" ], "metadata": { "id": "VTqd7hcvrOyt" } }, { "cell_type": "code", "source": [ "order_item_url = 'https://raw.githubusercontent.com/MuhamdIlyas/ProjectDicodingDataScience/master/E-Commerce_Public_Dataset/order_items_dataset.csv'\n", "order_item = pd.read_csv(order_item_url)\n", "order_item.head()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "xylqzF_LrYmY", "outputId": "368ea2b8-6624-4eb8-a0b1-09aaa010b681" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " order_id order_item_id \\\n", "0 00010242fe8c5a6d1ba2dd792cb16214 1 \n", "1 00018f77f2f0320c557190d7a144bdd3 1 \n", "2 000229ec398224ef6ca0657da4fc703e 1 \n", "3 00024acbcdf0a6daa1e931b038114c75 1 \n", "4 00042b26cf59d7ce69dfabb4e55b4fd9 1 \n", "\n", " product_id seller_id \\\n", "0 4244733e06e7ecb4970a6e2683c13e61 48436dade18ac8b2bce089ec2a041202 \n", "1 e5f2d52b802189ee658865ca93d83a8f dd7ddc04e1b6c2c614352b383efe2d36 \n", "2 c777355d18b72b67abbeef9df44fd0fd 5b51032eddd242adc84c38acab88f23d \n", "3 7634da152a4610f1595efa32f14722fc 9d7a1d34a5052409006425275ba1c2b4 \n", "4 ac6c3623068f30de03045865e4e10089 df560393f3a51e74553ab94004ba5c87 \n", "\n", " shipping_limit_date price freight_value \n", "0 2017-09-19 09:45:35 58.90 13.29 \n", "1 2017-05-03 11:05:13 239.90 19.93 \n", "2 2018-01-18 14:48:30 199.00 17.87 \n", "3 2018-08-15 10:10:18 12.99 12.79 \n", "4 2017-02-13 13:57:51 199.90 18.14 " ], "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", "
order_idorder_item_idproduct_idseller_idshipping_limit_datepricefreight_value
000010242fe8c5a6d1ba2dd792cb1621414244733e06e7ecb4970a6e2683c13e6148436dade18ac8b2bce089ec2a0412022017-09-19 09:45:3558.9013.29
100018f77f2f0320c557190d7a144bdd31e5f2d52b802189ee658865ca93d83a8fdd7ddc04e1b6c2c614352b383efe2d362017-05-03 11:05:13239.9019.93
2000229ec398224ef6ca0657da4fc703e1c777355d18b72b67abbeef9df44fd0fd5b51032eddd242adc84c38acab88f23d2018-01-18 14:48:30199.0017.87
300024acbcdf0a6daa1e931b038114c7517634da152a4610f1595efa32f14722fc9d7a1d34a5052409006425275ba1c2b42018-08-15 10:10:1812.9912.79
400042b26cf59d7ce69dfabb4e55b4fd91ac6c3623068f30de03045865e4e10089df560393f3a51e74553ab94004ba5c872017-02-13 13:57:51199.9018.14
\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "
\n", "
\n" ] }, "metadata": {}, "execution_count": 4 } ] }, { "cell_type": "markdown", "source": [ "**Table Order Payment Dataset**" ], "metadata": { "id": "a-wLYR6Nr2oh" } }, { "cell_type": "code", "source": [ "order_payment_url = 'https://raw.githubusercontent.com/MuhamdIlyas/ProjectDicodingDataScience/master/E-Commerce_Public_Dataset/order_payments_dataset.csv'\n", "order_payment = pd.read_csv(order_payment_url)\n", "order_payment.head()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "7GeNL1EEsDnV", "outputId": "64b6e823-d03c-4436-b5b1-3e37ed3c66ba" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " order_id payment_sequential payment_type \\\n", "0 b81ef226f3fe1789b1e8b2acac839d17 1 credit_card \n", "1 a9810da82917af2d9aefd1278f1dcfa0 1 credit_card \n", "2 25e8ea4e93396b6fa0d3dd708e76c1bd 1 credit_card \n", "3 ba78997921bbcdc1373bb41e913ab953 1 credit_card \n", "4 42fdf880ba16b47b59251dd489d4441a 1 credit_card \n", "\n", " payment_installments payment_value \n", "0 8 99.33 \n", "1 1 24.39 \n", "2 1 65.71 \n", "3 8 107.78 \n", "4 2 128.45 " ], "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", "
order_idpayment_sequentialpayment_typepayment_installmentspayment_value
0b81ef226f3fe1789b1e8b2acac839d171credit_card899.33
1a9810da82917af2d9aefd1278f1dcfa01credit_card124.39
225e8ea4e93396b6fa0d3dd708e76c1bd1credit_card165.71
3ba78997921bbcdc1373bb41e913ab9531credit_card8107.78
442fdf880ba16b47b59251dd489d4441a1credit_card2128.45
\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "
\n", "
\n" ] }, "metadata": {}, "execution_count": 5 } ] }, { "cell_type": "markdown", "source": [ "**Table Order Reviews Dataset**" ], "metadata": { "id": "AtG5VNA7smVX" } }, { "cell_type": "code", "source": [ "order_reviews_url = 'https://raw.githubusercontent.com/MuhamdIlyas/ProjectDicodingDataScience/master/E-Commerce_Public_Dataset/order_reviews_dataset.csv'\n", "order_reviews = pd.read_csv(order_reviews_url)\n", "order_reviews.head()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "luVYtcoVsuNX", "outputId": "83a82f20-99a8-4243-eeb9-260358a2d2a6" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " review_id order_id \\\n", "0 7bc2406110b926393aa56f80a40eba40 73fc7af87114b39712e6da79b0a377eb \n", "1 80e641a11e56f04c1ad469d5645fdfde a548910a1c6147796b98fdf73dbeba33 \n", "2 228ce5500dc1d8e020d8d1322874b6f0 f9e4b658b201a9f2ecdecbb34bed034b \n", "3 e64fb393e7b32834bb789ff8bb30750e 658677c97b385a9be170737859d3511b \n", "4 f7c4243c7fe1938f181bec41a392bdeb 8e6bfb81e283fa7e4f11123a3fb894f1 \n", "\n", " review_score review_comment_title \\\n", "0 4 NaN \n", "1 5 NaN \n", "2 5 NaN \n", "3 5 NaN \n", "4 5 NaN \n", "\n", " review_comment_message review_creation_date \\\n", "0 NaN 2018-01-18 00:00:00 \n", "1 NaN 2018-03-10 00:00:00 \n", "2 NaN 2018-02-17 00:00:00 \n", "3 Recebi bem antes do prazo estipulado. 2017-04-21 00:00:00 \n", "4 Parabéns lojas lannister adorei comprar pela I... 2018-03-01 00:00:00 \n", "\n", " review_answer_timestamp \n", "0 2018-01-18 21:46:59 \n", "1 2018-03-11 03:05:13 \n", "2 2018-02-18 14:36:24 \n", "3 2017-04-21 22:02:06 \n", "4 2018-03-02 10:26:53 " ], "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", "
review_idorder_idreview_scorereview_comment_titlereview_comment_messagereview_creation_datereview_answer_timestamp
07bc2406110b926393aa56f80a40eba4073fc7af87114b39712e6da79b0a377eb4NaNNaN2018-01-18 00:00:002018-01-18 21:46:59
180e641a11e56f04c1ad469d5645fdfdea548910a1c6147796b98fdf73dbeba335NaNNaN2018-03-10 00:00:002018-03-11 03:05:13
2228ce5500dc1d8e020d8d1322874b6f0f9e4b658b201a9f2ecdecbb34bed034b5NaNNaN2018-02-17 00:00:002018-02-18 14:36:24
3e64fb393e7b32834bb789ff8bb30750e658677c97b385a9be170737859d3511b5NaNRecebi bem antes do prazo estipulado.2017-04-21 00:00:002017-04-21 22:02:06
4f7c4243c7fe1938f181bec41a392bdeb8e6bfb81e283fa7e4f11123a3fb894f15NaNParabéns lojas lannister adorei comprar pela I...2018-03-01 00:00:002018-03-02 10:26:53
\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "
\n", "
\n" ] }, "metadata": {}, "execution_count": 6 } ] }, { "cell_type": "markdown", "source": [ "**Table Order Dataset**" ], "metadata": { "id": "Z9u5W-3KtK6M" } }, { "cell_type": "code", "source": [ "order_url = 'https://raw.githubusercontent.com/MuhamdIlyas/ProjectDicodingDataScience/master/E-Commerce_Public_Dataset/orders_dataset.csv'\n", "order = pd.read_csv(order_url)\n", "order.head()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "HUvmLj9ItQMo", "outputId": "21a6a824-da84-4dd4-dc61-df9d9ea735b7" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " order_id customer_id \\\n", "0 e481f51cbdc54678b7cc49136f2d6af7 9ef432eb6251297304e76186b10a928d \n", "1 53cdb2fc8bc7dce0b6741e2150273451 b0830fb4747a6c6d20dea0b8c802d7ef \n", "2 47770eb9100c2d0c44946d9cf07ec65d 41ce2a54c0b03bf3443c3d931a367089 \n", "3 949d5b44dbf5de918fe9c16f97b45f8a f88197465ea7920adcdbec7375364d82 \n", "4 ad21c59c0840e6cb83a9ceb5573f8159 8ab97904e6daea8866dbdbc4fb7aad2c \n", "\n", " order_status order_purchase_timestamp order_approved_at \\\n", "0 delivered 2017-10-02 10:56:33 2017-10-02 11:07:15 \n", "1 delivered 2018-07-24 20:41:37 2018-07-26 03:24:27 \n", "2 delivered 2018-08-08 08:38:49 2018-08-08 08:55:23 \n", "3 delivered 2017-11-18 19:28:06 2017-11-18 19:45:59 \n", "4 delivered 2018-02-13 21:18:39 2018-02-13 22:20:29 \n", "\n", " order_delivered_carrier_date order_delivered_customer_date \\\n", "0 2017-10-04 19:55:00 2017-10-10 21:25:13 \n", "1 2018-07-26 14:31:00 2018-08-07 15:27:45 \n", "2 2018-08-08 13:50:00 2018-08-17 18:06:29 \n", "3 2017-11-22 13:39:59 2017-12-02 00:28:42 \n", "4 2018-02-14 19:46:34 2018-02-16 18:17:02 \n", "\n", " order_estimated_delivery_date \n", "0 2017-10-18 00:00:00 \n", "1 2018-08-13 00:00:00 \n", "2 2018-09-04 00:00:00 \n", "3 2017-12-15 00:00:00 \n", "4 2018-02-26 00:00:00 " ], "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", "
order_idcustomer_idorder_statusorder_purchase_timestamporder_approved_atorder_delivered_carrier_dateorder_delivered_customer_dateorder_estimated_delivery_date
0e481f51cbdc54678b7cc49136f2d6af79ef432eb6251297304e76186b10a928ddelivered2017-10-02 10:56:332017-10-02 11:07:152017-10-04 19:55:002017-10-10 21:25:132017-10-18 00:00:00
153cdb2fc8bc7dce0b6741e2150273451b0830fb4747a6c6d20dea0b8c802d7efdelivered2018-07-24 20:41:372018-07-26 03:24:272018-07-26 14:31:002018-08-07 15:27:452018-08-13 00:00:00
247770eb9100c2d0c44946d9cf07ec65d41ce2a54c0b03bf3443c3d931a367089delivered2018-08-08 08:38:492018-08-08 08:55:232018-08-08 13:50:002018-08-17 18:06:292018-09-04 00:00:00
3949d5b44dbf5de918fe9c16f97b45f8af88197465ea7920adcdbec7375364d82delivered2017-11-18 19:28:062017-11-18 19:45:592017-11-22 13:39:592017-12-02 00:28:422017-12-15 00:00:00
4ad21c59c0840e6cb83a9ceb5573f81598ab97904e6daea8866dbdbc4fb7aad2cdelivered2018-02-13 21:18:392018-02-13 22:20:292018-02-14 19:46:342018-02-16 18:17:022018-02-26 00:00:00
\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "
\n", "
\n" ] }, "metadata": {}, "execution_count": 7 } ] }, { "cell_type": "markdown", "source": [ "**Table Poduct Category Name**" ], "metadata": { "id": "EeI2xgLwthLb" } }, { "cell_type": "code", "source": [ "product_category_url = 'https://raw.githubusercontent.com/MuhamdIlyas/ProjectDicodingDataScience/master/E-Commerce_Public_Dataset/product_category_name_translation.csv'\n", "product_category = pd.read_csv(product_category_url)\n", "product_category.head()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "nRvKO2vmtoMc", "outputId": "6cb8b27f-6ccd-4cc7-a9e4-7b7014aeadbf" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " product_category_name product_category_name_english\n", "0 beleza_saude health_beauty\n", "1 informatica_acessorios computers_accessories\n", "2 automotivo auto\n", "3 cama_mesa_banho bed_bath_table\n", "4 moveis_decoracao furniture_decor" ], "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", "
product_category_nameproduct_category_name_english
0beleza_saudehealth_beauty
1informatica_acessorioscomputers_accessories
2automotivoauto
3cama_mesa_banhobed_bath_table
4moveis_decoracaofurniture_decor
\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "
\n", "
\n" ] }, "metadata": {}, "execution_count": 8 } ] }, { "cell_type": "markdown", "source": [ "**Table Product Dataset**" ], "metadata": { "id": "wSICkkh2t9oH" } }, { "cell_type": "code", "source": [ "product_url = 'https://raw.githubusercontent.com/MuhamdIlyas/ProjectDicodingDataScience/master/E-Commerce_Public_Dataset/products_dataset.csv'\n", "product = pd.read_csv(product_url)\n", "product.head()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "aAH5FfyduCLz", "outputId": "1e96a90c-f35a-491d-f899-fe0bde0c4566" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " product_id product_category_name \\\n", "0 1e9e8ef04dbcff4541ed26657ea517e5 perfumaria \n", "1 3aa071139cb16b67ca9e5dea641aaa2f artes \n", "2 96bd76ec8810374ed1b65e291975717f esporte_lazer \n", "3 cef67bcfe19066a932b7673e239eb23d bebes \n", "4 9dc1a7de274444849c219cff195d0b71 utilidades_domesticas \n", "\n", " product_name_lenght product_description_lenght product_photos_qty \\\n", "0 40.0 287.0 1.0 \n", "1 44.0 276.0 1.0 \n", "2 46.0 250.0 1.0 \n", "3 27.0 261.0 1.0 \n", "4 37.0 402.0 4.0 \n", "\n", " product_weight_g product_length_cm product_height_cm product_width_cm \n", "0 225.0 16.0 10.0 14.0 \n", "1 1000.0 30.0 18.0 20.0 \n", "2 154.0 18.0 9.0 15.0 \n", "3 371.0 26.0 4.0 26.0 \n", "4 625.0 20.0 17.0 13.0 " ], "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", "
product_idproduct_category_nameproduct_name_lenghtproduct_description_lenghtproduct_photos_qtyproduct_weight_gproduct_length_cmproduct_height_cmproduct_width_cm
01e9e8ef04dbcff4541ed26657ea517e5perfumaria40.0287.01.0225.016.010.014.0
13aa071139cb16b67ca9e5dea641aaa2fartes44.0276.01.01000.030.018.020.0
296bd76ec8810374ed1b65e291975717fesporte_lazer46.0250.01.0154.018.09.015.0
3cef67bcfe19066a932b7673e239eb23dbebes27.0261.01.0371.026.04.026.0
49dc1a7de274444849c219cff195d0b71utilidades_domesticas37.0402.04.0625.020.017.013.0
\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "
\n", "
\n" ] }, "metadata": {}, "execution_count": 9 } ] }, { "cell_type": "markdown", "source": [ "**Table Seller Dataset**" ], "metadata": { "id": "w68Qeg_YuXVa" } }, { "cell_type": "code", "source": [ "seller_url = 'https://raw.githubusercontent.com/MuhamdIlyas/ProjectDicodingDataScience/master/E-Commerce_Public_Dataset/sellers_dataset.csv'\n", "seller = pd.read_csv(seller_url)\n", "seller.head()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "d5WNYqA_ubxd", "outputId": "e3423ce0-3e45-4a54-e9a3-d4d5179afa02" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " seller_id seller_zip_code_prefix \\\n", "0 3442f8959a84dea7ee197c632cb2df15 13023 \n", "1 d1b65fc7debc3361ea86b5f14c68d2e2 13844 \n", "2 ce3ad9de960102d0677a81f5d0bb7b2d 20031 \n", "3 c0f3eea2e14555b6faeea3dd58c1b1c3 4195 \n", "4 51a04a8a6bdcb23deccc82b0b80742cf 12914 \n", "\n", " seller_city seller_state \n", "0 campinas SP \n", "1 mogi guacu SP \n", "2 rio de janeiro RJ \n", "3 sao paulo SP \n", "4 braganca paulista SP " ], "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", "
seller_idseller_zip_code_prefixseller_cityseller_state
03442f8959a84dea7ee197c632cb2df1513023campinasSP
1d1b65fc7debc3361ea86b5f14c68d2e213844mogi guacuSP
2ce3ad9de960102d0677a81f5d0bb7b2d20031rio de janeiroRJ
3c0f3eea2e14555b6faeea3dd58c1b1c34195sao pauloSP
451a04a8a6bdcb23deccc82b0b80742cf12914braganca paulistaSP
\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "
\n", "
\n" ] }, "metadata": {}, "execution_count": 10 } ] }, { "cell_type": "markdown", "source": [ "### Assessing Data" ], "metadata": { "id": "BvZAfrSH9F2U" } }, { "cell_type": "markdown", "source": [ "**Info Customer**" ], "metadata": { "id": "IFecwEUmU66q" } }, { "cell_type": "code", "source": [ "customer.info()" ], "metadata": { "id": "fx7PaLsV9G8M", "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "17130d2e-2654-457b-bae8-0cb9c2c7a4ec" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "\n", "RangeIndex: 99441 entries, 0 to 99440\n", "Data columns (total 5 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 customer_id 99441 non-null object\n", " 1 customer_unique_id 99441 non-null object\n", " 2 customer_zip_code_prefix 99441 non-null int64 \n", " 3 customer_city 99441 non-null object\n", " 4 customer_state 99441 non-null object\n", "dtypes: int64(1), object(4)\n", "memory usage: 3.8+ MB\n" ] } ] }, { "cell_type": "markdown", "source": [ "**Memeriksa Data Duplikasi**" ], "metadata": { "id": "vms78PJIWm_D" } }, { "cell_type": "code", "source": [ "print(\"Jumlah Duplikasi :\", customer.duplicated().sum())" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "3VY7lM-zWrH5", "outputId": "8fee4f46-6f18-4060-dbb3-c0e4c53a8f2b" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Jumlah Duplikasi : 0\n" ] } ] }, { "cell_type": "markdown", "source": [ "**Pemeriksaan Menggunakan Describe()**" ], "metadata": { "id": "nX-Gz0ntXB7l" } }, { "cell_type": "code", "source": [ "customer.describe()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "L9veIeWUXJ5r", "outputId": "a274b05f-ab58-485b-8818-fc5753a49313" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " customer_zip_code_prefix\n", "count 99441.000000\n", "mean 35137.474583\n", "std 29797.938996\n", "min 1003.000000\n", "25% 11347.000000\n", "50% 24416.000000\n", "75% 58900.000000\n", "max 99990.000000" ], "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", "
customer_zip_code_prefix
count99441.000000
mean35137.474583
std29797.938996
min1003.000000
25%11347.000000
50%24416.000000
75%58900.000000
max99990.000000
\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "
\n", "
\n" ] }, "metadata": {}, "execution_count": 13 } ] }, { "cell_type": "markdown", "source": [ "**Info Geolocation**" ], "metadata": { "id": "xWfgmgpEcm5P" } }, { "cell_type": "code", "source": [ "geolocation.info()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "_B7zaq9scute", "outputId": "724339d0-2f7c-4cda-a988-6913cc68bb5b" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "\n", "RangeIndex: 1000163 entries, 0 to 1000162\n", "Data columns (total 5 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 geolocation_zip_code_prefix 1000163 non-null int64 \n", " 1 geolocation_lat 1000163 non-null float64\n", " 2 geolocation_lng 1000163 non-null float64\n", " 3 geolocation_city 1000163 non-null object \n", " 4 geolocation_state 1000163 non-null object \n", "dtypes: float64(2), int64(1), object(2)\n", "memory usage: 38.2+ MB\n" ] } ] }, { "cell_type": "markdown", "source": [ "**Memeriksa Data Duplikasi**" ], "metadata": { "id": "misL_IKtc0Ya" } }, { "cell_type": "code", "source": [ "print(\"Jumlah DUplikasi :\", geolocation.duplicated().sum())" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "IjEfVbzcc4pF", "outputId": "08f45d98-1c82-4f7d-fd29-e3855a4408e5" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Jumlah DUplikasi : 261831\n" ] } ] }, { "cell_type": "markdown", "source": [ "**Memeriksa Menggunakan Describe**" ], "metadata": { "id": "MlsxM4todRzv" } }, { "cell_type": "code", "source": [ "geolocation.describe()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "G-zBLWBYdgCH", "outputId": "7edd952d-4499-4a33-beb7-cd5601143828" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " geolocation_zip_code_prefix geolocation_lat geolocation_lng\n", "count 1.000163e+06 1.000163e+06 1.000163e+06\n", "mean 3.657417e+04 -2.117615e+01 -4.639054e+01\n", "std 3.054934e+04 5.715866e+00 4.269748e+00\n", "min 1.001000e+03 -3.660537e+01 -1.014668e+02\n", "25% 1.107500e+04 -2.360355e+01 -4.857317e+01\n", "50% 2.653000e+04 -2.291938e+01 -4.663788e+01\n", "75% 6.350400e+04 -1.997962e+01 -4.376771e+01\n", "max 9.999000e+04 4.506593e+01 1.211054e+02" ], "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", "
geolocation_zip_code_prefixgeolocation_latgeolocation_lng
count1.000163e+061.000163e+061.000163e+06
mean3.657417e+04-2.117615e+01-4.639054e+01
std3.054934e+045.715866e+004.269748e+00
min1.001000e+03-3.660537e+01-1.014668e+02
25%1.107500e+04-2.360355e+01-4.857317e+01
50%2.653000e+04-2.291938e+01-4.663788e+01
75%6.350400e+04-1.997962e+01-4.376771e+01
max9.999000e+044.506593e+011.211054e+02
\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "
\n", "
\n" ] }, "metadata": {}, "execution_count": 16 } ] }, { "cell_type": "markdown", "source": [ "**Info Order_Item**" ], "metadata": { "id": "rE1mDyMhXX9E" } }, { "cell_type": "code", "source": [ "order_item.info()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "TNcenTt8Xd0k", "outputId": "ae694135-91f7-4390-87f3-b0f07be5ef79" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "\n", "RangeIndex: 112650 entries, 0 to 112649\n", "Data columns (total 7 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 order_id 112650 non-null object \n", " 1 order_item_id 112650 non-null int64 \n", " 2 product_id 112650 non-null object \n", " 3 seller_id 112650 non-null object \n", " 4 shipping_limit_date 112650 non-null object \n", " 5 price 112650 non-null float64\n", " 6 freight_value 112650 non-null float64\n", "dtypes: float64(2), int64(1), object(4)\n", "memory usage: 6.0+ MB\n" ] } ] }, { "cell_type": "markdown", "source": [ "**Memeriksa Data Duplikasi**" ], "metadata": { "id": "WC30tfWaXlX2" } }, { "cell_type": "code", "source": [ "print(\"Jumlah Duplikasi :\", order_item.duplicated().sum())" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "kG12mFfGXs_2", "outputId": "761e27a7-1673-4f90-84f8-15da16aaa96b" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Jumlah Duplikasi : 0\n" ] } ] }, { "cell_type": "markdown", "source": [ "**Pemeriksaan Menggunakan Describe**" ], "metadata": { "id": "7dV4wjm7X-19" } }, { "cell_type": "code", "source": [ "order_item.describe()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "tlqv2erEYD45", "outputId": "f2d09410-ed8e-4b38-ef4f-7f8d70db35c8" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " order_item_id price freight_value\n", "count 112650.000000 112650.000000 112650.000000\n", "mean 1.197834 120.653739 19.990320\n", "std 0.705124 183.633928 15.806405\n", "min 1.000000 0.850000 0.000000\n", "25% 1.000000 39.900000 13.080000\n", "50% 1.000000 74.990000 16.260000\n", "75% 1.000000 134.900000 21.150000\n", "max 21.000000 6735.000000 409.680000" ], "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", "
order_item_idpricefreight_value
count112650.000000112650.000000112650.000000
mean1.197834120.65373919.990320
std0.705124183.63392815.806405
min1.0000000.8500000.000000
25%1.00000039.90000013.080000
50%1.00000074.99000016.260000
75%1.000000134.90000021.150000
max21.0000006735.000000409.680000
\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "
\n", "
\n" ] }, "metadata": {}, "execution_count": 19 } ] }, { "cell_type": "markdown", "source": [ "**Info Order Payment**" ], "metadata": { "id": "iDxm3XjGfIjn" } }, { "cell_type": "code", "source": [ "order_payment.info()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "n6vSgCF7fMgD", "outputId": "64ae004d-be1b-4543-b6d0-3273bef3576e" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "\n", "RangeIndex: 103886 entries, 0 to 103885\n", "Data columns (total 5 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 order_id 103886 non-null object \n", " 1 payment_sequential 103886 non-null int64 \n", " 2 payment_type 103886 non-null object \n", " 3 payment_installments 103886 non-null int64 \n", " 4 payment_value 103886 non-null float64\n", "dtypes: float64(1), int64(2), object(2)\n", "memory usage: 4.0+ MB\n" ] } ] }, { "cell_type": "markdown", "source": [ "**Mengecek Data Duplikasi**" ], "metadata": { "id": "K40xcfMpfSLv" } }, { "cell_type": "code", "source": [ "print(\"Jumlah Data Duplikas :\", order_payment.duplicated().sum())" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "GfM_e25LfWeC", "outputId": "71d1c8f4-87b4-4a21-ea45-0edd0d1a8c15" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Jumlah Data Duplikas : 0\n" ] } ] }, { "cell_type": "markdown", "source": [ "**Pemeriksaan Menggunakan Describe**" ], "metadata": { "id": "x2s1VxyVfs-5" } }, { "cell_type": "code", "source": [ "order_payment.describe()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "hp9QuMvgf1L2", "outputId": "e99c8f19-d1cc-42cb-86e3-eb06ad91013e" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " payment_sequential payment_installments payment_value\n", "count 103886.000000 103886.000000 103886.000000\n", "mean 1.092679 2.853349 154.100380\n", "std 0.706584 2.687051 217.494064\n", "min 1.000000 0.000000 0.000000\n", "25% 1.000000 1.000000 56.790000\n", "50% 1.000000 1.000000 100.000000\n", "75% 1.000000 4.000000 171.837500\n", "max 29.000000 24.000000 13664.080000" ], "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", "
payment_sequentialpayment_installmentspayment_value
count103886.000000103886.000000103886.000000
mean1.0926792.853349154.100380
std0.7065842.687051217.494064
min1.0000000.0000000.000000
25%1.0000001.00000056.790000
50%1.0000001.000000100.000000
75%1.0000004.000000171.837500
max29.00000024.00000013664.080000
\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "
\n", "
\n" ] }, "metadata": {}, "execution_count": 22 } ] }, { "cell_type": "markdown", "source": [ "**Info Order Reviews**" ], "metadata": { "id": "h81IO_zjgQfw" } }, { "cell_type": "code", "source": [ "order_reviews.info()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "Fc1v5rEzgV-b", "outputId": "6ae6067f-fe2a-4a6b-9192-2a2dc8ab0a30" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "\n", "RangeIndex: 99224 entries, 0 to 99223\n", "Data columns (total 7 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 review_id 99224 non-null object\n", " 1 order_id 99224 non-null object\n", " 2 review_score 99224 non-null int64 \n", " 3 review_comment_title 11568 non-null object\n", " 4 review_comment_message 40977 non-null object\n", " 5 review_creation_date 99224 non-null object\n", " 6 review_answer_timestamp 99224 non-null object\n", "dtypes: int64(1), object(6)\n", "memory usage: 5.3+ MB\n" ] } ] }, { "cell_type": "markdown", "source": [ "**Melihat Missing Value**" ], "metadata": { "id": "bzZvjvV9g08F" } }, { "cell_type": "code", "source": [ "order_reviews.isna().sum()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "jXyXGLjug3mJ", "outputId": "9bd2e89e-6945-4b6f-b07e-cf5cd840e369" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "review_id 0\n", "order_id 0\n", "review_score 0\n", "review_comment_title 87656\n", "review_comment_message 58247\n", "review_creation_date 0\n", "review_answer_timestamp 0\n", "dtype: int64" ] }, "metadata": {}, "execution_count": 24 } ] }, { "cell_type": "markdown", "source": [ "**Memeriksa Data Duplikasi**" ], "metadata": { "id": "HPAWjaPhhIxF" } }, { "cell_type": "code", "source": [ "print('Jumlah Duplikasi :', order_reviews.duplicated().sum())" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "-Djp1BzXhL5z", "outputId": "d66d5854-829f-4db0-c14f-91054776e491" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Jumlah Duplikasi : 0\n" ] } ] }, { "cell_type": "markdown", "source": [ "**Memeriksa Menggunkan Describe**" ], "metadata": { "id": "D3krGZT7haw_" } }, { "cell_type": "code", "source": [ "order_reviews.describe()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "YxZpXkEshezJ", "outputId": "262337ac-8090-47d8-c2b1-93b18bc02836" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " review_score\n", "count 99224.000000\n", "mean 4.086421\n", "std 1.347579\n", "min 1.000000\n", "25% 4.000000\n", "50% 5.000000\n", "75% 5.000000\n", "max 5.000000" ], "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", "
review_score
count99224.000000
mean4.086421
std1.347579
min1.000000
25%4.000000
50%5.000000
75%5.000000
max5.000000
\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "
\n", "
\n" ] }, "metadata": {}, "execution_count": 26 } ] }, { "cell_type": "markdown", "source": [ "**Info Order**" ], "metadata": { "id": "Si-1U262jOGj" } }, { "cell_type": "code", "source": [ "order.info()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "yR5DoDS8jVA7", "outputId": "be9f6ba2-6f1b-4b7d-a8fc-fc6e1541cda2" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "\n", "RangeIndex: 99441 entries, 0 to 99440\n", "Data columns (total 8 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 order_id 99441 non-null object\n", " 1 customer_id 99441 non-null object\n", " 2 order_status 99441 non-null object\n", " 3 order_purchase_timestamp 99441 non-null object\n", " 4 order_approved_at 99281 non-null object\n", " 5 order_delivered_carrier_date 97658 non-null object\n", " 6 order_delivered_customer_date 96476 non-null object\n", " 7 order_estimated_delivery_date 99441 non-null object\n", "dtypes: object(8)\n", "memory usage: 6.1+ MB\n" ] } ] }, { "cell_type": "markdown", "source": [ "**Melihat Missing Value**" ], "metadata": { "id": "oG3584FsjbOb" } }, { "cell_type": "code", "source": [ "order.isna().sum()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "OOxTmc3PjeBp", "outputId": "43f95e07-d3b1-40a0-9dc6-5c9195d81c7e" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "order_id 0\n", "customer_id 0\n", "order_status 0\n", "order_purchase_timestamp 0\n", "order_approved_at 160\n", "order_delivered_carrier_date 1783\n", "order_delivered_customer_date 2965\n", "order_estimated_delivery_date 0\n", "dtype: int64" ] }, "metadata": {}, "execution_count": 28 } ] }, { "cell_type": "markdown", "source": [ "**Melihat Data Duplikasi**" ], "metadata": { "id": "P95TyBEYjnH-" } }, { "cell_type": "code", "source": [ "print(\"JUmlah Duplikasi :\", order.duplicated().sum())" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "8rFoTiytjw_M", "outputId": "dbb7b8d6-4aec-47e6-eb06-c8d2ba111846" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "JUmlah Duplikasi : 0\n" ] } ] }, { "cell_type": "markdown", "source": [ "**Memeriksa Menggunakan Describe**" ], "metadata": { "id": "X-cBWrMzj5Ck" } }, { "cell_type": "code", "source": [ "order.describe()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "YwRERzrrj8Mz", "outputId": "2b3b8a0a-de96-4ec6-b241-6367a0afc1c5" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " order_id customer_id \\\n", "count 99441 99441 \n", "unique 99441 99441 \n", "top e481f51cbdc54678b7cc49136f2d6af7 9ef432eb6251297304e76186b10a928d \n", "freq 1 1 \n", "\n", " order_status order_purchase_timestamp order_approved_at \\\n", "count 99441 99441 99281 \n", "unique 8 98875 90733 \n", "top delivered 2018-04-11 10:48:14 2018-02-27 04:31:10 \n", "freq 96478 3 9 \n", "\n", " order_delivered_carrier_date order_delivered_customer_date \\\n", "count 97658 96476 \n", "unique 81018 95664 \n", "top 2018-05-09 15:48:00 2018-05-08 23:38:46 \n", "freq 47 3 \n", "\n", " order_estimated_delivery_date \n", "count 99441 \n", "unique 459 \n", "top 2017-12-20 00:00:00 \n", "freq 522 " ], "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", "
order_idcustomer_idorder_statusorder_purchase_timestamporder_approved_atorder_delivered_carrier_dateorder_delivered_customer_dateorder_estimated_delivery_date
count9944199441994419944199281976589647699441
unique9944199441898875907338101895664459
tope481f51cbdc54678b7cc49136f2d6af79ef432eb6251297304e76186b10a928ddelivered2018-04-11 10:48:142018-02-27 04:31:102018-05-09 15:48:002018-05-08 23:38:462017-12-20 00:00:00
freq119647839473522
\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "
\n", "
\n" ] }, "metadata": {}, "execution_count": 30 } ] }, { "cell_type": "markdown", "source": [ "**Info Product Category**" ], "metadata": { "id": "7gFYDRZ_kfiF" } }, { "cell_type": "code", "source": [ "product_category.info()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "EmiiAfiBkk2w", "outputId": "c45df11b-43dc-4db3-ee0f-5164e9d829d4" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "\n", "RangeIndex: 71 entries, 0 to 70\n", "Data columns (total 2 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 product_category_name 71 non-null object\n", " 1 product_category_name_english 71 non-null object\n", "dtypes: object(2)\n", "memory usage: 1.2+ KB\n" ] } ] }, { "cell_type": "markdown", "source": [ "**Melihat Data Duplikasi**" ], "metadata": { "id": "pvIQomEAl7ZR" } }, { "cell_type": "code", "source": [ "print(\"Jumlah Duplikasi :\", product_category.duplicated().sum())" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "nyqAYjfWl_Jz", "outputId": "dc46ff35-26d2-4a18-89b0-29a54fe70746" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Jumlah Duplikasi : 0\n" ] } ] }, { "cell_type": "markdown", "source": [ "**Memeriksa Menggunakan Describe**" ], "metadata": { "id": "AL3lFSkEmON_" } }, { "cell_type": "code", "source": [ "product_category.describe()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "gxkXMtAymRXq", "outputId": "c624a4f3-acbb-4861-ed5c-56ec36f009b2" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " product_category_name product_category_name_english\n", "count 71 71\n", "unique 71 71\n", "top beleza_saude health_beauty\n", "freq 1 1" ], "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", "
product_category_nameproduct_category_name_english
count7171
unique7171
topbeleza_saudehealth_beauty
freq11
\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "
\n", "
\n" ] }, "metadata": {}, "execution_count": 33 } ] }, { "cell_type": "markdown", "source": [ "**Info Product**" ], "metadata": { "id": "aYzg5d45opJx" } }, { "cell_type": "code", "source": [ "product.info()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "YoSQN6fporvH", "outputId": "f3c194cb-5c86-464d-f9ba-f7128072f762" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "\n", "RangeIndex: 32951 entries, 0 to 32950\n", "Data columns (total 9 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 product_id 32951 non-null object \n", " 1 product_category_name 32341 non-null object \n", " 2 product_name_lenght 32341 non-null float64\n", " 3 product_description_lenght 32341 non-null float64\n", " 4 product_photos_qty 32341 non-null float64\n", " 5 product_weight_g 32949 non-null float64\n", " 6 product_length_cm 32949 non-null float64\n", " 7 product_height_cm 32949 non-null float64\n", " 8 product_width_cm 32949 non-null float64\n", "dtypes: float64(7), object(2)\n", "memory usage: 2.3+ MB\n" ] } ] }, { "cell_type": "markdown", "source": [ "**Memeriksa Missing Value**" ], "metadata": { "id": "szvNFZH3o106" } }, { "cell_type": "code", "source": [ "order.isna().sum()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "xsM7hT9Oo40l", "outputId": "90599e16-2be7-4c98-c55d-721314858b38" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "order_id 0\n", "customer_id 0\n", "order_status 0\n", "order_purchase_timestamp 0\n", "order_approved_at 160\n", "order_delivered_carrier_date 1783\n", "order_delivered_customer_date 2965\n", "order_estimated_delivery_date 0\n", "dtype: int64" ] }, "metadata": {}, "execution_count": 35 } ] }, { "cell_type": "markdown", "source": [ "**Memeriksa Data Duplikasi**" ], "metadata": { "id": "kP3Y7P37pAKF" } }, { "cell_type": "code", "source": [ "print(\"JUmlah Duplikasi :\", order.duplicated().sum())" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "vmyD84RDpGmi", "outputId": "6c792442-8b24-4243-ca25-050112213892" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "JUmlah Duplikasi : 0\n" ] } ] }, { "cell_type": "markdown", "source": [ "**Memeriksa Menggunakan Describe**" ], "metadata": { "id": "jAdWekDipyNI" } }, { "cell_type": "code", "source": [ "order.describe()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "YcNrZnp1p1a_", "outputId": "54d0bb5d-05fa-4e68-e943-68ab05541a0b" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " order_id customer_id \\\n", "count 99441 99441 \n", "unique 99441 99441 \n", "top e481f51cbdc54678b7cc49136f2d6af7 9ef432eb6251297304e76186b10a928d \n", "freq 1 1 \n", "\n", " order_status order_purchase_timestamp order_approved_at \\\n", "count 99441 99441 99281 \n", "unique 8 98875 90733 \n", "top delivered 2018-04-11 10:48:14 2018-02-27 04:31:10 \n", "freq 96478 3 9 \n", "\n", " order_delivered_carrier_date order_delivered_customer_date \\\n", "count 97658 96476 \n", "unique 81018 95664 \n", "top 2018-05-09 15:48:00 2018-05-08 23:38:46 \n", "freq 47 3 \n", "\n", " order_estimated_delivery_date \n", "count 99441 \n", "unique 459 \n", "top 2017-12-20 00:00:00 \n", "freq 522 " ], "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", "
order_idcustomer_idorder_statusorder_purchase_timestamporder_approved_atorder_delivered_carrier_dateorder_delivered_customer_dateorder_estimated_delivery_date
count9944199441994419944199281976589647699441
unique9944199441898875907338101895664459
tope481f51cbdc54678b7cc49136f2d6af79ef432eb6251297304e76186b10a928ddelivered2018-04-11 10:48:142018-02-27 04:31:102018-05-09 15:48:002018-05-08 23:38:462017-12-20 00:00:00
freq119647839473522
\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "
\n", "
\n" ] }, "metadata": {}, "execution_count": 37 } ] }, { "cell_type": "markdown", "source": [ "**Info Seller**" ], "metadata": { "id": "K5pUYtWDqC5L" } }, { "cell_type": "code", "source": [ "seller.info()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "I3AlHhyaqHVh", "outputId": "6de30508-661c-4a4b-8e6b-82a0716cb992" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "\n", "RangeIndex: 3095 entries, 0 to 3094\n", "Data columns (total 4 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 seller_id 3095 non-null object\n", " 1 seller_zip_code_prefix 3095 non-null int64 \n", " 2 seller_city 3095 non-null object\n", " 3 seller_state 3095 non-null object\n", "dtypes: int64(1), object(3)\n", "memory usage: 96.8+ KB\n" ] } ] }, { "cell_type": "markdown", "source": [ "**Memeriksa Data Duplikasi**" ], "metadata": { "id": "gmUFKI2jsEMd" } }, { "cell_type": "code", "source": [ "print(\"Jumlah Duplikasi :\", seller.duplicated().sum())" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "XvXTd4PtsIuZ", "outputId": "0f46eb81-1503-4e39-9510-e38ecf6b3c81" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Jumlah Duplikasi : 0\n" ] } ] }, { "cell_type": "markdown", "source": [ "**Memeriksa Dengan Describe**" ], "metadata": { "id": "Y_OWpGvWsX8B" } }, { "cell_type": "code", "source": [ "seller.describe()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "teqtO6ZvsdC6", "outputId": "515385cc-09ff-4ff5-cf3b-4fe7cdb1cfd2" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " seller_zip_code_prefix\n", "count 3095.000000\n", "mean 32291.059451\n", "std 32713.453830\n", "min 1001.000000\n", "25% 7093.500000\n", "50% 14940.000000\n", "75% 64552.500000\n", "max 99730.000000" ], "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", "
seller_zip_code_prefix
count3095.000000
mean32291.059451
std32713.453830
min1001.000000
25%7093.500000
50%14940.000000
75%64552.500000
max99730.000000
\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "
\n", "
\n" ] }, "metadata": {}, "execution_count": 40 } ] }, { "cell_type": "markdown", "source": [ "### Cleaning Data" ], "metadata": { "id": "Uz5dgcJm9HW5" } }, { "cell_type": "markdown", "source": [ "**Membersihkan Data Geolocation Duplikasi**" ], "metadata": { "id": "MsiKvY_RtDsH" } }, { "cell_type": "code", "source": [ "geolocation.drop_duplicates(inplace=True)" ], "metadata": { "id": "CCszTdXD9Ivf" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "Memeriksa Duplikasi" ], "metadata": { "id": "7RTFp_Qz3Wk_" } }, { "cell_type": "code", "source": [ "print(\"Jumlah Duplikasi :\", geolocation.duplicated().sum())" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "W8jDalTB3bmR", "outputId": "59c7d505-1f8f-47b4-c82f-8cf1e0057f4c" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Jumlah Duplikasi : 0\n" ] } ] }, { "cell_type": "markdown", "source": [ "**Membersihkan Inaccurate Order Item**" ], "metadata": { "id": "UlfPOzmh4Hdx" } }, { "cell_type": "markdown", "source": [ "Memfilter inaccurate value pada kolom price." ], "metadata": { "id": "xXqr_HNV53z7" } }, { "cell_type": "code", "source": [ "order_item[order_item.price == order_item.price.min()]" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "MREDcBrY4POh", "outputId": "001a8122-312c-4a08-c779-b06a820e8885" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " order_id order_item_id \\\n", "27652 3ee6513ae7ea23bdfab5b9ab60bffcb5 1 \n", "48625 6e864b3f0ec71031117ad4cf46b7f2a1 1 \n", "87081 c5bdd8ef3c0ec420232e668302179113 2 \n", "\n", " product_id seller_id \\\n", "27652 8a3254bee785a526d548a81a9bc3c9be 96804ea39d96eb908e7c3afdb671bb9e \n", "48625 8a3254bee785a526d548a81a9bc3c9be 96804ea39d96eb908e7c3afdb671bb9e \n", "87081 8a3254bee785a526d548a81a9bc3c9be 96804ea39d96eb908e7c3afdb671bb9e \n", "\n", " shipping_limit_date price freight_value \n", "27652 2018-05-04 03:55:26 0.85 18.23 \n", "48625 2018-05-02 20:30:34 0.85 18.23 \n", "87081 2018-05-07 02:55:22 0.85 22.30 " ], "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", "
order_idorder_item_idproduct_idseller_idshipping_limit_datepricefreight_value
276523ee6513ae7ea23bdfab5b9ab60bffcb518a3254bee785a526d548a81a9bc3c9be96804ea39d96eb908e7c3afdb671bb9e2018-05-04 03:55:260.8518.23
486256e864b3f0ec71031117ad4cf46b7f2a118a3254bee785a526d548a81a9bc3c9be96804ea39d96eb908e7c3afdb671bb9e2018-05-02 20:30:340.8518.23
87081c5bdd8ef3c0ec420232e66830217911328a3254bee785a526d548a81a9bc3c9be96804ea39d96eb908e7c3afdb671bb9e2018-05-07 02:55:220.8522.30
\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "
\n", "
\n" ] }, "metadata": {}, "execution_count": 43 } ] }, { "cell_type": "markdown", "source": [ "Mengganti harga 0.85 menjadi harga 85" ], "metadata": { "id": "sWooQW3t8Sti" } }, { "cell_type": "code", "source": [ "order_item.price.replace(order_item.price.min(), 85, inplace=True)" ], "metadata": { "id": "CvSuY8Vq8Zhy" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "Memeriksa Hasil dari replace" ], "metadata": { "id": "jvfpkeL89QBY" } }, { "cell_type": "code", "source": [ "order_item[order_item.price == order_item.price.min()]" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "nHRka_fn9aPl", "outputId": "3696f5d4-7f27-40fe-adfe-554b31b11c47" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " order_id order_item_id \\\n", "57297 8272b63d03f5f79c56e9e4120aec44ef 1 \n", "57298 8272b63d03f5f79c56e9e4120aec44ef 2 \n", "57299 8272b63d03f5f79c56e9e4120aec44ef 3 \n", "57300 8272b63d03f5f79c56e9e4120aec44ef 4 \n", "57301 8272b63d03f5f79c56e9e4120aec44ef 5 \n", "57302 8272b63d03f5f79c56e9e4120aec44ef 6 \n", "57303 8272b63d03f5f79c56e9e4120aec44ef 7 \n", "57304 8272b63d03f5f79c56e9e4120aec44ef 8 \n", "57305 8272b63d03f5f79c56e9e4120aec44ef 9 \n", "57306 8272b63d03f5f79c56e9e4120aec44ef 10 \n", "57307 8272b63d03f5f79c56e9e4120aec44ef 11 \n", "57308 8272b63d03f5f79c56e9e4120aec44ef 12 \n", "57309 8272b63d03f5f79c56e9e4120aec44ef 13 \n", "57310 8272b63d03f5f79c56e9e4120aec44ef 14 \n", "57311 8272b63d03f5f79c56e9e4120aec44ef 15 \n", "57312 8272b63d03f5f79c56e9e4120aec44ef 16 \n", "57313 8272b63d03f5f79c56e9e4120aec44ef 17 \n", "57314 8272b63d03f5f79c56e9e4120aec44ef 18 \n", "57315 8272b63d03f5f79c56e9e4120aec44ef 19 \n", "57316 8272b63d03f5f79c56e9e4120aec44ef 20 \n", "\n", " product_id seller_id \\\n", "57297 270516a3f41dc035aa87d220228f844c 2709af9587499e95e803a6498a5a56e9 \n", "57298 05b515fdc76e888aada3c6d66c201dff 2709af9587499e95e803a6498a5a56e9 \n", "57299 05b515fdc76e888aada3c6d66c201dff 2709af9587499e95e803a6498a5a56e9 \n", "57300 05b515fdc76e888aada3c6d66c201dff 2709af9587499e95e803a6498a5a56e9 \n", "57301 05b515fdc76e888aada3c6d66c201dff 2709af9587499e95e803a6498a5a56e9 \n", "57302 05b515fdc76e888aada3c6d66c201dff 2709af9587499e95e803a6498a5a56e9 \n", "57303 05b515fdc76e888aada3c6d66c201dff 2709af9587499e95e803a6498a5a56e9 \n", "57304 05b515fdc76e888aada3c6d66c201dff 2709af9587499e95e803a6498a5a56e9 \n", "57305 05b515fdc76e888aada3c6d66c201dff 2709af9587499e95e803a6498a5a56e9 \n", "57306 05b515fdc76e888aada3c6d66c201dff 2709af9587499e95e803a6498a5a56e9 \n", "57307 05b515fdc76e888aada3c6d66c201dff 2709af9587499e95e803a6498a5a56e9 \n", "57308 270516a3f41dc035aa87d220228f844c 2709af9587499e95e803a6498a5a56e9 \n", "57309 270516a3f41dc035aa87d220228f844c 2709af9587499e95e803a6498a5a56e9 \n", "57310 270516a3f41dc035aa87d220228f844c 2709af9587499e95e803a6498a5a56e9 \n", "57311 270516a3f41dc035aa87d220228f844c 2709af9587499e95e803a6498a5a56e9 \n", "57312 270516a3f41dc035aa87d220228f844c 2709af9587499e95e803a6498a5a56e9 \n", "57313 270516a3f41dc035aa87d220228f844c 2709af9587499e95e803a6498a5a56e9 \n", "57314 270516a3f41dc035aa87d220228f844c 2709af9587499e95e803a6498a5a56e9 \n", "57315 270516a3f41dc035aa87d220228f844c 2709af9587499e95e803a6498a5a56e9 \n", "57316 270516a3f41dc035aa87d220228f844c 2709af9587499e95e803a6498a5a56e9 \n", "\n", " shipping_limit_date price freight_value \n", "57297 2017-07-21 18:25:23 1.2 7.89 \n", "57298 2017-07-21 18:25:23 1.2 7.89 \n", "57299 2017-07-21 18:25:23 1.2 7.89 \n", "57300 2017-07-21 18:25:23 1.2 7.89 \n", "57301 2017-07-21 18:25:23 1.2 7.89 \n", "57302 2017-07-21 18:25:23 1.2 7.89 \n", "57303 2017-07-21 18:25:23 1.2 7.89 \n", "57304 2017-07-21 18:25:23 1.2 7.89 \n", "57305 2017-07-21 18:25:23 1.2 7.89 \n", "57306 2017-07-21 18:25:23 1.2 7.89 \n", "57307 2017-07-21 18:25:23 1.2 7.89 \n", "57308 2017-07-21 18:25:23 1.2 7.89 \n", "57309 2017-07-21 18:25:23 1.2 7.89 \n", "57310 2017-07-21 18:25:23 1.2 7.89 \n", "57311 2017-07-21 18:25:23 1.2 7.89 \n", "57312 2017-07-21 18:25:23 1.2 7.89 \n", "57313 2017-07-21 18:25:23 1.2 7.89 \n", "57314 2017-07-21 18:25:23 1.2 7.89 \n", "57315 2017-07-21 18:25:23 1.2 7.89 \n", "57316 2017-07-21 18:25:23 1.2 7.89 " ], "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", " \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", "
order_idorder_item_idproduct_idseller_idshipping_limit_datepricefreight_value
572978272b63d03f5f79c56e9e4120aec44ef1270516a3f41dc035aa87d220228f844c2709af9587499e95e803a6498a5a56e92017-07-21 18:25:231.27.89
572988272b63d03f5f79c56e9e4120aec44ef205b515fdc76e888aada3c6d66c201dff2709af9587499e95e803a6498a5a56e92017-07-21 18:25:231.27.89
572998272b63d03f5f79c56e9e4120aec44ef305b515fdc76e888aada3c6d66c201dff2709af9587499e95e803a6498a5a56e92017-07-21 18:25:231.27.89
573008272b63d03f5f79c56e9e4120aec44ef405b515fdc76e888aada3c6d66c201dff2709af9587499e95e803a6498a5a56e92017-07-21 18:25:231.27.89
573018272b63d03f5f79c56e9e4120aec44ef505b515fdc76e888aada3c6d66c201dff2709af9587499e95e803a6498a5a56e92017-07-21 18:25:231.27.89
573028272b63d03f5f79c56e9e4120aec44ef605b515fdc76e888aada3c6d66c201dff2709af9587499e95e803a6498a5a56e92017-07-21 18:25:231.27.89
573038272b63d03f5f79c56e9e4120aec44ef705b515fdc76e888aada3c6d66c201dff2709af9587499e95e803a6498a5a56e92017-07-21 18:25:231.27.89
573048272b63d03f5f79c56e9e4120aec44ef805b515fdc76e888aada3c6d66c201dff2709af9587499e95e803a6498a5a56e92017-07-21 18:25:231.27.89
573058272b63d03f5f79c56e9e4120aec44ef905b515fdc76e888aada3c6d66c201dff2709af9587499e95e803a6498a5a56e92017-07-21 18:25:231.27.89
573068272b63d03f5f79c56e9e4120aec44ef1005b515fdc76e888aada3c6d66c201dff2709af9587499e95e803a6498a5a56e92017-07-21 18:25:231.27.89
573078272b63d03f5f79c56e9e4120aec44ef1105b515fdc76e888aada3c6d66c201dff2709af9587499e95e803a6498a5a56e92017-07-21 18:25:231.27.89
573088272b63d03f5f79c56e9e4120aec44ef12270516a3f41dc035aa87d220228f844c2709af9587499e95e803a6498a5a56e92017-07-21 18:25:231.27.89
573098272b63d03f5f79c56e9e4120aec44ef13270516a3f41dc035aa87d220228f844c2709af9587499e95e803a6498a5a56e92017-07-21 18:25:231.27.89
573108272b63d03f5f79c56e9e4120aec44ef14270516a3f41dc035aa87d220228f844c2709af9587499e95e803a6498a5a56e92017-07-21 18:25:231.27.89
573118272b63d03f5f79c56e9e4120aec44ef15270516a3f41dc035aa87d220228f844c2709af9587499e95e803a6498a5a56e92017-07-21 18:25:231.27.89
573128272b63d03f5f79c56e9e4120aec44ef16270516a3f41dc035aa87d220228f844c2709af9587499e95e803a6498a5a56e92017-07-21 18:25:231.27.89
573138272b63d03f5f79c56e9e4120aec44ef17270516a3f41dc035aa87d220228f844c2709af9587499e95e803a6498a5a56e92017-07-21 18:25:231.27.89
573148272b63d03f5f79c56e9e4120aec44ef18270516a3f41dc035aa87d220228f844c2709af9587499e95e803a6498a5a56e92017-07-21 18:25:231.27.89
573158272b63d03f5f79c56e9e4120aec44ef19270516a3f41dc035aa87d220228f844c2709af9587499e95e803a6498a5a56e92017-07-21 18:25:231.27.89
573168272b63d03f5f79c56e9e4120aec44ef20270516a3f41dc035aa87d220228f844c2709af9587499e95e803a6498a5a56e92017-07-21 18:25:231.27.89
\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "
\n", "
\n" ] }, "metadata": {}, "execution_count": 45 } ] }, { "cell_type": "markdown", "source": [ "Mengecek Inaccurate dengan describe" ], "metadata": { "id": "p_jgZzfw-G3w" } }, { "cell_type": "code", "source": [ "order_item.describe()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "4-PAacvf-Iqn", "outputId": "6d933f62-c85c-4092-a7d7-09de46097a13" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " order_item_id price freight_value\n", "count 112650.000000 112650.000000 112650.000000\n", "mean 1.197834 120.655980 19.990320\n", "std 0.705124 183.632979 15.806405\n", "min 1.000000 1.200000 0.000000\n", "25% 1.000000 39.900000 13.080000\n", "50% 1.000000 74.990000 16.260000\n", "75% 1.000000 134.900000 21.150000\n", "max 21.000000 6735.000000 409.680000" ], "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", "
order_item_idpricefreight_value
count112650.000000112650.000000112650.000000
mean1.197834120.65598019.990320
std0.705124183.63297915.806405
min1.0000001.2000000.000000
25%1.00000039.90000013.080000
50%1.00000074.99000016.260000
75%1.000000134.90000021.150000
max21.0000006735.000000409.680000
\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "
\n", "
\n" ] }, "metadata": {}, "execution_count": 46 } ] }, { "cell_type": "markdown", "source": [ "**Membersihkan Missing Value pada order reviews**" ], "metadata": { "id": "UsCC38cvDeFI" } }, { "cell_type": "markdown", "source": [ "Melihat data yang mengandung missing value, Untuk Review Comment tetap di Keep karena pendapat setiap orang berbeda-beda" ], "metadata": { "id": "tdTT0UJHGr_v" } }, { "cell_type": "code", "source": [ "order_reviews[order_reviews.review_comment_title.isna()]" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "YTg5zqILDoaW", "outputId": "34178d83-df89-4699-8025-52805c67bf64" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " review_id order_id \\\n", "0 7bc2406110b926393aa56f80a40eba40 73fc7af87114b39712e6da79b0a377eb \n", "1 80e641a11e56f04c1ad469d5645fdfde a548910a1c6147796b98fdf73dbeba33 \n", "2 228ce5500dc1d8e020d8d1322874b6f0 f9e4b658b201a9f2ecdecbb34bed034b \n", "3 e64fb393e7b32834bb789ff8bb30750e 658677c97b385a9be170737859d3511b \n", "4 f7c4243c7fe1938f181bec41a392bdeb 8e6bfb81e283fa7e4f11123a3fb894f1 \n", "... ... ... \n", "99219 574ed12dd733e5fa530cfd4bbf39d7c9 2a8c23fee101d4d5662fa670396eb8da \n", "99220 f3897127253a9592a73be9bdfdf4ed7a 22ec9f0669f784db00fa86d035cf8602 \n", "99221 b3de70c89b1510c4cd3d0649fd302472 55d4004744368f5571d1f590031933e4 \n", "99222 1adeb9d84d72fe4e337617733eb85149 7725825d039fc1f0ceb7635e3f7d9206 \n", "99223 efe49f1d6f951dd88b51e6ccd4cc548f 90531360ecb1eec2a1fbb265a0db0508 \n", "\n", " review_score review_comment_title \\\n", "0 4 NaN \n", "1 5 NaN \n", "2 5 NaN \n", "3 5 NaN \n", "4 5 NaN \n", "... ... ... \n", "99219 5 NaN \n", "99220 5 NaN \n", "99221 5 NaN \n", "99222 4 NaN \n", "99223 1 NaN \n", "\n", " review_comment_message review_creation_date \\\n", "0 NaN 2018-01-18 00:00:00 \n", "1 NaN 2018-03-10 00:00:00 \n", "2 NaN 2018-02-17 00:00:00 \n", "3 Recebi bem antes do prazo estipulado. 2017-04-21 00:00:00 \n", "4 Parabéns lojas lannister adorei comprar pela I... 2018-03-01 00:00:00 \n", "... ... ... \n", "99219 NaN 2018-07-07 00:00:00 \n", "99220 NaN 2017-12-09 00:00:00 \n", "99221 Excelente mochila, entrega super rápida. Super... 2018-03-22 00:00:00 \n", "99222 NaN 2018-07-01 00:00:00 \n", "99223 meu produto chegou e ja tenho que devolver, po... 2017-07-03 00:00:00 \n", "\n", " review_answer_timestamp \n", "0 2018-01-18 21:46:59 \n", "1 2018-03-11 03:05:13 \n", "2 2018-02-18 14:36:24 \n", "3 2017-04-21 22:02:06 \n", "4 2018-03-02 10:26:53 \n", "... ... \n", "99219 2018-07-14 17:18:30 \n", "99220 2017-12-11 20:06:42 \n", "99221 2018-03-23 09:10:43 \n", "99222 2018-07-02 12:59:13 \n", "99223 2017-07-03 21:01:49 \n", "\n", "[87656 rows x 7 columns]" ], "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", "
review_idorder_idreview_scorereview_comment_titlereview_comment_messagereview_creation_datereview_answer_timestamp
07bc2406110b926393aa56f80a40eba4073fc7af87114b39712e6da79b0a377eb4NaNNaN2018-01-18 00:00:002018-01-18 21:46:59
180e641a11e56f04c1ad469d5645fdfdea548910a1c6147796b98fdf73dbeba335NaNNaN2018-03-10 00:00:002018-03-11 03:05:13
2228ce5500dc1d8e020d8d1322874b6f0f9e4b658b201a9f2ecdecbb34bed034b5NaNNaN2018-02-17 00:00:002018-02-18 14:36:24
3e64fb393e7b32834bb789ff8bb30750e658677c97b385a9be170737859d3511b5NaNRecebi bem antes do prazo estipulado.2017-04-21 00:00:002017-04-21 22:02:06
4f7c4243c7fe1938f181bec41a392bdeb8e6bfb81e283fa7e4f11123a3fb894f15NaNParabéns lojas lannister adorei comprar pela I...2018-03-01 00:00:002018-03-02 10:26:53
........................
99219574ed12dd733e5fa530cfd4bbf39d7c92a8c23fee101d4d5662fa670396eb8da5NaNNaN2018-07-07 00:00:002018-07-14 17:18:30
99220f3897127253a9592a73be9bdfdf4ed7a22ec9f0669f784db00fa86d035cf86025NaNNaN2017-12-09 00:00:002017-12-11 20:06:42
99221b3de70c89b1510c4cd3d0649fd30247255d4004744368f5571d1f590031933e45NaNExcelente mochila, entrega super rápida. Super...2018-03-22 00:00:002018-03-23 09:10:43
992221adeb9d84d72fe4e337617733eb851497725825d039fc1f0ceb7635e3f7d92064NaNNaN2018-07-01 00:00:002018-07-02 12:59:13
99223efe49f1d6f951dd88b51e6ccd4cc548f90531360ecb1eec2a1fbb265a0db05081NaNmeu produto chegou e ja tenho que devolver, po...2017-07-03 00:00:002017-07-03 21:01:49
\n", "

87656 rows × 7 columns

\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "
\n", "
\n" ] }, "metadata": {}, "execution_count": 47 } ] }, { "cell_type": "markdown", "source": [ "**Membersihkan Missing Value pada Order**" ], "metadata": { "id": "UWS5N2XlG2Y8" } }, { "cell_type": "code", "source": [ "order[order.order_approved_at.isna()]" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "h32olhw5UgTp", "outputId": "6ee0608b-787f-4892-8916-5a2eb80d70a7" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " order_id customer_id \\\n", "1130 00b1cb0320190ca0daa2c88b35206009 3532ba38a3fd242259a514ac2b6ae6b6 \n", "1801 ed3efbd3a87bea76c2812c66a0b32219 191984a8ba4cbb2145acb4fe35b69664 \n", "1868 df8282afe61008dc26c6c31011474d02 aa797b187b5466bc6925aaaa4bb3bed1 \n", "2029 8d4c637f1accf7a88a4555f02741e606 b1dd715db389a2077f43174e7a675d07 \n", "2161 7a9d4c7f9b068337875b95465330f2fc 7f71ae48074c0cfec9195f88fcbfac55 \n", "... ... ... \n", "97696 5a00b4d35edffc56b825c3646a99ba9d 6a3bdf004ca96338fb5fad1b8d93c2e6 \n", "98415 227c804e2a44760671a6a5697ea549e4 62e7477e75e542243ee62a0ba73f410f \n", "98909 e49e7ce1471b4693482d40c2bd3ad196 e4e7ab3f449aeb401f0216f86c2104db \n", "99283 3a3cddda5a7c27851bd96c3313412840 0b0d6095c5555fe083844281f6b093bb \n", "99347 a89abace0dcc01eeb267a9660b5ac126 2f0524a7b1b3845a1a57fcf3910c4333 \n", "\n", " order_status order_purchase_timestamp order_approved_at \\\n", "1130 canceled 2018-08-28 15:26:39 NaN \n", "1801 canceled 2018-09-20 13:54:16 NaN \n", "1868 canceled 2017-03-04 12:14:30 NaN \n", "2029 canceled 2018-08-29 16:27:49 NaN \n", "2161 canceled 2017-05-01 16:12:39 NaN \n", "... ... ... ... \n", "97696 canceled 2017-07-02 15:38:46 NaN \n", "98415 canceled 2017-09-28 15:02:56 NaN \n", "98909 canceled 2018-08-07 11:16:28 NaN \n", "99283 canceled 2018-08-31 16:13:44 NaN \n", "99347 canceled 2018-09-06 18:45:47 NaN \n", "\n", " order_delivered_carrier_date order_delivered_customer_date \\\n", "1130 NaN NaN \n", "1801 NaN NaN \n", "1868 NaN NaN \n", "2029 NaN NaN \n", "2161 NaN NaN \n", "... ... ... \n", "97696 NaN NaN \n", "98415 NaN NaN \n", "98909 NaN NaN \n", "99283 NaN NaN \n", "99347 NaN NaN \n", "\n", " order_estimated_delivery_date \n", "1130 2018-09-12 00:00:00 \n", "1801 2018-10-17 00:00:00 \n", "1868 2017-04-10 00:00:00 \n", "2029 2018-09-13 00:00:00 \n", "2161 2017-05-30 00:00:00 \n", "... ... \n", "97696 2017-07-25 00:00:00 \n", "98415 2017-10-16 00:00:00 \n", "98909 2018-08-10 00:00:00 \n", "99283 2018-10-01 00:00:00 \n", "99347 2018-09-27 00:00:00 \n", "\n", "[160 rows x 8 columns]" ], "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", "
order_idcustomer_idorder_statusorder_purchase_timestamporder_approved_atorder_delivered_carrier_dateorder_delivered_customer_dateorder_estimated_delivery_date
113000b1cb0320190ca0daa2c88b352060093532ba38a3fd242259a514ac2b6ae6b6canceled2018-08-28 15:26:39NaNNaNNaN2018-09-12 00:00:00
1801ed3efbd3a87bea76c2812c66a0b32219191984a8ba4cbb2145acb4fe35b69664canceled2018-09-20 13:54:16NaNNaNNaN2018-10-17 00:00:00
1868df8282afe61008dc26c6c31011474d02aa797b187b5466bc6925aaaa4bb3bed1canceled2017-03-04 12:14:30NaNNaNNaN2017-04-10 00:00:00
20298d4c637f1accf7a88a4555f02741e606b1dd715db389a2077f43174e7a675d07canceled2018-08-29 16:27:49NaNNaNNaN2018-09-13 00:00:00
21617a9d4c7f9b068337875b95465330f2fc7f71ae48074c0cfec9195f88fcbfac55canceled2017-05-01 16:12:39NaNNaNNaN2017-05-30 00:00:00
...........................
976965a00b4d35edffc56b825c3646a99ba9d6a3bdf004ca96338fb5fad1b8d93c2e6canceled2017-07-02 15:38:46NaNNaNNaN2017-07-25 00:00:00
98415227c804e2a44760671a6a5697ea549e462e7477e75e542243ee62a0ba73f410fcanceled2017-09-28 15:02:56NaNNaNNaN2017-10-16 00:00:00
98909e49e7ce1471b4693482d40c2bd3ad196e4e7ab3f449aeb401f0216f86c2104dbcanceled2018-08-07 11:16:28NaNNaNNaN2018-08-10 00:00:00
992833a3cddda5a7c27851bd96c33134128400b0d6095c5555fe083844281f6b093bbcanceled2018-08-31 16:13:44NaNNaNNaN2018-10-01 00:00:00
99347a89abace0dcc01eeb267a9660b5ac1262f0524a7b1b3845a1a57fcf3910c4333canceled2018-09-06 18:45:47NaNNaNNaN2018-09-27 00:00:00
\n", "

160 rows × 8 columns

\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "
\n", "
\n" ] }, "metadata": {}, "execution_count": 48 } ] }, { "cell_type": "markdown", "source": [ "Mengisi kolom order_approved_at dengan order_purchase_timestamp\n" ], "metadata": { "id": "qgPvlC7bd2SQ" } }, { "cell_type": "code", "source": [ "order[\"order_approved_at\"] = order[\"order_purchase_timestamp\"]" ], "metadata": { "id": "aDnTr3xqX_3G" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "Mengisi kolom order_delivered_carrier_date dengan order_purchase_timestamp" ], "metadata": { "id": "tyY5ETC8eGXo" } }, { "cell_type": "code", "source": [ "order[\"order_delivered_carrier_date\"] = order[\"order_purchase_timestamp\"]" ], "metadata": { "id": "OOoQxH-VeH06" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "Mengisi kolom order_delivered_customer_date dengan order_purchase_timestamp" ], "metadata": { "id": "skKJMLsmeTud" } }, { "cell_type": "code", "source": [ "order[\"order_delivered_customer_date\"].fillna(value='order_purchase_timestamp', inplace=True)" ], "metadata": { "id": "5YLX9_fxeUKF" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "Mengecek Missing Value" ], "metadata": { "id": "JADxCHqbsFop" } }, { "cell_type": "code", "source": [ "order.isna().sum()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "iFipE_Yqdt-y", "outputId": "d1a7c5c3-2cdb-40db-98f6-4d66a3fb9a8d" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "order_id 0\n", "customer_id 0\n", "order_status 0\n", "order_purchase_timestamp 0\n", "order_approved_at 0\n", "order_delivered_carrier_date 0\n", "order_delivered_customer_date 0\n", "order_estimated_delivery_date 0\n", "dtype: int64" ] }, "metadata": {}, "execution_count": 52 } ] }, { "cell_type": "markdown", "source": [ "**Membersihkan Data Product**" ], "metadata": { "id": "Hrf1s-vZv3gy" } }, { "cell_type": "markdown", "source": [ "Melihat Nama Kategori Produk" ], "metadata": { "id": "GSCPdIgxwhpz" } }, { "cell_type": "code", "source": [ "product.product_category_name.value_counts()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "QqAo4CUosL50", "outputId": "0dc0293d-e0b3-43f1-df31-23dff3018ed2" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "cama_mesa_banho 3029\n", "esporte_lazer 2867\n", "moveis_decoracao 2657\n", "beleza_saude 2444\n", "utilidades_domesticas 2335\n", " ... \n", "fashion_roupa_infanto_juvenil 5\n", "casa_conforto_2 5\n", "pc_gamer 3\n", "seguros_e_servicos 2\n", "cds_dvds_musicais 1\n", "Name: product_category_name, Length: 73, dtype: int64" ] }, "metadata": {}, "execution_count": 53 } ] }, { "cell_type": "markdown", "source": [ "Mengisi Missing Value Berdasarkan nilai yang dominan" ], "metadata": { "id": "dXAPVyPUwnIb" } }, { "cell_type": "code", "source": [ "product.fillna(value=\"cama_mesa_banho\", inplace=True)" ], "metadata": { "id": "qoweLx1Fw1WB" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "**Mengecek Missing Value**" ], "metadata": { "id": "Bm11SwNbMOet" } }, { "cell_type": "code", "source": [ "product.isna().sum()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "oda886E_sI-_", "outputId": "8813b90e-c818-4ef9-d231-e70827176301" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "product_id 0\n", "product_category_name 0\n", "product_name_lenght 0\n", "product_description_lenght 0\n", "product_photos_qty 0\n", "product_weight_g 0\n", "product_length_cm 0\n", "product_height_cm 0\n", "product_width_cm 0\n", "dtype: int64" ] }, "metadata": {}, "execution_count": 55 } ] }, { "cell_type": "markdown", "source": [ "## Exploratory Data Analysis (EDA)" ], "metadata": { "id": "EyPJaCDm9KFb" } }, { "cell_type": "markdown", "source": [ "### Explore Data Seller dan Order Item" ], "metadata": { "id": "1dG8udJJdo9J" } }, { "cell_type": "markdown", "source": [ "Melihat informasi keseluruhan pada seller" ], "metadata": { "id": "0q9N1LVDSbt4" } }, { "cell_type": "code", "source": [ "seller.describe(include='all')" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "ubZGlnK1dqi8", "outputId": "c37de9c9-83b9-4165-8976-40248ec187a3" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " seller_id seller_zip_code_prefix seller_city \\\n", "count 3095 3095.000000 3095 \n", "unique 3095 NaN 611 \n", "top 3442f8959a84dea7ee197c632cb2df15 NaN sao paulo \n", "freq 1 NaN 694 \n", "mean NaN 32291.059451 NaN \n", "std NaN 32713.453830 NaN \n", "min NaN 1001.000000 NaN \n", "25% NaN 7093.500000 NaN \n", "50% NaN 14940.000000 NaN \n", "75% NaN 64552.500000 NaN \n", "max NaN 99730.000000 NaN \n", "\n", " seller_state \n", "count 3095 \n", "unique 23 \n", "top SP \n", "freq 1849 \n", "mean NaN \n", "std NaN \n", "min NaN \n", "25% NaN \n", "50% NaN \n", "75% NaN \n", "max NaN " ], "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", "
seller_idseller_zip_code_prefixseller_cityseller_state
count30953095.00000030953095
unique3095NaN61123
top3442f8959a84dea7ee197c632cb2df15NaNsao pauloSP
freq1NaN6941849
meanNaN32291.059451NaNNaN
stdNaN32713.453830NaNNaN
minNaN1001.000000NaNNaN
25%NaN7093.500000NaNNaN
50%NaN14940.000000NaNNaN
75%NaN64552.500000NaNNaN
maxNaN99730.000000NaNNaN
\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "
\n", "
\n" ] }, "metadata": {}, "execution_count": 56 } ] }, { "cell_type": "markdown", "source": [ "Melihat Informasi Keseluruhan pada order_item" ], "metadata": { "id": "FQBzlmMOSmPt" } }, { "cell_type": "code", "source": [ "order_item.describe(include='all')" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "xvm7x3D0RoJl", "outputId": "aaf26e76-d176-4f50-9efa-1d7fc85a6816" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " order_id order_item_id \\\n", "count 112650 112650.000000 \n", "unique 98666 NaN \n", "top 8272b63d03f5f79c56e9e4120aec44ef NaN \n", "freq 21 NaN \n", "mean NaN 1.197834 \n", "std NaN 0.705124 \n", "min NaN 1.000000 \n", "25% NaN 1.000000 \n", "50% NaN 1.000000 \n", "75% NaN 1.000000 \n", "max NaN 21.000000 \n", "\n", " product_id seller_id \\\n", "count 112650 112650 \n", "unique 32951 3095 \n", "top aca2eb7d00ea1a7b8ebd4e68314663af 6560211a19b47992c3666cc44a7e94c0 \n", "freq 527 2033 \n", "mean NaN NaN \n", "std NaN NaN \n", "min NaN NaN \n", "25% NaN NaN \n", "50% NaN NaN \n", "75% NaN NaN \n", "max NaN NaN \n", "\n", " shipping_limit_date price freight_value \n", "count 112650 112650.000000 112650.000000 \n", "unique 93318 NaN NaN \n", "top 2017-07-21 18:25:23 NaN NaN \n", "freq 21 NaN NaN \n", "mean NaN 120.655980 19.990320 \n", "std NaN 183.632979 15.806405 \n", "min NaN 1.200000 0.000000 \n", "25% NaN 39.900000 13.080000 \n", "50% NaN 74.990000 16.260000 \n", "75% NaN 134.900000 21.150000 \n", "max NaN 6735.000000 409.680000 " ], "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", "
order_idorder_item_idproduct_idseller_idshipping_limit_datepricefreight_value
count112650112650.000000112650112650112650112650.000000112650.000000
unique98666NaN32951309593318NaNNaN
top8272b63d03f5f79c56e9e4120aec44efNaNaca2eb7d00ea1a7b8ebd4e68314663af6560211a19b47992c3666cc44a7e94c02017-07-21 18:25:23NaNNaN
freq21NaN527203321NaNNaN
meanNaN1.197834NaNNaNNaN120.65598019.990320
stdNaN0.705124NaNNaNNaN183.63297915.806405
minNaN1.000000NaNNaNNaN1.2000000.000000
25%NaN1.000000NaNNaNNaN39.90000013.080000
50%NaN1.000000NaNNaNNaN74.99000016.260000
75%NaN1.000000NaNNaNNaN134.90000021.150000
maxNaN21.000000NaNNaNNaN6735.000000409.680000
\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "
\n", "
\n" ] }, "metadata": {}, "execution_count": 57 } ] }, { "cell_type": "markdown", "source": [ "Mengecek Harga dari terendah ke termahal" ], "metadata": { "id": "N7k1jvi7SxIl" } }, { "cell_type": "code", "source": [ "order_item.sort_values(by='price', ascending=True)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "O74HuitiSYhd", "outputId": "4e0adba5-9886-4df0-eac1-9239c2010a9e" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " order_id order_item_id \\\n", "57312 8272b63d03f5f79c56e9e4120aec44ef 16 \n", "57305 8272b63d03f5f79c56e9e4120aec44ef 9 \n", "57304 8272b63d03f5f79c56e9e4120aec44ef 8 \n", "57308 8272b63d03f5f79c56e9e4120aec44ef 12 \n", "57309 8272b63d03f5f79c56e9e4120aec44ef 13 \n", "... ... ... \n", "11249 199af31afc78c699f0dbf71fb178d4d4 1 \n", "74336 a96610ab360d42a2e5335a3998b4718a 1 \n", "107841 f5136e38d1a14a4dbd87dff67da82701 1 \n", "112233 fefacc66af859508bf1a7934eab1e97f 1 \n", "3556 0812eb902a67711a1cb742b3cdaa65ae 1 \n", "\n", " product_id seller_id \\\n", "57312 270516a3f41dc035aa87d220228f844c 2709af9587499e95e803a6498a5a56e9 \n", "57305 05b515fdc76e888aada3c6d66c201dff 2709af9587499e95e803a6498a5a56e9 \n", "57304 05b515fdc76e888aada3c6d66c201dff 2709af9587499e95e803a6498a5a56e9 \n", "57308 270516a3f41dc035aa87d220228f844c 2709af9587499e95e803a6498a5a56e9 \n", "57309 270516a3f41dc035aa87d220228f844c 2709af9587499e95e803a6498a5a56e9 \n", "... ... ... \n", "11249 c3ed642d592594bb648ff4a04cee2747 59417c56835dd8e2e72f91f809cd4092 \n", "74336 a6492cc69376c469ab6f61d8f44de961 59417c56835dd8e2e72f91f809cd4092 \n", "107841 1bdf5e6731585cf01aa8169c7028d6ad ee27a8f15b1dded4d213a468ba4eb391 \n", "112233 69c590f7ffc7bf8db97190b6cb6ed62e 80ceebb4ee9b31afb6c6a916a574a1e2 \n", "3556 489ae2aa008f021502940f251d4cce7f e3b4998c7a498169dc7bce44e6bb6277 \n", "\n", " shipping_limit_date price freight_value \n", "57312 2017-07-21 18:25:23 1.2 7.89 \n", "57305 2017-07-21 18:25:23 1.2 7.89 \n", "57304 2017-07-21 18:25:23 1.2 7.89 \n", "57308 2017-07-21 18:25:23 1.2 7.89 \n", "57309 2017-07-21 18:25:23 1.2 7.89 \n", "... ... ... ... \n", "11249 2017-05-09 15:50:15 4690.0 74.34 \n", "74336 2017-04-18 13:25:18 4799.0 151.34 \n", "107841 2017-06-15 02:45:17 6499.0 227.66 \n", "112233 2018-08-02 04:05:13 6729.0 193.21 \n", "3556 2017-02-16 20:37:36 6735.0 194.31 \n", "\n", "[112650 rows x 7 columns]" ], "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", "
order_idorder_item_idproduct_idseller_idshipping_limit_datepricefreight_value
573128272b63d03f5f79c56e9e4120aec44ef16270516a3f41dc035aa87d220228f844c2709af9587499e95e803a6498a5a56e92017-07-21 18:25:231.27.89
573058272b63d03f5f79c56e9e4120aec44ef905b515fdc76e888aada3c6d66c201dff2709af9587499e95e803a6498a5a56e92017-07-21 18:25:231.27.89
573048272b63d03f5f79c56e9e4120aec44ef805b515fdc76e888aada3c6d66c201dff2709af9587499e95e803a6498a5a56e92017-07-21 18:25:231.27.89
573088272b63d03f5f79c56e9e4120aec44ef12270516a3f41dc035aa87d220228f844c2709af9587499e95e803a6498a5a56e92017-07-21 18:25:231.27.89
573098272b63d03f5f79c56e9e4120aec44ef13270516a3f41dc035aa87d220228f844c2709af9587499e95e803a6498a5a56e92017-07-21 18:25:231.27.89
........................
11249199af31afc78c699f0dbf71fb178d4d41c3ed642d592594bb648ff4a04cee274759417c56835dd8e2e72f91f809cd40922017-05-09 15:50:154690.074.34
74336a96610ab360d42a2e5335a3998b4718a1a6492cc69376c469ab6f61d8f44de96159417c56835dd8e2e72f91f809cd40922017-04-18 13:25:184799.0151.34
107841f5136e38d1a14a4dbd87dff67da8270111bdf5e6731585cf01aa8169c7028d6adee27a8f15b1dded4d213a468ba4eb3912017-06-15 02:45:176499.0227.66
112233fefacc66af859508bf1a7934eab1e97f169c590f7ffc7bf8db97190b6cb6ed62e80ceebb4ee9b31afb6c6a916a574a1e22018-08-02 04:05:136729.0193.21
35560812eb902a67711a1cb742b3cdaa65ae1489ae2aa008f021502940f251d4cce7fe3b4998c7a498169dc7bce44e6bb62772017-02-16 20:37:366735.0194.31
\n", "

112650 rows × 7 columns

\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "
\n", "
\n" ] }, "metadata": {}, "execution_count": 58 } ] }, { "cell_type": "markdown", "source": [ "Merge antara tabel order_item dan seller" ], "metadata": { "id": "2Ie9Uz3_UEDU" } }, { "cell_type": "code", "source": [ "order_seller = pd.merge(\n", " left=order_item,\n", " right=seller,\n", " how='left',\n", " left_on=\"seller_id\",\n", " right_on=\"seller_id\"\n", ")\n", "order_seller.head()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "63yY0SiHUKVr", "outputId": "7fe5b9a4-7932-4426-ad2e-a042346cabb7" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " order_id order_item_id \\\n", "0 00010242fe8c5a6d1ba2dd792cb16214 1 \n", "1 00018f77f2f0320c557190d7a144bdd3 1 \n", "2 000229ec398224ef6ca0657da4fc703e 1 \n", "3 00024acbcdf0a6daa1e931b038114c75 1 \n", "4 00042b26cf59d7ce69dfabb4e55b4fd9 1 \n", "\n", " product_id seller_id \\\n", "0 4244733e06e7ecb4970a6e2683c13e61 48436dade18ac8b2bce089ec2a041202 \n", "1 e5f2d52b802189ee658865ca93d83a8f dd7ddc04e1b6c2c614352b383efe2d36 \n", "2 c777355d18b72b67abbeef9df44fd0fd 5b51032eddd242adc84c38acab88f23d \n", "3 7634da152a4610f1595efa32f14722fc 9d7a1d34a5052409006425275ba1c2b4 \n", "4 ac6c3623068f30de03045865e4e10089 df560393f3a51e74553ab94004ba5c87 \n", "\n", " shipping_limit_date price freight_value seller_zip_code_prefix \\\n", "0 2017-09-19 09:45:35 58.90 13.29 27277 \n", "1 2017-05-03 11:05:13 239.90 19.93 3471 \n", "2 2018-01-18 14:48:30 199.00 17.87 37564 \n", "3 2018-08-15 10:10:18 12.99 12.79 14403 \n", "4 2017-02-13 13:57:51 199.90 18.14 87900 \n", "\n", " seller_city seller_state \n", "0 volta redonda SP \n", "1 sao paulo SP \n", "2 borda da mata MG \n", "3 franca SP \n", "4 loanda PR " ], "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", "
order_idorder_item_idproduct_idseller_idshipping_limit_datepricefreight_valueseller_zip_code_prefixseller_cityseller_state
000010242fe8c5a6d1ba2dd792cb1621414244733e06e7ecb4970a6e2683c13e6148436dade18ac8b2bce089ec2a0412022017-09-19 09:45:3558.9013.2927277volta redondaSP
100018f77f2f0320c557190d7a144bdd31e5f2d52b802189ee658865ca93d83a8fdd7ddc04e1b6c2c614352b383efe2d362017-05-03 11:05:13239.9019.933471sao pauloSP
2000229ec398224ef6ca0657da4fc703e1c777355d18b72b67abbeef9df44fd0fd5b51032eddd242adc84c38acab88f23d2018-01-18 14:48:30199.0017.8737564borda da mataMG
300024acbcdf0a6daa1e931b038114c7517634da152a4610f1595efa32f14722fc9d7a1d34a5052409006425275ba1c2b42018-08-15 10:10:1812.9912.7914403francaSP
400042b26cf59d7ce69dfabb4e55b4fd91ac6c3623068f30de03045865e4e10089df560393f3a51e74553ab94004ba5c872017-02-13 13:57:51199.9018.1487900loandaPR
\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "
\n", "
\n" ] }, "metadata": {}, "execution_count": 59 } ] }, { "cell_type": "markdown", "source": [ "Melihat Informasi Keseluruhan pada order_seller" ], "metadata": { "id": "F0HO-bCzfPsW" } }, { "cell_type": "code", "source": [ "order_seller.describe(include='all')" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "9biABM5WV-oH", "outputId": "cfd924cb-036d-485f-97a0-8adab8853ee4" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " order_id order_item_id \\\n", "count 112650 112650.000000 \n", "unique 98666 NaN \n", "top 8272b63d03f5f79c56e9e4120aec44ef NaN \n", "freq 21 NaN \n", "mean NaN 1.197834 \n", "std NaN 0.705124 \n", "min NaN 1.000000 \n", "25% NaN 1.000000 \n", "50% NaN 1.000000 \n", "75% NaN 1.000000 \n", "max NaN 21.000000 \n", "\n", " product_id seller_id \\\n", "count 112650 112650 \n", "unique 32951 3095 \n", "top aca2eb7d00ea1a7b8ebd4e68314663af 6560211a19b47992c3666cc44a7e94c0 \n", "freq 527 2033 \n", "mean NaN NaN \n", "std NaN NaN \n", "min NaN NaN \n", "25% NaN NaN \n", "50% NaN NaN \n", "75% NaN NaN \n", "max NaN NaN \n", "\n", " shipping_limit_date price freight_value \\\n", "count 112650 112650.000000 112650.000000 \n", "unique 93318 NaN NaN \n", "top 2017-07-21 18:25:23 NaN NaN \n", "freq 21 NaN NaN \n", "mean NaN 120.655980 19.990320 \n", "std NaN 183.632979 15.806405 \n", "min NaN 1.200000 0.000000 \n", "25% NaN 39.900000 13.080000 \n", "50% NaN 74.990000 16.260000 \n", "75% NaN 134.900000 21.150000 \n", "max NaN 6735.000000 409.680000 \n", "\n", " seller_zip_code_prefix seller_city seller_state \n", "count 112650.000000 112650 112650 \n", "unique NaN 611 23 \n", "top NaN sao paulo SP \n", "freq NaN 27983 80342 \n", "mean 24439.170431 NaN NaN \n", "std 27596.030909 NaN NaN \n", "min 1001.000000 NaN NaN \n", "25% 6429.000000 NaN NaN \n", "50% 13568.000000 NaN NaN \n", "75% 27930.000000 NaN NaN \n", "max 99730.000000 NaN NaN " ], "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
order_idorder_item_idproduct_idseller_idshipping_limit_datepricefreight_valueseller_zip_code_prefixseller_cityseller_state
count112650112650.000000112650112650112650112650.000000112650.000000112650.000000112650112650
unique98666NaN32951309593318NaNNaNNaN61123
top8272b63d03f5f79c56e9e4120aec44efNaNaca2eb7d00ea1a7b8ebd4e68314663af6560211a19b47992c3666cc44a7e94c02017-07-21 18:25:23NaNNaNNaNsao pauloSP
freq21NaN527203321NaNNaNNaN2798380342
meanNaN1.197834NaNNaNNaN120.65598019.99032024439.170431NaNNaN
stdNaN0.705124NaNNaNNaN183.63297915.80640527596.030909NaNNaN
minNaN1.000000NaNNaNNaN1.2000000.0000001001.000000NaNNaN
25%NaN1.000000NaNNaNNaN39.90000013.0800006429.000000NaNNaN
50%NaN1.000000NaNNaNNaN74.99000016.26000013568.000000NaNNaN
75%NaN1.000000NaNNaNNaN134.90000021.15000027930.000000NaNNaN
maxNaN21.000000NaNNaNNaN6735.000000409.68000099730.000000NaNNaN
\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "
\n", "
\n" ] }, "metadata": {}, "execution_count": 60 } ] }, { "cell_type": "markdown", "source": [ "pivot Table untuk melihat Persebaran produk berdasarkan kota" ], "metadata": { "id": "BxzHcuq4gmyy" } }, { "cell_type": "code", "source": [ "order_seller.groupby(by=\"seller_city\").agg({\n", " \"order_id\" : \"nunique\",\n", " \"seller_zip_code_prefix\" : [\"max\", \"min\", \"mean\",\"std\"]\n", "})" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "HNzbGpGngv1y", "outputId": "b5e57b21-0009-4b53-b7a1-540eaadd97cd" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " order_id seller_zip_code_prefix \n", " nunique max min mean std\n", "seller_city \n", "04482255 1 22790 22790 22790.000000 NaN\n", "abadia de goias 1 75345 75345 75345.000000 NaN\n", "afonso claudio 5 29600 29600 29600.000000 0.000000\n", "aguas claras df 1 71900 71900 71900.000000 NaN\n", "alambari 5 18220 18220 18220.000000 0.000000\n", "... ... ... ... ... ...\n", "volta redonda 143 27277 27274 27276.903846 0.530111\n", "votorantim 207 18111 18110 18110.015267 0.122848\n", "votuporanga 132 15505 15500 15501.956522 0.551965\n", "xanxere 8 89820 89820 89820.000000 0.000000\n", "xaxim 2 89825 89825 89825.000000 0.000000\n", "\n", "[611 rows x 5 columns]" ], "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", "
order_idseller_zip_code_prefix
nuniquemaxminmeanstd
seller_city
044822551227902279022790.000000NaN
abadia de goias1753457534575345.000000NaN
afonso claudio5296002960029600.0000000.000000
aguas claras df1719007190071900.000000NaN
alambari5182201822018220.0000000.000000
..................
volta redonda143272772727427276.9038460.530111
votorantim207181111811018110.0152670.122848
votuporanga132155051550015501.9565220.551965
xanxere8898208982089820.0000000.000000
xaxim2898258982589825.0000000.000000
\n", "

611 rows × 5 columns

\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "
\n", "
\n" ] }, "metadata": {}, "execution_count": 61 } ] }, { "cell_type": "markdown", "source": [ "Persebaran jumlah pelanggan berdasarkan kota dan negara bagian dengan method groupby() dan mengurutkannya nilainya menggunakan method sort_values() secara descending" ], "metadata": { "id": "mlpLBjY3jD7j" } }, { "cell_type": "code", "source": [ "order_seller.groupby(by=\"seller_city\").order_id.nunique().sort_values(ascending=False)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "4Dou4leAjWeL", "outputId": "9e954bec-0077-4eb4-b72f-abadbc92c52e" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "seller_city\n", "sao paulo 24588\n", "ibitinga 6565\n", "curitiba 2722\n", "santo andre 2711\n", "belo horizonte 2414\n", " ... \n", "ivoti 1\n", "sao paulo sp 1\n", "janauba 1\n", "jarinu 1\n", "04482255 1\n", "Name: order_id, Length: 611, dtype: int64" ] }, "metadata": {}, "execution_count": 62 } ] }, { "cell_type": "code", "source": [ "order_seller.groupby(by=\"seller_state\").order_id.nunique().sort_values(ascending=False)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "iS-Q-uW4lty3", "outputId": "fdae210d-7867-4111-9f63-889998473173" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "seller_state\n", "SP 70188\n", "MG 7930\n", "PR 7673\n", "RJ 4353\n", "SC 3667\n", "RS 1989\n", "DF 824\n", "BA 569\n", "GO 463\n", "PE 406\n", "MA 392\n", "ES 318\n", "MT 137\n", "CE 91\n", "RN 51\n", "MS 49\n", "PB 36\n", "RO 14\n", "PI 12\n", "SE 9\n", "PA 8\n", "AM 3\n", "AC 1\n", "Name: order_id, dtype: int64" ] }, "metadata": {}, "execution_count": 63 } ] }, { "cell_type": "markdown", "source": [ "### Explore Order Payment" ], "metadata": { "id": "H10uH0bygw9h" } }, { "cell_type": "markdown", "source": [ "Melihat Informasi Keseluruhan pada order_payment\n" ], "metadata": { "id": "ASbU_5VSWk4V" } }, { "cell_type": "code", "source": [ "order_payment.describe(include='all')" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "XZcY7fC9WnVN", "outputId": "da316ef2-b463-4e92-ff29-7a14357d216f" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " order_id payment_sequential payment_type \\\n", "count 103886 103886.000000 103886 \n", "unique 99440 NaN 5 \n", "top fa65dad1b0e818e3ccc5cb0e39231352 NaN credit_card \n", "freq 29 NaN 76795 \n", "mean NaN 1.092679 NaN \n", "std NaN 0.706584 NaN \n", "min NaN 1.000000 NaN \n", "25% NaN 1.000000 NaN \n", "50% NaN 1.000000 NaN \n", "75% NaN 1.000000 NaN \n", "max NaN 29.000000 NaN \n", "\n", " payment_installments payment_value \n", "count 103886.000000 103886.000000 \n", "unique NaN NaN \n", "top NaN NaN \n", "freq NaN NaN \n", "mean 2.853349 154.100380 \n", "std 2.687051 217.494064 \n", "min 0.000000 0.000000 \n", "25% 1.000000 56.790000 \n", "50% 1.000000 100.000000 \n", "75% 4.000000 171.837500 \n", "max 24.000000 13664.080000 " ], "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", "
order_idpayment_sequentialpayment_typepayment_installmentspayment_value
count103886103886.000000103886103886.000000103886.000000
unique99440NaN5NaNNaN
topfa65dad1b0e818e3ccc5cb0e39231352NaNcredit_cardNaNNaN
freq29NaN76795NaNNaN
meanNaN1.092679NaN2.853349154.100380
stdNaN0.706584NaN2.687051217.494064
minNaN1.000000NaN0.0000000.000000
25%NaN1.000000NaN1.00000056.790000
50%NaN1.000000NaN1.000000100.000000
75%NaN1.000000NaN4.000000171.837500
maxNaN29.000000NaN24.00000013664.080000
\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "
\n", "
\n" ] }, "metadata": {}, "execution_count": 64 } ] }, { "cell_type": "markdown", "source": [ "Merge antara tabel order_payment dan order_seller" ], "metadata": { "id": "KmUDm3jnW109" } }, { "cell_type": "code", "source": [ "order_seller_payement = pd.merge(\n", " left=order_payment,\n", " right=order_seller,\n", " how='left',\n", " left_on=\"order_id\",\n", " right_on=\"order_id\"\n", ")\n", "order_seller_payement.head()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "TTGne2KKW_1d", "outputId": "0d57e5c7-458f-4ec4-8c1f-79433a097112" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " order_id payment_sequential payment_type \\\n", "0 b81ef226f3fe1789b1e8b2acac839d17 1 credit_card \n", "1 a9810da82917af2d9aefd1278f1dcfa0 1 credit_card \n", "2 25e8ea4e93396b6fa0d3dd708e76c1bd 1 credit_card \n", "3 ba78997921bbcdc1373bb41e913ab953 1 credit_card \n", "4 42fdf880ba16b47b59251dd489d4441a 1 credit_card \n", "\n", " payment_installments payment_value order_item_id \\\n", "0 8 99.33 1.0 \n", "1 1 24.39 1.0 \n", "2 1 65.71 1.0 \n", "3 8 107.78 1.0 \n", "4 2 128.45 1.0 \n", "\n", " product_id seller_id \\\n", "0 af74cc53dcffc8384b29e7abfa41902b 213b25e6f54661939f11710a6fddb871 \n", "1 a630cc320a8c872f9de830cf121661a3 eaf6d55068dea77334e8477d3878d89e \n", "2 2028bf1b01cafb2d2b1901fca4083222 cc419e0650a3c5ba77189a1882b7556a \n", "3 548e5bfe28edceab6b51fa707cc9556f da8622b14eb17ae2831f4ac5b9dab84a \n", "4 386486367c1f9d4f587a8864ccb6902b cca3071e3e9bb7d12640c9fbe2301306 \n", "\n", " shipping_limit_date price freight_value seller_zip_code_prefix \\\n", "0 2018-05-02 22:15:09 79.80 19.53 13321.0 \n", "1 2018-07-02 11:18:58 17.00 7.39 4660.0 \n", "2 2017-12-26 09:52:34 56.99 8.72 9015.0 \n", "3 2017-12-12 12:13:20 89.90 17.88 13405.0 \n", "4 2018-05-31 16:14:41 113.57 14.88 14940.0 \n", "\n", " seller_city seller_state \n", "0 salto SP \n", "1 sao paulo SP \n", "2 santo andre SP \n", "3 piracicaba SP \n", "4 ibitinga SP " ], "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", "
order_idpayment_sequentialpayment_typepayment_installmentspayment_valueorder_item_idproduct_idseller_idshipping_limit_datepricefreight_valueseller_zip_code_prefixseller_cityseller_state
0b81ef226f3fe1789b1e8b2acac839d171credit_card899.331.0af74cc53dcffc8384b29e7abfa41902b213b25e6f54661939f11710a6fddb8712018-05-02 22:15:0979.8019.5313321.0saltoSP
1a9810da82917af2d9aefd1278f1dcfa01credit_card124.391.0a630cc320a8c872f9de830cf121661a3eaf6d55068dea77334e8477d3878d89e2018-07-02 11:18:5817.007.394660.0sao pauloSP
225e8ea4e93396b6fa0d3dd708e76c1bd1credit_card165.711.02028bf1b01cafb2d2b1901fca4083222cc419e0650a3c5ba77189a1882b7556a2017-12-26 09:52:3456.998.729015.0santo andreSP
3ba78997921bbcdc1373bb41e913ab9531credit_card8107.781.0548e5bfe28edceab6b51fa707cc9556fda8622b14eb17ae2831f4ac5b9dab84a2017-12-12 12:13:2089.9017.8813405.0piracicabaSP
442fdf880ba16b47b59251dd489d4441a1credit_card2128.451.0386486367c1f9d4f587a8864ccb6902bcca3071e3e9bb7d12640c9fbe23013062018-05-31 16:14:41113.5714.8814940.0ibitingaSP
\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "
\n", "
\n" ] }, "metadata": {}, "execution_count": 65 } ] }, { "cell_type": "markdown", "source": [ "### Explore Product" ], "metadata": { "id": "FgFhRpKHmYp8" } }, { "cell_type": "markdown", "source": [ "Melihat Informasi Keseluruhan pada product" ], "metadata": { "id": "mW6e0ljcmeYK" } }, { "cell_type": "code", "source": [ "product.describe(include='all')" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "SM1Bbg0WmlxP", "outputId": "738aa271-e91d-49ce-9dc0-3545ff001f09" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " product_id product_category_name \\\n", "count 32951 32951 \n", "unique 32951 73 \n", "top 1e9e8ef04dbcff4541ed26657ea517e5 cama_mesa_banho \n", "freq 1 3639 \n", "\n", " product_name_lenght product_description_lenght product_photos_qty \\\n", "count 32951.0 32951 32951.0 \n", "unique 67.0 2961 20.0 \n", "top 60.0 cama_mesa_banho 1.0 \n", "freq 2182.0 610 16489.0 \n", "\n", " product_weight_g product_length_cm product_height_cm \\\n", "count 32951.0 32951.0 32951.0 \n", "unique 2205.0 100.0 103.0 \n", "top 200.0 16.0 10.0 \n", "freq 2084.0 5520.0 2548.0 \n", "\n", " product_width_cm \n", "count 32951.0 \n", "unique 96.0 \n", "top 11.0 \n", "freq 3718.0 " ], "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", "
product_idproduct_category_nameproduct_name_lenghtproduct_description_lenghtproduct_photos_qtyproduct_weight_gproduct_length_cmproduct_height_cmproduct_width_cm
count329513295132951.03295132951.032951.032951.032951.032951.0
unique329517367.0296120.02205.0100.0103.096.0
top1e9e8ef04dbcff4541ed26657ea517e5cama_mesa_banho60.0cama_mesa_banho1.0200.016.010.011.0
freq136392182.061016489.02084.05520.02548.03718.0
\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "
\n", "
\n" ] }, "metadata": {}, "execution_count": 66 } ] }, { "cell_type": "markdown", "source": [ "Merge antara tabel order_seller_payement dan order_seller_payement" ], "metadata": { "id": "JYw4H5cveAw0" } }, { "cell_type": "code", "source": [ "order_seller_payment_product = pd.merge(\n", " left=order_seller_payement,\n", " right=product,\n", " how='left',\n", " left_on=\"product_id\",\n", " right_on=\"product_id\"\n", ")\n", "order_seller_payment_product.head()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "ParyFUPgeFkt", "outputId": "219d3d0d-fb9f-47b7-c092-713137fc9d16" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " order_id payment_sequential payment_type \\\n", "0 b81ef226f3fe1789b1e8b2acac839d17 1 credit_card \n", "1 a9810da82917af2d9aefd1278f1dcfa0 1 credit_card \n", "2 25e8ea4e93396b6fa0d3dd708e76c1bd 1 credit_card \n", "3 ba78997921bbcdc1373bb41e913ab953 1 credit_card \n", "4 42fdf880ba16b47b59251dd489d4441a 1 credit_card \n", "\n", " payment_installments payment_value order_item_id \\\n", "0 8 99.33 1.0 \n", "1 1 24.39 1.0 \n", "2 1 65.71 1.0 \n", "3 8 107.78 1.0 \n", "4 2 128.45 1.0 \n", "\n", " product_id seller_id \\\n", "0 af74cc53dcffc8384b29e7abfa41902b 213b25e6f54661939f11710a6fddb871 \n", "1 a630cc320a8c872f9de830cf121661a3 eaf6d55068dea77334e8477d3878d89e \n", "2 2028bf1b01cafb2d2b1901fca4083222 cc419e0650a3c5ba77189a1882b7556a \n", "3 548e5bfe28edceab6b51fa707cc9556f da8622b14eb17ae2831f4ac5b9dab84a \n", "4 386486367c1f9d4f587a8864ccb6902b cca3071e3e9bb7d12640c9fbe2301306 \n", "\n", " shipping_limit_date price ... seller_city seller_state \\\n", "0 2018-05-02 22:15:09 79.80 ... salto SP \n", "1 2018-07-02 11:18:58 17.00 ... sao paulo SP \n", "2 2017-12-26 09:52:34 56.99 ... santo andre SP \n", "3 2017-12-12 12:13:20 89.90 ... piracicaba SP \n", "4 2018-05-31 16:14:41 113.57 ... ibitinga SP \n", "\n", " product_category_name product_name_lenght product_description_lenght \\\n", "0 casa_construcao 57.0 921.0 \n", "1 automotivo 59.0 1274.0 \n", "2 perfumaria 54.0 1536.0 \n", "3 cama_mesa_banho 60.0 188.0 \n", "4 cama_mesa_banho 54.0 120.0 \n", "\n", " product_photos_qty product_weight_g product_length_cm product_height_cm \\\n", "0 8.0 800.0 17.0 27.0 \n", "1 2.0 150.0 16.0 6.0 \n", "2 2.0 250.0 20.0 8.0 \n", "3 1.0 1200.0 44.0 2.0 \n", "4 1.0 835.0 40.0 9.0 \n", "\n", " product_width_cm \n", "0 17.0 \n", "1 11.0 \n", "2 21.0 \n", "3 35.0 \n", "4 33.0 \n", "\n", "[5 rows x 22 columns]" ], "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", " \n", " \n", "
order_idpayment_sequentialpayment_typepayment_installmentspayment_valueorder_item_idproduct_idseller_idshipping_limit_dateprice...seller_cityseller_stateproduct_category_nameproduct_name_lenghtproduct_description_lenghtproduct_photos_qtyproduct_weight_gproduct_length_cmproduct_height_cmproduct_width_cm
0b81ef226f3fe1789b1e8b2acac839d171credit_card899.331.0af74cc53dcffc8384b29e7abfa41902b213b25e6f54661939f11710a6fddb8712018-05-02 22:15:0979.80...saltoSPcasa_construcao57.0921.08.0800.017.027.017.0
1a9810da82917af2d9aefd1278f1dcfa01credit_card124.391.0a630cc320a8c872f9de830cf121661a3eaf6d55068dea77334e8477d3878d89e2018-07-02 11:18:5817.00...sao pauloSPautomotivo59.01274.02.0150.016.06.011.0
225e8ea4e93396b6fa0d3dd708e76c1bd1credit_card165.711.02028bf1b01cafb2d2b1901fca4083222cc419e0650a3c5ba77189a1882b7556a2017-12-26 09:52:3456.99...santo andreSPperfumaria54.01536.02.0250.020.08.021.0
3ba78997921bbcdc1373bb41e913ab9531credit_card8107.781.0548e5bfe28edceab6b51fa707cc9556fda8622b14eb17ae2831f4ac5b9dab84a2017-12-12 12:13:2089.90...piracicabaSPcama_mesa_banho60.0188.01.01200.044.02.035.0
442fdf880ba16b47b59251dd489d4441a1credit_card2128.451.0386486367c1f9d4f587a8864ccb6902bcca3071e3e9bb7d12640c9fbe23013062018-05-31 16:14:41113.57...ibitingaSPcama_mesa_banho54.0120.01.0835.040.09.033.0
\n", "

5 rows × 22 columns

\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "
\n", "
\n" ] }, "metadata": {}, "execution_count": 67 } ] }, { "cell_type": "markdown", "source": [ "Pivot Table untuk informasi penjualan berdasarkan nama Jumlah Product" ], "metadata": { "id": "hWlcL3n2fcyk" } }, { "cell_type": "code", "source": [ "order_seller_payment_product.groupby(by=\"product_photos_qty\").agg({\n", " \"product_id\": \"nunique\",\n", " \"freight_value\": \"sum\",\n", " \"price\": \"sum\"\n", "}).sort_values(by=\"price\", ascending=False)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "fX1f6s0DXgdz", "outputId": "8d9be02e-fe28-47b7-c48b-684222df7ed7" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " product_id freight_value price\n", "product_photos_qty \n", "1.0 16489 1168905.54 6651031.88\n", "2.0 6263 448336.62 2562685.64\n", "3.0 3860 259391.79 1754336.16\n", "4.0 2428 183933.10 1294951.57\n", "5.0 1484 119895.70 769219.90\n", "6.0 968 75864.98 516697.56\n", "7.0 343 33617.48 247196.73\n", "cama_mesa_banho 610 30618.68 190956.59\n", "8.0 192 16695.34 114559.00\n", "10.0 95 9382.88 53047.61\n", "9.0 105 7174.03 41106.56\n", "11.0 46 1412.85 5472.16\n", "12.0 35 1060.81 2741.46\n", "14.0 5 97.98 1500.87\n", "13.0 9 426.90 1236.78\n", "15.0 8 325.35 1043.77\n", "17.0 7 158.28 841.00\n", "18.0 2 79.18 354.40\n", "19.0 1 30.76 277.88\n", "20.0 1 20.26 110.27" ], "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", "
product_idfreight_valueprice
product_photos_qty
1.0164891168905.546651031.88
2.06263448336.622562685.64
3.03860259391.791754336.16
4.02428183933.101294951.57
5.01484119895.70769219.90
6.096875864.98516697.56
7.034333617.48247196.73
cama_mesa_banho61030618.68190956.59
8.019216695.34114559.00
10.0959382.8853047.61
9.01057174.0341106.56
11.0461412.855472.16
12.0351060.812741.46
14.0597.981500.87
13.09426.901236.78
15.08325.351043.77
17.07158.28841.00
18.0279.18354.40
19.0130.76277.88
20.0120.26110.27
\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "
\n", "
\n" ] }, "metadata": {}, "execution_count": 68 } ] }, { "cell_type": "markdown", "source": [ "### Explore Order dan Customer" ], "metadata": { "id": "Oh61LdVLmvK6" } }, { "cell_type": "markdown", "source": [ "Melihat Informasi Keseluruhan pada Order" ], "metadata": { "id": "LIvu-xS3m57x" } }, { "cell_type": "code", "source": [ "order.describe(include='all')" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "h1z2If38m-Rk", "outputId": "c661b245-af9a-4a67-d64e-b384e9c895af" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " order_id customer_id \\\n", "count 99441 99441 \n", "unique 99441 99441 \n", "top e481f51cbdc54678b7cc49136f2d6af7 9ef432eb6251297304e76186b10a928d \n", "freq 1 1 \n", "\n", " order_status order_purchase_timestamp order_approved_at \\\n", "count 99441 99441 99441 \n", "unique 8 98875 98875 \n", "top delivered 2018-04-11 10:48:14 2018-04-11 10:48:14 \n", "freq 96478 3 3 \n", "\n", " order_delivered_carrier_date order_delivered_customer_date \\\n", "count 99441 99441 \n", "unique 98875 95665 \n", "top 2018-04-11 10:48:14 order_purchase_timestamp \n", "freq 3 2965 \n", "\n", " order_estimated_delivery_date \n", "count 99441 \n", "unique 459 \n", "top 2017-12-20 00:00:00 \n", "freq 522 " ], "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", "
order_idcustomer_idorder_statusorder_purchase_timestamporder_approved_atorder_delivered_carrier_dateorder_delivered_customer_dateorder_estimated_delivery_date
count9944199441994419944199441994419944199441
unique9944199441898875988759887595665459
tope481f51cbdc54678b7cc49136f2d6af79ef432eb6251297304e76186b10a928ddelivered2018-04-11 10:48:142018-04-11 10:48:142018-04-11 10:48:14order_purchase_timestamp2017-12-20 00:00:00
freq11964783332965522
\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "
\n", "
\n" ] }, "metadata": {}, "execution_count": 69 } ] }, { "cell_type": "markdown", "source": [ "Melihat Informasi Keseluruhan pada Order" ], "metadata": { "id": "GLKEEzzwL3gr" } }, { "cell_type": "code", "source": [ "customer.describe(include='all')" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "H8lVA77lL4QU", "outputId": "adcc5b42-b07d-4c9d-a0c2-07fa52c7db90" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " customer_id customer_unique_id \\\n", "count 99441 99441 \n", "unique 99441 96096 \n", "top 06b8999e2fba1a1fbc88172c00ba8bc7 8d50f5eadf50201ccdcedfb9e2ac8455 \n", "freq 1 17 \n", "mean NaN NaN \n", "std NaN NaN \n", "min NaN NaN \n", "25% NaN NaN \n", "50% NaN NaN \n", "75% NaN NaN \n", "max NaN NaN \n", "\n", " customer_zip_code_prefix customer_city customer_state \n", "count 99441.000000 99441 99441 \n", "unique NaN 4119 27 \n", "top NaN sao paulo SP \n", "freq NaN 15540 41746 \n", "mean 35137.474583 NaN NaN \n", "std 29797.938996 NaN NaN \n", "min 1003.000000 NaN NaN \n", "25% 11347.000000 NaN NaN \n", "50% 24416.000000 NaN NaN \n", "75% 58900.000000 NaN NaN \n", "max 99990.000000 NaN NaN " ], "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", "
customer_idcustomer_unique_idcustomer_zip_code_prefixcustomer_citycustomer_state
count994419944199441.0000009944199441
unique9944196096NaN411927
top06b8999e2fba1a1fbc88172c00ba8bc78d50f5eadf50201ccdcedfb9e2ac8455NaNsao pauloSP
freq117NaN1554041746
meanNaNNaN35137.474583NaNNaN
stdNaNNaN29797.938996NaNNaN
minNaNNaN1003.000000NaNNaN
25%NaNNaN11347.000000NaNNaN
50%NaNNaN24416.000000NaNNaN
75%NaNNaN58900.000000NaNNaN
maxNaNNaN99990.000000NaNNaN
\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "
\n", "
\n" ] }, "metadata": {}, "execution_count": 70 } ] }, { "cell_type": "markdown", "source": [ "Merge antara tabel customer dengan order" ], "metadata": { "id": "9PfyNG8fL-iA" } }, { "cell_type": "code", "source": [ "order_customer = pd.merge(\n", " left=customer,\n", " right=order,\n", " how='left',\n", " left_on=\"customer_id\",\n", " right_on=\"customer_id\"\n", ")\n", "order_customer.head()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "8aY3Vqb1Lbjn", "outputId": "4dc7bcb9-33ce-4892-8d0c-05f357e8a1e8" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " customer_id customer_unique_id \\\n", "0 06b8999e2fba1a1fbc88172c00ba8bc7 861eff4711a542e4b93843c6dd7febb0 \n", "1 18955e83d337fd6b2def6b18a428ac77 290c77bc529b7ac935b93aa66c333dc3 \n", "2 4e7b3e00288586ebd08712fdd0374a03 060e732b5b29e8181a18229c7b0b2b5e \n", "3 b2b6027bc5c5109e529d4dc6358b12c3 259dac757896d24d7702b9acbbff3f3c \n", "4 4f2d8ab171c80ec8364f7c12e35b23ad 345ecd01c38d18a9036ed96c73b8d066 \n", "\n", " customer_zip_code_prefix customer_city customer_state \\\n", "0 14409 franca SP \n", "1 9790 sao bernardo do campo SP \n", "2 1151 sao paulo SP \n", "3 8775 mogi das cruzes SP \n", "4 13056 campinas SP \n", "\n", " order_id order_status order_purchase_timestamp \\\n", "0 00e7ee1b050b8499577073aeb2a297a1 delivered 2017-05-16 15:05:35 \n", "1 29150127e6685892b6eab3eec79f59c7 delivered 2018-01-12 20:48:24 \n", "2 b2059ed67ce144a36e2aa97d2c9e9ad2 delivered 2018-05-19 16:07:45 \n", "3 951670f92359f4fe4a63112aa7306eba delivered 2018-03-13 16:06:38 \n", "4 6b7d50bd145f6fc7f33cebabd7e49d0f delivered 2018-07-29 09:51:30 \n", "\n", " order_approved_at order_delivered_carrier_date \\\n", "0 2017-05-16 15:05:35 2017-05-16 15:05:35 \n", "1 2018-01-12 20:48:24 2018-01-12 20:48:24 \n", "2 2018-05-19 16:07:45 2018-05-19 16:07:45 \n", "3 2018-03-13 16:06:38 2018-03-13 16:06:38 \n", "4 2018-07-29 09:51:30 2018-07-29 09:51:30 \n", "\n", " order_delivered_customer_date order_estimated_delivery_date \n", "0 2017-05-25 10:35:35 2017-06-05 00:00:00 \n", "1 2018-01-29 12:41:19 2018-02-06 00:00:00 \n", "2 2018-06-14 17:58:51 2018-06-13 00:00:00 \n", "3 2018-03-28 16:04:25 2018-04-10 00:00:00 \n", "4 2018-08-09 20:55:48 2018-08-15 00:00:00 " ], "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", "
customer_idcustomer_unique_idcustomer_zip_code_prefixcustomer_citycustomer_stateorder_idorder_statusorder_purchase_timestamporder_approved_atorder_delivered_carrier_dateorder_delivered_customer_dateorder_estimated_delivery_date
006b8999e2fba1a1fbc88172c00ba8bc7861eff4711a542e4b93843c6dd7febb014409francaSP00e7ee1b050b8499577073aeb2a297a1delivered2017-05-16 15:05:352017-05-16 15:05:352017-05-16 15:05:352017-05-25 10:35:352017-06-05 00:00:00
118955e83d337fd6b2def6b18a428ac77290c77bc529b7ac935b93aa66c333dc39790sao bernardo do campoSP29150127e6685892b6eab3eec79f59c7delivered2018-01-12 20:48:242018-01-12 20:48:242018-01-12 20:48:242018-01-29 12:41:192018-02-06 00:00:00
24e7b3e00288586ebd08712fdd0374a03060e732b5b29e8181a18229c7b0b2b5e1151sao pauloSPb2059ed67ce144a36e2aa97d2c9e9ad2delivered2018-05-19 16:07:452018-05-19 16:07:452018-05-19 16:07:452018-06-14 17:58:512018-06-13 00:00:00
3b2b6027bc5c5109e529d4dc6358b12c3259dac757896d24d7702b9acbbff3f3c8775mogi das cruzesSP951670f92359f4fe4a63112aa7306ebadelivered2018-03-13 16:06:382018-03-13 16:06:382018-03-13 16:06:382018-03-28 16:04:252018-04-10 00:00:00
44f2d8ab171c80ec8364f7c12e35b23ad345ecd01c38d18a9036ed96c73b8d06613056campinasSP6b7d50bd145f6fc7f33cebabd7e49d0fdelivered2018-07-29 09:51:302018-07-29 09:51:302018-07-29 09:51:302018-08-09 20:55:482018-08-15 00:00:00
\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "
\n", "
\n" ] }, "metadata": {}, "execution_count": 71 } ] }, { "cell_type": "markdown", "source": [ "Merge antara tabel order_seller_payment_product dengan order_customer" ], "metadata": { "id": "t9VsBtiHib0O" } }, { "cell_type": "code", "source": [ "all_dataset = pd.merge(\n", " left=order_seller_payment_product,\n", " right=order_customer,\n", " how='left',\n", " left_on=\"order_id\",\n", " right_on=\"order_id\"\n", ")\n", "all_dataset.head()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "x6oavey8iBNo", "outputId": "598d611c-b567-41da-8db6-36e4033afcb1" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " order_id payment_sequential payment_type \\\n", "0 b81ef226f3fe1789b1e8b2acac839d17 1 credit_card \n", "1 a9810da82917af2d9aefd1278f1dcfa0 1 credit_card \n", "2 25e8ea4e93396b6fa0d3dd708e76c1bd 1 credit_card \n", "3 ba78997921bbcdc1373bb41e913ab953 1 credit_card \n", "4 42fdf880ba16b47b59251dd489d4441a 1 credit_card \n", "\n", " payment_installments payment_value order_item_id \\\n", "0 8 99.33 1.0 \n", "1 1 24.39 1.0 \n", "2 1 65.71 1.0 \n", "3 8 107.78 1.0 \n", "4 2 128.45 1.0 \n", "\n", " product_id seller_id \\\n", "0 af74cc53dcffc8384b29e7abfa41902b 213b25e6f54661939f11710a6fddb871 \n", "1 a630cc320a8c872f9de830cf121661a3 eaf6d55068dea77334e8477d3878d89e \n", "2 2028bf1b01cafb2d2b1901fca4083222 cc419e0650a3c5ba77189a1882b7556a \n", "3 548e5bfe28edceab6b51fa707cc9556f da8622b14eb17ae2831f4ac5b9dab84a \n", "4 386486367c1f9d4f587a8864ccb6902b cca3071e3e9bb7d12640c9fbe2301306 \n", "\n", " shipping_limit_date price ... customer_unique_id \\\n", "0 2018-05-02 22:15:09 79.80 ... 708ab75d2a007f0564aedd11139c7708 \n", "1 2018-07-02 11:18:58 17.00 ... a8b9d3a27068454b1c98cc67d4e31e6f \n", "2 2017-12-26 09:52:34 56.99 ... 6f70c0b2f7552832ba46eb57b1c5651e \n", "3 2017-12-12 12:13:20 89.90 ... 87695ed086ebd36f20404c82d20fca87 \n", "4 2018-05-31 16:14:41 113.57 ... 4291db0da71914754618cd789aebcd56 \n", "\n", " customer_zip_code_prefix customer_city customer_state order_status \\\n", "0 39801 teofilo otoni MG delivered \n", "1 2422 sao paulo SP delivered \n", "2 2652 sao paulo SP delivered \n", "3 36060 juiz de fora MG delivered \n", "4 18570 conchas SP delivered \n", "\n", " order_purchase_timestamp order_approved_at order_delivered_carrier_date \\\n", "0 2018-04-25 22:01:49 2018-04-25 22:01:49 2018-04-25 22:01:49 \n", "1 2018-06-26 11:01:38 2018-06-26 11:01:38 2018-06-26 11:01:38 \n", "2 2017-12-12 11:19:55 2017-12-12 11:19:55 2017-12-12 11:19:55 \n", "3 2017-12-06 12:04:06 2017-12-06 12:04:06 2017-12-06 12:04:06 \n", "4 2018-05-21 13:59:17 2018-05-21 13:59:17 2018-05-21 13:59:17 \n", "\n", " order_delivered_customer_date order_estimated_delivery_date \n", "0 2018-05-09 17:36:51 2018-05-22 00:00:00 \n", "1 2018-06-29 20:32:09 2018-07-16 00:00:00 \n", "2 2017-12-18 17:24:41 2018-01-04 00:00:00 \n", "3 2017-12-21 01:35:51 2018-01-04 00:00:00 \n", "4 2018-06-01 21:44:53 2018-06-13 00:00:00 \n", "\n", "[5 rows x 33 columns]" ], "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", " \n", " \n", "
order_idpayment_sequentialpayment_typepayment_installmentspayment_valueorder_item_idproduct_idseller_idshipping_limit_dateprice...customer_unique_idcustomer_zip_code_prefixcustomer_citycustomer_stateorder_statusorder_purchase_timestamporder_approved_atorder_delivered_carrier_dateorder_delivered_customer_dateorder_estimated_delivery_date
0b81ef226f3fe1789b1e8b2acac839d171credit_card899.331.0af74cc53dcffc8384b29e7abfa41902b213b25e6f54661939f11710a6fddb8712018-05-02 22:15:0979.80...708ab75d2a007f0564aedd11139c770839801teofilo otoniMGdelivered2018-04-25 22:01:492018-04-25 22:01:492018-04-25 22:01:492018-05-09 17:36:512018-05-22 00:00:00
1a9810da82917af2d9aefd1278f1dcfa01credit_card124.391.0a630cc320a8c872f9de830cf121661a3eaf6d55068dea77334e8477d3878d89e2018-07-02 11:18:5817.00...a8b9d3a27068454b1c98cc67d4e31e6f2422sao pauloSPdelivered2018-06-26 11:01:382018-06-26 11:01:382018-06-26 11:01:382018-06-29 20:32:092018-07-16 00:00:00
225e8ea4e93396b6fa0d3dd708e76c1bd1credit_card165.711.02028bf1b01cafb2d2b1901fca4083222cc419e0650a3c5ba77189a1882b7556a2017-12-26 09:52:3456.99...6f70c0b2f7552832ba46eb57b1c5651e2652sao pauloSPdelivered2017-12-12 11:19:552017-12-12 11:19:552017-12-12 11:19:552017-12-18 17:24:412018-01-04 00:00:00
3ba78997921bbcdc1373bb41e913ab9531credit_card8107.781.0548e5bfe28edceab6b51fa707cc9556fda8622b14eb17ae2831f4ac5b9dab84a2017-12-12 12:13:2089.90...87695ed086ebd36f20404c82d20fca8736060juiz de foraMGdelivered2017-12-06 12:04:062017-12-06 12:04:062017-12-06 12:04:062017-12-21 01:35:512018-01-04 00:00:00
442fdf880ba16b47b59251dd489d4441a1credit_card2128.451.0386486367c1f9d4f587a8864ccb6902bcca3071e3e9bb7d12640c9fbe23013062018-05-31 16:14:41113.57...4291db0da71914754618cd789aebcd5618570conchasSPdelivered2018-05-21 13:59:172018-05-21 13:59:172018-05-21 13:59:172018-06-01 21:44:532018-06-13 00:00:00
\n", "

5 rows × 33 columns

\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "
\n", "
\n" ] }, "metadata": {}, "execution_count": 72 } ] }, { "cell_type": "code", "source": [ "all_dataset.groupby(by=\"order_status\").customer_id.nunique().sort_values(ascending=False)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "aGBz8cZvoEP3", "outputId": "7f01a743-ae03-43e0-fbe5-f34491c2939d" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "order_status\n", "delivered 96477\n", "shipped 1107\n", "canceled 625\n", "unavailable 609\n", "invoiced 314\n", "processing 301\n", "created 5\n", "approved 2\n", "Name: customer_id, dtype: int64" ] }, "metadata": {}, "execution_count": 73 } ] }, { "cell_type": "markdown", "source": [ "## Visualization & Explanatory Analysis" ], "metadata": { "id": "SCNmtOLp9OKB" } }, { "cell_type": "markdown", "source": [ "### Pertanyaan 1: Bagaimana performa penjualan dan payment value dalam beberapa bulan terakhir ?" ], "metadata": { "id": "SG59_Fbj9Qr6" } }, { "cell_type": "code", "source": [ "all_dataset['order_approved_at'] = pd.to_datetime(all_dataset['order_approved_at'], format= '%Y-%m')" ], "metadata": { "id": "eySm_tp4D11w" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "Mengatur kolom dengan menggunakan set_index" ], "metadata": { "id": "ISL0XALbu3EL" } }, { "cell_type": "code", "source": [ "all_dataset_index = all_dataset.set_index('order_approved_at')\n", "all_dataset_index.head()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "cBxoj1EbEakq", "outputId": "a3ed0018-aaa8-4f3c-9d7f-077812db11e2" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " order_id payment_sequential \\\n", "order_approved_at \n", "2018-04-25 22:01:49 b81ef226f3fe1789b1e8b2acac839d17 1 \n", "2018-06-26 11:01:38 a9810da82917af2d9aefd1278f1dcfa0 1 \n", "2017-12-12 11:19:55 25e8ea4e93396b6fa0d3dd708e76c1bd 1 \n", "2017-12-06 12:04:06 ba78997921bbcdc1373bb41e913ab953 1 \n", "2018-05-21 13:59:17 42fdf880ba16b47b59251dd489d4441a 1 \n", "\n", " payment_type payment_installments payment_value \\\n", "order_approved_at \n", "2018-04-25 22:01:49 credit_card 8 99.33 \n", "2018-06-26 11:01:38 credit_card 1 24.39 \n", "2017-12-12 11:19:55 credit_card 1 65.71 \n", "2017-12-06 12:04:06 credit_card 8 107.78 \n", "2018-05-21 13:59:17 credit_card 2 128.45 \n", "\n", " order_item_id product_id \\\n", "order_approved_at \n", "2018-04-25 22:01:49 1.0 af74cc53dcffc8384b29e7abfa41902b \n", "2018-06-26 11:01:38 1.0 a630cc320a8c872f9de830cf121661a3 \n", "2017-12-12 11:19:55 1.0 2028bf1b01cafb2d2b1901fca4083222 \n", "2017-12-06 12:04:06 1.0 548e5bfe28edceab6b51fa707cc9556f \n", "2018-05-21 13:59:17 1.0 386486367c1f9d4f587a8864ccb6902b \n", "\n", " seller_id shipping_limit_date \\\n", "order_approved_at \n", "2018-04-25 22:01:49 213b25e6f54661939f11710a6fddb871 2018-05-02 22:15:09 \n", "2018-06-26 11:01:38 eaf6d55068dea77334e8477d3878d89e 2018-07-02 11:18:58 \n", "2017-12-12 11:19:55 cc419e0650a3c5ba77189a1882b7556a 2017-12-26 09:52:34 \n", "2017-12-06 12:04:06 da8622b14eb17ae2831f4ac5b9dab84a 2017-12-12 12:13:20 \n", "2018-05-21 13:59:17 cca3071e3e9bb7d12640c9fbe2301306 2018-05-31 16:14:41 \n", "\n", " price ... customer_id \\\n", "order_approved_at ... \n", "2018-04-25 22:01:49 79.80 ... 0a8556ac6be836b46b3e89920d59291c \n", "2018-06-26 11:01:38 17.00 ... f2c7fc58a9de810828715166c672f10a \n", "2017-12-12 11:19:55 56.99 ... 25b14b69de0b6e184ae6fe2755e478f9 \n", "2017-12-06 12:04:06 89.90 ... 7a5d8efaaa1081f800628c30d2b0728f \n", "2018-05-21 13:59:17 113.57 ... 15fd6fb8f8312dbb4674e4518d6fa3b3 \n", "\n", " customer_unique_id \\\n", "order_approved_at \n", "2018-04-25 22:01:49 708ab75d2a007f0564aedd11139c7708 \n", "2018-06-26 11:01:38 a8b9d3a27068454b1c98cc67d4e31e6f \n", "2017-12-12 11:19:55 6f70c0b2f7552832ba46eb57b1c5651e \n", "2017-12-06 12:04:06 87695ed086ebd36f20404c82d20fca87 \n", "2018-05-21 13:59:17 4291db0da71914754618cd789aebcd56 \n", "\n", " customer_zip_code_prefix customer_city customer_state \\\n", "order_approved_at \n", "2018-04-25 22:01:49 39801 teofilo otoni MG \n", "2018-06-26 11:01:38 2422 sao paulo SP \n", "2017-12-12 11:19:55 2652 sao paulo SP \n", "2017-12-06 12:04:06 36060 juiz de fora MG \n", "2018-05-21 13:59:17 18570 conchas SP \n", "\n", " order_status order_purchase_timestamp \\\n", "order_approved_at \n", "2018-04-25 22:01:49 delivered 2018-04-25 22:01:49 \n", "2018-06-26 11:01:38 delivered 2018-06-26 11:01:38 \n", "2017-12-12 11:19:55 delivered 2017-12-12 11:19:55 \n", "2017-12-06 12:04:06 delivered 2017-12-06 12:04:06 \n", "2018-05-21 13:59:17 delivered 2018-05-21 13:59:17 \n", "\n", " order_delivered_carrier_date \\\n", "order_approved_at \n", "2018-04-25 22:01:49 2018-04-25 22:01:49 \n", "2018-06-26 11:01:38 2018-06-26 11:01:38 \n", "2017-12-12 11:19:55 2017-12-12 11:19:55 \n", "2017-12-06 12:04:06 2017-12-06 12:04:06 \n", "2018-05-21 13:59:17 2018-05-21 13:59:17 \n", "\n", " order_delivered_customer_date \\\n", "order_approved_at \n", "2018-04-25 22:01:49 2018-05-09 17:36:51 \n", "2018-06-26 11:01:38 2018-06-29 20:32:09 \n", "2017-12-12 11:19:55 2017-12-18 17:24:41 \n", "2017-12-06 12:04:06 2017-12-21 01:35:51 \n", "2018-05-21 13:59:17 2018-06-01 21:44:53 \n", "\n", " order_estimated_delivery_date \n", "order_approved_at \n", "2018-04-25 22:01:49 2018-05-22 00:00:00 \n", "2018-06-26 11:01:38 2018-07-16 00:00:00 \n", "2017-12-12 11:19:55 2018-01-04 00:00:00 \n", "2017-12-06 12:04:06 2018-01-04 00:00:00 \n", "2018-05-21 13:59:17 2018-06-13 00:00:00 \n", "\n", "[5 rows x 32 columns]" ], "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", " \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", "
order_idpayment_sequentialpayment_typepayment_installmentspayment_valueorder_item_idproduct_idseller_idshipping_limit_dateprice...customer_idcustomer_unique_idcustomer_zip_code_prefixcustomer_citycustomer_stateorder_statusorder_purchase_timestamporder_delivered_carrier_dateorder_delivered_customer_dateorder_estimated_delivery_date
order_approved_at
2018-04-25 22:01:49b81ef226f3fe1789b1e8b2acac839d171credit_card899.331.0af74cc53dcffc8384b29e7abfa41902b213b25e6f54661939f11710a6fddb8712018-05-02 22:15:0979.80...0a8556ac6be836b46b3e89920d59291c708ab75d2a007f0564aedd11139c770839801teofilo otoniMGdelivered2018-04-25 22:01:492018-04-25 22:01:492018-05-09 17:36:512018-05-22 00:00:00
2018-06-26 11:01:38a9810da82917af2d9aefd1278f1dcfa01credit_card124.391.0a630cc320a8c872f9de830cf121661a3eaf6d55068dea77334e8477d3878d89e2018-07-02 11:18:5817.00...f2c7fc58a9de810828715166c672f10aa8b9d3a27068454b1c98cc67d4e31e6f2422sao pauloSPdelivered2018-06-26 11:01:382018-06-26 11:01:382018-06-29 20:32:092018-07-16 00:00:00
2017-12-12 11:19:5525e8ea4e93396b6fa0d3dd708e76c1bd1credit_card165.711.02028bf1b01cafb2d2b1901fca4083222cc419e0650a3c5ba77189a1882b7556a2017-12-26 09:52:3456.99...25b14b69de0b6e184ae6fe2755e478f96f70c0b2f7552832ba46eb57b1c5651e2652sao pauloSPdelivered2017-12-12 11:19:552017-12-12 11:19:552017-12-18 17:24:412018-01-04 00:00:00
2017-12-06 12:04:06ba78997921bbcdc1373bb41e913ab9531credit_card8107.781.0548e5bfe28edceab6b51fa707cc9556fda8622b14eb17ae2831f4ac5b9dab84a2017-12-12 12:13:2089.90...7a5d8efaaa1081f800628c30d2b0728f87695ed086ebd36f20404c82d20fca8736060juiz de foraMGdelivered2017-12-06 12:04:062017-12-06 12:04:062017-12-21 01:35:512018-01-04 00:00:00
2018-05-21 13:59:1742fdf880ba16b47b59251dd489d4441a1credit_card2128.451.0386486367c1f9d4f587a8864ccb6902bcca3071e3e9bb7d12640c9fbe23013062018-05-31 16:14:41113.57...15fd6fb8f8312dbb4674e4518d6fa3b34291db0da71914754618cd789aebcd5618570conchasSPdelivered2018-05-21 13:59:172018-05-21 13:59:172018-06-01 21:44:532018-06-13 00:00:00
\n", "

5 rows × 32 columns

\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "
\n", "
\n" ] }, "metadata": {}, "execution_count": 75 } ] }, { "cell_type": "markdown", "source": [ "Menggunakan method **resample** untuk mengubah frekuensi atau melakukan resampling terhadap DataFrame yang memiliki komponen time series" ], "metadata": { "id": "tkwDXr_gq3d0" } }, { "cell_type": "code", "source": [ "all_time_dataset = all_dataset.resample(rule='M', on='order_approved_at').agg({\n", " \"order_id\": \"nunique\",\n", " \"price\": \"sum\"\n", "})\n", "\n", "all_time_dataset.index = all_time_dataset.index.strftime('%Y-%m-%d') #mengubah format order date menjadi nama bulan\n", "all_time_dataset = all_time_dataset.reset_index()\n", "all_time_dataset.rename(columns={\n", " \"order_id\": \"order_count\",\n", " \"price\": \"revenue\"\n", "}, inplace=True)\n", "all_time_dataset.head()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "yRDgCjrlaSvZ", "outputId": "b559adca-f2a9-47d2-90cf-1678959fa99d" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " order_approved_at order_count revenue\n", "0 2016-09-30 3 132.39\n", "1 2016-10-31 324 50942.23\n", "2 2016-11-30 0 0.00\n", "3 2016-12-31 1 10.90\n", "4 2017-01-31 800 128637.99" ], "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", "
order_approved_atorder_countrevenue
02016-09-303132.39
12016-10-3132450942.23
22016-11-3000.00
32016-12-31110.90
42017-01-31800128637.99
\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "
\n", "
\n" ] }, "metadata": {}, "execution_count": 76 } ] }, { "cell_type": "markdown", "source": [ "Memvisualisasikan data dengan linechart" ], "metadata": { "id": "erUfpns5soJo" } }, { "cell_type": "code", "source": [ "all_time_dataset = all_dataset.resample(rule='M', on='order_approved_at').agg({\n", " \"order_id\": \"nunique\",\n", " \"price\": \"sum\"\n", "})\n", "\n", "all_time_dataset.index = all_time_dataset.index.strftime('%Y-%m') #mengubah format order date menjadi nama bulan\n", "all_time_dataset = all_time_dataset.reset_index()\n", "all_time_dataset.rename(columns={\n", " \"order_id\": \"order_count\",\n", " \"price\": \"revenue\"\n", "}, inplace=True)\n", "\n", "plt.figure(figsize=(10, 5))\n", "plt.plot(all_time_dataset[\"order_approved_at\"], all_time_dataset[\"order_count\"], marker='o', linewidth=2, color=\"blue\")\n", "plt.title(\"Number of Orders per Month\", loc=\"center\", fontsize=20)\n", "plt.xticks(fontsize=10, rotation=45)\n", "plt.yticks(fontsize=10)\n", "plt.show()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "hqQPspEY8-I4", "outputId": "0e32d1c7-939e-4cda-a012-aa12fb5eebfe" }, "execution_count": null, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0cAAAHvCAYAAACfaqQpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAACkEUlEQVR4nOzdd3gUxRsH8O8lIYVUQkkhoYlKL6FGjRSRCFGBAErvIBiQogj8RMAKgkoRBBtFMSAloID0jkRKAAkdIZRAEmoSWtplfn+M11Ivyd3tJfl+nidP9nZnd2Yvd5d9b2bfUQkhBIiIiIiIiEo5G6UbQEREREREZA0YHBEREREREYHBEREREREREQAGR0RERERERAAYHBEREREREQFgcERERERERASAwREREREREREABkdEREREREQAGBwREREREREBYHBERCWQSqWCSqXCtGnTlG6K1VKr1Zg7dy6aN28ONzc37XPWuXNnpZtmFgMGDIBKpUK1atWUbgqRyVWrVg0qlQoDBgxQuilExR6DI6ISZM+ePdqLXJVKhTfffDPffTQXjSqVygItJGvRs2dPjBkzBkeOHMGDBw9McsykpCQsWLAAHTt2RLVq1VC2bFm4u7vjmWeeQe/evfHbb79BrVabpC4qvfQ/41QqFfbt22fUfi+//LLBfvzyhIhywuCIqARbvXo1oqOjlW4GWZmDBw9i9erVAICQkBBs374dJ0+eRHR0NObNm1eoY/7www946qmnMHLkSGzevBlXr17FkydPkJycjIsXLyI8PBw9evRAgwYNcODAAVOeDpVyy5cvz7fMjRs3sGvXLgu0xnTY20mkDAZHRCWYEAJTp05VuhlkZXbs2AEAsLW1RXh4ONq1a4f69eujXr16qFKlSoGP995772HYsGG4e/cu7Ozs0KdPH6xatQqHDh3C/v378eOPP6Jt27YAgDNnzqBdu3ZYs2aNSc+JSh9HR0cA8kug1NTUPMuGh4cjMzNTuw8RUW4YHBGVUBUqVAAArFu3DsePH1e4NWRNbty4AQDw8vKCm5tbkY717bff4quvvgIA+Pn54ciRI/jll1/QvXt3NG/eHC+88AIGDx6MnTt34tdff4W9vT1SU1PRp08fnDhxoqinQqVYcHAwHBwckJiYiA0bNuRZ9pdffgEAdOrUyRJNI6JijMERUQn1zjvvwMHBAQAwZcoUhVtD1kTzLXuZMmWKdJyrV6/i3XffBQA4Oztj586daNSoUa7le/XqhcWLF2vb0LdvXwghitQGKr08PDzw2muvAdAFPzn5559/tMOL+/XrZ5G2EVHxxeCIqITy9/fHsGHDAAAbN27E4cOHC3UcY7Mg5TU+/sqVK9qboJcuXQoAiIiIQPv27VGpUiU4OzujYcOG+Oabb5Cenq7dTwiB8PBwtG7dGpUqVULZsmUREBCARYsWFeiieseOHXj99dfh4+MDR0dH1KhRAyNHjtT2oOTn2LFjGD58OJ599lm4uLjA2dkZzz77LEaMGIELFy7kut/SpUu1533lyhWkpqZizpw5aNmyJSpUqFCkm8Kjo6MxbNgwPP300yhbtixcXV1Rt25djB07FleuXMlxH01bli1bBkAGN1lvbi+IOXPmICUlBYAMwJ955pl89+nduzdeeeUVAMCpU6ewcePGbGVat24NlUqF1q1bAwAuXryIkSNHas9V83zqO3v2LAYMGAB/f384OjrC398fvXr1wpEjRwp0TvHx8fjggw/QtGlTeHp6wsHBAf7+/njjjTe0wxFzkttrvGPHjvD19YWdnZ32fDQuXLiAUaNGoV69enB1dYW9vT18fX3RqFEjDBo0CL/99lu+w8Vyop+YZc+ePcjMzMQPP/yA5557Dp6entr32/Tp07V/v/ysX78e3bt3R5UqVeDo6AgPDw80bdoUH330Ee7fv5/rflk/F+Li4jBhwgTUrVsXrq6u2jYWVt++fQEAmzdvxt27d3Ms8/PPPwMAAgICUKdOHaOPvWHDBnTr1g1+fn5wcHBA+fLlERgYiBkzZuDhw4e57pf1fZ+ZmYnvv/8ezz33HMqVKwdnZ2c0aNAAn332GR4/fpxt/2nTpuX7Ps3vvXr+/HkMHToU1apVg4ODA7y8vNClSxf8/fffRp8/UakliKjE2L17twAgAIglS5aImzdvCicnJwFAtG/fPsd9+vfvr90nJ1WrVhUARP/+/fOsW3OcqlWrZtsWExNj0K4RI0ZoH2f9CQ0NFRkZGSIlJUV069Yt13JDhw7NtS2aMlOnThXTpk3L9Rju7u5i3759uR5HrVaLsWPHCpVKlesx7OzsxHfffZfj/kuWLNGWO3LkiGjUqFG2/adOnZrn85qTzz//XNjY2OTaJgcHB7Fs2bJcn5e8foyVmZkpPD09BQDh5OQkEhMTjd53y5Yt2vq6dOmSbXurVq0EANGqVSuxfv164ezsnK2dMTEx2vK//fabcHBwyPXv8+OPP+b5+tRYvnx5jnXp/wwePFikp6dn21f/Nb548WLRt2/fbPu2atVKW37VqlXC3t4+379HdHS00c+rhv7nwNatW8Urr7yS6/Hr1Kkj4uLicj3WvXv3RNu2bfNsY6VKlURkZGSO++s/75GRkaJChQrZ9t+9e3eBzk+zX//+/UVaWpooX768ACDmz5+frWxGRobw9vYWAMTs2bMN/k65vfeePHkiunTpkuc5+/r6iuPHj+e4v/77/vTp0+Kll17K9TjNmzcXDx8+NNh/6tSpBX6v6n9OR0REiLJly+a4j62trVi5cmWBnm+i0obBEVEJkjU4EkKIcePGadft378/2z6WDo5atGghAIiOHTuKiIgIERUVJdavX69dD0D88MMPYtSoUQKA6NWrl9i4caOIiooSK1euFLVq1dKW27x5c45t0Wxv2rSpACCeffZZ8dNPP4kjR46IHTt2iLfeeksbXLi5uYlr167leJy3335be6wXX3xRLF68WOzZs0ccPnxY/PDDD6Ju3bra7b///nu2/fUvkho0aCBUKpXo16+f2LRpk4iKihLr1q0Tf/75Z57Pa1YLFizQHrNixYriyy+/FJGRkeLAgQNi2rRp2ot7lUolNm3aZLBvdHS0iI6OFp06ddJe4GnWaX6MFR0drW1HboF3bjIyMrRBe8WKFbNt1wRH1atXFy4uLqJixYpixowZ4q+//hJ///23+Oabb8Tt27eFEEIcPnxY2NnZCUAGhRMnThT79u0Thw4dEvPmzRPe3t6iTJkyomHDhnkGR7/99ps2CK5Ro4b4+uuvxZYtW0RUVJRYu3at6Nixo/Z8x44dm21//dd4gwYNBAARFBQkwsPDxdGjR8WOHTvEjz/+KIQQIj4+Xvt3qlSpkvj444/Ftm3bxLFjx8Rff/0lli1bJgYNGiQ8PT2LHBw1a9ZM+zdat26dOHr0qFi3bp14+eWXDd4nGRkZ2Y6TkpIiAgICtBfVffv2FStWrBB///232L9/v/jss8+0gUm5cuXElStXsh1D87lQvnx54evrK1xcXMQHH3ygfR/99NNP4ty5cwU6P/3gSAghwsLCtJ8tWWkCcTs7OxEfH29UcPTGG29oyzRs2FD8/PPP4siRI2Lr1q1i4MCB2teJp6eniI2Nzba//vv+ueeeEzY2NqJ///4G7/vAwEBtmYkTJxrsn5CQkO/7NOvrQvM5HRAQIBwdHUX16tXF/Pnzxd9//y0iIyPFtGnThKOjo/Yz79atWwV6zolKEwZHRCVITsFRQkKC9kKsTZs22faxdHAEQIwZMyZbmUePHmnrKl++vFCpVGLOnDnZysXFxQlXV1cBQLz++us5tkW/roCAAPHgwYNsZX7++Wdtme7du2fbvm3bNu12zUVtVk+ePNF+q161atVsPQr6F0l5HcdYt27d0n4j7Ovrm2NQd+zYMe3fu3LlyiItLS1bGWN6UfKzfPnyXC/ujNGyZUvt/jdu3DDYpgmONOd59erVXI+jCYDLlCkj9u7dm217bGys8PPz0x4vp3O+ffu2cHd3FwDEoEGDcuwZEkKI//3vfwKAsLGxyXZBn/U13q9fP5GZmZnjcX766SdtubyCn8ePH4vHjx/nuj03+p8DAMSwYcNyLDd48GBtmQULFmTbrjlfDw8PcfTo0RyPceXKFeHj46P9IiMr/c8XFxcXceLEiQKfT1ZZg6NDhw5p1124cMGgbO/evbVfxggh8g2ONm7cqN3+0ksvidTU1Gxlvv/+e22ZN954I9v2rO/7X375JVuZlJQUUa9ePe3nXU6vuYK8TzWfnQBEkyZNRFJSUrYy+u/Zr7/+Ot9jEpVWvOeIqISrVKkSRo4cCQDYvXs3du/erWh7/P39MXPmzGzry5Yti/79+wMA7t69ixYtWmD06NHZynl7e6NLly4AgP379+db3/fffw8XF5ds6/v27YsOHToAkBn94uPjDbbPmDEDANC1a1cMHjw4x2M7Ojpi/vz5AOR9AXk9t23bts31OMZasmSJ9h6Fr7/+Gv7+/tnKNG7cGJMmTQIgs9KtX7++SHXm5s6dO9plb2/vAu/v5eWlXc7tXhFA/h1ySy9+5MgRHD16FADw1ltv4cUXX8xWpnLlytpserlZuHAhkpKSULlyZXz77bews7PLsdxHH32EypUrIzMzU3sfS048PDwwf/78XO8L0bzWypUrh3r16uV6HCcnJzg5OeXZ9vx4eXlh9uzZOW6bM2cOKlasCEBmHdT38OFDLFiwAADwySefoEmTJjkeo2rVqvjwww8ByJTajx49yrUt77//Pho2bFjgc8hP8+bNtfe76c959PDhQ6xbtw6A7t6k/GjOuUyZMliyZAns7e2zlRk6dCjatWsHQN5XFhcXl+vxQkND0adPn2zrHRwctJ/Ld+/exZkzZ4xqnzEWL16cYxbKXr16wdfXF4Bxn51EpRWDI6JSYPz48XB1dQUA7YWMUkJDQ3PNkqZ/4fTmm2/megxNufv37yMxMTHXcvXr18/1og4ABg0aBADIyMgwuCk8OTlZ+7hbt2657g8AtWvX1qZNj4yMzLVc79698zyOMTQJATw8PBAaGppruSFDhmTbx9QePHigXc4p+MyP/j7Jyck5lrG3t0f37t1zPYb+uQ0cODDXcl26dIGHh0eu2//44w8AwKuvvqrN8JgTOzs7BAYGAsj7b/3aa69p32858fHxASBfv7///nuu5UzhjTfeQNmyZXPc5uLigjfeeAMAcPr0aYMvCPbu3YukpCQA+b8HNEFpeno6oqKici1nivdAbjTBj35wFBERgcePH8PNzc2oFN4ZGRnYu3cvAKB9+/Y5fvmgMXToUO0+eSWUyOuc9T+bLl++nG/7jFG/fn00aNAgx20qlQqNGzc2aX1EJRGDI6JSoHz58hgzZgwA4K+//sLWrVsVa0teGc30L2CNLad/kZ5Vs2bN8mxL8+bNtcuaVL8AcPz4cWRmZgIAevbsmWOmKP0fTS9K1t4nfbldsBTEqVOnAMisW3ml4fby8tJmB9PsY2r6F/95Ze7Kjf4+uc219PTTT+c5aafmb2Zvb59nj0SZMmW0F4VZqdVq7XxL3333Xb5/a83ktUX5W7/++uva13CXLl3Qtm1bzJ49G1FRUVCr1XnuW1CFfQ9oeuQAGczl9Zzo937l9ry4uLigRo0ahT2NfPXt2xcqlQqXL1/GX3/9BUCXpa5bt25G9cBdvnxZ2zPbokWLPMvqb8/rPVarVq1ct3l6emqX8/ocK4i86tOv01T1EZVEDI6ISolx48ZpL8imTp2qWDty+xYbAGxsbApcLq+LyUqVKuXZFv2hXffu3dMu37p1K8/9cpNTWl6NcuXKFeqY+jRtzO+8AN1QN/3zMiVNbxmQd6CQm4SEBO1y+fLlcyyT33OmOTdPT0/Y2trmWVb/b531GBkZGXnum5Oi/K3Lly+PP/74A5UrV4YQArt378a4ceO06cNDQ0NzTHFeGNbyHsir584UqlatiqCgIAByzqMbN25oh7kaO6RO//zze970h5Lm9R4zxedYQeRVn36dpg7CiUqSnAdWE1GJ4+HhgXHjxmHKlCk4dOgQNm7ciFdffVXpZplVQeft0dC/cPjuu+/w3HPPGbVfXhfF+V28F0Rhz8uU9HtHjh8/XqB91Wo1Tp48CQCoWLGi9j6IrIx9zoryfOj/rYcMGZLjfW45yeleFA1j2h0UFIR///0Xa9euxZ9//ol9+/YhNjYWycnJWLduHdatW4fg4GBERETke8GbF1O8B44dO2b0hMF+fn45rjfl6z83ffv2xb59+7Bq1SrtvWFVqlRBq1atCnwsa3iPEZEyGBwRlSJjxozB3LlzcffuXUydOtWo4EjzTaNmmFlu8roRWyn6vRP5bdcf4qLfk1G2bNk8b5q3JE9PT8TFxeV7XoCuN0f/vEypXr168PT0xL1797Bv3z4kJSXB3d3dqH137Nih7WHQfNtfGJpg9O7du1Cr1XlegOf2nOk/P0IIi/6tHR0d0bt3b+19KTExMdi0aRO++eYbXLhwAVu3bsUHH3yQa0IFY5jiPVCxYsVcgx5r0r17d4waNQr379/H559/DgDo06eP0YGO/vnn97zp95aa6z1GRMrgsDqiUsTV1RXjx48HIL8N1mRyym8fQN48npcLFy4UvYEmduTIEaO3618UN2rUSHtBpbl/wRpo2njs2LE8h4LdunULV69eNdjH1FQqFfr16wcAePLkCX744Qej9/3mm2+0ywMGDCh0G+rXrw8ASEtLwz///JNruYyMDO19RVnZ29ujbt26AJT/W1evXh0jR47EkSNHtMHIqlWrinTMwr4H9O/RUvp5MZa7uztef/11AEBKSgoA44fUAUCNGjW0vXSHDh3Ks+zhw4e1y+Z8jxGR5TE4IiplRo4cqR1PP3XqVAgh8ixfvXp1APKCPLeyp0+f1g6TsibR0dF5DvlavHgxADnkp3Xr1tr1FStWRMuWLQEA4eHhuH37tlnbaSxN+uDExERERETkWu6nn37S/q00+5jD6NGjtdndPvroI/z777/57rNy5Ups2rQJgLyoLMrQTv1zW7ZsWa7l1q1bl2dwr7mgPnfunKLJSjTc3Ny0iRT0U6YXxurVq/HkyZMctz169EgbfNWpU0ebRQ+Qz60mUJg3b16+nxPWol+/fnBwcICDgwMCAwPzTVCgz87OTjsEb/v27YiNjc217I8//qjdR/+zw5Q0yUhSU1PNcnwiyhmDI6JSxtnZGRMmTAAgg4c///wzz/Kai4WbN29ixYoV2bY/ePCgyPP3mNOwYcNyHPIXHh6uPffOnTsbXBgCwOTJkwHINNPdunXLM2V4amoqFixYoP222lwGDhyovWB99913cePGjWxl/vnnH+2QosqVK6Nz585ma0+1atUwa9YsADL73EsvvZRnD86qVau0c1nZ29vjl19+KdK3482bN0dAQAAAOVfRgQMHspWJi4vDe++9l+dxRo8erU0tPnDgQJw+fTrP8ps2bSrSlwFbt27Nc26cpKQkbc+E5suJwoqPj8e7776b47Zx48ZpEy+MGDHCYJuHh4d2Hp6DBw9i7NixeQ6tTUhI0AYMSgoJCUFKSgpSUlJw8ODBAu8fFhYGQPZGDh48GOnp6dnKLF68GNu2bQMgpybI+tlhKprj3rp1i9nliCyI9xwRlUIjRozAl19+ibi4uHy/me7Tpw+mTZuG5ORkDB48GP/++y+Cg4OhUqkQFRWFr7/+GrGxsWjcuHGBb8w3t6ZNm+Lo0aNo2rQpJkyYgPr16yMpKQlr1qzBd999B0AOG/zyyy+z7duxY0eMHj0ac+fOxb59+1C7dm0MHz4cL7zwAsqXL49Hjx7h33//xf79+xEREYH79+9rL/zNpWLFipg1axbCwsIQGxuLJk2aYOLEiXjuueeQkZGBHTt2YNasWXj48CFUKhW+//57o2+kL6xRo0bh0qVLmDt3Lq5du4amTZuiZ8+eeP3111G1alWkp6fj3LlzCA8Px86dOwHICTCXL1+ORo0aFbn+b7/9Fi+88ALS09Px8ssvY+zYsejYsSMcHBxw6NAhfP7557hz5w4aNmyYa+Dm5eWFZcuWoVu3boiLi0PTpk0xYMAAdOjQAX5+fkhPT0dsbCwOHz6MNWvW4PLly9iwYUOh07OvWLECr732Gl5++WW0b99ee//WgwcPcOrUKcyfP18b+A4fPrzQzw0g3wMLFy5ETEwMhg8fDn9/f1y/fh0LFy7U9pI1btw4x3o+/vhj7N27F4cOHcLcuXOxZ88eDB06FI0aNYKzszPu37+P06dPY8eOHdi8eTPq169vMMdWcRQSEoLu3btj9erV2LZtG1q2bIlx48ahVq1auH//PlauXKntcfb09MTXX39ttrZoEsFkZmZi+PDhGDVqlEGWyJo1a5qtbqJSTRBRibF7924BQAAQS5YsybPsN998oy2r+cnNqlWrhK2tbbbyAISTk5NYvXq16N+/vwAgqlatmm3/mJgYo9ql3/7du3fnWm7JkiXacjExMdm2a7ZNnTpVTJ06Ncd2AxBubm5iz549udaTmZkpPvroI2FnZ5frMTQ/zs7O4vHjxwVqZ2F99tlnwsbGJte2ODg4iGXLluW6f15/q8JauHCh8PT0zPd5ql27tti3b1+ex2rVqpUAIFq1amVU3eHh4cLe3j7H+uzs7MT3339v1Dn/8ccfRp2DjY2N2LVrl8G+xr7GhdA9//n9DB8+XKjVaqOeA33676OtW7eK9u3b51pHrVq1xI0bN3I9VnJysggNDTWqvW3atMn1XE35WtPU179//wLvq/93mjp1ao5lnjx5Irp06ZLnufr6+orjx4/nuL+x7/v8XjNqtVq0bNky1zboq1q1qlHPiTn+HkQlDYfVEZVSQ4cOzXMGeH3du3fHwYMH0aVLF1SsWBH29vbw9/dH//79ceTIEXTr1s3MrS28adOmYcuWLQgJCYGXlxfs7e1RrVo1vP322zh9+nSeaX5VKhWmTJmCCxcu4P3339fOQ2NrawtXV1fUqVMHvXv3xrJlyxAXF2fURJOm8L///Q/Hjx/H0KFD8dRTT8HJyQnOzs6oXbs2Ro8ejXPnzmmTJVjK8OHDcenSJXzzzTd45ZVX4O/vD0dHR7i4uOCpp55Cjx49sGLFCkRHRxcpQ11OevbsiePHj6Nv377w9fWFvb09KleujDfeeAMHDhzA0KFDjTrOa6+9hpiYGHz55Zdo27YtvLy8UKZMGTg5OaF69ep49dVX8fXXX+PKlSto06ZNods7e/ZsLF++HIMGDULTpk1RuXJl2Nvbw8nJCc888wz69++P/fv3Y+HChQZz4RSGvb09/vzzT3z77bdo2bIlPDw8ULZsWdSvXx+ffvopjh07lmsqdUD2rK5duxb79+/HkCFD8Oyzz8LV1RV2dnbw9PREs2bNEBYWhj///BPbt28vUluthaOjIyIiIvDHH38gNDRU+5oqV64cWrRogenTp+P8+fMm6fnMi42NDbZt24bJkyejYcOGcHFxYZIGIgtQCVFM7rIkIiKifO3Zs0cbvO3evdtsCQOIiEoi9hwRERERERGBwREREREREREABkdEREREREQAGBwREREREREBYHBEREREREQEoARnq8vMzMTNmzfh6urK1JdERERERKWYEAIPHjyAr69vntMk2FmwTRZ18+ZNo+dwISIiIiKiku/69evw8/PLdXuJDY5cXV0ByCfAzc1N4dYQEREREZFSkpOT4e/vr40RclNigyPNUDo3NzcGR0RERERElO/tNkzIQEREREREBAZHREREREREABgcERERERERAWBwREREREREBIDBEREREREREQAGR0RERERERAAYHBEREREREQFgcERERERERASAwREREREREREABkdEREREREQAADulG0BERFTaqdXA/v1AXBzg4wMEBQG2tkq3ioio9GFwREREpKCICGD0aCA2VrfOzw+YOxcIDVWuXUREpRGH1RERESkkIgLo1s0wMAKAGzfk+ogIZdpFRFRaMTgiIiJSgFote4yEyL5Ns27MGFmOiIgsg8ERERGRAvbvz95jpE8I4Pp1WY6IiCyDwREREZEC4uJMW46IiIqOwREREZECfHxMW46IiIqOwREREZECgoJkVrrcqFSAv78sR0RElsHgiIiISAG2tjJdd17mzOF8R0RElsTgiIiISCGhoUCdOtnXu7gAa9ZwniMiIktjcERERKQQtRq4dk0uu7sDNv/9V/b0BLp0Ua5dRESlFYMjIiIihZw/Dzx8KJdfegl4+WW5fO0aEBWlXLuIiEorBkdEREQKOXxYt9y8OdC1q+7xmjWWbw8RUWnH4IiIiEghR47olps1Azp31g2tW7tWTgRbEqjVwJ49wIoV8rdarXSLiIhyxuCIiIhIIfrBUZMmQMWKQKtW8vG//wLR0cq0y5QiIoBq1YA2bYBeveTvatXkeiIia8PgiIiISAGpqcCJE3K5Vi2ZkAEwHFq3dq3Fm2VSERFAt25AbKzh+hs35PqSEiCxZ4yo5GBwREREpICTJ4H0dLncrJluvX6WuuIcHKnVwOjROQ8N1KwbM6b4BxLsGSMqWRgcERERKSBrMgYNX1/guefk8unTMqNdcbR/f/YeI31CANevy3LFVWnpGSMqTRgcERERKSBrMgZ9JWFoXVycactZm9LSM0ZU2jA4IiIiUoAmOLKzAxo2NNwWGqpbLq7BkY+PactZm9LQM0ZUGjE4IiIisrAHD4CzZ+Vyw4aAo6Ph9mrVZPY6ADh2DIiJsWjzTCIoCPDzy7uMSgWkpVmmPaZmbI/XzZvmbQcRmRaDIyIiIguLitINvco6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\n" }, "metadata": {} } ] }, { "cell_type": "markdown", "source": [ "### Pertanyaan 2: Produk apa yang paling banyak dan paling sedikit dicari ?" ], "metadata": { "id": "F2Bo_ypQ9RfH" } }, { "cell_type": "markdown", "source": [ "Membuat DataFrame baru untuk menampung informasi terkait jumlah penjualan tiap produk" ], "metadata": { "id": "2fghRKHERI9O" } }, { "cell_type": "code", "source": [ "sum_order = all_dataset.groupby(\"product_category_name\").product_id.nunique().sort_values(ascending=False).reset_index()\n", "sum_order.head(15)" ], "metadata": { "id": "jkO5kTJq9S1Y", "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "0428097b-5398-48fc-eaef-eac372d9984b" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " product_category_name product_id\n", "0 cama_mesa_banho 3639\n", "1 esporte_lazer 2867\n", "2 moveis_decoracao 2657\n", "3 beleza_saude 2444\n", "4 utilidades_domesticas 2335\n", "5 automotivo 1900\n", "6 informatica_acessorios 1639\n", "7 brinquedos 1411\n", "8 relogios_presentes 1329\n", "9 telefonia 1134\n", "10 bebes 919\n", "11 perfumaria 868\n", "12 fashion_bolsas_e_acessorios 849\n", "13 papelaria 849\n", "14 cool_stuff 789" ], "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", "
product_category_nameproduct_id
0cama_mesa_banho3639
1esporte_lazer2867
2moveis_decoracao2657
3beleza_saude2444
4utilidades_domesticas2335
5automotivo1900
6informatica_acessorios1639
7brinquedos1411
8relogios_presentes1329
9telefonia1134
10bebes919
11perfumaria868
12fashion_bolsas_e_acessorios849
13papelaria849
14cool_stuff789
\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "
\n", "
\n" ] }, "metadata": {}, "execution_count": 78 } ] }, { "cell_type": "code", "source": [ "sum_order = all_dataset.groupby(\"product_category_name\").product_id.nunique().sort_values(ascending=True).reset_index()\n", "sum_order.head(15)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "g5QF7G-wwTih", "outputId": "770f9f23-f1a6-404c-98ba-a908c6831be1" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " product_category_name product_id\n", "0 cds_dvds_musicais 1\n", "1 seguros_e_servicos 2\n", "2 pc_gamer 3\n", "3 fashion_roupa_infanto_juvenil 5\n", "4 casa_conforto_2 5\n", "5 tablets_impressao_imagem 9\n", "6 portateis_cozinha_e_preparadores_de_alimentos 10\n", "7 la_cuisine 10\n", "8 moveis_colchao_e_estofado 10\n", "9 fraldas_higiene 12\n", "10 flores 14\n", "11 artes_e_artesanato 19\n", "12 fashion_esporte 19\n", "13 artigos_de_festas 26\n", "14 fashion_roupa_feminina 27" ], "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", "
product_category_nameproduct_id
0cds_dvds_musicais1
1seguros_e_servicos2
2pc_gamer3
3fashion_roupa_infanto_juvenil5
4casa_conforto_25
5tablets_impressao_imagem9
6portateis_cozinha_e_preparadores_de_alimentos10
7la_cuisine10
8moveis_colchao_e_estofado10
9fraldas_higiene12
10flores14
11artes_e_artesanato19
12fashion_esporte19
13artigos_de_festas26
14fashion_roupa_feminina27
\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "
\n", "
\n" ] }, "metadata": {}, "execution_count": 79 } ] }, { "cell_type": "markdown", "source": [ "Membuat Visualisasi data dengan Subplots" ], "metadata": { "id": "6aepI8XUuuL_" } }, { "cell_type": "code", "source": [ "fig, ax = plt.subplots(nrows=1, ncols=2, figsize=(26, 6))\n", "\n", "colors = [\"#72BCD4\", \"#D3D3D3\", \"#D3D3D3\", \"#D3D3D3\", \"#D3D3D3\"]\n", "\n", "sns.barplot(x=\"product_id\", y=\"product_category_name\", data=sum_order.head(5), palette=colors, ax=ax[0])\n", "ax[0].set_ylabel(None)\n", "ax[0].set_xlabel(None)\n", "ax[0].set_title(\"Best Performing Product\", loc=\"center\", fontsize=15)\n", "ax[0].tick_params(axis ='y', labelsize=12)\n", "\n", "sns.barplot(x=\"product_id\", y=\"product_category_name\", data=sum_order.sort_values(by=\"product_id\", ascending=True).head(5), palette=colors, ax=ax[1])\n", "ax[1].set_ylabel(None)\n", "ax[1].set_xlabel(None)\n", "ax[1].invert_xaxis()\n", "ax[1].yaxis.set_label_position(\"right\")\n", "ax[1].yaxis.tick_right()\n", "ax[1].set_title(\"Worst Performing Product\", loc=\"center\", fontsize=15)\n", "ax[1].tick_params(axis='y', labelsize=12)\n", "\n", "plt.suptitle(\"Best and Worst Performing Product\", fontsize=20)\n", "plt.show()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "MCNLRmNjThvE", "outputId": "9d7b51c6-0124-4a40-80fe-51ad52241168" }, "execution_count": null, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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ly5p7969kmQ3SpeLi4sqV64syX7EscSPE7ePjY3VwYMHJSnZIJ90N9hkG20wMjIyyXa2epPSunVrubm5KTY2VlWqVFGjRo30448/KjIy0ji/J0lISIj69eun3bt3GyM/StLWrVslSTdv3lS6dOmSfX01bNjQ2C7xayyxAgUKGCPXPYzEz839ntPE65N6Tn18fJQ3b94UHTsgIECZMmVKcr1t5LT8+fMnGYRN3O7e119qFChQINmRHW113nuMW7du6dChQ5L+DfwlpXz58g9cX0pZLBYVKVJEn3zyiSIiIpIdYS65115a3BeP+/0vOREREcb7RVIjFQIAAAAAADzNCPMBAAAAAPAU8PLyUokSJfTVV19p1KhRkqS1a9fq888/t2t37ty5B9r/vSG9adOmqVKlSpLujtL0ySefqHbt2vL391f16tX1448/6tatWw90rNSwWq3q0qWLGjZsqIULF9435BMTE5Psem9v72TX20JAtlGobC5dumQ8zpo1a7L7SG4K2dSwjep2+fJlI1izdu1aWa1WZcyY0WEELNtIfc7CfO7u7nbTMttGGZTufz5ubm7G9JuJr8O97jflcuHChTVt2jRlzJhRd+7c0R9//KEePXqoRIkSypo1q9q1a/fQ06s+iB49emj37t3avXu3IiMjdejQIV25ckVHjhzRV1995XB90uo1ZpNWU1Wn5h4NDAx0ul1iyU1deq+Uvq4e9PWXGik9hi30bGMbvU6S02mAE7vf+tT69NNP7e7BI0eOKDo6Wnv37tWHH35ojBialOTuobS4L8x4/0tK4sB24lFkAQAAAAAAnhXpzC4AAAAAAACkTufOndW/f39dunRJ48eP16effmqsSxyCGTNmjDFa2/3cGwbJmTOn1q9fr7/++ku//fabVq9erb179+r27dtas2aN1qxZo2+++UaLFi1SwYIF0+bEnBg/frx+/vlnSVLp0qXVp08fPf/888qZM6e8vb2NKSNff/11/fLLL49lhLfkRhZLS9WrV9cPP/wg6e7UuiVKlDCm2K1cubJDHbYw3+bNmxUbGytXV1dj+uTnnnsuydHf0up8kpti16ZZs2aqU6eOZsyYoT///FNr1qzR+fPndeHCBU2ZMkVTpkxR+/btNX78+GRHV0tLWbNmVfHixVPc3vYaCwgI0MqVK1O8XUhIiNPlKbluqZUWz+mjqAvO5cyZM1X34L1S+lylxX3xuN7/AAAAAAAA/qsI8wEAAAAA8JRxcXFRgQIFtGnTJp0+fVoXL140Rk6z/Ve6O0LVwwREJKl27dqqXbu2JOnixYtavny5xo4dqxUrVujw4cNq2bKlduzY8VDHSM5PP/0k6e70nOvXr5eXl5fTdsmNGJcWEocdz549m2yA8ezZs2lyzMRTSK5Zs0Y9e/Y0Rq5zNr1khQoV5O7urlu3bmnLli1yd3fXjRs3JP07yp/NveeTnDt37ujixYuSlOxUqinl5+enrl27qmvXrpKkffv26ffff9fw4cN16tQpTZo0SWXKlFHv3r0f+liPgu01du3aNRUpUuSJCb0lfm7ud48mnvI3LZ7TZ0HikQjPnz+fbNv7rX+SpMV9ce/7RXJT/ib3fpI4oHvvyIj3sr133SsgIMB4fPr06WT3AQAAAAAA8DRiml0AAAAAAJ5Cd+7ccfq4dOnSxshJ69atS9NjZs6cWS1bttRff/2lxo0bS5IiIiJ08OBBu3ZpOXLTnj17JEmNGzdOMshntVq1ffv2NDumMyVKlDAeb9myJdm291ufUlmzZlWhQoUk3Q3z3bhxwzhP2yh8iXl5eals2bJG+8RT1t4b5vPw8FCBAgUkSZs2bUq2jh07duj27duS9NDhUGeKFCmi/v37a+PGjUqfPr0kaebMmXZtnqTRwMqUKSNJio2N1datW02u5l+Jn5v7PaebN292ut1/maenp/LlyydJ2rZtW7Jtn6Tn/X7S4r5Iq/e/DBkyGI8TT/V9r0uXLhkB4nuVKVPGeD+wjVQKAAAAAADwLCHMBwAAAADAU+bmzZvau3evpLsBrsQjFWXJkkUVK1aUJE2dOvWRjSBlG61Pki5cuGC3zjada2xs7EMfxxZUTGqUJkn6/fffH/kITeXKlTNGp0puOt+TJ09q6dKlaXZcWwjv1KlTmjJliu7cuSMPDw+VL1/eaXtbyC88PNwI87m6uqpKlSoObevUqSPpbmAycYjnXuPGjXPY5lHInTu3MWpYUveUlDb31cNo1KiRESYaNmyYqbUkVq5cOWN0uUmTJiU58tm1a9eMsGTRokWVPXv2x1XiE8/2vrZjxw4jSOzM5MmTH1dJDy0t7ouaNWsaI1BOmjQpyWNt2bJFkZGRSa7PmDGjUUtygcjp06cn+R6bKVMmY/r4mTNn6tSpU0nuJylp+TcKAAAAAAAgrRHmAwAAAADgKRMWFqaYmBhJUr169Rym+fzwww8lSdHR0WrevLmuXLmS5L5iY2M1cuRI3bp1y1gWERGhiIiIJLexWq1avny5pLsjpgUHB9utt4VAjhw5kmQgI6Vso8ctWLDA6VS6hw8fVs+ePR/qGCnh4eGhjh07Srp7fb7++muHNnfu3NEbb7yhuLi4NDtu4hH1vvrqK0l3p9P18PBw2t4W5lu/fr3Wrl0r6e5ojYlHxLLp0aOHMe1l165dFR0d7dBm6dKl+vnnn43jPvfccw98LvPmzUv2Xjx+/Lj+/vtvSVJISIjdusyZM8vd3V3S3efcTIUKFVKLFi0k3Q0dffvtt8m2P3r0qKZNm/bI6/Lw8FCXLl0kSZGRkfrkk08c2litVvXq1csIS/bq1euR1/U06dq1qxHUfOONN4z32cTmzJmjuXPnPu7SHlha3BfZs2dXkyZNJEnz5893GDlTkq5fv65u3brdtx7be9rvv//u9LW8f/9+ffTRR8nu4/3335d0N9jeokULXb16Ncm2J06ccFhm+xtl9nsJAAAAAACAM4T5AAAAAAB4wpw7d06RkZF2P1u3btW0adPUoEEDI0jm6empwYMHO2z/4osvqnfv3pLujtBWpEgRDRo0SH/99ZciIiK0bt06TZo0SV26dFH27NnVq1cvu6l6IyIiVKZMGVWoUEGffPKJFi5cqG3btmnjxo2aNm2a6tWrpwULFki6O/3tvSN72UZNOnfunN555x1t27ZNhw4d0qFDh3Ts2LFUXYvXX39d0t2R6SpVqqTx48dr8+bNCg8PV1hYmMqVK6dLly4Z08s+Sh9//LFy5col6W6YpE2bNlqyZIm2b9+u6dOnq3Llylq8eHGSo+Y9iGrVqhmPjxw5Isn5FLs2thH4oqOjjWkq751i16ZEiRJ69913JUk7d+5U2bJl9dNPP2nr1q1avXq1+vbtq4YNGyo+Pl7u7u4aM2bMQ53LsGHDlDNnTr366qv68ccftXr1akVERGjlypX6+uuvVaVKFSM81b17d7tt06VLZwQJx48fr2nTpmnfvn3GfeUs6PkojR49Wnnz5pUkvfvuuwoNDdXPP/+sjRs3aseOHVq+fLmGDh2qunXrKn/+/JozZ85jqevjjz826goLC1Pz5s21cOFCbd++XXPmzFGtWrWMUeUqVaqkrl27Ppa6nhblypXTG2+8IUnasGGDnnvuOU2aNEnbtm3TypUr9dZbb6lly5aqUKGCsc2TNAV0UtLivhg6dKgRCm7Tpo169uyplStXatu2bZowYYLKlSunHTt23Pf9780335QkxcTEqEaNGvr555+1fft2hYeHa+DAgXr++eeVKVMmZcmSJcl9NGrUSJ07d5Z0N7hctGhRffHFFwoPD1dERISWL1+uIUOGqEyZMka4PTHb36j58+drzJgxioyMNN5Lzp07d7/LCQAAAAAA8EilM7sAAAAAAABgb/To0Ro9enSybbJkyaIpU6aoRIkSTtd/9913ypQpkz755BOdOXNGYWFhSe4rffr0DqP7SXenTNyyZUuS21WuXNkYtS2xVq1a6YsvvtCRI0c0bNgwu6lIg4KCFBUVleQ+79W7d28tW7ZMS5cu1YEDB4wAh42Xl5cmT55sBFMeJT8/Py1ZskR16tTRmTNnNG3aNIcR1zp06KDQ0FBjFL+HFRQUpDx58uiff/4xliUX5gsICFDhwoWNEe6kpMN8kjRkyBDduHFDo0aN0uHDh52GePz8/DRz5kyVLl36wU4ikZs3b2rWrFmaNWuW0/UuLi4aNGiQmjZt6rBuwIABatSokS5evKg2bdrYrRs4cGCy93hay5Qpk9atW6dXX31Va9asUXh4uMLDw5Ns7+vr+1jqypAhg/766y81aNBAf//9t+bMmeM0SFilShXNnz/f6ev+v2748OE6deqU/vjjD+3Zs0cdOnSwWx8SEqKpU6cqf/78kuyngH5SpcV9ERwcrPnz56tx48a6du2aRo0apVGjRtm1+fjjj2WxWJKdQrdevXp6++239cMPP+jEiRPGqIE2efLk0fz589WgQYNkz2nMmDHy8vLSyJEjderUKX3wwQdO25UqVcphWd++fTV79mzFxsY6BIfbt2+viRMnJntsAAAAAACAR4mR+QAAAAAAeAq4u7srMDBQtWvX1tChQ7V//3698MILSba3WCz6+OOPdeDAAb333nsqX768MmXKJFdXV2XIkEFFixZV27ZtNWnSJJ0+fVpeXl7Gtq1bt9aiRYv0v//9T1WrVlVISIi8vb3l7u6uXLlyqXHjxvr111+1Zs0aZc6c2eHYPj4+Wr9+vXr37q0iRYrI29v7gc/bzc1NCxcu1A8//KDy5cvL29tbXl5eyp8/v7p3767t27cbU54+DsWKFdOePXv03nvvqUCBAvLw8FBAQIBq1qypqVOnasKECWl+zMRhPBcXF2NUqaQkHs3PYrHY/X4vFxcXjRw5UuHh4Wrbtq3y5MkjDw8P+fr6qnTp0vrggw908ODBZO+1lJo2bZrGjh2rNm3aqHTp0goMDFS6dOnk4+OjYsWKqUePHtqxY4fTkbQk6aWXXtJff/2lJk2aKEeOHHJzc3vomh5GYGCgwsPD9ccff6ht27bKmzevvL295ebmpixZsqhy5cp69913tXr1ao0fP/6x1RUcHKydO3dqxIgRCg0NVebMmeXm5qZs2bKpfv36+uWXXxQeHq5MmTI9tpqeJu7u7po/f74mTJigqlWrys/PT97e3ipSpIg++OADbdu2ze59z8/Pz8RqUy4t7osaNWpoz5496tGjh4KCguTu7q5s2bLppZde0pIlSzRo0KAU1fL9999r6tSpql69unx9feXl5aVChQqpf//+2r59u4oUKXLffbi6umr48OHaunWrunbtqoIFCyp9+vRyc3NTYGCgXnjhBX377bf65ptvHLYtXbq0NmzYoNatWxvveQAAAAAAAE8Ki9VqtZpdBAAAAAAAAAA8DdauXWuEZJcvX67atWubXBEAAAAAAACeFYzMBwAAAAAAAAApZJte283NTeXKlTO5GgAAAAAAADxLCPMBAAAAAAAAgKQLFy7oypUrSa7/888/NWbMGElS48aN5e/v/3gKAwAAAAAAwH8C0+wCAAAAAAAAgKRVq1apSZMmatGiherUqaN8+fLJxcVFx44d0/z58zVlyhTFx8fLy8tLERERKliwoNklAwAAAAAA4BlCmA8AAAAAAAAAdDfMV7NmzWTb+Pr6atasWXrhhRceU1UAAAAAAAD4ryDMBwAAAAAAAACSrl+/rjlz5mjJkiXauXOnzp8/rytXrsjX11f58+dX/fr11atXL2XJksXsUgEAAAAAAPAMIswHAAAAAAAAAAAAAAAAAIDJXMwuAAAAAAAAAAAAAAAAAACA/zrCfAAAAAAAAAAAAAAAAAAAmIwwHwAAAAAAAAAAAAAAAAAAJiPMBwAAAAAAAAAAAAAAAACAyQjzAQAAAAAAAAAAAAAAAABgMsJ8AAAAAAAAAAAAAAAAAACYjDAfAAAAAAAAAAAAAAAAAAAmI8wHAACQxiwWi8OPm5ubcuTIoWbNmmn9+vVml5gqq1atcjifdOnSKTAwUE2aNNHKlSsfWy0//PCDihUrJg8PD1ksFtWoUeOxHfthTZw4URaLRWFhYWaX4iAsLMzhOfbw8FDevHn1xhtv6NChQ2aXKIvFouDgYLPLAAAAAADcY8eOHbJYLMqZM6fT9QkJCfL395fFYlHXrl2dtgkPD5fFYlGxYsUeZamPRYcOHRw+Y3t5ealw4cL63//+pzNnzjyWOs6fP6/XX39d2bNnl6urqywWiyZOnPhYjp0WatSoIYvFoqioKLNLcRAcHOzwHPv6+uq5557TN998o7i4OFPre5L7oAAAAHB/6cwuAAAA4FnVvn174/G1a9e0c+dO/fbbb5o7d66mTJmiNm3aPLZaoqKiFBISotDQUK1ateqB9pEtWzbVr19fknTr1i1FRERo/vz5WrBggUaOHKkePXqkYcWOfvvtN/Xu3VsZM2ZU48aNlT59ehUuXPiRHvO/plSpUipdurQk6cqVK9q0aZPGjRun6dOna8WKFXruuefMLdAENWrU0OrVq3X06FHChAAAAADgRKlSpeTr66tTp07pyJEjyps3r9363bt36+rVq5KktWvXOt3HmjVrJEnVqlV7tMWmUFhYmAYNGqQJEyaoQ4cOD7SPKlWqKH/+/JKkc+fOaePGjRo2bJimT5+uDRs2PPLPmJ07d9aCBQtUsmRJ1a5dW+nSpTPqQdpo1qyZfHx8ZLVaFRUVpQ0bNmjr1q1asGCBli1bJnd3d7NLfKzSov8RAAAAhPkAAAAemXu/7ZyQkKAPPvhAX375pd5++221aNFCbm5u5hT3AAoXLmx3TlarVYMHD1ZYWJjeffddNWvWTFmzZn1kx583b54kafbs2apVq9YjO86j8vLLL6tixYoKCAgwu5QkNW3a1O5b29evX1erVq20cOFC9ejRQ1u3bjWvOAAAAADAE8nFxUWVK1fWkiVLtHbtWocwny2oV6pUKe3atUsXL15U5syZnbZ5UsJ8aaFLly52QcDz58/rxRdf1NatW9W3b1/Nnj37kR07Li5OixYtUnBwsHbs2CEXl6dvoq7Jkyfr5s2bSY74+CT45ptv7EKZERERqlGjhsLDwzV27Fj16tXLvOIAAADw1Hr6/u8dAADgKeXi4qLBgwcrXbp0unjxovbs2WN2SQ/FYrHoo48+Ur58+RQTE6OlS5c+0uOdOHFCkhz+UeBp4efnp8KFCz/RYb57+fj4aNSoUZKkbdu2Gc8BAAAAAACJ2UJ4zkbeW7t2rdzc3NSnTx9ZrVatW7fObn1CQoI2bNhgt59nUZYsWTR06FBJ0sKFC3X79u1HdqwzZ84oPj5eQUFBT2WQT5Ly5MmjwoULP1VfhC1durTeeecdSf9+KRUAAABIrafz/+ABAACeUu7u7vLz85Mk3blzx2H9zZs39cUXX6hMmTLy8fGRj4+PKlasqEmTJjnd37Fjx9SjRw8VLFhQ3t7eypQpk4oVK6Zu3bpp//79ku5ODRMSEiJJWr16tSwWi/HzoFPF2Li4uKhUqVKSpOPHjxvLrVarpk2bplq1ailjxozy9PRUkSJFFBYWpps3bzrsp0aNGrJYLIqKitLUqVNVsWJFZciQQf7+/goLC5PFYtHKlSslSSEhIUb9iafsuHjxovr166cCBQrI09NTmTJlUv369ZMMGVosFgUHBysuLk6DBw9W4cKF5eHhoaZNmzrUNGPGDD333HPy9vZWzpw59d577ykuLk6SdPjwYbVu3VpZs2aVt7e3atasqV27djkcb+LEibJYLHYj30lShw4djHMJDw9XrVq1lCFDBvn6+uqll17S3r17ndZ/48YN9e/fX8HBwfL09FT+/Pn1ySef6Pbt2woODpbFYnH+pKVSnjx5lClTJkn/Pse252TixInavHmzGjZsqMyZM8tisSgiIsLY9pdfflHVqlXl6+srb29vlSxZUl988YVu3brl9FiXLl1Sr169lCNHDnl6eqpo0aL6/vvvZbVanbZPXIczyV2Hffv2qXPnzgoODpaHh4eyZs2qKlWq6JtvvtGdO3cUFRUli8Wi1atXS7K/79Lq2gIAAADAs8IWwrONsJfYmjVrVLZsWdWtW9dpm507dyo6Olp58uRRnjx5jOVp/TlfkhYtWqS6desqZ86c8vDwUI4cOVS1alUNGjTIaBMcHGz83rFjR7vPgg87dWiZMmUkSbdu3dKFCxeM5ZcuXdKAAQNUtGhReXl5yc/PT7Vq1dIff/zhsA/b59UaNWooOjpa77zzjkJCQozAZHBwsIKCgiTZ9wPdO63vhg0b1KRJE2XJkkUeHh4KDg7Wm2++qVOnTjkcM3GfxoEDB9SqVStly5ZNLi4umjdvnl1NN27c0DvvvKPcuXPLy8tLZcuW1YIFC4x9zZo1S88//7zSp0+vbNmy6e2331ZMTIzDMRP3yyRmO5f4+Hh9+eWXKliwoDw8PJQ7d269//77io2NdXrtd+3apUaNGsnf318ZMmRQ9erVtWzZMq1atSpN+shsbM9x4n4yW/+E1WrV8OHDVapUKXl7e6t06dJGm9Te75K0bt061alTx+hDq1evnjZt2pRk++T6SZK7DrZ+vrp16ypz5szy9PRUcHCwXn31Vf3111+SHm3/IwAAwH8N0+wCAAA8RkePHtXFixfl5uam/Pnz2607d+6c6tatq127dikwMFChoaGyWq1av369OnTooK1bt2r48OFG++PHj6ts2bK6dOmSChQooBdffFHx8fE6duyYfvrpJ1WqVEmFChVS6dKl1axZM82ZM0fZsmVT/fr1jX1UrVr1oc/p2rVrkiQPDw9Jd79R/9prr2natGny8fFR+fLllTFjRm3dulWDBg3S4sWLtWrVKnl5eTns64svvtC4ceNUpUoVNWzYUMePH1fp0qXVvn17LVmyRGfPnlWzZs3k4+MjSQoMDJQknTx5UtWrV9eRI0eUJ08eNW3aVOfPn9fy5cv1559/6ttvv9X//vc/h+MlJCSoadOmCg8PV2hoqEqWLOkw1c/333+vESNGqEaNGqpfv77WrFmjr7/+WmfPntWHH36oypUrKyAgQLVq1dLevXu1atUq1axZU3v37lW2bNlSfB0XLFig77//XuXLl9eLL76oiIgILVq0SJs2bVJkZKRxrpIUGxurOnXqaOPGjcqUKZMaNmyo2NhYDRkyRNu3b0/xMVMiISFBN27ckPTvc2wTHh6url27qmDBgnrhhRd06tQp4xv/3bp109ixY+Xp6alatWrJ29tbq1at0gcffKAFCxZo+fLl8vb2NvZ1+fJlVa1aVfv27VNgYKCaNGmiS5cuqW/fvjp06FCantOsWbPUrl07xcbGqkiRInr55Zd19epV7dmzR/369VOXLl3k4+OT5H0HAAAAALBXoUIFeXh4aP/+/bpw4YIxKv2RI0d06tQptW7dWjlz5lRQUJDD6H3Opth9FJ/zR44cqV69esnV1VVVqlRRaGioLly4oH379iksLEwDBw6UJDVv3lzLly/Xzp07VaVKFbv+m8SfzR+ErQ9F+vcz9oEDB1SnTh0dP35cwcHBqlevnq5du6aNGzeqUaNG+vrrr9W3b1+HfcXExCg0NFTHjh1TaGioypYt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npOfn59Wr16tS5cuPdJj2dj+UWDJkiVOQ2xTpkyRlLpv+T/JgoKClDNnTp05c0br1693WD9r1iwTqvqXm5ubKlasKEmaPn26w/rIyEjt3LlTPj4+RpiuXLly8vLy0rZt24zXR2LO9iP923l94MABh3UrV67U7du3HZbXqVNHkjR27NgUnc/jeu0AAAAAwLPA9tl77dq1WrNmjbJly6YCBQrYtbGN5P/bb7/pwIEDSp8+vcqWLWusf5yf84sVK6aePXtKkin9KGnVH5Qatus2bdo0h3VxcXFGv8Kz0o9iu9/mzp0rq9XqsH7mzJmPuyQ7D3K/2x47q/3OnTuaM2eO02Ml14+ybNkyh2XlypWTv7+/du7cmaIvDNOHAgAAkDYI8wEAADxGO3bsMEJEL774orH8+eefV926dbVu3Tr17NlT0dHRDtvu3LlTS5YsMX7/5Zdf7DqabRYvXiyr1Wp8e1a6Ox2Lm5ubDh8+rPj4+LQ8JTseHh567733dO3aNb3yyitOg1knT57UL7/8kmbHzJs3r1566SVdu3ZNvXv3tgtwbdiwQaNHj5arq6vROf8s6N69uyTp3Xff1dWrV43lx44d0+DBg80qy/DWW29JksLCwuzugWvXrqlXr16yWq3q1q2bMb2Mj4+P2rVrp/j4eL311luKiYkxttm6datGjBjh9DjVq1eXdLdj2/ZNdUk6evSo3n77bafb9OnTR56envrpp580Y8YMu3VWq1XLli1TbGysscz2Dfn9+/en9PQBAAAA4D/LFjJav369duzYYQSpEnv++efl6uqqkSNHSpIqVqyodOn+nUjqUXzOv3nzpn744QeHsFRCQoLR15K4H+VxfRZs1qyZihYtql9//VWffPKJ3edR6e7n1HXr1mndunVpdszOnTvLy8tL06dP18KFC43lCQkJ+uCDD3Ty5EmVK1fO6XP3NKpVq5YKFCig/fv366uvvrJbN3HiRGOqZ7M8yP3eokULZc6cWatWrdKkSZOM5VarVQMHDtQ///zj9FihoaGSpC+++MKuf3DatGlOw50eHh763//+J+nufXPviH9Xr17V6tWrjd8fV/8jAADAs45pdgEAAB6RDh06GI/j4uJ07Ngxbdy4UQkJCWrUqJHatWtn137KlCmqX7++Ro0apalTp6p06dLKkSOHrl69ql27dun48ePq3bu36tevL0ma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UeM9/PDD2XvvvdOiRYvstNNOueGGG+pr+LCbb745Bx98cDp06JDy8vL06NEjEyZMWK6/rl275ogjjqjvd8stt8xuu+2Whx9+OEny85//PLvttltatGiRvfbaK3/84x+X6+O5557LsccemzZt2qRFixbZe++988tf/rJBm1tuuSVlZWV55JFHMmLEiHTo0CGdO3du1GMHAAAAAAAAADYcmQiZCDY/zYouANaHYcOGpWvXrrn00kvz5JNP5pprrslbb72VH/3oR0mScePGpaqqKvvtt18uuuiiNG/ePE899VQefPDBHHrooWs0xh//+McMGjQo22+/fcaNG5clS5bkoosuSvv27ZdrO2HChOy666456qij0qxZs9xzzz0ZMWJEamtrM3LkyAZtX3zxxZxwwgk57bTT8rnPfS5XXnlljjzyyHz/+9/P17/+9YwYMSJJcumll2bYsGF5/vnn06TJBzncZ599Nvvvv386deqU888/P1tttVXuvPPODBkyJD/72c/y6U9/usFYI0aMSPv27TNmzJiVptAXL16cxYsX19+eP3/+Gj0/AAAAAAAAAMCqLXsOvry8POXl5au8j0zE+stEwMaurK6urq7oImBtVVVVZdy4cTnqqKNy9913128fOXJkxo8fnz/96U9p2bJlunfvnqOPPjqTJk2qP+gnSV1d3XIJ8pU56qij8pvf/CYvvPBCOnbsmOSDN51ddtkl//rXv/LhX6WFCxdmyy23bHD/QYMG5YUXXshLL71Uv61r166ZM2dOnnjiifTp0ydJMnny5AwcODBbbrllnnvuuXzsYx9Lktx444057bTT8tBDD6V///5JkgEDBuSNN97ItGnT6t/c6+rq0rdv38ydOzf/93//l+SDFPrJJ5+cvn375uGHH07Tpk1X+5wua+rUqamoqFij5woA2Pz07Nmz6BIA2MjMnz8/rVq1SnV1dSorK4suB9YbcxuAVZk+fXrRJQAAG6mampr6XMCHjR07NlVVVSu8j0zE+s9EwMbOZXbZJCyb7D7jjDOSJPfdd1/uuuuu1NbWZsyYMQ3etJKs8ZvWkiVLMmXKlAwZMqT+TStJdt555wwePHi59h9+06qurs6bb76ZAw88MDNnzkx1dXWDtj169Gjwhr3PPvskSQ4++OD6N60Pb585c2aS5J///GcefPDBDBs2LO+8807efPPNvPnmm5k3b14GDhyYF154Ia+88kqDsb70pS+t9k1r9OjRqa6urv95+eWXV9keAAAAAAAAAFgzL7/8coNz8qNHj17tfWQi1l8mAjZ2LrPLJuHjH/94g9s77bRTmjRpktmzZ6esrCxNmjRJjx491rr/N954IwsXLszOO++83L4VbXv88cczduzYTJ06Ne+++26DfdXV1WnVqlX97Q+/OSWp39elS5cVbn/rrbeSfJCAr6ury4UXXpgLL7xwpXV36tSp/vaOO+640se41Jos4QsAAAAAAAAANF5lZWWjV3qXiVh/mQjY2AnzsUla03T5R+Gll17Kpz71qXziE5/Id7/73XTp0iXNmzfPfffdl6uuuiq1tbUN2q8sFb6y7UuXrl3az7nnnpuBAweusO2yb6rLLnMLAAAAAAAAAJQWmYgPyESwKRLmY5PwwgsvNEhYv/jii6mtrU3Xrl3TrFmz1NbWZsaMGdljjz3Wqv8OHTqkRYsWefHFF5fbt+y2e+65J4sXL84vf/nLBgnzhx56aK3GXplu3bolSbbYYosMGDBgvfYNAAAAAAAAAGwcZCJkIth8NFl9E9j4XX/99Q1uX3vttUmSwYMHZ8iQIWnSpEkuuuii5RLgSxPdq9O0adMMGDAgd911V1599dX67S+++GLuv//+5dou23d1dXVuvvnmNX9Aa6BDhw7p379/brjhhrz22mvL7Z87d+56HQ8AAAAAAAAA2PBkImQi2HxYmY9NwqxZs3LUUUdl0KBBmTp1am6//faccMIJ2X333ZMkF1xwQb75zW+mX79+OeaYY1JeXp5p06alY8eOufTSS9dojKqqqkyePDn7779/Tj/99CxZsiTXXXddevbsmWeeeaa+3aGHHprmzZvnyCOPzGmnnZaampr84Ac/SIcOHVb4BrMurr/++vTt2ze77bZbvvSlL6Vbt255/fXXM3Xq1Pz973/Pn/70p/U6HgAAAAAAAACwYclEyESw+bAyH5uEiRMnpry8POeff37uvffejBo1KjfddFP9/osuuig//OEPs3DhwlxwwQUZM2ZM5syZk0996lNrPMZee+2V+++/P9tss00uvPDC3HTTTbnooovyqU99Ki1atKhv171790yaNCllZWU599xz8/3vfz+nnnpqzjrrrPX6mJOkR48e+f3vf5/DDz88t9xyS0aOHJnvf//7adKkScaMGbPe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lVmwYEG22mqrostYL5o2bZqmTZuu1X3nzp2bpPi5sr40b9686BLWysb6ewIAAAAAAAAArJyMzurJ6HxARmfjsL5+T5qsacOTTjopBx54YJJk6NChKSsrS//+/fPnP/85J510Urp165YWLVpku+22yxe+8IXMmzevwf3feeednH322enatWvKy8vToUOHHHLIIXn66aeXG2vGjBk56KCD0rJly3Tq1CmXX355g/0rux73gw8+mH79+mWrrbZK69atc/TRR+evf/1rgzZVVVUpKyvLiy++mJNOOimtW7dOq1atcvLJJ+fdd99d06ej/jmpqKjISy+9lMMOOyxbb711PvvZzyb54IDxla98JV26dEl5eXm6d++eK6+8MnV1dat9HMny11FeWvdzzz2XYcOGpbKyMm3bts1ZZ52VRYsWNbjvzTffnIMPPjgdOnRIeXl5evTokQkTJjTqsSUrvnZz165dc8QRR+Sxxx5L796906JFi3Tr1i0/+tGPGtS6dGnXr371qykrK0vXrl2TJHPmzMmIESPSvXv3bLnllmnbtm2GDh263PWhl479+OOP55xzzkn79u2z1VZb5dOf/nT9QWhpPc8++2weeeSRlJWV1c/LpWbOnJmhQ4emTZs2admyZfbdd9/ce++9jX4ulr0e98qua/3www+nrKwsDz/8cJJk1KhRqaioWOHcOv7447PddttlyZIl9dvuv//++jm89dZb5/DDD8+zzz7b4H5L590rr7ySIUOGpKKiIu3bt8+5557boK9k+XkEAAAAAAAAAGzcZHRW/JzI6MjofNimmtFZ45X5TjvttHTq1CmXXHJJzjzzzHzyk5/MtttumwceeCAzZ87MySefnO222y7PPvtsbrzxxjz77LN58sknU1ZWliT57//+70yaNCmjRo1Kjx49Mm/evDz22GP561//mj333LN+nLfeeiuDBg3KMccck2HDhmXSpEk577zzsttuu2Xw4MErrW/KlCkZPHhwunXrlqqqqixcuDDXXntt9t9//zz99NP1E3WpYcOGZccdd8yll16ap59+Ov/zP/+TDh065Nvf/najnsB//etfGThwYPr27Zsrr7wyLVu2TF1dXY466qg89NBDOeWUU7LHHnvk17/+db761a/mlVdeyVVXXdWoMZatu2vXrrn00kvz5JNP5pprrslbb73V4Bd1woQJ2XXXXXPUUUelWbNmueeeezJixIjU1tZm5MiRaz32Ui+++GKOPfbYnHLKKRk+fHh++MMf5qSTTspee+2VXXfdNcccc0xat26dL3/5yzn++ONz2GGHpaKiIkkybdq0PPHEE/nMZz6Tzp07Z/bs2ZkwYUL69++fGTNmpGXLlg3GOuOMM7LNNttk7NixmT17dq6++uqMGjUqEydOTJJcffXVOeOMM1JRUZELLrggSbLtttsmSV5//fXst99+effdd3PmmWembdu2ufXWW3PUUUdl0qRJ+fSnP73Oz8XqHHfccbn++utz7733ZujQofXb33333dxzzz056aST6pPVt912W4YPH56BAwfm29/+dt59991MmDAhffv2zR//+McGc3jJkiUZOHBg9tlnn1x55ZWZMmVKvvOd72SnnXbK6aefvk41L168OIsXL66/PX/+/HXqDwAAAAAAAAD4wLLn4MvLy5e7tKqMzorJ6MjorEopZnRWZI3DfH369MnixYtzySWXpF+/fjn22GOTJH379s1XvvKVBm333XffHH/88XnsscfSr1+/JMm9996bL33pS/nOd75T3+5rX/vacuO8+uqr+dGPfpQTTzwxSXLKKadkhx12yE033bTKA8VXv/rVtGnTJlOnTk2bNm2SJEOGDMl//ud/ZuzYsbn11lsbtP/P//zP3HTTTfW3582bl5tuuqnRB4rFixdn6NChufTSS+u33X333XnwwQfzrW99q37yjhw5MkOHDs33vve9jBo1KjvttFOjxllqxx13zN13313fZ2VlZcaPH59zzz03vXr1SpI88sgj2XLLLevvM2rUqAwaNCjf/e5318uB4vnnn8+jjz5a/9oOGzYsXbp0yc0335wrr7wyvXr1SmVlZb785S9nzz33zOc+97n6+x5++OH1c2epI488Mn369MnPfvaz+td9qbZt22by5Mn1bzi1tbW55pprUl1dnVatWmXIkCH5xje+kXbt2jUYJ0kuu+yyvP766/ntb3+bvn37Jkm+9KUvpVevXjnnnHNy9NFHp0mTNV6ccq307ds3nTp1ysSJExscKO69994sWLAgxx13XJKkpqYmZ555Zr74xS/mxhtvrG83fPjwdO/ePZdcckmD7YsWLcpxxx2XCy+8MMkHb8R77rlnbrrppnU+UFx66aUZN27cOvUBAAAAAAAAACyvS5cuDW6PHTt2udW8ZHRWTEZHRmdVSjGjsyLr/Cx9eEIuWrQob775Zvbdd98kabA8Z+vWrfPUU0/l1VdfXWV/FRUVDV7w5s2bp3fv3pk5c+ZK7/Paa6/lmWeeyUknnVR/kEiSXr165ZBDDsl999233H3++7//u8Htfv36Zd68eWu1CtmyL8x9992Xpk2b5swzz2yw/Stf+Urq6upy//33N3qMpZb9RT/jjDPqx1zqw69JdXV13nzzzRx44IGZOXNmqqur13rspXr06FF/kEiS9u3bp3v37qt8jVZU2/vvv5958+Zl5513TuvWrVe4nOupp55af5BIPnidlixZkjlz5qx2rPvuuy+9e/euP0gkH8yvU089NbNnz86MGTNW28e6Kisry9ChQ3PfffelpqamfvvEiRPTqVOn+toeeOCBvP322zn++OPz5ptv1v80bdo0++yzTx566KHl+l7RHF6T12B1Ro8enerq6vqfl19+eZ37BAAAAAAAAACSl19+ucE5+dGjR6/xfWV0ZHRkdFauFDM6K7LOYb5//vOfOeuss7Lttttmyy23TPv27bPjjjsmSYNJefnll2f69Onp0qVLevfunaqqqhU+qM6dOzeYGEmyzTbb5K233lppDUsnTffu3Zfbt8suu+TNN9/MggULGmz/2Mc+ttwYSVY5zoo0a9YsnTt3Xq6ejh07Zuutt16ulg/XuzY+/vGPN7i90047pUmTJg2uC/34449nwIAB9dclb9++fb7+9a8nyXo5UCz73CWrf42WWrhwYcaMGVN/nfJ27dqlffv2efvtt1dY27q8TnPmzFnpnFi6f0M47rjjsnDhwvzyl79M8kHC97777qu/rn2SvPDCC0mSgw8+OO3bt2/wM3ny5LzxxhsN+mzRokXat2/fYNuavgarU15ensrKygY/AAAAAAAAAMC6W/Z8/LKX2F0VGR0ZnURGZ1VKLaOzImt8md2VGTZsWJ544ol89atfzR577JGKiorU1tZm0KBBqa2tbdCuX79++cUvfpHJkyfniiuuyLe//e38/Oc/b7A059JrEy+rrq5uXUttYH2NU15evtbLQC57QFxqyZIla93HSy+9lE996lP5xCc+ke9+97vp0qVLmjdvnvvuuy9XXXVVg9dkba3Lc3fGGWfk5ptvztlnn50+ffqkVatWKSsry2c+85kV1rah5kNjNea123fffdO1a9fceeedOeGEE3LPPfdk4cKF9ct3Jql/7Lfddlu222675fpo1qzhr+rKnhcAAAAAAAAAYNMkoyOjs5SMzqab0VmnMN9bb72V3/zmNxk3blzGjBlTv31pgnFZ22+/fUaMGJERI0bkjTfeyJ577pmLL754ldfZXhM77LBDkg+uE72s5557Lu3atctWW221TmM0tp4pU6bknXfeaZD8fe655+r3J/9OsL799tsN7r+qNOoLL7xQn6pOkhdffDG1tbXp2rVrkuSee+7J4sWL88tf/rJBYnZFS0AWYdKkSRk+fHiD67IvWrRoueegMVb2S7vDDjusdE4s3b+2GvvaDRs2LN/73vcyf/78TJw4MV27dq1f6jZJ/fXZO3TokAEDBqx1XQAAAAAAAADApkdGZ+X1yOismIxOaWZ01ukyu0uTh8smMK+++uoGt5csWbLc8owdOnRIx44ds3jx4nUpIckHB6A99tgjt956a4MXbvr06Zk8eXIOO+ywdR6jMQ477LAsWbIk1113XYPtV111VcrKyuoPjJWVlWnXrl0effTRBu3Gjx+/0r6vv/76BrevvfbaJKnvc0WvSXV1dW6++ea1fDTrV9OmTZebL9dee22jks7L2mqrrVZ4oDnssMPyu9/9LlOnTq3ftmDBgtx4443p2rVrevTosdZjLv3F/vBrt2TJktx4440rbH/cccdl8eLFufXWW/OrX/0qw4YNa7B/4MCBqayszCWXXJL3339/ufvPnTt3rWsFAAAAAAAAAEqbjM6KyeisnIxOaWZ01mllvsrKyhxwwAG5/PLL8/7776dTp06ZPHlyZs2a1aDdO++8k86dO+fYY4/N7rvvnoqKikyZMiXTpk1rkP5cF1dccUUGDx6cPn365JRTTsnChQtz7bXXplWrVqmqqlovY6ypI488MgcddFAuuOCCzJ49O7vvvnsmT56cu+++O2effXb9JEuSL37xi7nsssvyxS9+MXvvvXceffTR/N///d9K+541a1aOOuqoDBo0KFOnTs3tt9+eE044IbvvvnuS5NBDD03z5s1z5JFH5rTTTktNTU1+8IMfpEOHDnnttdc+8se+OkcccURuu+22tGrVKj169MjUqVMzZcqUtG3bdq373GuvvTJhwoR861vfys4775wOHTrk4IMPzvnnn5+f/OQnGTx4cM4888y0adMmt956a2bNmpWf/exna730apLsuuuu2XfffTN69Oj885//TJs2bfLTn/40//rXv1bYfs8998zOO++cCy64IIsXL26wfGfywe/ShAkTcuKJJ2bPPffMZz7zmbRv3z5/+9vfcu+992b//fdf7o0HAAAAAAAAANg8yOismIzOysnolGZGZ53CfEny4x//OGeccUauv/761NXV5dBDD83999+fjh071rdp2bJlRowYkcmTJ+fnP/95amtrs/POO2f8+PE5/fTT17WEJMmAAQPyq1/9KmPHjs2YMWOyxRZb5MADD8y3v/3tBktebghNmjTJL3/5y4wZMyYTJ07MzTffnK5du+aKK67IV77ylQZtx4wZk7lz52bSpEm58847M3jw4Nx///3p0KHDCvueOHFixowZk/PPPz/NmjXLqFGjcsUVV9Tv7969eyZNmpRvfOMbOffcc7Pddtvl9NNPT/v27fOFL3zhI33ca+J73/temjZtmjvuuCOLFi3K/vvvnylTpmTgwIFr3eeYMWMyZ86cXH755XnnnXdy4IEH5uCDD862226bJ554Iuedd16uvfbaLFq0KL169co999yTww8/fJ0fyx133JHTTjstl112WVq3bp1TTjklBx10UA455JAVtj/uuONy8cUXZ+edd86ee+653P4TTjghHTt2zGWXXZYrrrgiixcvTqdOndKvX7+cfPLJ61wvAAAAAAAAAFC6ZHSWJ6OzcjI6pZnRKatbdj1FNkpVVVUZN25c5s6dm3bt2hVdzmanX79+KS8vz5QpU4ouZYObP39+WrVqlalTp6aioqLocgAAADZ7PXv2LLqENbL082R1dXUqKyuLLgfWm1Kc29OnTy+6BAAAgM1eTU1N+vTpU1KfJzdXMjrF2pwzOkmy9msYwmbktddec4AGAAAAAAAAAICP0Oae0Vnny+xuiqqrq7Nw4cJVttluu+02UDXrX01NTWpqalbZpn379mnatOkGqqg4c+fOzZIlS1a6f+bMmfn5z3+el156Keedd94GrAwAAAAAAAAAYNMmoyOjs5SMzgeE+VbgrLPOyq233rrKNqV8deIrr7wy48aNW2WbWbNmpWvXrhumoAJ98pOfzJw5c1a6v2vXrlm4cGHOPvvswq+JDQAAAAAAAACwKZHRkdFZSkbnA2V1pTzjPyIzZszIq6++uso2AwYM2EDVrH8zZ87MzJkzV9mmb9++adGixQaqqDiPP/74KhPe22yzTfbaa68NWNHGZ/78+WnVqlWmTp2aioqKossBAADY7PXs2bPoEtbI0s+T1dXVqaysLLocWG9KcW5Pnz696BIAAAA2ezU1NenTp09JfZ7cEGR0ZHSWktH5gDAfsErCfAAAABsXYT4oVinObWE+AACA4gnzAWuiSdEFAAAAAAAAAAAAwOZOmA8AAAAAAAAAAAAKJswHAAAAAAAAAAAABRPmAwAAAAAAAAAAgIIJ8wEAAAAAAAAAAEDBhPkAAAAAAAAAAACgYMJ8AAAAAAAAAAAAUDBhPgAAAAAAAAAAACiYMB8AAAAAAAAAAAAUTJgPAAAAAAAAAAAACibMBwAAAAAAAAAAAAUT5gMAAAAAAAAAAICCCfMBAAAAAAAAAABAwYT5AAAAAAAAAAAAoGDCfAAAAAAAAAAAAFAwYT4AAAAAAAAAAAAomDAfAAAAAAAAAAAAFEyYDwAAAAAAAAAAAAomzAcAAAAAAAAAAAAFE+YDAAAAAAAAAACAggnzAQAAAAAAAAAAQMGE+QAAAAAAAAAAAKBgwnwAAAAAAAAAAABQsGZFFwCUhh49eqSysrLoMgAAAABopJ49exZdAgAAwGZv/vz5RZcAlAAr8wEAAAAAAAAAAEDBhPkAAAAAAAAAAACgYMJ8AAAAAAAAAAAAUDBhPgAAAAAAAAAAACiYMB8AAAAAAAAAAAAUTJgPAAAAAAAAAAAACibMBwAAAAAAAAAAAAUT5gMAAAAAAAAAAICCCfMBAAAAAAAAAABAwYT5AAAAAAAAAAAAoGDCfAAAAAAAAAAAAFAwYT4AAAAAAAAAAAAomDAfAAAAAAAAAAAAFEyYDwAAAAAAAAAAAAomzAcAAAAAAAAAAAAFE+YDAAAAAAAAAACAggnzAQAAAAAAAAAAQMGaFV0AUBpmzJiRioqKossAAADY7PXs2bPoEoASM3369KJLAAAA2OzV1NQUXQJQAqzMBwAAAAAAAAAAAAUT5gMAAAAAAAAAAICCCfMBAAAAAAAAAABAwYT5AAAAAAAAAAAAoGDCfAAAAAAAAAAAAFAwYT4AAAAAAAAAAAAomDAfAAAAAAAAAAAAFEyYDwAAAAAAAAAAAAomzAcAAAAAAAAAAAAFE+YDAAAAAAAAAACAggnzAQAAAAAAAAAAQMGE+QAAAAAAAAAAAKBgwnwAAAAAAAAAAABQMGE+AAAAAAAAAAAAKJgwHwAAAAAAAAAAABRMmA8AAAAAAAAAAAAKJswHAAAAAAAAAAAABRPmAwAAAAAAAAAAgIIJ8wEAAAAAAAAAAEDBhPkAAAAAAAAAAACgYMJ8AAAAAAAAAAAAUDBhPgAAAAAAAAAAACiYMB8AAAAAAAAAAAAUTJgPAAAAAAAAAAAACibMBwAAAAAAAAAAAAUT5gMAAAAAAAAAAICCCfMBAAAAAAAAAABAwYT5AAAAAAAAAAAAoGDCfAAAAAAAAAAAAFAwYT4AAAAAAAAAAAAomDAfrMLrr7+eY489Nm3btk1ZWVmuvvrqoksCAAAAAAAAAGAZMh5sCoT5YBW+/OUv59e//nVGjx6d2267LYMGDVov/c6YMSNVVVWZPXv2eulvRZ577rl87Wtfyx577JGtt94622+/fQ4//PD8/ve//8jGBAAAAAAAAAAogowHm4JmRRcAG7MHH3wwRx99dM4999z12u+MGTMybty49O/fP127dl2vfS/1P//zP7npppvyX//1XxkxYkSqq6tzww03ZN99982vfvWrDBgw4CMZFwAAAAAAAABgQ5PxYFMgzAer8MYbb6R169brrb9FixalefPm662/VTn++ONTVVWVioqK+m1f+MIXsssuu6SqqsqBHgAAAAAAAADYZMh4sClwmd3N0CuvvJJTTjklHTt2THl5eXbcccecfvrpee+99/LPf/4z5557bnbbbbdUVFSksrIygwcPzp/+9Kfl+rn22muz6667pmXLltlmm22y995758c//nH9/jlz5mTEiBHp3r17ttxyy7Rt2zZDhw5d62VHb7/99vTu3bt+vAMOOCCTJ09u0Gb8+PHZddddU15eno4dO2bkyJF5++23G7Tp379/evbsmRkzZuSggw5Ky5Yt06lTp1x++eX1bW655ZaUlZWlrq4u119/fcrKylJWVla/f+bMmRk6dGjatGmTli1bZt999829997bYJyHH344ZWVl+elPf5pvfOMb6dSpU1q2bJlrrrkmQ4cOTZIcdNBB9X0//PDDjXocq7PXXns1OMgnSdu2bdOvX7/89a9/bVRfAAAAAAAAAMCGJ+Mh4yHjsXmxMt9m5tVXX03v3r3z9ttv59RTT80nPvGJvPLKK5k0aVLefffdzJw5M3fddVeGDh2aHXfcMa+//npuuOGGHHjggZkx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zWOPPZYjjjgiF110UU4++eTst99++ctf/pI77rijQYI4SQ499NBst9122X///bPtttvmr3/9a6677rocfvjh2XrrrZMkRxxxRG677ba0atUqPXr0yNSpUzNlypS0bdu2UTXvvPPOueCCC/LNb34z/fr1yzHHHJPy8vJMmzYtHTt2zKWXXpr27dtn9OjRGTduXAYNGpSjjjoqzz//fMaPH59PfvKT+dznPrfensPzzz8/P/nJTzJ48OCceeaZadOmTW699dbMmjUrP/vZz9KkyeozsnvssUeaNm2ab3/726murk55eXkOPvjgdOjQYb09jquvvjrjx49Pnz590rJly9x+++0N9n/605+uf8MBAAAAAAAAADYuMh7rTsaDUiPMt5np1KlTnnrqqVx44YW54447Mn/+/HTq1CmDBw9Oy5Yt8/Wvfz0LFizIj3/840ycODF77rln7r333px//vkN+jnttNNyxx135Lvf/W5qamrSuXPnnHnmmfnGN75R3+Z73/temjZtmjvuuCOLFi3K/vvvnylTpmTgwIGNrvuiiy7KjjvumGuvvTYXXHBBWrZsmV69euXEE0+sb1NVVZX27dvnuuuuy5e//OW0adMmp556ai655JJsscUWa/+kLWPbbbfNE088kfPOOy/XXnttFi1alF69euWee+5Z41T1dtttl+9///u59NJLc8opp2TJkiV56KGH0qFDh/X2OJ555pkkydSpUxskzJeaNWuWAz0AAAAAAAAAbKRkPNadjAelpqxu2TUyAT5k/vz5adWqVaZOnZqKioqiywEAANjs9ezZs+gS1sjSz5PV1dWprKwsuhxYb0pxbk+fPr3oEgAAADZ7NTU16dOnT0l9ngQ2vNWvFQkAAAAAAAAAAAB8pFxml0L94x//WOX+LbfcMq1atdpA1ZSGhQsXprq6epVt2rRpk+bNm2+gigAAAAAAAACATZ2MR+PJeNBYwnwUavvtt1/l/uHDh+eWW27ZMMWUiIkTJ+bkk09eZZuHHnoo/fv33zAFAQAAAAAAAACbPBmPxpPxoLGE+SjUAw88sMr9HTt23ECVlI6BAweu9nnbfffdN1A1AAAAAAAAAMDmQMaj8WQ8aCxhPgo1YMCAoksoOdtvv/1q0+4AAAAAAAAAAOuTjEfjyXjQWE2KLgAAAAAAAAAAAAA2d8J8AAAAAAAAAAAAUDBhPgAAAAAAAAAAACiYMB8AAAAAAAAAAAAUTJgPAAAAAAAAAAAACibMBwAAAAAAAAAAAAUT5gMAAAAAAAAAAICCCfMBAAAAAAAAAABAwYT5AAAAAAAAAAAAoGDCfAAAAAAAAAAAAFAwYT4AAAAAAAAAAAAomDAfAAAAAAAAAAAAFEyYDwAAAAAAAAAAAAomzAcAAAAAAAAAAAAFE+YDAAAAAAAAAACAggnzAQAAAAAAAAAAQMGE+QAAAAAAAAAAAKBgwnwAAAAAAAAAAABQMGE+AAAAAAAAAAAAKJgwHwAAAAAAAAAAABRMmA8AAAAAAAAAAAAKJswHAAAAAAAAAAAABRPmAwAAAAAAAAAAgII1K7oAoDT06NEjlZWVRZcBAAAAQCP17Nmz6BIAAAA2e/Pnzy+6BKAEWJkPAAAAAAAAAAAACibMBwAAAAAAAAAAAAUT5gMAAAAAAAAAAICCCfMBAAAAAAAAAABAwYT5AAAAAAAAAAAAoGDCfAAAAAAAAAAAAFAwYT4AAAAAAAAAAAAoWLOiCwA2bnV1dUmS+fPnF1wJAAAApWTp58ilnythU+G7EgAAANaG70qANSHMB6zSvHnzkiRdunQpuBIAAABK0TvvvJNWrVoVXQasN++8804S35UAAACwdubNm+e7EmClhPmAVWrTpk2S5G9/+5s/KCgp8+fPT5cuXfLyyy+nsrKy6HJgjZi3lCpzl1Jk3lKqSmnu1tXV5Z133knHjh2LLgXWq44dO+bll1/O1ltvnbKysqLLWa1SOm7Ah5m7lCLzllJk3lKqzF1KUXV1dT72sY/Vn4MHWBFhPmCVmjRpkiRp1aqVP4QpSZWVleYuJce8pVSZu5Qi85ZSVSpz1z8KY1PUpEmTdO7cuegyGq1UjhuwLHOXUmTeUorMW0qVuUspWnoOHmBFHCEAAAAAAAAAAACgYMJ8AAAAAAAAAAAAUDBhPmCVysvLM3bs2JSXlxddCjSKuUspMm8pVeYupci8pVSZu0BjOW5QqsxdSpF5SykybylV5i6lyLwF1kRZXV1dXdFFAAAAAAAAAAAAwObMynwAAAAAAAAAAABQMGE+AAAAAAAAAAAAKJgwHwAAAAAAAAAAABRMmA8AAAAAAAAAAAAKJswHAAAAAAAAAAAABRPmA1bp+uuvT9euXdOiRYvss88++d3vfld0SbBKjz76aI488sh07NgxZWVlueuuu4ouCVbr0ksvzSc/+clsvfXW6dChQ4YMGZLnn3++6LJglSZMmJBevXqlsrIylZWV6dOnT+6///6iy4JGueyyy1JWVpazzz676FJglaqqqlJWVtbg5xOf+ETRZQEbOccONgX+XqNU+IxMKfKdJKXKeSBKmXPvwJoQ5gNWauLEiTnnnHMyduzYPP3009l9990zcODAvPHGG0WXBiu1YMGC7L777rn++uuLLgXW2COPPJKRI0fmySefzAMPPJD3338/hx56aBYsWFB0abBSnTt3zmWXXZY//OEP+f3vf5+DDz44Rx99dJ599tmiS4M1Mm3atNxwww3p1atX0aXAGtl1113z2muv1f889thjRZcElADHDkqZv9coJT4jU4p8J0mpch6IUuXcO7Cmyurq6uqKLgLYOO2zzz755Cc/meuuuy5JUltbmy5duuSMM87I+eefX3B1sHplZWX5xS9+kSFDhhRdCjTK3Llz06FDhzzyyCM54IADii4H1libNm1yxRVX5JRTTim6FFilmpqa7Lnnnhk/fny+9a1vZY899sjVV19ddFmwUlVVVbnrrrvyzDPPFF0KUEIcOyhl/l5jU+AzMqXGd5KUIueBKCXOvQNrysp8wAq99957+cMf/pABAwbUb2vSpEkGDBiQqVOnFlgZwKavuro6yQdf+kIpWLJkSX76059mwYIF6dOnT9HlwGqNHDkyhx9+eIO/dWFj98ILL6Rjx47p1q1bPvvZz+Zvf/tb0SUBJcCxg1Ll7zVKmc/IlCrfSQJ8dJx7BxqjWdEFABunN998M0uWLMm2227bYPu2226b5557rqCqADZ9tbW1Ofvss7P//vunZ8+eRZcDq/SXv/wlffr0yaJFi1JRUZFf/OIX6dGjR9FlwSr99Kc/zdNPP51p06YVXQqssX322Se33HJLunfvntdeey3jxo1Lv379Mn369Gy99dZFlwdspBw7KFX+XqNU+YxMKfOdJMBHy7l3oDGE+QAANiIjR47M9OnT89hjjxVdCqxW9+7d88wzz6S6ujqTJk3K8OHD88gjjzhZwUbr5ZdfzllnnZUHHnggLVq0KLocWGODBw+u//9evXpln332yQ477JA777zTZduAlXLsoBT5e41S5jMypcx3kgAAGw9hPmCF2rVrl6ZNm+b1119vsP3111/PdtttV1BVAJu2UaNG5f/9v/+XRx99NJ07dy66HFit5s2bZ+edd06S7LXXXpk2bVq+973v5YYbbii4MlixP/zhD3njjTey55571m9bsmRJHn300Vx33XVZvHhxmjZtWmCFsGZat26d//iP/8iLL75YdClACXHsoBT4e41S5jMypcp3kgAfPefegcZoUnQBwMapefPm2WuvvfKb3/ymflttbW1+85vfpE+fPgVWBrDpqaury6hRo/KLX/wiDz74YHbccceiS4K1Ultbm8WLFxddBqzUpz71qfzlL3/JM888U/+z995757Of/WyeeeYZJ4YpGTU1NXnppZey/fbbF10KUEIcOygF/l5jU+IzMhs730kCbDjOvQONYWU+YKXOOeecDB8+PHvvvXd69+6dq6++OgsWLMjJJ59cdGmwUjU1NQ1WGZg1a1aeeeaZtGnTJh/72McKrAxWbuTIkfnxj3+cu+++O1tvvXX+8Y9/JElatWqVLbfcsuDqYMVGjx6dwYMH52Mf+1jeeeed/PjHP87DDz+cX//610WXBiu19dZbp2fPng22bbXVVmnbtu1y22Fjcu655+bII4/MDjvskFdffTVjx45N06ZNc/zxxxddGrARc+ygFPl7jVLlMzKlyHeSlCrngShVzr0Da0qYD1ip4447LnPnzs2YMWPyj3/8I3vssUd+9atfZdttty26NFip3//+9znooIPqb59zzjlJkuHDh+eWW24pqCpYtQkTJiRJ+vfv32D7zTffnJNOOmnDFwRr4I033sjnP//5vPbaa2nVqlV69eqVX//61znkkEOKLg1gk/P3v/89xx9/fObNm5f27dunb9++efLJJ9O+ffuiSwM2Yo4dABuOz8iUIt9JUqqcB6JUOfcOrKmyurq6uqKLAAAAAAAAAAAAgM1Zk6ILAAAAAAAAAAAAgM2dMB8AAAAAAAAAAAAUTJgPAAAAAAAAAAAACibMBwAAAAAAAAAAAAUT5gMAAAAAAAAAAICCCfMBAAAAAAAAAABAwYT5AAAAAAAAAAAAoGDCfAAAAAAAAAAAAFAwYT4AAAAAAAAAAAAomDAfAAAAAAAAAAAAFEyYDwAAAAAAAAAAAAr2/wGGY2aoYjav8wAAAABJRU5ErkJggg==\n" }, "metadata": {} } ] }, { "cell_type": "markdown", "source": [ "## Conclusion" ], "metadata": { "id": "J2CnXYGT9Tc2" } }, { "cell_type": "markdown", "source": [ "**Bagaimana performa penjualan dan payment Value dalam beberapa bulan terakhir ?**\n", "- Performa Penjualan beberapa bulan terakhir sangat fluktuatif akan tetapi untuk bulan erakhir mengalami penurunan yang sangat tajam.\n", "\n", "**Produk apa yang paling banyak dan paling sedikit dicari ?**\n", "- Produk yang paling banyak dicari adalah **cama mesa banho** sebanyak 3639\n", "- Dan produk yang paling sedikit dicari adalah **cds dvds musicais** sebanyak 1\n", "\n" ], "metadata": { "id": "f73FBkLw9V8C" } }, { "cell_type": "markdown", "source": [ "**Menyimpan Berkas**" ], "metadata": { "id": "O9ks1dpNzisA" } }, { "cell_type": "code", "source": [ "all_dataset.to_csv(\"all_dataset.csv\", index=False)" ], "metadata": { "id": "b32P72p99VN9" }, "execution_count": null, "outputs": [] } ] }