diff --git a/exercicios/para-casa/Rafaella-Fiel/tarefa.ipynb b/exercicios/para-casa/Rafaella-Fiel/tarefa.ipynb new file mode 100644 index 0000000..3a5aa5d --- /dev/null +++ b/exercicios/para-casa/Rafaella-Fiel/tarefa.ipynb @@ -0,0 +1,2379 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Importando as planilhas" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
customer_idcustomer_unique_idzip_code_prefixcustomer_citycustomer_state
006b8999e2fba1a1fbc88172c00ba8bc7861eff4711a542e4b93843c6dd7febb014409francaSP
118955e83d337fd6b2def6b18a428ac77290c77bc529b7ac935b93aa66c333dc39790sao bernardo do campoSP
24e7b3e00288586ebd08712fdd0374a03060e732b5b29e8181a18229c7b0b2b5e1151sao pauloSP
3b2b6027bc5c5109e529d4dc6358b12c3259dac757896d24d7702b9acbbff3f3c8775mogi das cruzesSP
44f2d8ab171c80ec8364f7c12e35b23ad345ecd01c38d18a9036ed96c73b8d06613056campinasSP
..................
9943617ddf5dd5d51696bb3d7c6291687be6f1a29b476fee25c95fbafc67c5ac95cf83937sao pauloSP
99437e7b71a9017aa05c9a7fd292d714858e8d52a67c98be1cf6a5c84435bd38d095d6764taboao da serraSP
994385e28dfe12db7fb50a4b2f691faecea5ee9f50caf99f032f0bf3c55141f019d9960115fortalezaCE
9943956b18e2166679b8a959d72dd06da27f973c2643a0a458b49f58cea58833b192e92120canoasRS
99440274fa6071e5e17fe303b9748641082c884732c5050c01db9b23e19ba398993986703cotiaSP
\n", + "

99441 rows × 5 columns

\n", + "
" + ], + "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", + "99436 17ddf5dd5d51696bb3d7c6291687be6f 1a29b476fee25c95fbafc67c5ac95cf8 \n", + "99437 e7b71a9017aa05c9a7fd292d714858e8 d52a67c98be1cf6a5c84435bd38d095d \n", + "99438 5e28dfe12db7fb50a4b2f691faecea5e e9f50caf99f032f0bf3c55141f019d99 \n", + "99439 56b18e2166679b8a959d72dd06da27f9 73c2643a0a458b49f58cea58833b192e \n", + "99440 274fa6071e5e17fe303b9748641082c8 84732c5050c01db9b23e19ba39899398 \n", + "\n", + " 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", + "99436 3937 sao paulo SP \n", + "99437 6764 taboao da serra SP \n", + "99438 60115 fortaleza CE \n", + "99439 92120 canoas RS \n", + "99440 6703 cotia SP \n", + "\n", + "[99441 rows x 5 columns]" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_consumidor = pd.read_csv(\"olist_customers_dataset.csv\")\n", + "df_consumidor" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
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
..................
100015899950-28.068639-52.010705tapejaraRS
100015999900-27.877125-52.224882getulio vargasRS
100016099950-28.071855-52.014716tapejaraRS
100016199980-28.388932-51.846871david canabarroRS
100016299950-28.070104-52.018658tapejaraRS
\n", + "

1000163 rows × 5 columns

\n", + "
" + ], + "text/plain": [ + " zip_code_prefix geolocation_lat geolocation_lng geolocation_city \\\n", + "0 1037 -23.545621 -46.639292 sao paulo \n", + "1 1046 -23.546081 -46.644820 sao paulo \n", + "2 1046 -23.546129 -46.642951 sao paulo \n", + "3 1041 -23.544392 -46.639499 sao paulo \n", + "4 1035 -23.541578 -46.641607 sao paulo \n", + "... ... ... ... ... \n", + "1000158 99950 -28.068639 -52.010705 tapejara \n", + "1000159 99900 -27.877125 -52.224882 getulio vargas \n", + "1000160 99950 -28.071855 -52.014716 tapejara \n", + "1000161 99980 -28.388932 -51.846871 david canabarro \n", + "1000162 99950 -28.070104 -52.018658 tapejara \n", + "\n", + " geolocation_state \n", + "0 SP \n", + "1 SP \n", + "2 SP \n", + "3 SP \n", + "4 SP \n", + "... ... \n", + "1000158 RS \n", + "1000159 RS \n", + "1000160 RS \n", + "1000161 RS \n", + "1000162 RS \n", + "\n", + "[1000163 rows x 5 columns]" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_localizacao = pd.read_csv(\"olist_geolocation_dataset.csv\")\n", + "df_localizacao" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
seller_idzip_code_prefixseller_cityseller_state
03442f8959a84dea7ee197c632cb2df1513023campinasSP
1d1b65fc7debc3361ea86b5f14c68d2e213844mogi guacuSP
2ce3ad9de960102d0677a81f5d0bb7b2d20031rio de janeiroRJ
3c0f3eea2e14555b6faeea3dd58c1b1c34195sao pauloSP
451a04a8a6bdcb23deccc82b0b80742cf12914braganca paulistaSP
...............
309098dddbc4601dd4443ca174359b23716687111sarandiPR
3091f8201cab383e484733266d1906e2fdfa88137palhocaSC
309274871d19219c7d518d0090283e03c1374650sao pauloSP
3093e603cf3fec55f8697c9059638d6c8eb596080pelotasRS
30949e25199f6ef7e7c347120ff175652c3b12051taubateSP
\n", + "

3095 rows × 4 columns

\n", + "
" + ], + "text/plain": [ + " seller_id zip_code_prefix seller_city \\\n", + "0 3442f8959a84dea7ee197c632cb2df15 13023 campinas \n", + "1 d1b65fc7debc3361ea86b5f14c68d2e2 13844 mogi guacu \n", + "2 ce3ad9de960102d0677a81f5d0bb7b2d 20031 rio de janeiro \n", + "3 c0f3eea2e14555b6faeea3dd58c1b1c3 4195 sao paulo \n", + "4 51a04a8a6bdcb23deccc82b0b80742cf 12914 braganca paulista \n", + "... ... ... ... \n", + "3090 98dddbc4601dd4443ca174359b237166 87111 sarandi \n", + "3091 f8201cab383e484733266d1906e2fdfa 88137 palhoca \n", + "3092 74871d19219c7d518d0090283e03c137 4650 sao paulo \n", + "3093 e603cf3fec55f8697c9059638d6c8eb5 96080 pelotas \n", + "3094 9e25199f6ef7e7c347120ff175652c3b 12051 taubate \n", + "\n", + " seller_state \n", + "0 SP \n", + "1 SP \n", + "2 RJ \n", + "3 SP \n", + "4 SP \n", + "... ... \n", + "3090 PR \n", + "3091 SC \n", + "3092 SP \n", + "3093 RS \n", + "3094 SP \n", + "\n", + "[3095 rows x 4 columns]" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_vendedores = pd.read_csv(\"olist_sellers_dataset.csv\")\n", + "df_vendedores" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Limpando e tratando os dados" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "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 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" + ] + } + ], + "source": [ + "df_consumidor.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
customer_idzip_code_prefixcustomer_citycustomer_state
006b8999e2fba1a1fbc88172c00ba8bc714409francaSP
118955e83d337fd6b2def6b18a428ac779790sao bernardo do campoSP
24e7b3e00288586ebd08712fdd0374a031151sao pauloSP
3b2b6027bc5c5109e529d4dc6358b12c38775mogi das cruzesSP
44f2d8ab171c80ec8364f7c12e35b23ad13056campinasSP
...............
9943617ddf5dd5d51696bb3d7c6291687be6f3937sao pauloSP
99437e7b71a9017aa05c9a7fd292d714858e86764taboao da serraSP
994385e28dfe12db7fb50a4b2f691faecea5e60115fortalezaCE
9943956b18e2166679b8a959d72dd06da27f992120canoasRS
99440274fa6071e5e17fe303b9748641082c86703cotiaSP
\n", + "

99441 rows × 4 columns

\n", + "
" + ], + "text/plain": [ + " customer_id zip_code_prefix \\\n", + "0 06b8999e2fba1a1fbc88172c00ba8bc7 14409 \n", + "1 18955e83d337fd6b2def6b18a428ac77 9790 \n", + "2 4e7b3e00288586ebd08712fdd0374a03 1151 \n", + "3 b2b6027bc5c5109e529d4dc6358b12c3 8775 \n", + "4 4f2d8ab171c80ec8364f7c12e35b23ad 13056 \n", + "... ... ... \n", + "99436 17ddf5dd5d51696bb3d7c6291687be6f 3937 \n", + "99437 e7b71a9017aa05c9a7fd292d714858e8 6764 \n", + "99438 5e28dfe12db7fb50a4b2f691faecea5e 60115 \n", + "99439 56b18e2166679b8a959d72dd06da27f9 92120 \n", + "99440 274fa6071e5e17fe303b9748641082c8 6703 \n", + "\n", + " customer_city customer_state \n", + "0 franca SP \n", + "1 sao bernardo do campo SP \n", + "2 sao paulo SP \n", + "3 mogi das cruzes SP \n", + "4 campinas SP \n", + "... ... ... \n", + "99436 sao paulo SP \n", + "99437 taboao da serra SP \n", + "99438 fortaleza CE \n", + "99439 canoas RS \n", + "99440 cotia SP \n", + "\n", + "[99441 rows x 4 columns]" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_consumidor = df_consumidor.drop(\"customer_unique_id\", axis=1)\n", + "df_consumidor" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "customer_id 0\n", + "zip_code_prefix 0\n", + "customer_city 0\n", + "customer_state 0\n", + "dtype: int64" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_consumidor.isnull().sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "ename": "ValueError", + "evalue": "Length mismatch: Expected axis has 4 elements, new values have 1 elements", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32mc:\\Users\\rafae\\estudos\\semana14\\on26-python-s14-analise-de-dados\\exercicios\\para-casa\\tarefa.ipynb Cell 11\u001b[0m line \u001b[0;36m1\n\u001b[1;32m----> 1\u001b[0m df_consumidor\u001b[39m.\u001b[39;49mcolumns \u001b[39m=\u001b[39m nova_coluna\n\u001b[0;32m 2\u001b[0m df_consumidor\n", + "File \u001b[1;32mc:\\Users\\rafae\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\pandas\\core\\generic.py:6218\u001b[0m, in \u001b[0;36mNDFrame.__setattr__\u001b[1;34m(self, name, value)\u001b[0m\n\u001b[0;32m 6216\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[0;32m 6217\u001b[0m \u001b[39mobject\u001b[39m\u001b[39m.\u001b[39m\u001b[39m__getattribute__\u001b[39m(\u001b[39mself\u001b[39m, name)\n\u001b[1;32m-> 6218\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mobject\u001b[39;49m\u001b[39m.\u001b[39;49m\u001b[39m__setattr__\u001b[39;49m(\u001b[39mself\u001b[39;49m, name, value)\n\u001b[0;32m 6219\u001b[0m \u001b[39mexcept\u001b[39;00m \u001b[39mAttributeError\u001b[39;00m:\n\u001b[0;32m 6220\u001b[0m \u001b[39mpass\u001b[39;00m\n", + "File \u001b[1;32mproperties.pyx:69\u001b[0m, in \u001b[0;36mpandas._libs.properties.AxisProperty.__set__\u001b[1;34m()\u001b[0m\n", + "File \u001b[1;32mc:\\Users\\rafae\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\pandas\\core\\generic.py:767\u001b[0m, in \u001b[0;36mNDFrame._set_axis\u001b[1;34m(self, axis, labels)\u001b[0m\n\u001b[0;32m 762\u001b[0m \u001b[39m\u001b[39m\u001b[39m\"\"\"\u001b[39;00m\n\u001b[0;32m 763\u001b[0m \u001b[39mThis is called from the cython code when we set the `index` attribute\u001b[39;00m\n\u001b[0;32m 764\u001b[0m \u001b[39mdirectly, e.g. `series.index = [1, 2, 3]`.\u001b[39;00m\n\u001b[0;32m 765\u001b[0m \u001b[39m\"\"\"\u001b[39;00m\n\u001b[0;32m 766\u001b[0m labels \u001b[39m=\u001b[39m ensure_index(labels)\n\u001b[1;32m--> 767\u001b[0m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_mgr\u001b[39m.\u001b[39;49mset_axis(axis, labels)\n\u001b[0;32m 768\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_clear_item_cache()\n", + "File \u001b[1;32mc:\\Users\\rafae\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\pandas\\core\\internals\\managers.py:227\u001b[0m, in \u001b[0;36mBaseBlockManager.set_axis\u001b[1;34m(self, axis, new_labels)\u001b[0m\n\u001b[0;32m 225\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mset_axis\u001b[39m(\u001b[39mself\u001b[39m, axis: AxisInt, new_labels: Index) \u001b[39m-\u001b[39m\u001b[39m>\u001b[39m \u001b[39mNone\u001b[39;00m:\n\u001b[0;32m 226\u001b[0m \u001b[39m# Caller is responsible for ensuring we have an Index object.\u001b[39;00m\n\u001b[1;32m--> 227\u001b[0m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_validate_set_axis(axis, new_labels)\n\u001b[0;32m 228\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39maxes[axis] \u001b[39m=\u001b[39m new_labels\n", + "File \u001b[1;32mc:\\Users\\rafae\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\pandas\\core\\internals\\base.py:85\u001b[0m, in \u001b[0;36mDataManager._validate_set_axis\u001b[1;34m(self, axis, new_labels)\u001b[0m\n\u001b[0;32m 82\u001b[0m \u001b[39mpass\u001b[39;00m\n\u001b[0;32m 84\u001b[0m \u001b[39melif\u001b[39;00m new_len \u001b[39m!=\u001b[39m old_len:\n\u001b[1;32m---> 85\u001b[0m \u001b[39mraise\u001b[39;00m \u001b[39mValueError\u001b[39;00m(\n\u001b[0;32m 86\u001b[0m \u001b[39mf\u001b[39m\u001b[39m\"\u001b[39m\u001b[39mLength mismatch: Expected axis has \u001b[39m\u001b[39m{\u001b[39;00mold_len\u001b[39m}\u001b[39;00m\u001b[39m elements, new \u001b[39m\u001b[39m\"\u001b[39m\n\u001b[0;32m 87\u001b[0m \u001b[39mf\u001b[39m\u001b[39m\"\u001b[39m\u001b[39mvalues have \u001b[39m\u001b[39m{\u001b[39;00mnew_len\u001b[39m}\u001b[39;00m\u001b[39m elements\u001b[39m\u001b[39m\"\u001b[39m\n\u001b[0;32m 88\u001b[0m )\n", + "\u001b[1;31mValueError\u001b[0m: Length mismatch: Expected axis has 4 elements, new values have 1 elements" + ] + } + ], + "source": [ + "df_consumidor.columns = nova_coluna\n", + "df_consumidor" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
customer_idzip_code_prefixcustomer_citycustomer_state
count9944199441.0000009944199441
unique99441NaN411927
top06b8999e2fba1a1fbc88172c00ba8bc7NaNsao pauloSP
freq1NaN1554041746
meanNaN35137.474583NaNNaN
stdNaN29797.938996NaNNaN
minNaN1003.000000NaNNaN
25%NaN11347.000000NaNNaN
50%NaN24416.000000NaNNaN
75%NaN58900.000000NaNNaN
maxNaN99990.000000NaNNaN
\n", + "
" + ], + "text/plain": [ + " customer_id zip_code_prefix customer_city \\\n", + "count 99441 99441.000000 99441 \n", + "unique 99441 NaN 4119 \n", + "top 06b8999e2fba1a1fbc88172c00ba8bc7 NaN sao paulo \n", + "freq 1 NaN 15540 \n", + "mean NaN 35137.474583 NaN \n", + "std NaN 29797.938996 NaN \n", + "min NaN 1003.000000 NaN \n", + "25% NaN 11347.000000 NaN \n", + "50% NaN 24416.000000 NaN \n", + "75% NaN 58900.000000 NaN \n", + "max NaN 99990.000000 NaN \n", + "\n", + " customer_state \n", + "count 99441 \n", + "unique 27 \n", + "top SP \n", + "freq 41746 \n", + "mean NaN \n", + "std NaN \n", + "min NaN \n", + "25% NaN \n", + "50% NaN \n", + "75% NaN \n", + "max NaN " + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_consumidor.describe(include=\"all\")" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 1000163 entries, 0 to 1000162\n", + "Data columns (total 5 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 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" + ] + } + ], + "source": [ + "df_localizacao.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "zip_code_prefix 0\n", + "geolocation_lat 0\n", + "geolocation_lng 0\n", + "geolocation_city 0\n", + "geolocation_state 0\n", + "dtype: int64" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_localizacao.isnull().sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
zip_code_prefixgeolocation_latgeolocation_lnggeolocation_citygeolocation_state
count1.000163e+061.000163e+061.000163e+0610001631000163
uniqueNaNNaNNaN801127
topNaNNaNNaNsao pauloSP
freqNaNNaNNaN135800404268
mean3.657417e+04-2.117615e+01-4.639054e+01NaNNaN
std3.054934e+045.715866e+004.269748e+00NaNNaN
min1.001000e+03-3.660537e+01-1.014668e+02NaNNaN
25%1.107500e+04-2.360355e+01-4.857317e+01NaNNaN
50%2.653000e+04-2.291938e+01-4.663788e+01NaNNaN
75%6.350400e+04-1.997962e+01-4.376771e+01NaNNaN
max9.999000e+044.506593e+011.211054e+02NaNNaN
\n", + "
" + ], + "text/plain": [ + " zip_code_prefix geolocation_lat geolocation_lng geolocation_city \\\n", + "count 1.000163e+06 1.000163e+06 1.000163e+06 1000163 \n", + "unique NaN NaN NaN 8011 \n", + "top NaN NaN NaN sao paulo \n", + "freq NaN NaN NaN 135800 \n", + "mean 3.657417e+04 -2.117615e+01 -4.639054e+01 NaN \n", + "std 3.054934e+04 5.715866e+00 4.269748e+00 NaN \n", + "min 1.001000e+03 -3.660537e+01 -1.014668e+02 NaN \n", + "25% 1.107500e+04 -2.360355e+01 -4.857317e+01 NaN \n", + "50% 2.653000e+04 -2.291938e+01 -4.663788e+01 NaN \n", + "75% 6.350400e+04 -1.997962e+01 -4.376771e+01 NaN \n", + "max 9.999000e+04 4.506593e+01 1.211054e+02 NaN \n", + "\n", + " geolocation_state \n", + "count 1000163 \n", + "unique 27 \n", + "top SP \n", + "freq 404268 \n", + "mean NaN \n", + "std NaN \n", + "min NaN \n", + "25% NaN \n", + "50% NaN \n", + "75% NaN \n", + "max NaN " + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_localizacao.describe(include=\"all\")" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "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 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" + ] + } + ], + "source": [ + "df_vendedores.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "seller_id 0\n", + "zip_code_prefix 0\n", + "seller_city 0\n", + "seller_state 0\n", + "dtype: int64" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_vendedores.isnull().sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
seller_idzip_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", + "
" + ], + "text/plain": [ + " seller_id 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 " + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_vendedores.describe(include=\"all\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Analisando os dados" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "customer_state\n", + "SP 41746\n", + "RJ 12852\n", + "MG 11635\n", + "RS 5466\n", + "PR 5045\n", + "SC 3637\n", + "BA 3380\n", + "DF 2140\n", + "ES 2033\n", + "GO 2020\n", + "PE 1652\n", + "CE 1336\n", + "PA 975\n", + "MT 907\n", + "MA 747\n", + "MS 715\n", + "PB 536\n", + "PI 495\n", + "RN 485\n", + "AL 413\n", + "SE 350\n", + "TO 280\n", + "RO 253\n", + "AM 148\n", + "AC 81\n", + "AP 68\n", + "RR 46\n", + "Name: count, dtype: int64" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Quais estados mais aparecem para consumidores? E para vendedores?\n", + "estado_cons = df_consumidor[\"customer_state\"].value_counts()\n", + "estado_cons" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "customer_state\n", + "SP 0.419807\n", + "RJ 0.129242\n", + "MG 0.117004\n", + "RS 0.054967\n", + "PR 0.050734\n", + "SC 0.036574\n", + "BA 0.033990\n", + "DF 0.021520\n", + "ES 0.020444\n", + "GO 0.020314\n", + "PE 0.016613\n", + "CE 0.013435\n", + "PA 0.009805\n", + "MT 0.009121\n", + "MA 0.007512\n", + "MS 0.007190\n", + "PB 0.005390\n", + "PI 0.004978\n", + "RN 0.004877\n", + "AL 0.004153\n", + "SE 0.003520\n", + "TO 0.002816\n", + "RO 0.002544\n", + "AM 0.001488\n", + "AC 0.000815\n", + "AP 0.000684\n", + "RR 0.000463\n", + "Name: proportion, dtype: float64" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Dados em percentual\n", + "estado_cons_perc = df_consumidor[\"customer_state\"].value_counts(normalize=True)\n", + "estado_cons_perc" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "seller_state\n", + "SP 1849\n", + "PR 349\n", + "MG 244\n", + "SC 190\n", + "RJ 171\n", + "RS 129\n", + "GO 40\n", + "DF 30\n", + "ES 23\n", + "BA 19\n", + "CE 13\n", + "PE 9\n", + "PB 6\n", + "RN 5\n", + "MS 5\n", + "MT 4\n", + "RO 2\n", + "SE 2\n", + "PI 1\n", + "AC 1\n", + "MA 1\n", + "AM 1\n", + "PA 1\n", + "Name: count, dtype: int64" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "estado_vend = df_vendedores[\"seller_state\"].value_counts()\n", + "estado_vend" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "seller_state\n", + "SP 0.597415\n", + "PR 0.112763\n", + "MG 0.078837\n", + "SC 0.061389\n", + "RJ 0.055250\n", + "RS 0.041680\n", + "GO 0.012924\n", + "DF 0.009693\n", + "ES 0.007431\n", + "BA 0.006139\n", + "CE 0.004200\n", + "PE 0.002908\n", + "PB 0.001939\n", + "RN 0.001616\n", + "MS 0.001616\n", + "MT 0.001292\n", + "RO 0.000646\n", + "SE 0.000646\n", + "PI 0.000323\n", + "AC 0.000323\n", + "MA 0.000323\n", + "AM 0.000323\n", + "PA 0.000323\n", + "Name: proportion, dtype: float64" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Dados em percentual\n", + "estado_vend_perc = df_vendedores[\"seller_state\"].value_counts(normalize=True)\n", + "estado_vend_perc" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "geolocation_city\n", + "sao paulo 135800\n", + "rio de janeiro 62151\n", + "belo horizonte 27805\n", + "são paulo 24918\n", + "curitiba 16593\n", + " ... \n", + "jacuípe 1\n", + "mar vermelho 1\n", + "quebrangulo 1\n", + "poço das trincheiras 1\n", + "poxim 1\n", + "Name: count, Length: 8011, dtype: int64" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Quais as cidades que mais aparecem?\n", + "cidades = df_localizacao[\"geolocation_city\"].value_counts()\n", + "cidades" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Juntando os dados" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
customer_idzip_code_prefixcustomer_citycustomer_stategeolocation_latgeolocation_lnggeolocation_citygeolocation_state
006b8999e2fba1a1fbc88172c00ba8bc714409francaSP-20.509897-47.397866francaSP
106b8999e2fba1a1fbc88172c00ba8bc714409francaSP-20.497396-47.399241francaSP
206b8999e2fba1a1fbc88172c00ba8bc714409francaSP-20.510459-47.399553francaSP
306b8999e2fba1a1fbc88172c00ba8bc714409francaSP-20.480940-47.394161francaSP
406b8999e2fba1a1fbc88172c00ba8bc714409francaSP-20.515413-47.398194francaSP
...........................
15083450d9110683c7a282144e9fc97660026a2874980aparecida de goianiaGO-16.821866-49.244027aparecida de goianiaGO
15083451d9110683c7a282144e9fc97660026a2874980aparecida de goianiaGO-16.821866-49.244027aparecida de goianiaGO
15083452d9110683c7a282144e9fc97660026a2874980aparecida de goianiaGO-16.822945-49.244615aparecida de goianiaGO
150834536fb4f2354f36e554ac80141e9128f52899043passo fundoRS-28.226596-52.467505passo fundoRS
150834546fb4f2354f36e554ac80141e9128f52899043passo fundoRS-28.226596-52.467505passo fundoRS
\n", + "

15083455 rows × 8 columns

\n", + "
" + ], + "text/plain": [ + " customer_id zip_code_prefix \\\n", + "0 06b8999e2fba1a1fbc88172c00ba8bc7 14409 \n", + "1 06b8999e2fba1a1fbc88172c00ba8bc7 14409 \n", + "2 06b8999e2fba1a1fbc88172c00ba8bc7 14409 \n", + "3 06b8999e2fba1a1fbc88172c00ba8bc7 14409 \n", + "4 06b8999e2fba1a1fbc88172c00ba8bc7 14409 \n", + "... ... ... \n", + "15083450 d9110683c7a282144e9fc97660026a28 74980 \n", + "15083451 d9110683c7a282144e9fc97660026a28 74980 \n", + "15083452 d9110683c7a282144e9fc97660026a28 74980 \n", + "15083453 6fb4f2354f36e554ac80141e9128f528 99043 \n", + "15083454 6fb4f2354f36e554ac80141e9128f528 99043 \n", + "\n", + " customer_city customer_state geolocation_lat \\\n", + "0 franca SP -20.509897 \n", + "1 franca SP -20.497396 \n", + "2 franca SP -20.510459 \n", + "3 franca SP -20.480940 \n", + "4 franca SP -20.515413 \n", + "... ... ... ... \n", + "15083450 aparecida de goiania GO -16.821866 \n", + "15083451 aparecida de goiania GO -16.821866 \n", + "15083452 aparecida de goiania GO -16.822945 \n", + "15083453 passo fundo RS -28.226596 \n", + "15083454 passo fundo RS -28.226596 \n", + "\n", + " geolocation_lng geolocation_city geolocation_state \n", + "0 -47.397866 franca SP \n", + "1 -47.399241 franca SP \n", + "2 -47.399553 franca SP \n", + "3 -47.394161 franca SP \n", + "4 -47.398194 franca SP \n", + "... ... ... ... \n", + "15083450 -49.244027 aparecida de goiania GO \n", + "15083451 -49.244027 aparecida de goiania GO \n", + "15083452 -49.244615 aparecida de goiania GO \n", + "15083453 -52.467505 passo fundo RS \n", + "15083454 -52.467505 passo fundo RS \n", + "\n", + "[15083455 rows x 8 columns]" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_juncao = pd.merge(df_consumidor, df_localizacao, on=\"zip_code_prefix\")\n", + "df_juncao" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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_idzip_code_prefixcustomer_citycustomer_stategeolocation_latgeolocation_lnggeolocation_citygeolocation_stateseller_idseller_cityseller_state
04f2d8ab171c80ec8364f7c12e35b23ad13056campinasSP-22.987222-47.151073campinasSP8d46553a36e68f95350a200c12f8f2e2campinasSP
14f2d8ab171c80ec8364f7c12e35b23ad13056campinasSP-22.964194-47.146534campinasSP8d46553a36e68f95350a200c12f8f2e2campinasSP
24f2d8ab171c80ec8364f7c12e35b23ad13056campinasSP-22.961982-47.146298campinasSP8d46553a36e68f95350a200c12f8f2e2campinasSP
34f2d8ab171c80ec8364f7c12e35b23ad13056campinasSP-22.968059-47.147139campinasSP8d46553a36e68f95350a200c12f8f2e2campinasSP
44f2d8ab171c80ec8364f7c12e35b23ad13056campinasSP-22.977905-47.145693campinasSP8d46553a36e68f95350a200c12f8f2e2campinasSP
....................................
114925107fb62e47282b83f023cf1fef8d8309c94319sao pauloSP-23.646627-46.638771sao pauloSPab91571efab27993ff2f6b36e38055c3sao pauloSP
114925117fb62e47282b83f023cf1fef8d8309c94319sao pauloSP-23.647430-46.636954sao pauloSPab91571efab27993ff2f6b36e38055c3sao pauloSP
114925127fb62e47282b83f023cf1fef8d8309c94319sao pauloSP-23.647765-46.635971sao pauloSPab91571efab27993ff2f6b36e38055c3sao pauloSP
114925137fb62e47282b83f023cf1fef8d8309c94319sao pauloSP-23.647430-46.636954sao pauloSPab91571efab27993ff2f6b36e38055c3sao pauloSP
114925147fb62e47282b83f023cf1fef8d8309c94319sao pauloSP-23.647471-46.636862são pauloSPab91571efab27993ff2f6b36e38055c3sao pauloSP
\n", + "

11492515 rows × 11 columns

\n", + "
" + ], + "text/plain": [ + " customer_id zip_code_prefix customer_city \\\n", + "0 4f2d8ab171c80ec8364f7c12e35b23ad 13056 campinas \n", + "1 4f2d8ab171c80ec8364f7c12e35b23ad 13056 campinas \n", + "2 4f2d8ab171c80ec8364f7c12e35b23ad 13056 campinas \n", + "3 4f2d8ab171c80ec8364f7c12e35b23ad 13056 campinas \n", + "4 4f2d8ab171c80ec8364f7c12e35b23ad 13056 campinas \n", + "... ... ... ... \n", + "11492510 7fb62e47282b83f023cf1fef8d8309c9 4319 sao paulo \n", + "11492511 7fb62e47282b83f023cf1fef8d8309c9 4319 sao paulo \n", + "11492512 7fb62e47282b83f023cf1fef8d8309c9 4319 sao paulo \n", + "11492513 7fb62e47282b83f023cf1fef8d8309c9 4319 sao paulo \n", + "11492514 7fb62e47282b83f023cf1fef8d8309c9 4319 sao paulo \n", + "\n", + " customer_state geolocation_lat geolocation_lng geolocation_city \\\n", + "0 SP -22.987222 -47.151073 campinas \n", + "1 SP -22.964194 -47.146534 campinas \n", + "2 SP -22.961982 -47.146298 campinas \n", + "3 SP -22.968059 -47.147139 campinas \n", + "4 SP -22.977905 -47.145693 campinas \n", + "... ... ... ... ... \n", + "11492510 SP -23.646627 -46.638771 sao paulo \n", + "11492511 SP -23.647430 -46.636954 sao paulo \n", + "11492512 SP -23.647765 -46.635971 sao paulo \n", + "11492513 SP -23.647430 -46.636954 sao paulo \n", + "11492514 SP -23.647471 -46.636862 são paulo \n", + "\n", + " geolocation_state seller_id seller_city \\\n", + "0 SP 8d46553a36e68f95350a200c12f8f2e2 campinas \n", + "1 SP 8d46553a36e68f95350a200c12f8f2e2 campinas \n", + "2 SP 8d46553a36e68f95350a200c12f8f2e2 campinas \n", + "3 SP 8d46553a36e68f95350a200c12f8f2e2 campinas \n", + "4 SP 8d46553a36e68f95350a200c12f8f2e2 campinas \n", + "... ... ... ... \n", + "11492510 SP ab91571efab27993ff2f6b36e38055c3 sao paulo \n", + "11492511 SP ab91571efab27993ff2f6b36e38055c3 sao paulo \n", + "11492512 SP ab91571efab27993ff2f6b36e38055c3 sao paulo \n", + "11492513 SP ab91571efab27993ff2f6b36e38055c3 sao paulo \n", + "11492514 SP ab91571efab27993ff2f6b36e38055c3 sao paulo \n", + "\n", + " seller_state \n", + "0 SP \n", + "1 SP \n", + "2 SP \n", + "3 SP \n", + "4 SP \n", + "... ... \n", + "11492510 SP \n", + "11492511 SP \n", + "11492512 SP \n", + "11492513 SP \n", + "11492514 SP \n", + "\n", + "[11492515 rows x 11 columns]" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_juncao = pd.merge(df_juncao, df_vendedores, on=\"zip_code_prefix\")\n", + "df_juncao" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Exportando o arquivo em csv" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "df_juncao.to_csv('tabelas_unidas.csv', index=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Continuando a análise pelo novo df" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "zip_code_prefix\n", + "22790 487770\n", + "38400 335820\n", + "35500 312008\n", + "14940 308308\n", + "22793 226996\n", + " ... \n", + "59775 5\n", + "12250 5\n", + "32419 5\n", + "9336 4\n", + "27972 3\n", + "Name: count, Length: 2160, dtype: int64" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Qual o prefixo que mais aparece?\n", + "prefixo = df_juncao[\"zip_code_prefix\"].value_counts()\n", + "prefixo" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
customer_id
zip_code_prefix
22790142
22793121
22775110
29101101
1321295
......
872301
66961
65131
65061
997301
\n", + "

2160 rows × 1 columns

\n", + "
" + ], + "text/plain": [ + " customer_id\n", + "zip_code_prefix \n", + "22790 142\n", + "22793 121\n", + "22775 110\n", + "29101 101\n", + "13212 95\n", + "... ...\n", + "87230 1\n", + "6696 1\n", + "6513 1\n", + "6506 1\n", + "99730 1\n", + "\n", + "[2160 rows x 1 columns]" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Agrupar prefixo com o id do consumidor\n", + "df_pref = df_juncao.groupby(\"zip_code_prefix\").agg({\"customer_id\" : \"nunique\"})\n", + "df_pref.sort_values(by=\"customer_id\", ascending=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Análise visual\n", + "\n", + "O local dos maiores e menores consumidores é o mesmo local dos vendedores?" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import seaborn as sns" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0, 0.5, 'Contagem')" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA9wAAAIjCAYAAADx4xNlAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABJA0lEQVR4nO3deZyNdeP/8fdhdsOMYczY93VIEilFEmON7pLcyS63W1JCaUPd0U2Lkpt0M3QnRCmpG8mWLFmLQnbKeltmrDPMfH5/+M35OmZwZsznXHP0ej4e5/FwrnOdc97X5TrXOe+5NpcxxggAAAAAAOSoPE4HAAAAAADgZkThBgAAAADAAgo3AAAAAAAWULgBAAAAALCAwg0AAAAAgAUUbgAAAAAALKBwAwAAAABgAYUbAAAAAAALKNwAAAAAAFhA4QYAwAfuvfde3Xvvvdcdb8mSJXK5XFqyZIn1TPC9oUOHyuVyOR0DAOAjFG4AgFU7d+5Ur169VK5cOYWEhKhAgQKqX7++3n33XZ07d87peEAGZ8+e1dChQ/mjBwDghgU4HQAAcPP6+uuv1a5dOwUHB6tTp06qXr26UlJStHz5cg0cOFC//PKLJkyY4HRMn1iwYIHTEeCls2fPatiwYZLk1V4JAABcDYUbAGDF7t279eijj6p06dJatGiRihYt6n6sT58+2rFjh77++msHE/pWUFCQI+975swZ5cuXz5H3zmnnz59XUFCQ8uRhBz0AgH/gGwsAYMXIkSN1+vRpTZw40aNsp6tQoYL69evnvn/x4kW99tprKl++vIKDg1WmTBm98MILSk5O9nhemTJl1KpVKy1fvlx169ZVSEiIypUrp48++shjvAsXLmjYsGGqWLGiQkJCVKhQId1999369ttv3eNc7bjqLl26qEyZMu77e/bskcvl0ptvvqmxY8eqXLlyCgsLU9OmTbV//34ZY/Taa6+pRIkSCg0NVZs2bXT8+HGP18zsvX7//Xe1bdtW+fLlU5EiRfTMM89kmN50M2fOVO3atRUaGqrChQurY8eO+uOPPzLkDg8P186dO9WiRQvlz59fjz32mCQpLS1No0ePVlxcnEJCQhQTE6NevXrpxIkTHq+xdu1axcfHq3DhwgoNDVXZsmXVrVu3TDNdLv3/ZcGCBbr11lsVEhKiatWq6fPPP88w7q5du9SuXTtFRUUpLCxM9erVy/DHl/Rj2adPn66XXnpJxYsXV1hYmJKSkq6aISemcc+ePYqOjpYkDRs2TC6XSy6XS0OHDpUk/fzzz+rSpYv7EInY2Fh169ZNx44dy5Bn+fLlqlOnjkJCQlS+fHl98MEHmeb2dtkHAPgftnADAKz46quvVK5cOd11111ejd+jRw9NmTJFDz/8sJ599lmtXr1aI0aM0JYtWzR79myPcXfs2KGHH35Y3bt3V+fOnTVp0iR16dJFtWvXVlxcnKRLJ6caMWKEevToobp16yopKUlr167V+vXr1aRJk2xN09SpU5WSkqK+ffvq+PHjGjlypB555BHdd999WrJkiZ577jnt2LFDY8aM0YABAzRp0qSrvta5c+fUuHFj7du3T0899ZSKFSum//znP1q0aFGGcSdPnqyuXbuqTp06GjFihA4fPqx3331XP/zwgzZs2KDIyEj3uBcvXlR8fLzuvvtuvfnmmwoLC5Mk9erVy/06Tz31lHbv3q33339fGzZs0A8//KDAwEAdOXJETZs2VXR0tJ5//nlFRkZqz549mZbmzGzfvl3t27fX3/72N3Xu3FkJCQlq166d5s2b557nhw8f1l133aWzZ8/qqaeeUqFChTRlyhQ98MADmjVrlh588EGP13zttdcUFBSkAQMGKDk5+Zp7CuTENEZHR2vcuHHq3bu3HnzwQf3lL3+RJN1yyy2SpG+//Va7du1S165dFRsb6z4s4pdfftGqVavcJ0TbtGmT+32GDh2qixcvasiQIYqJicmQOyvLPgDAzxgAAHJYYmKikWTatGnj1fgbN240kkyPHj08hg8YMMBIMosWLXIPK126tJFkli1b5h525MgRExwcbJ599ln3sJo1a5qWLVte830bNmxoGjZsmGF4586dTenSpd33d+/ebSSZ6Ohoc/LkSffwwYMHG0mmZs2a5sKFC+7hHTp0MEFBQeb8+fNXfa/Ro0cbSebTTz91Dztz5oypUKGCkWQWL15sjDEmJSXFFClSxFSvXt2cO3fOPe7cuXONJPPKK6945JZknn/+eY/p+f77740kM3XqVI/h8+bN8xg+e/ZsI8msWbPmGnMtc+n/L5999pl7WGJioilatKipVauWe9jTTz9tJJnvv//ePezUqVOmbNmypkyZMiY1NdUYY8zixYuNJFOuXDlz9uzZ675/Tk7j0aNHjSQzZMiQDI9llmXatGkZlsm2bduakJAQs3fvXvewX3/91eTNm9dc/vMrK8s+AMD/sEs5ACDHpe/2mz9/fq/G/+abbyRJ/fv39xj+7LPPSlKG3Y2rVaume+65x30/OjpalStX1q5du9zDIiMj9csvv2j79u1Zn4CraNeunSIiItz377jjDklSx44dFRAQ4DE8JSUlwy7fl/vmm29UtGhRPfzww+5hYWFheuKJJzzGW7t2rY4cOaK///3vCgkJcQ9v2bKlqlSpkulx8L179/a4P3PmTEVERKhJkyb63//+577Vrl1b4eHhWrx4sSS5t5TPnTtXFy5cuN7syKBYsWIeW6gLFCigTp06acOGDTp06JB7uuvWrau7777bPV54eLieeOIJ7dmzR7/++qvHa3bu3FmhoaHXfW9fTePlWc6fP6///e9/qlevniRp/fr1kqTU1FTNnz9fbdu2ValSpdzjV61aVfHx8R6vl9VlHwDgX26awr1s2TK1bt1axYoVk8vl0hdffJHl1zDG6M0331SlSpUUHBys4sWL6/XXX8/5sABwkytQoIAk6dSpU16Nv3fvXuXJk0cVKlTwGB4bG6vIyEjt3bvXY/jlJSZdwYIFPY7VffXVV3Xy5ElVqlRJNWrU0MCBA/Xzzz9ndVKu+b7p5btkyZKZDr/y2OHL7d27VxUqVMhwTebKlStnGC+z4ZJUpUqVDPMmICBAJUqU8Bi2fft2JSYmqkiRIoqOjva4nT59WkeOHJEkNWzYUA899JCGDRumwoULq02bNkpISPD6WOLMpqdSpUqSLh0bnT49mU1L1apVPaY3XdmyZb16b19N4/Hjx9WvXz/FxMQoNDRU0dHR7oyJiYmSpKNHj+rcuXOqWLFihudn9v+blWUfAOBfbppjuM+cOaOaNWuqW7du7uOtsqpfv35asGCB3nzzTdWoUUPHjx/PcNIbAMD1FShQQMWKFdPmzZuz9Lwry9rV5M2bN9Phxhj3vxs0aKCdO3fqyy+/1IIFC/Tvf/9b77zzjsaPH68ePXq43+/y56RLTU3N0vt6k8dXgoODM5zFOy0tTUWKFNHUqVMzfU76ScJcLpdmzZqlVatW6auvvtL8+fPVrVs3vfXWW1q1apXCw8Ot57+SN1u3Jd9N4yOPPKIVK1Zo4MCBuvXWWxUeHq60tDQ1a9ZMaWlpWZu4y3i77AMA/MtNU7ibN2+u5s2bX/Xx5ORkvfjii5o2bZpOnjyp6tWr65///Kf7jLFbtmzRuHHjtHnzZvdfn739qzoAIKNWrVppwoQJWrlype68885rjlu6dGmlpaVp+/bt7i2d0qUTbJ08eVKlS5fOVoaoqCh17dpVXbt21enTp9WgQQMNHTrUXbgLFizosRt6Ol9sVSxdurQ2b94sY4xH2dq2bVuG8dKH33fffR6Pbdu2zat5U758eS1cuFD169f3qsDWq1dP9erV0+uvv65PPvlEjz32mKZPn+6eb1ezY8eODNPz22+/SZL7rO+lS5fOMI2StHXrVvfj2ZGT03i18nvixAl99913GjZsmF555RX38CsPW4iOjlZoaGimhzNk9v9rY9kHAOQON80u5dfz5JNPauXKlZo+fbp+/vlntWvXTs2aNXN/GaafTXfu3LkqW7asypQpox49erCFGwCyadCgQcqXL5969Oihw4cPZ3h8586devfddyVJLVq0kCSNHj3aY5y3335b0qXjlbPqyss0hYeHq0KFCh67DpcvX15bt27V0aNH3cN++ukn/fDDD1l+v6xq0aKFDhw4oFmzZrmHnT17VhMmTPAY7/bbb1eRIkU0fvx4j+z//e9/tWXLFq/mzSOPPKLU1FS99tprGR67ePGiTp48KelSobxyq/ytt94qSV7tcn3gwAGPs2onJSXpo48+0q233qrY2FhJl6b7xx9/1MqVK93jnTlzRhMmTFCZMmVUrVq1675PZnJyGtPP7J7+nHTpezJc+fwrl9u8efMqPj5eX3zxhfbt2+cevmXLFs2fP99jXBvLPgAg97hptnBfy759+5SQkKB9+/apWLFikqQBAwZo3rx5SkhI0PDhw7Vr1y7t3btXM2fO1EcffaTU1FQ988wzevjhhzO9RAsA4NrKly+vTz75RO3bt1fVqlXVqVMnVa9eXSkpKVqxYoVmzpypLl26SJJq1qypzp07a8KECTp58qQaNmyoH3/8UVOmTFHbtm3VqFGjLL9/tWrVdO+996p27dqKiorS2rVrNWvWLD355JPucbp166a3335b8fHx6t69u44cOaLx48crLi7umtd7zgk9e/bU+++/r06dOmndunUqWrSo/vOf/7jLXrrAwED985//VNeuXdWwYUN16NDBfVmwMmXK6JlnnrnuezVs2FC9evXSiBEjtHHjRjVt2lSBgYHavn27Zs6cqXfffVcPP/ywpkyZon/961968MEHVb58eZ06dUoffvihChQo4C6G11KpUiV1795da9asUUxMjCZNmqTDhw8rISHBPc7zzz+vadOmqXnz5nrqqacUFRWlKVOmaPfu3frss88y7A7vrZycxtDQUFWrVk0zZsxQpUqVFBUVperVq6t69epq0KCBRo4cqQsXLqh48eJasGCBdu/enSHPsGHDNG/ePN1zzz36+9//rosXL2rMmDGKi4vzOJeAjWUfAJCLOHZ+dIskmdmzZ7vvp186JV++fB63gIAA88gjjxhjjOnZs6eRZLZt2+Z+3rp164wks3XrVl9PAgDcNH777TfTs2dPU6ZMGRMUFGTy589v6tevb8aMGeNx2awLFy6YYcOGmbJly5rAwEBTsmRJM3jwYI9xjLl0+anMLvd15WW3/vGPf5i6deuayMhIExoaaqpUqWJef/11k5KS4vG8jz/+2JQrV84EBQWZW2+91cyfP/+qlwUbNWqUx3PTL101c+ZMj+EJCQkZLj2V2SXI9u7dax544AETFhZmChcubPr16+e+jFX6ZcHSzZgxw9SqVcsEBwebqKgo89hjj5nff//dY5zOnTubfPnyZZg36SZMmGBq165tQkNDTf78+U2NGjXMoEGDzIEDB4wxxqxfv9506NDBlCpVygQHB5siRYqYVq1ambVr1171NdOl/7/Mnz/f3HLLLSY4ONhUqVIlw7wxxpidO3eahx9+2ERGRpqQkBBTt25dM3fuXI9xrjZvryenpnHFihWmdu3aJigoyOMSYb///rt58MEHTWRkpImIiDDt2rUzBw4cyPQyYkuXLnW/Rrly5cz48ePNkCFDzJU/v7xd9gEA/sdljANndLHM5XJp9uzZatu2rSRpxowZeuyxx/TLL79kOLFNeHi4YmNjNWTIEA0fPtzjEiHnzp1TWFiYFixYoCZNmvhyEgAA8CtlypRR9erVNXfuXKejAACQa/wpdimvVauWUlNTdeTIEY/rtl6ufv36unjxonbu3Kny5ctL+r8TvXDCEgAAAABAVt00hfv06dPasWOH+/7u3bu1ceNGRUVFqVKlSnrsscfUqVMnvfXWW6pVq5aOHj2q7777Trfccotatmyp+++/X7fddpu6deum0aNHKy0tTX369FGTJk3c1xAFAAAAAMBbN81ZyteuXatatWqpVq1akqT+/fur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3xOX34oUKeLznJdnvdp6YsyYMWrTpo3q16+v1atX6+eff9ajjz6qv/3tb47M28szX2/+/vrrr+rVq5d69+7t/gOYr3n7mUs3ceJE9e3bV8uWLdOBAwd8GdWrHCkpKYqPj9cbb7yhJ554QitWrNCPP/6oPn36aMyYMfrll18cyZuVjuT0evh6/8fFixfXRx995DFsypQpKl68uG8Cmj+xEydOGElmyZIlVx2ndOnS5p133nHfv3DhggkLCzPPP/+8DxL+n+tlPXPmjClcuLBp27btVZ/va507dzZt2rTxGNakSRNTr149s3jxYiPJI9ecOXOMJPPTTz85krN69erm448/dg+fOnWqueWWW0ybNm1M586djTHGxMfHmxIlSpjTp09n+lppaWm+iOyW2Tz+y1/+YmrVqmWMMeadd94xZcqU8Wkmb1wvtzHGSDKzZ8/2bbArZJbTGGO+++47I8l8+OGHxpiM6wknXS2zMcbMnj3bBAQEmAsXLvg21FVklvX77783ksyRI0fcwyZPnmzq1atnTp48acLCwsy+fft8nPQSb5fbAQMGmDx58phNmza5h1++HvEVb9ZXp0+fNoUKFTJ/+ctfMjyevk6ePn267agemjdvbooXL55p7vTvjNzymfP2+8Ob3xu+kJXvu3QJCQkmIiLCt0GvkNXfE0663npi3759JjAw0PTv3z/Dc9977z0jyaxatcoXUd2yM3/Lly9vRo4c6buQ/19Wl+FTp06Z8PBws3XrVtO+fXvz+uuv+zzz9XL885//NHny5DHr16/P8LyUlJSrrsNtyk5Hcsq15u3u3buNJPPSSy+ZihUrejyvUqVK5uWXXzaSzO7du61m/FNv4Q4PD1d4eLi++OILJScne/WcgIAABQYG+nwr7PWyzp8/X//73/80aNCgTJ8fGRlpOaF3QkNDM513iYmJmj59uiQpKCjI17EkSd26dVNCQoL7/qRJk9S1a1f3/WPHjmnBggXq06eP8uXLl+lruFwu6zmvZfPmzVqxYoV7HsbGxurgwYNatmyZo7mu58rcud19992nmjVr6vPPP3c6SpbExsbq4sWLmj17ts+3Wnrj9OnT+vjjj1WhQgUVKlTIPXzixInq2LGjIiIi1Lx5c8d2u7zS1Zbb+vXrq1WrVnr++ecdSub9+mrBggU6duxYplvVWrdurUqVKmnatGm247od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Pj5eY8eOzTS30//n13Kt74+rufL3hi9lJ6+TsvJ7Ije5cj3x0EMPKTAwMNPP3Pjx43XmzBmffubSZXX+5s2b1/Hv62stwxcvXtRHH32kt956y+P746efflKxYsV8dpy8Nzn++te/auHChZle3eTChQu55vtZcnaddaXs/B9369ZNS5Ys8enWbelPXriPHTum++67Tx9//LF+/vln7d69WzNnztTIkSPVpk0bp+N5uF7WfPny6d///re+/vprPfDAA1q4cKH27NmjtWvXatCgQZlerzC3CQsLU8+ePTVkyBDHdq/JmzevtmzZol9//VV58+bN8Pi//vUvXbx4UbfffrtmzJihLVu2aNu2bfr444+1devWTJ/ja+3atVPevHk1duxYffDBB+rdu7cWLFignTt36pdfftFzzz2nX375xWcnivDW5blzk+TkZB06dEh//PGH1q9fr+HDh6tNmzZq1aqVo7uNX0t65stv//vf/zR37lx17NhRc+fO1W+//aZt27bpzTff1DfffOPYOu/yrFu2bFHfvn11+vRptW7dWhMnTlTLli1Vs2ZNVa9e3X175JFHFBkZqalTpzqS+XLXW24HDx6sAwcOOHLJQG/WV/ny5dMHH3ygL7/8Uk888YR+/vln7dmzRxMnTlSXLl308MMP65FHHvFp7rFjxyo1NVV169bVZ599pu3bt2vLli167733PPbgOnXqVIbl3MnzU1zr+yM3/t643vedvzly5EiG5cGp6xdf6fL1RKlSpTRy5EiNHj1aL774orZu3aqdO3fq7bff1qBBg/Tss886ejKyq0mfv3v37tXMmTP1n//8x/HfytdahufOnasTJ06oe/fuHt8f1atX10MPPeSz3cq9yfH000+rfv36aty4scaOHauffvpJu3bt0qeffqp69eq5z9PkS96us5xcD2fn/7hnz546evSoevTo4ZOMblbPgZ7LnT9/3jz//PPmtttuMxERESYsLMxUrlzZvPTSS+bs2bPGmNxzyntvshpjzJo1a8xf/vIXEx0dbYKDg02FChXME088YbZv3+7zzNe6PNHVLjOxb98+ExAQYGbMmGE/4P93rZzGZLycz4EDB8yTTz5pypYtawIDA014eLipW7euGTVqlDlz5oz9wJe5WvYRI0aY6Ohos3z5ctOxY0dTtmxZExwcbAoVKmQaNGhg5syZ49OcV7pe7tOnTxtJ5quvvvJ9uMt07tzZSDKSTEBAgImOjjb333+/mTRpkklNTXWPl1vWE8Z4Zr78VrlyZbNz507Ts2dPU6lSJRMaGmoiIyNNnTp1TEJCQq7Imj9/flOnTh0za9Ysc+jQIRMQEGA+/fTTTJ/bu3dvj8tx+SqvN8vtlZezGz58uJHk88uCGeP9+mrZsmUmPj7eFChQwAQFBZm4uDjz5ptvmosXL/o8c3ruPn36mNKlS5ugoCBTvHhx88ADD5jFixcbYy595jJbznv16uXTnN5+f3j7HZ5b8l4ut14WLF3674nMbitXrvRtUOPdesIYY7788ktzzz33mHz58pmQkBBTu3ZtM2nSJB+nvSQr8zcgIMCULVvWDBgwwJHLVXm7DLdq1cq0aNEi03FWr17ts8vQepvj/PnzZsSIEaZGjRomJCTEREVFmfr165vJkyc7cilPbzuSk+thb+etJLNhw4ZMx9uwYYNPLgvmMiaXHqkP4E/r0KFDKlq0qNasWePYSZAAAACAG+U/B8EAuOkZY7R37169+eabiomJUfXq1Z2OBAAAAGQbhRtArpGYmKjKlSuratWqmj59ukJCQpyOBAAAAGQbu5QDAAAAAGDBn/os5QAAAAAA2ELhBgAAAADAAgo3AAAAAAAWULgBAAAAALCAwg0AAAAAgAUUbgAA4JV7771XTz/9tNMxAADwGxRuAAByuS5dusjlcmW4NWvW7LrPLVOmjEaPHm0/JAAAyCDA6QAAAOD6mjVrpoSEBI9hwcHBDqUBAADeYAs3AAB+IDg4WLGxsR63ggULyhijoUOHqlSpUgoODlaxYsX01FNPSbq0C/jevXv1zDPPuLeKS9KxY8fUoUMHFS9eXGFhYapRo4amTZvm8X5nzpxRp06dFB4erqJFi+qtt97KkOnEiRPq1KmTChYsqLCwMDVv3lzbt2+3PzMAAPATFG4AAPzYZ599pnfeeUcffPCBtm/fri+++EI1atSQJH3++ecqUaKEXn31VR08eFAHDx6UJJ0/f161a9fW119/rc2bN+uJJ57Q448/rh9//NH9ugMHDtTSpUv15ZdfasGCBVqyZInWr1/v8d5dunTR2rVrNWfOHK1cuVLGGLVo0UIXLlzw3QwAACAXY5dyAAD8wNy5cxUeHu4x7IUXXlBISIhiY2N1//33KzAwUKVKlVLdunUlSVFRUcqbN6/y58+v2NhY9/OKFy+uAQMGuO/37dtX8+fP16effqq6devq9OnTmjhxoj7++GM1btxYkjRlyhSVKFHC/Zzt27drzpw5+uGHH3TXXXdJkqZOnaqSJUvqiy++ULt27azNCwAA/AWFGwAAP9CoUSONGzfOY1hUVJTOnDmj0aNHq1y5cmrWrJlatGih1q1bKyDg6l/xqampGj58uD799FP98ccfSklJUXJyssLCwiRJO3fuVEpKiu644w6P96pcubL7/pYtWxQQEOAxTqFChVS5cmVt2bIlpyYbAAC/RuEGAMAP5MuXTxUqVMgwPCoqStu2bdPChQv17bff6u9//7tGjRqlpUuXKjAwMNPXGjVqlN59912NHj1aNWrUUL58+fT0008rJSXF9mQAAPCnwjHcAAD4udDQULVu3VrvvfeelixZopUrV2rTpk2SpKCgIKWmpnqM/8MPP6hNmzbq2LGjatasqXLlyum3335zP16+fHkFBgZq9erV7mEnTpzwGKdq1aq6ePGixzjHjh3Ttm3bVK1aNVuTCgCAX2ELNwAAfiA5OVmHDh3yGBYQEKC5c+cqNTVVd9xxh8LCwvTxxx8rNDRUpUuXlnTpOtzLli3To48+quDgYBUuXFgVK1bUrFmztGLFChUsWFBvv/22Dh8+7C7K4eHh6t69uwYOHKhChQqpSJEievHFF5Unz//9nb5ixYpq06aNevbsqQ8++ED58+fX888/r+LFi6tNmza+mzEAAORibOEGAMAPzJs3T0WLFvW43X333YqMjNSHH36o+vXr65ZbbtHChQv11VdfqVChQpKkV199VXv27FH58uUVHR0tSXrppZd02223KT4+Xvfee69iY2PVtm1bj/cbNWqU7rnnHrVu3Vr333+/7r77btWuXdtjnISEBNWuXVutWrXSnXfeKWOMvvnmm6vuyg4AwJ+NyxhjnA4BAAAAAMDNhi3cAAAAAABYQOEGAAAAAMACCjcAAAAAABZQuAEAAAAAsIDCDQAAAACABRRuAAAAAAAsoHADAAAAAGABhRsAAAAAAAso3AAAAAAAWEDhBgAAAADAAgo3AAAAAAAW/D9eUZHS7hHYqAAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Consumidores por estado\n", + "\n", + "plt.figure(figsize=(12, 6))\n", + "\n", + "sns.countplot(data = df_juncao,\n", + " x = \"customer_state\")\n", + "\n", + "# definir texto do título e eixos x e y\n", + "\n", + "plt.title(\"Consumidores por estado\")\n", + "plt.xlabel(\"Estado\")\n", + "plt.ylabel(\"Contagem\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0, 0.5, 'Contagem')" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA9wAAAIjCAYAAADx4xNlAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABKFElEQVR4nO3dd3xT9eL/8XfopIMCZc+ypyAiOCqCMstWkSHIUBG9gCACCqjgogoOrsgFvULBL0tBUEQvcNlTQIaCAlZkyRBktJRRaPv5/cGvuYS20JZ+kgZfz8cjD8jJSfLOSc5J3j3LYYwxAgAAAAAAOSqPpwMAAAAAAHAronADAAAAAGABhRsAAAAAAAso3AAAAAAAWEDhBgAAAADAAgo3AAAAAAAWULgBAAAAALCAwg0AAAAAgAUUbgAAAAAALKBwAwBwjZ49eyoiIiJHHzMiIkI9e/bM0cdE7rB//345HA5NnTrV01EAALkMhRsA4DFt27ZVUFCQzp49m+E4Xbt2lb+/v06ePOnGZLgVzZw5U+PGjfN0DADA3wiFGwDgMV27dtWFCxc0f/78dG8/f/68vv76a7Vo0ULh4eFuTodbDYUbAOBuFG4AgMe0bdtWoaGhmjlzZrq3f/311zp37py6du3q5mS528WLF5WSkuLpGDnCGKMLFy54OgYAAFZQuAEAHpM3b149/PDDWrZsmY4fP57m9pkzZyo0NFRt27aVJJ05c0YDBw5U6dKlFRAQoIoVK+qdd95xKZ+p+9O+++67+uSTT1ShQgUFBASoXr162rx5c5rn+Oqrr1SzZk0FBgaqZs2aGa5tT0lJ0bhx41SjRg0FBgaqaNGi6tOnj06fPu0ynjFGb775pkqVKqWgoCA98MAD+vnnn9N9zN9//12PPvqoChYsqKCgIN1999369ttvXcZZuXKlHA6HZs+erZdfflklS5ZUUFCQ4uPjJUkbN25UixYtFBYWpqCgIDVs2FDr1q1zeYyzZ89q4MCBioiIUEBAgIoUKaKmTZtq69at6eZKNWrUKDkcDu3evVsdO3ZUvnz5FB4ergEDBujixYsu4yYlJemNN95wTu+IiAgNHz5ciYmJLuNFRESodevWWrx4se68807lzZtXH3/88XVz5MRrbNSokb799lsdOHBADodDDofDuZ/+pUuX9Oqrr6pu3boKCwtTcHCwGjRooBUrVqTJcubMGfXs2VNhYWHKnz+/evTooTNnzqSbe/ny5WrQoIGCg4OVP39+tWvXTrt27bruawUA3Fp8PR0AAPD31rVrV02bNk1ffPGF+vXr5xx+6tQpLV68WF26dFHevHl1/vx5NWzYUIcPH1afPn1UpkwZrV+/XsOGDdPRo0fTbCo8c+ZMnT17Vn369JHD4dCYMWP08MMP6/fff5efn58kacmSJXrkkUdUvXp1RUdH6+TJk+rVq5dKlSqVJmefPn00depU9erVS88995z27dunjz76SNu2bdO6deucj/nqq6/qzTffVMuWLdWyZUtt3bpVzZo106VLl1we788//9S9996r8+fP67nnnlN4eLimTZumtm3bau7cuXrooYdcxn/jjTfk7++vwYMHKzExUf7+/lq+fLmioqJUt25djRw5Unny5FFMTIwefPBBrVmzRvXr15ckPfPMM5o7d6769eun6tWr6+TJk1q7dq127dqlO+6444bvUceOHRUREaHo6Gh9//33+vDDD3X69Gl99tlnznGeeuopTZs2TR06dNALL7ygjRs3Kjo6Wrt27UrzR4w9e/aoS5cu6tOnj3r37q0qVapk+Nw59RpHjBihuLg4/fHHH/rggw8kSSEhIZKk+Ph4ffrpp+rSpYt69+6ts2fPavLkyWrevLk2bdqk22+/XdKVP6a0a9dOa9eu1TPPPKNq1app/vz56tGjR5rcS5cuVVRUlMqXL69Ro0bpwoULGj9+vCIjI7V169YcPygfACCXMgAAeFBSUpIpXry4ueeee1yGT5o0yUgyixcvNsYY88Ybb5jg4GDz66+/uoz30ksvGR8fH3Pw4EFjjDH79u0zkkx4eLg5deqUc7yvv/7aSDLffPONc9jtt99uihcvbs6cOeMctmTJEiPJlC1b1jlszZo1RpKZMWOGy3MvWrTIZfjx48eNv7+/adWqlUlJSXGON3z4cCPJ9OjRwzls4MCBRpJZs2aNc9jZs2dNuXLlTEREhElOTjbGGLNixQojyZQvX96cP3/eOW5KSoqpVKmSad68uctznT9/3pQrV840bdrUOSwsLMz07dvXZNXIkSONJNO2bVuX4f/4xz+MJPPjjz8aY4zZvn27kWSeeuopl/EGDx5sJJnly5c7h5UtW9ZIMosWLbrh8+f0a2zVqpXL+5oqKSnJJCYmugw7ffq0KVq0qHniiSec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hTRmzJh0xztz5oxbcwUHB6tixYoqU6aMc01RRvr27audO3dq/vz5bkr3Py1atNClS5d0+fJl5yakqcLDw9W0aVN99NFHHjuSckby5Mmj4cOH6+WXX3Y5+ubVChQooOLFi+eK7JnJmxssX75cO3bsyLVrFKQr+8XmyZNHFy5c0HfffaezZ89q27ZtLn9FnjVrlubNm+f2+T4r/P39VaFCBY99PtNbRs2YMUOlSpXSjz/+6DI933vvPU2dOtVjR/y/0fxTunRp9evXT8OHD3dbxswuH5s1a6aCBQvqvffeS3PbggULFBsb61wTYVPBggXVvHlzTZgwId28uXFeud73U0au/d3iDtnJ6QlZ+V2SG1w73z/yyCPy8/NLd16aNGmSzp0755Z5KVVWp6ePj4/Hvv+v9xlNSkrSZ599pvfee89luf/jjz+qRIkS1veLz8zzP/bYY1q6dGm6Z0m5fPlyrvid54llz7Wy814+8cQTWrlypfvWbutvvEn5yZMn9eCDD2r69On66aeftG/fPs2ZM0djxoxRu3btPB1P0o0zBgcH69NPP9W3336rtm3baunSpdq/f79++OEHDR06NN3zEOYWQUFB6t27t0aOHOn2zWZ8fHy0a9cu/fLLL/Lx8Ulz+7/+9S8lJSXpzjvv1Oeff65du3Zpz549mj59unbv3p3ufdzl0UcflY+PjyZMmKCPP/5Yzz77rJYsWaK9e/fq559/1osvvqiff/7ZLQeAyIyr8+YGiYmJOnbsmA4fPqytW7dq9OjRateunVq3bu32zcavJzXnsWPHtGvXLvXv318JCQlq06aNJk+erFatWql27dqqWbOm89KxY0flz59fM2bM8FjW1Mtff/2lhQsXqlu3blq4cKF+/fVX7dmzR++++66+++67XLOMla7s99WhQweXaVmzZk09+eST+uuvv7Ro0SKPZbvR/DNs2DAdOXLEracqzMzyMTg4WB9//LG+/vprPf300/rpp5+0f/9+TZ48WT179lSHDh3UsWNHt+SdMGGCkpOTVb9+fX355ZeKjY3Vrl279OGHH+qee+5xjnf27Nk0n2NPHA/jet9Puel3y42+R73F8ePH07zv7j6/8bWunu/LlCmjMWPGaNy4cRoxYoR2796tvXv36v3339fQoUP1wgsveOSgZBlJnZ4HDhzQnDlz9H//938eW95f7zO6cOFCnT59Wk8++WSaZf8jjzxifbPyzDz/wIEDFRkZqcaNG2vChAn68ccf9fvvv+uLL77Q3Xff7TyOkztkdtnjieVodt7L3r1768SJE3rqqaesZnNhbd15Lnfx4kXz0ksvmTvuuMOEhYWZoKAgU6VKFfPyyy87Twfj6c3MMpPRGGM2b95sHn74YVO4cGETEBBgKlasaJ5++mkTGxvrtqzX27Q0o02NDh48aHx9fc3nn3/u0XzGpN0U7siRI6Zfv36mXLlyxs/Pz4SEhJj69eubsWPHmnPnzlnPa0zGmaOjo03hwoXN2rVrTbdu3Uy5cuVMQECACQ8PN/fff79ZsGCBW/Jd60Z5ExISjCTzzTffuD+cuZJPkpFkfH19TeHChU2TJk3MlClTTHJysnM8T8/3V+eUZEJDQ029evXM3LlzzbFjx4yvr6/54osv0r3vs88+63IaKXdnTb1UqVLF7N271/Tu3dtUrlzZ5M2b1+TPn9/Uq1fPxMTEuC3ftVmv/Xz+8MMPRpLZtGlTuveJiooyDz30kBvSZX7+uXaXjNGjRxtJbjstmDGZXz6uXr3aNG/e3OTLl8/4+/ubGjVqmHfffdckJSW5LWtq3r59+5qyZcsaf39/U7JkSdO2bVuzYsUKY8yVeT69z3GfPn3cki+z30+Z/U3g6ZxX8/Qm5Tf6XZLeZcOGDR7PePV8b4wxX3/9tWnQoIEJDg42gYGBpm7dumbKlCluy3m9rMaknZ6+vr6mXLlyZvDgwW49fVVmP6OtW7c2LVu2THecjRs3Wj9tbWaf/+LFiyY6OtrcdtttJjAw0BQsWNBERkaaqVOnuvWUm5ntTJ5YjmZ2WuqqTcqv5Y5Nyh3G5LK98gHcko4dO6bixYtr8+bNbj8YEQAAAOAJuX+HFgBezRijAwcO6N1331XRokVVs2ZNT0cCAAAA3ILCDcCquLg4ValSRdWqVdPs2bMVGBjo6UgAAACAW7BJOQAAAAAAFvxtj1IOAAAAAIBNFG4AAAAAACygcAMAAAAAYAGFGwAAAAAACyjcAAAAAABYQOEGAACZ0qhRIw0cONDTMQAA8BoUbgAAcrmePXvK4XCkubRo0eKG942IiNC4cePshwQAAGn4ejoAAAC4sRYtWigmJsZlWEBAgIfSAACAzGANNwAAXiAgIEDFihVzuRQoUEDGGI0aNUplypRRQECASpQooeeee07SlU3ADxw4oOeff965VlySTp48qS5duqhkyZIKCgrSbbfdplmzZrk837lz59S9e3eFhISoePHieu+999JkOn36tLp3764CBQooKChIUVFRio2NtT8xAADwEhRuAAC82JdffqkPPvhAH3/8sWJjY/XVV1/ptttukyTNmzdPpUqV0uuvv66jR4/q6NGjkqSLFy+qbt26+vbbb7Vz5049/fTTevzxx7Vp0ybn4w4ZMkSrVq3S119/rSVLlmjlypXaunWry3P37NlTP/zwgxYsWKANGzbIGKOWLVvq8uXL7psAAADkYmxSDgCAF1i4cKFCQkJchg0fPlyBgYEqVqyYmjRpIj8/P5UpU0b169eXJBUsWFA+Pj4KDQ1VsWLFnPcrWbKkBg8e7Lzev39/LV68WF988YXq16+vhIQETZ48WdOnT1fjxo0lSdOmTVOpUqWc94mNjdWCBQu0bt063XvvvZKkGTNmqHTp0vrqq6/06KOPWpsWAAB4Cwo3AABe4IEHHtDEiRNdhhUsWFDnzp3TuHHjVL58ebVo0UItW7ZUmzZt5Oub8Vd8cnKyRo8erS+++EKHDx/WpUuXlJiYqKCgIEnS3r17denSJd11110uz1WlShXn9V27dsnX19dlnPDwcFWpUkW7du3KqZcNAIBXo3ADAOAFgoODVbFixTTDCxYsqD179mjp0qX673//q3/84x8aO3asVq1aJT8/v3Qfa+zYsfrnP/+pcePG6bbbblNwcLAGDhyoS5cu2X4ZAAD8rbAPNwAAXi5v3rxq06aNPvzwQ61cuVIbNmzQjh07JEn+/v5KTk52GX/dunVq166dunXrptq1a6t8+fL69ddfnbdXqFBBfn5+2rhxo3PY6dOnXcapVq2akpKSXMY5efKk9uzZo+rVq9t6qQAAeBXWcAMA4AUSExN17Ngxl2G+vr5auHChkpOTdddddykoKEjTp09X3rx5VbZsWUlXzsO9evVqde7cWQEBASpUqJAqVaqkuXPnav369SpQoIDef/99/fnnn86iHBISoieffFJDhgxReHi4ihQpohEjRihPnv/9nb5SpUpq166devfurY8//lihoaF66aWXVLJkSbVr1859EwYAgFyMNdwAAHiBRYsWqXjx4i6X++67T/nz59e///1vRUZGqlatWlq6dKm++eYbhYeHS5Jef/117d+/XxUqVFDhwoUlSS+//LLuuOMONW/eXI0aNVKxYsXUvn17l+cbO3asGjRooDZt2qhJkya67777VLduXZdxYmJiVLduXbVu3Vr33HOPjDH67rvvMtyUHQCAvxuHMcZ4OgQAAAAAALca1nADAAAAAGABhRsAAAAAAAso3AAAAAAAWEDhBgAAAADAAgo3AAAAAAAWULgBAAAAALCAwg0AAAAAgAUUbgAAAAAALKBwAwAAAABgAYUbAAAAAAALKNwAAAAAAFjw/wAltxi1mTr29AAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Vendedores por estado\n", + "\n", + "plt.figure(figsize=(12, 6))\n", + "\n", + "sns.countplot(data = df_juncao,\n", + " x = \"seller_state\")\n", + "\n", + "# definir texto do título e eixos x e y\n", + "\n", + "plt.title(\"Vendedores por estado\")\n", + "plt.xlabel(\"Estado\")\n", + "plt.ylabel(\"Contagem\")" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0, 0.5, 'Contagem')" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA9wAAAIjCAYAAADx4xNlAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABL+0lEQVR4nO3deZyNdeP/8fcZsxljZhg7g7HvU1laJiFkxt6ClKxJQiREG7rvKFqkJBVDX6ISbslXbmQXshSFxi57lhlLhpn5/P7wm/N1zOAY85kzR6/n43Eeda7rOue8z3Wuuc55uzaHMcYIAAAAAABkKR9PBwAAAAAA4HZE4QYAAAAAwAIKNwAAAAAAFlC4AQAAAACwgMINAAAAAIAFFG4AAAAAACygcAMAAAAAYAGFGwAAAAAACyjcAAAAAABYQOEGANxW9u7dK4fDocmTJ+e4HMOGDZPD4fBcKEkXL15U/fr1lS9fPo0aNUoHDhxQWFiYRzP9U+WUZRUAYA+FGwCQ5fbs2aPevXurQoUKCgoKUlBQkKpUqaJevXrp119/9XS8f7RFixbpyJEjGjx4sMaMGaNSpUrp6aef9nSsHO3LL7/UmDFjPB0DAOCFfD0dAABwe5k3b57atWsnX19fPfnkk4qKipKPj4+2b9+uWbNmafz48dqzZ49KlSrl6ajZ7tVXX9XgwYM9mqFu3bpavny5ChUqpP79++vEiRMqUqSIRzPldF9++aW2bt2qfv36eToKAMDLULgBAFlm165devzxx1WqVCktXrxYRYsWdRn/9ttv6+OPP5aPzz9zBytfX1/5+nr2qzdv3rzKmzevJMnPz89ry7YxRhcuXFDu3Lk9HQUAgGv6Z/7iAQBYMWrUKJ07d05xcXHpyrZ0uXA+//zzioiIcBm+fft2PfbYY8qfP78CAwNVq1YtzZ07N93jd+/erTZt2ih//vwKCgrSPffco++//96tbEuWLFHdunWVJ08ehYWFqVWrVtq2bVu66Q4ePKhu3bqpWLFiCggIUGRkpHr27KmLFy9Kkk6ePKkBAwaoevXqCg4OVkhIiGJjY/XLL7/cMMPVx3B37txZDocjw9uwYcMkXT7m+vXXX1fNmjUVGhqqPHnyqG7duvrxxx/TPX9qaqo++OADVa9eXYGBgSpYsKBiYmL0888/O6eZOHGiHnzwQRUqVEgBAQGqUqWKxo8fn2Hejz/+WFWrVlVAQICKFSumXr166fTp026/z+3bt6tt27YKCQlReHi4+vbtqwsXLrhMm5ycrH/9618qW7asAgICVLp0ab388stKSkpyma506dJq3ry5fvjhB9WqVUu5c+fWhAkTrptj7dq1iomJUWhoqIKCglSvXj2tWrXKZZozZ86oX79+Kl26tAICAlSoUCE1btxYGzdulCTVr19f33//vfbt2+f8bEqXLi3p5j6b06dPq3PnzgoNDVVYWJg6dep0zXnp7rIKAMj52MINAMgy8+bNU7ly5XT33Xe7/ZjffvtN0dHRKl68uAYPHqw8efLo66+/VuvWrfXtt9/q4YcfliQdPXpU9913n86fP6/nn39e4eHhmjJlilq2bKmZM2c6p8vIokWLFBsbqzJlymjYsGH6+++/9eGHHyo6OlobN250FqhDhw6pTp06On36tJ555hlVqlRJBw8e1MyZM3X+/Hn5+/tr9+7dmjNnjtq0aaPIyEgdPXpUEyZMUL169fT777+rWLFibr/3Hj16qFGjRi7DFixYoGnTpqlQoUKSpMTERH3++edq3769unfvrjNnzmjixIlq0qSJ1q1bpzvuuMP52G7dumny5MmKjY3V008/reTkZK1YsUI//fSTatWqJelyiY6KilLLli3l6+ur7777Ts8995xSU1PVq1cv53MNGzZMw4cPV6NGjdSzZ0/t2LFD48eP1/r167Vq1Sr5+fnd8P21bdtWpUuX1siRI/XTTz9p7NixOnXqlL744gvnNE8//bSmTJmixx57TC+++KLWrl2rkSNHatu2bZo9e7bL8+3YsUPt27dXjx491L17d1WsWPGar71kyRLFxsaqZs2aGjp0qHx8fBQXF6cHH3xQK1asUJ06dSRJzz77rGbOnKnevXurSpUqOnHihFauXKlt27bprrvu0iuvvKKEhAT9+eefev/99yVJwcHBN/XZGGPUqlUrrVy5Us8++6wqV66s2bNnq1OnTulyu7usAgC8hAEAIAskJCQYSaZ169bpxp06dcocP37ceTt//rxzXMOGDU316tXNhQsXnMNSU1PNfffdZ8qXL+8c1q9fPyPJrFixwjnszJkzJjIy0pQuXdqkpKQYY4zZs2ePkWTi4uKc091xxx2mUKFC5sSJE85hv/zyi/Hx8TEdO3Z0DuvYsaPx8fEx69evT/ceUlNTjTHGXLhwwflaafbs2WMCAgLMG2+84TLs6hxDhw411/vqjY+PN6GhoaZx48YmOTnZGGNMcnKySUpKcpnu1KlTpnDhwqZr167OYUuWLDGSzPPPP3/N7MYYc+7cuXTjmzRpYsqUKeO8f+zYMePv728eeughl/f60UcfGUlm0qRJ13wPV77Pli1bugx/7rnnjCTzyy+/GGOM2bx5s5Fknn76aZfpBgwYYCSZJUuWOIeVKlXKSDILFiy47munvd/y5cubJk2auLz38+fPm8jISNO4cWPnsNDQUNOrV6/rPl+zZs1MqVKl0g1397OZM2eOkWRGjRrl8ti6detmelkFAHgHdikHAGSJxMRESf+39e9K9evXV8GCBZ23cePGSbq8e/aSJUvUtm1bnTlzRn/99Zf++usvnThxQk2aNFF8fLwOHjwoSZo/f77q1Kmj+++/3/m8wcHBeuaZZ7R37179/vvvGeY6fPiwNm/erM6dOyt//vzO4TVq1FDjxo01f/58SZd3x54zZ45atGjh3Bp8pbRdwQMCApzHoKekpOjEiRMKDg5WxYoVnbshZ8a5c+f08MMPK1++fJo+fbpy5colScqVK5f8/f2dGU+ePKnk5GTVqlXL5fW+/fZbORwODR069JrZJSkoKMj5/wkJCfrrr79Ur1497d69WwkJCZIub2W9ePGi+vXr53K8fffu3RUSEuL2bvxXbjGXpD59+kiSc56n/bd///4u07344ouSlO51IiMj1aRJkxu+7ubNmxUfH68nnnhCJ06ccC5X586dU8OGDbV8+XKlpqZKksLCwrR27VodOnTIrfd0JXc/m/nz58vX11c9e/Z0eWza/Ejj7rIKAPAet03hXr58uVq0aKFixYrJ4XBozpw5N/0cxhi98847qlChggICAlS8eHG9+eabWR8WAG5DaSfiOnv2bLpxEyZM0H//+19NnTrVZfjOnTtljNFrr73mUsgLFizoLI7Hjh2TJO3bty/DXYgrV67sHJ+RtOHXemxaETt+/LgSExNVrVq1677P1NRUvf/++ypfvrwCAgJUoEABFSxYUL/++quzsGZG9+7dtWvXLs2ePVvh4eEu46ZMmaIaNWooMDBQ4eHhKliwoL7//nuX19u1a5eKFSvmUtQysmrVKjVq1Mh5fHDBggX18ssvS5Lz+a41z/z9/VWmTJlrzuurlS9f3uV+2bJl5ePjo7179zpfx8fHR+XKlXOZrkiRIgoLC0v3OpGRkW69bnx8vCSpU6dO6Zarzz//XElJSc73OmrUKG3dulURERGqU6eOhg0bpt27d7v1OpJ7n82+fftUtGjRdP8YdfX8dXdZBQB4j9vmGO5z584pKipKXbt21SOPPJKp5+jbt68WLlyod955R9WrV9fJkyd18uTJLE4KALen0NBQFS1aVFu3bk03Lu2Y7rSilSZtK+OAAQOuueXy6jLmaSNGjNBrr72mrl276l//+pfy588vHx8f9evXz/l+btYHH3yg6dOna+rUqS7HZEvS1KlT1blzZ7Vu3VoDBw5UoUKFlCtXLo0cOVK7du26qdfZtWuXGjZsqEqVKum9995TRESE/P39NX/+fL3//vuZzu+uK7e0uzP8au6ekTztfYwePTrd/EyTVn7btm2runXravbs2Vq4cKFGjx6tt99+W7NmzVJsbOx1XycrPxsAwO3ptincsbGx1/1iTEpK0iuvvKLp06fr9OnTqlatmt5++23Vr19fkrRt2zaNHz9eW7dudf7Lsrv/kg4AuKxZs2b6/PPPtW7dOudJqa6nTJkyki5fnurqk4ddrVSpUtqxY0e64du3b3eOv9bjJF3zsQUKFFCePHmUO3duhYSEZPgPBleaOXOmGjRooIkTJ7oMP336tAoUKHDdx2ZkxYoVGjBggPr166cnn3wyw9crU6aMZs2a5VJMr951vGzZsvrhhx908uTJa27l/u6775SUlKS5c+eqZMmSzuFXn1X7ynmW9hlJl8/KvWfPnht+Vmni4+Ndvkt37typ1NRU54m/SpUqpdTUVMXHxzv3VJAunyDv9OnTmb5We9myZSVJISEhbmUtWrSonnvuOT333HM6duyY7rrrLr355pvO3xXX+gcBdz+btMvknT171mUr99XLpLvLKgDAe9w2u5TfSO/evbVmzRrNmDFDv/76q9q0aaOYmBjnbmffffedypQpo3nz5ikyMlKlS5fW008/zRZuALgJgwYNUlBQkLp27aqjR4+mG2+McblfqFAh1a9fXxMmTNDhw4fTTX/8+HHn/zdt2lTr1q3TmjVrnMPOnTunTz/9VKVLl1aVKlUyzFS0aFHdcccdmjJlistlmLZu3aqFCxeqadOmkiQfHx+1bt1a3333nctltK7OnitXrnTv45tvvnEea34zDh8+rLZt2+r+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rlweW/9K7i+3gYGB2rdvn8tjW7du7bIeyS7urq9Wr16tpk2bKl++fAoMDFT16tX13nvvKSUlJdszp+Xu06ePypQpo4CAAEVERKhFixZavHixpIz/5hwOh956661szXkz3x/ufIfnlLwZzdsrb8OGDcu2zFfmduf3xJW3I0eOZGvOq7Neaz0hSfPmzVO9evWUN29eBQUFqXbt2po8eXK25706843mb+7cuVW1alV9+umnHs3q7m82SVqzZo1y5cqlZs2aZVPKjF0vx8WLFzVq1ChFRUUpKChIBQoUUHR0tOLi4nTp0iUPpL25juTJ9bB07Xm7d+9eORwO5cqVSwcPHnQZd/jwYfn6+srhcGjv3r1W8/3jC/ejjz6qTZs2acqUKfrjjz80d+5c1a9fXydOnHBO88Ybb+jw4cPatGmTateurXbt2mn16tU5Luu8efN0zz33KCkpSdOmTdO2bds0depUhYaG6rXXXsv2vJIUExOjw4cPKz4+Xi+++KKGDRum0aNHO8fv2LFDhw8f1g8//KCkpCQ1a9bMI0UwIiJCM2bM0N9//+0cduHCBX355ZcqWbKkc9ju3bt15513auHChRoxYoQ2bdqkNWvWaNCgQZo3b54WLVqU7dnT5vHu3bv1/vvva8KECRo6dKgk6ffff1dMTIxq1aql5cuXa8uWLfrwww/l7+/vsR/S7uTOSdJy7t27V//7v/+rBg0aqG/fvmrevLmSk5Od06WtJ9JumzZt8njmK2/Tp0/X8ePH1bBhQ+XPn18//PCDtm3bpri4OBUrVkznzp3zeNbFixfL19dXzZs3d5nm/PnzmjFjhgYNGqRJkyZ5JGcad5Zbh8Oh119/3UMJ/4+766vZs2erXr16KlGihH788Udt375dffv21b///W89/vjjyu6Lmezdu1c1a9bUkiVLNHr0aG3ZskULFixQgwYN1KtXL+d0V//NHT58WH369MnWrJL73x/u/N7IKXmvnKdjxoxRSEiIy7ABAwZka2bJ/d8TV94KFSqU7TmvzHqt9cSHH36oVq1aKTo6WmvXrtWvv/6qxx9/XM8++6xH5u2VmW80f3///Xf16NFDPXv2dP4DWHZz928uzcSJE9WnTx8tX75chw4dys6obuW4ePGimjRporfeekvPPPOMVq9erXXr1qlXr1768MMP9dtvv3kk7810JE+vh2/0GRcv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deu29A8v3CdOnNCDDz6oqVOn6tdff9WePXv0zTffaNSoUWrVqpWn47m4UdY8efLo888/1/fff6+WLVtq0aJF2rt3r37++WcNGjQow+sV5jRBQUHq3r27hg4d6rHda3LlyqVt27bp999/V65cudKN//jjj5WcnKxatWrpq6++0rZt27Rjxw5NnTpV27dvz/Ax2a1NmzbKlSuXxo0bpwkTJqhnz55auHChdu3apd9++00vvfSSfvvtt2w7UYS7rsydkyQlJenIkSM6ePCgNm7cqBEjRqhVq1Zq3ry5R3cbv560zFfe/vrrL82bN08dOnTQvHnz9Mcff2jHjh165513NH/+fI+t867Mum3bNvXp00dnz55VixYtNHHiRDVr1kxRUVGqVq2a89a2bVuFhYVp2rRpHsl8pRstt0OGDNGhQ4c8cslAd9ZXefLk0YQJE/Sf//xHzzzzjH799Vft3btXEydOVOfOnfXYY4+pbdu22Zp73LhxSklJUZ06dfTtt98qPj5e27Zt09ixY1324Dpz5ky65dyT56e43vdHTvy9caPvO29z7NixdMuDp65ffLUr1xMlS5bUqFGjNGbMGL3yyivavn27du3apffee0+DBg3Siy++6NGTkV1L2vzdt2+fvvnmG/3P//yPx38rX28Znjdvnk6dOqVu3bq5fH9Uq1ZNjz76aLbtVu5Ojn79+ik6OloNGzbUuHHj9Msvv2j37t36+uuvdc899zjP05Sd3F1neXI9nJnPuHv37jp+/LiefvrpbMnoZPUc6DnchQsXzODBg81dd91lQkNDTVBQkKlYsaJ59dVXzfnz540xOeeU9+5kNcaY9evXm0ceecQULFjQBAQEmHLlyplnnnnGxMfHZ3vm612e6FqXmdi/f7/x9fU1X331lf2A/9/1chqT/nI+hw4dMr179zaRkZHGz8/PBAcHmzp16pjRo0ebc+fO2Q98hWtlHzlypClYsKBZuXKl6dChg4mMjDQBAQEmPDzcPPDAA2bu3LnZmvNqN8p99uxZI8l899132R/uCp06dTKSjCTj6+trChYsaBo1amQmTZpkUlJSnNPllPWEMa6Zr7xVrFjR7Nq1y3Tv3t1UqFDB5M6d24SFhZnatWubuLi4HJE1b968pnbt2mbmzJnmyJEjxtfX13z99dcZPrZnz54ul+PKrrzuLLdXX85uxIgRRlK2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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Geolocalização por estado\n", + "\n", + "plt.figure(figsize=(12, 6))\n", + "\n", + "sns.countplot(data = df_juncao,\n", + " x = \"geolocation_state\")\n", + "\n", + "# definir texto do título e eixos x e y\n", + "\n", + "plt.title(\"Geolocalização por estado\")\n", + "plt.xlabel(\"Estado\")\n", + "plt.ylabel(\"Contagem\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#\n", + "Pela análise dos gráficos, os estados com mais e menores consumidores são também dos vendedores, com pouca diferença.\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.4" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}