diff --git "a/Proyek_Tugas_Akhir.ipynb" "b/Proyek_Tugas_Akhir.ipynb" new file mode 100644--- /dev/null +++ "b/Proyek_Tugas_Akhir.ipynb" @@ -0,0 +1,17347 @@ +{ + "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": "iVBORw0KGgoAAAANSUhEUgAACfMAAAI1CAYAAAB4lfI6AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAACu+klEQVR4nOzdd3QU1f/G8WcTUglJgAChJqH3LtJDFVCaAtJEqhRB4aug4E8lYMOCojRBpIl0BEGKgJTQe4AA0oP0DqGEBJL9/cHZMctuQgKBAXy/zslxM3Nn5jOzsxv38uy9FqvVahUAAAAAAAAAAAAAAAAAADCNi9kFAAAAAAAAAAAAAAAAAADwX0eYDwAAAAAAAAAAAAAAAAAAkxHmAwAAAAAAAAAAAAAAAADAZIT5AAAAAAAAAAAAAAAAAAAwGWE+AAAAAAAAAAAAAAAAAABMRpgPAAAAAAAAAAAAAAAAAACTEeYDAAAAAAAAAAAAAAAAAMBkhPkAAAAAAAAAAAAAAAAAADAZYT4AAAAAAAAAAAAAAAAAAExGmA8AAAAAACANTZw4URaLRRaLRVFRUWaXg2dITEyMBg0apFKlSil9+vTGfdanTx+zS3vkeF09HcLCwoznCQAAAAAAAKlHmA8AAAAAgCfAqlWrjACEsx8fHx8VLFhQ7dq104oVK8wuF4/I119/bTzn8+fPT7bt999/b7TNkyfPffcdEhIii8WiwMDAtCr3qZXc683b21tBQUFq2rSppk6dqjt37phdriTp9u3bqlOnjsLCwrRr1y7dvHnT7JLwEBKHE5293+fPn1+tWrXSH3/8YXapAAAAAAAAeIwI8wEAAAAA8BS4ceOGDh48qClTpqh27dpq37694uPjzS7LqRo1ashisahGjRpml/LUqVatmvF4zZo1ybZNvP748eM6duxYkm1PnDhhjGaW+BhPi6ioKCPoNHHixEd6rJiYGP3zzz/6/fff1bZtW1WuXFlnzpx5pMdMiVmzZmn9+vWSpA4dOmjlypXavXu3du/erf79+5tcHdLSjRs3dPjwYc2YMUONGjVSgwYNdP36dbPLembY3kvCwsLMLgUAAAAAAMBBOrMLAAAAAAAA9nr06KE333zT+N1qterSpUvasGGDvvvuO507d06TJ09W7ty59emnn5pYKdJauXLl5O3trZs3b943zLd27VpJkqurq+Lj47VmzRoFBQU5bZt4X9WrV0+7gp8B977erl+/rq1bt2ro0KGKiorSli1b1KRJE23cuNHUqUOXL18uSQoMDNS4cePk6upqWi1m6NChgzp06GB2GY/Ep59+qiZNmhi/X7lyRevWrdPQoUN1/vx5LVmyRJ06ddLMmTNNrBIAAAAAAACPAyPzAQAAAADwhMmaNauKFy9u/JQoUUKhoaHq37+/Vq5cKU9PT0nSDz/8oLi4OJOrRVpyc3NTpUqVJEnbt29PcirV/fv36+zZs7JYLGrevLkkKTw8PMn9EuZL2r2vt4oVK6pXr17avn278ufPL0navHmz6dOdnjx5UpKUN2/e/1yQ71mXM2dOu3uwatWqev/997V582ZlypRJ0t2RGXft2mVypQAAAAAAAHjUCPMBAAAAAPAUKVq0qF566SVJ0rVr1/T333+bXBHSmm0a3Nu3b2vDhg1O29jCecWKFVPDhg3tliXX3t/fXyVKlEjLcp9ZGTNm1IABA4zflyxZYmI1UmxsrKS7gU/8NwQHB6tnz57G73/++aeJ1QAAAAAAAOBxIMwHAAAAAMBTJiQkxHhsC/gkZfv27erevbsKFSokHx8fpU+fXoUKFVKPHj104MCBZLe9cuWKPvvsM1WqVEkZM2aUm5ubsmTJoqJFi+rll1/W6NGjdfbsWaN9hw4dZLFYtHr1aknS6tWrZbFY7H6Cg4NTfb6XL1/WhAkT9Nprr6lo0aLy8fGRu7u7AgMDVa9ePY0dOzbZEQqjoqKM40+cOFGStGzZMjVq1EiBgYHy8PBQSEiIevTooRMnTqSonv79+6tw4cLy8vJS1qxZVadOHc2aNSvV5+ZM4pHzkgro2ZZXq1ZNVatWlST9/fffOn/+vEPbS5cuac+ePZKkqlWrysXFsTto7dq1ateunYKDg+Xp6Sl/f3+VKVNGH374odN92qxatcq4tqtWrVJCQoLGjx+vmjVrKlu2bHJxcXGYGnXbtm3q3LmzChYsqPTp08vT01O5c+dWuXLl1LNnT82fP19Wq9Vob7FY7O75jh07OtxXYWFhSdb4MCpUqGA8PnbsmMP6+Ph4TZo0SQ0bNlSOHDnk4eGhzJkzq2rVqvr2228VExOT5L5r1Kghi8WiGjVqSJIOHjyoXr16qUCBAvL29pbFYrG7d5N6XTl7TcXFxWnUqFGqWbOmsmTJYrxeXnzxRU2ZMkUJCQlJ1mV7Hdv2e/r0ab3//vsqVqyYMmTIYDzXztqeOXNGffv2VcGCBeXt7a2cOXPq1VdfNe4/m6ioKL399tsqWLCgvLy8lC1bNrVt21aHDx9Osq6JEyca5xwVFXXf63ny5Em98847yp8/v7y8vJQ5c2bVq1dPixcvTvIYiU2ePFmhoaHKmDGjfHx8VKJECQ0ePFjR0dGS9MjvPZuk7sF7r0dsbKyGDRumihUrKiAgwGltD3Nf2Jw4cUI9e/ZU3rx55enpqRw5cqhx48bGNNDJcfZenJTg4GBZLJb7Tq0cGRmpt956SyVKlDD+TgUGBqpOnTr66quvdPr0aYd92gwaNMjhveRZncoZAAAAAAA8PdKZXQAAAAAAAEidxIGOPHnyOG2TkJCgvn37atiwYXbBKEk6cOCADhw4oHHjxmnkyJHq2rWrw/b79u1TnTp1dOrUKbvlFy5c0IULF7Rv3z7NmzdP8fHx6tWrVxqcVdLKlCnjNEh19uxZLV26VEuXLtWPP/6oRYsWKTAw8L77GzBggIYMGWK3LCoqSj/++KPmzJmj1atXq0iRIk63dXZdbt26pb/++kt//fWXOnbs+NDT2FasWFHu7u6Ki4tLcupc2/KqVasqODhYOXPm1MmTJ7VmzRq98sordm3XrVtn3AP31paQkKC3335bI0eOtFseGxuriIgIRUREaMSIEZo1a5bq1q2bbN23bt1SvXr1kg31fPfdd+rbt69DaOjEiRM6ceKEtm/frlGjRunatWvy8fFJ9niPQ+JR8OLj4+3W/fPPP2rcuLF27txpt/zSpUtat26d1q1bp9GjR2vhwoUqWLBgssf5/fff1bZtW924ceOha46KilKDBg0cRu08e/asFi9erMWLF2vMmDH6/fffjSlck7Jx40Y1atRIFy5cuO9xd+7cqfr16+vMmTPGspiYGM2aNUuLFi3SkiVLVLVqVa1YsUKvvPKKrl69arS7deuWpk6dqsWLF2vNmjUqVqxYKs/a3rp169S0aVO7um/dumW8X3z99dfq27ev021v376tFi1a6Pfff7dbHhkZqcjISE2ZMkXLli17qPpSI7l70ObChQt6+eWXFRERkeR+0uK+WLNmjRo2bGgEGqW7Yc8FCxZowYIFjzzYmFh8fLz69evn9G/c2bNndfbsWf3111/au3fvfYODAAAAAAAATxLCfAAAAAAAPEX+/vtv/fHHH5Luhr6yZcvmtN1bb72lUaNGSbob4OrQoYPy5s0rb29v7dy5U8OGDdOePXvUrVs3BQYGqnHjxnbbt2vXTqdOnZKbm5veeOMNNWjQQIGBgUpISNCJEye0ceNGzZ07126bzz77TH379lXHjh21detWlS9fXhMmTLBr4+7unupzjo+P1/PPP6+GDRuqTJkyypYtm+Li4nT06FFNmTJFS5Ys0Y4dO9SqVStjxLCk/PTTT1q/fr1CQ0PVrVs3FSxYUFeuXNHkyZM1efJknT9/Xp06dXI6vW10dLTq1atnBPlatmyp9u3bK2vWrDpw4IC+/fZbTZgwQZGRkak+x8S8vLxUvnx5rV+/Xps2bdLt27ftAj0nTpwwRiazjcpXtWpVzZgxw2mYL/HofveG+fr3728E+UJCQvT++++rbNmyunHjhubPn68RI0bo6tWratiwoTZv3qxSpUolWff777+vXbt2qXHjxurQoYOCgoJ09uxZI/iza9cuI8gXEhKiXr16qXTp0sqUKZOuXbum/fv3a+XKlQ4hqt27d+vUqVOqV6+eJOnTTz9VkyZN7NpkzZr1vtf1Qezevdt4nCNHDuPxxYsXVbVqVR0/flweHh564403FBoaquDgYF2/fl1Lly7V999/r0OHDqlBgwbavn27/Pz8nB7jn3/+0WuvvSZvb2999NFHqlatmlxdXbVlyxalT5/eqCGp11Xi19T169dVu3ZtHTlyRJLUtGlTderUSTly5NDRo0c1YsQIrV69WmvXrlWjRo0UHh4uV1dXp3Vdv35dzZo1061bt/R///d/qlu3rry9vbV7925lz57dru3Nmzf18ssvKy4uTp9//rlCQ0Pl6uqqJUuW6PPPP9eNGzfUrl07LVu2TE2bNpWfn58GDx6s559/Xnfu3NGcOXM0bNgwXb58WZ07d9bGjRtT+Uz96/Tp02ratKlcXFw0ZMgQVa1aVe7u7lq7dq0GDx6sK1euaMCAAWrQoIHT0GDv3r2Ne7BYsWLq27evihcvrujoaM2dO1ejR49Wy5YtH7i+1ErqHkysc+fO2r17t15//XW1bNlSgYGB+ueff+Th4SEpbe6Lf/75xwjyubi4qGvXrmrevLn8/Py0a9cuDRkyRGFhYSpfvvwjuhL2unbtqvHjx0uSsmfPrl69eqly5cry8/PT+fPntXnzZs2ePdtum6VLlyouLs6YarxHjx5688037dpkzJjxsdQPAAAAAACQJCsAAAAAADDdypUrrZKskqw9evSw7t692/jZtWuXNTw83Prll19aAwMDrZKsfn5+1g0bNjjd19KlS419jRs3zmmbmJgYa61ataySrEFBQdbbt28b6w4fPmxsP3z48CRrTkhIsF66dMlheWhoqFWSNTQ0NHUXIQkHDhxIdv348eONepcvX+6w/ujRo8Z6SdY33njDmpCQ4NCuS5cuRpvt27c7rO/bt6+x/vPPP3dYHxcXZ33hhRfsjnX06NGUn2gi77//vrGPe5/nqVOnWiVZ8+TJYywbPny4VZK1XLlyDvuqWLGiVZI1ffr0ds/zrl27rC4uLlZJ1uLFi1svX77ssO3ixYuNNhUqVHBYn/i+lWT98MMPkzynjz76yKjjzJkzSba7cuWKNT4+3m5Z4udwwoQJSW6bUonrHjhwoNM2t2/fNq6dJOvkyZONdW3atDFeO0eOHHG6/fbt263p06e3SrJ+8MEHDuttrxNJ1hw5cliPHTuWbM0peV0lvkedPRcJCQnWtm3bGm1GjRrl0KZ9+/bGeh8fH2tERESSx0vcNiAgwHro0CGHNiNGjDDaZMmSxVqgQAHruXPnHNr169cv2dffhAkTkn1dJb6eQUFB1hMnTji0WbNmjdVisVglWd9++22H9du3bzfWV6pUyXrz5k2HNrNmzbK755O6f+4n8fkkdU9HR0dbQ0JCjHbh4eFOt0/uvd5qTZv7onnz5sb6qVOnOq21VKlSdjXdKzWv46CgIKska/v27R3W/f7778Z+KlWq5PS9y+aff/5xWPawzx0AAAAAAMCj5JKK3B8AAAAAAHgMRo8erRIlShg/JUuWVPXq1fX+++/r3Llz6t69uzZv3qyKFSs63d42hWyzZs3UuXNnp208PT01YsQISXen7V25cqWxLvE0mclNGWuxWB7LKEYFChRIdn3Hjh1VunRpSdK8efOSbZs9e3YNHz5cFovFYV3iaTcTj2YnSXFxcfr5558lSSVLllT//v0dtndzc9PPP/9sN4reg0p83e+txfa7bVS+xI8jIiJ07do1Y3lMTIy2bdsmSapUqZLSpft3kobRo0cb092OGzdO/v7+DnXUr19fnTp1kiRt3rxZW7ZsSbLmggULJjvNpu2+KliwYJIjSkqSn5+fXFzM67K6ceOGVq9erbp16xojxAUFBenVV1+VdHe60hkzZkiSRowYoZCQEKf7KVOmjHr27ClJ953mc8iQIUlOmZ1SsbGxGjdunKS7I8o5ey4sFotGjRqlzJkzS5LxHpCU9957L9nRGBP75JNPlC9fPoflnTp1kqenpyTp/Pnz+uGHH5QlSxaHdj169DAe33vPp9bw4cOVM2dOh+VVq1bV888/n+Qxxo4da0zZ+tNPP8nLy8uhTfPmzfXyyy8/VH33Ex0drUWLFqlatWo6evSopLsjsVarVs1p+1q1aiX5Xp8W98WZM2eMkVgbNmyo1q1bO+wjQ4YMGjt2bMpO8CHZ/sZ5e3tr9uzZTt+7bHLnzv1YagIAAAAAAEgrhPkAAAAAAHiKJCQkaPr06Ro9erRiY2Md1kdHRxtTzTZv3jzZfRUpUkQBAQGSZDetbOIpNO8XQnrcrFarzpw5owMHDigyMtL4sQV3du7cmez2zZs3N6aevFehQoXk4+MjScZ0lDbbtm3T5cuXJUnt27d3GgaUpFy5cumFF15I1Tk5U6VKFSPQFh4ebrfO9nviMF/JkiXl6+ur+Ph4rV+/3li+ceNG3b59W5JjMHP58uWS7gZ8bAEnZ9544w2HbZxp2bJlklO2Sv/eV3v37tXmzZuTbPe4DRo0SBaLxfjx8fFRjRo1jNdR1qxZNW/ePOO+WbhwoeLj4+Xt7a0GDRoku2/bNT916pT++ecfp23c3d3VokWLhz6Pbdu26cqVK5KkDh06JPlc+Pr6GsHEvXv36vTp00nus23btik6tsViMfZ5Ly8vLyOQmzFjRmO65HuFhIQoQ4YMkhxff6nh7++vl156Kcn15cqVS/IYtvu7TJkyTqfgtXn99dcfuD5nOnbsaHcP+vn56aWXXjLez/Lly6eZM2cmuX1yz1Na3BcrV65UfHy8UWtSKlSokOx1SwsXL140QrYtW7ZMcuphAAAAAACApxVhPgAAAAAAnjADBw6U1Wq1+7l586Z27dqlfv366fr16xo2bJjq1Kmjmzdv2m27Y8cOY7S11q1b2wVEnP1cuHBBkv1ofCEhIcYIUN99952KFSumjz/+WCtWrHA43uOycOFCNWzYUH5+fsqePbsKFSpkN3rhwoULJck4n6QULlw42fW2kQYTj24nSbt37zYeP/fcc8nuo0KFCsmuTwk/Pz+VLFlSkrRu3TpjtLBLly5p7969kmQ3SpeLi4sqV64syX7EscSPE7ePjY3VwYMHJSnZIJ90N9hkG20wMjIyyXa2epPSunVrubm5KTY2VlWqVFGjRo30448/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+mjqAvO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6e2331ZMTIzDMRP3yyRmO5f4+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//7adKkScaMGbPexwMAAAAAAAAANiyZCJkINh9ldWu6piZshKqqqjJu3LjMnTs37dq1K6SGIUOG5Nlnn80LL7xQyPgftfnz56dVq1aZOnVqKioqii4HANhI9ezZs+gSANjILP08WV1dncrKyqLLgfXG3AZgVaZPn150CQDARqqmpiZ9+vRp1OdJmQjY/FiZDxph4cKFDW6/8MILue+++9K/f/9iCgIAAAAAAAAAWA9kIqB4zYouAIpWU1OTmpqaVbZp3759mjZtmm7duuWkk05Kt27dMmfOnEyYMCHNmzfP1772tQ1ULQAAAAAAAADAmpGJgNIizMdm78orr8y4ceNW2WbWrFnp2rVrBg0alJ/85Cf5xz/+kfLy8vTp0yeXXHJJPv7xj2+gagEAAAAAAAAA1oxMBJSWsrq6urqii4AizZw5MzNnzlxlm759+6ZFixYbqKKNy/z589OqVatMnTo1FRUVRZcDAGykevbsWXQJAGxkln6erK6uTmVlZdHlwHpjbgOwKtOnTy+6BABgI1VTU5M+ffps8M+TMhFQWqzMx2avW7du6datW9FlAAAAAAAAAACsVzIRUFqaFF0AAAAAAAAAAAAAbO6E+QAAAAAAAAAAAKBgwnwAAAAAAAAAAABQMGE+AAAAAAAAAAAAKJgwHwAAAAAAAAAAABRMmA8AAAAAAAAAAAAKJswHAAAAAAAAAAAABRPmAwAAAAAAAAAAgIIJ8wEAAAAAAAAAAEDBhPkAAAAAAAAAAACgYMJ8AAAAAAAAAAAAUDBhPgAAAAAAAAAAACiYMB8AAAAAAAAAAAAUTJgPAAAAAAAAAAAACibMBwAAAAAAAAAAAAUT5gMAAAAAAAAAAICCCfMBAAAAAAAAAABAwYT5AAAAAAAAAAAAoGDCfAAAAAAAAAAAAFAwYT4AAAAAAAAAAAAomDAfAAAAAAAAAAAAFEyYDwAAAAAAAAAAAAomzAcAAAAAAAAAAAAFa1Z0AUBp6NGjRyorK4suAwAAAAAANlo9e/YsugQAYCM1f/78oksASoCV+QAAAAAAAAAAAKBgwnwAAAAAAAAAAABQMGE+AAAAAAAAAAAAKJgwHwAAAAAAAAAAABRMmA8AAAAAAAAAAAAKJswHAAAAAAAAAAAABRPmAwAAAAAAAAAAgIIJ8wEAAAAAAAAAAEDBhPkAAAAAAAAAAACgYMJ8AAAAAAAAAAAAUDBhPgAAAAAAAAAAACiYMB8AAAAAAAAAAAAUTJgPAAAAAAAAAAAACibMBwAAAAAAAAAAAAUT5gMAAAAAAAAAAICCCfMBAAAAAAAAAABAwYT5AAAAAAAAAAAAoGDCfAAAAAAAAAAAAFCwZkUXAJSGGTNmpKKiougyAAAANns9e/YsugSgxEyfPr3oEgAAADZ7NTU1RZcAlAAr8wEAAAAAAAAAAEDBhPkAAAAAAAAAAACgYMJ8AAAAAAAAAAAAUDBhPgAAAAAAAAAAACiYMB8AAAAAAAAAAAAUTJgPAAAAAAAAAAAACibMBwAAAAAAAAAAAAUT5gMAAAAAAAAAAICCCfMBAAAAAAAAAABAwYT5AAAAAAAAAAAAoGDCfAAAAAAAAAAAAFAwYT4AAAAAAAAAAAAomDAfAAAAAAAAAAAAFEyYDwAAAAAAAAAAAAomzAcAAAAAAAAAAAAFE+YDAAAAAAAAAACAggnzAQAAAAAAAAAAQMGE+QAAAAAAAAAAAKBgwnwAAAAAAAAAAABQMGE+AAAAAAAAAAAAKJgwHwAAAAAAAAAAABRMmA8AAAAAAAAAAAAKJswHAAAAAAAAAAAABRPmAwAAAAAAAAAAgIIJ8wEAAAAAAAAAAEDBhPkAAAAAAAAAAACgYMJ8AAAAAAAAAAAAUDBhPgAAAAAAAAAAACiYMB8AAAAAAAAAAAAUTJgPAAAAAAAAAAAACtboMN+0adOy3377ZauttkpZWVmeeeaZ9VZM//7907Nnz9W2mz17dsrKynLLLbest7FZ3i233JKysrLMnj17re7/wgsv5NBDD02rVq1SVlaWu+66a73WtyH1798//fv3L7qMRisrK0tVVVX97XV9TQEAAAAAAACADUNGZ/Mho/Nvm3tGp1ljGr///vsZOnRoWrRokauuuiotW7bMDjvs0KgB2XwMHz48s2bNysUXX5zWrVtn7733/kjGGT9+fFq2bJmTTjrpI+kfAAAAAAAAAGBDktGhMWR0Nh2NCvO99NJLmTNnTn7wgx/ki1/84kdV02rtsMMOWbhwYbbYYovCatgcnHjiifnMZz6T8vLyRt934cKFmTp1ai644IKMGjXqI6ju38aPH5927dp9pAeKyZMnf2R9f5QWLlyYZs0a9WsOAAAAAAAAABRMRmfzIqPzb5t7RqdRPbzxxhtJktatW6/zwOuirKwsLVq0KLSGlVmwYEG22mqrostYL5o2bZqmTZuu1X3nzp2bpPi5sr40b9686BLWysb6ewIAAAAAAAAArJyMzurJ6HxARmfjsL5+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": [] + } + ] +} \ No newline at end of file