{"id":15195370,"url":"https://github.com/datalopes1/desafio_delivery","last_synced_at":"2026-03-06T22:31:14.771Z","repository":{"id":247488775,"uuid":"825923738","full_name":"datalopes1/desafio_delivery","owner":"datalopes1","description":"Desafio do Clube de Assinaturas da Universidade dos Dados para simular as demandas reais de um analista de dados","archived":false,"fork":false,"pushed_at":"2024-08-22T20:47:42.000Z","size":22545,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"work","last_synced_at":"2025-10-27T23:33:46.613Z","etag":null,"topics":["data-analysis","jupyter","python"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/datalopes1.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-07-08T19:06:22.000Z","updated_at":"2024-08-22T20:47:45.000Z","dependencies_parsed_at":"2024-07-09T03:14:27.151Z","dependency_job_id":"4c42dc61-3719-4ad5-8694-126aa431720b","html_url":"https://github.com/datalopes1/desafio_delivery","commit_stats":null,"previous_names":["datalopes1/desafio_delivery"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/datalopes1/desafio_delivery","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datalopes1%2Fdesafio_delivery","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datalopes1%2Fdesafio_delivery/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datalopes1%2Fdesafio_delivery/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datalopes1%2Fdesafio_delivery/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/datalopes1","download_url":"https://codeload.github.com/datalopes1/desafio_delivery/tar.gz/refs/heads/work","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datalopes1%2Fdesafio_delivery/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30200972,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T19:07:06.838Z","status":"ssl_error","status_checked_at":"2026-03-06T18:57:34.882Z","response_time":250,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["data-analysis","jupyter","python"],"created_at":"2024-09-27T23:22:01.220Z","updated_at":"2026-03-06T22:31:14.741Z","avatar_url":"https://github.com/datalopes1.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Desafio Universidade dos Dados – Auxiliando os Times de Marketing e Pricing da Empresa de Delivery 🚲\n\n#### Desafio proposto no Clube de Assinaturas da [Universidade dos Dados](https://universidadedosdados.com/). \n\n\n![anime](https://camo.githubusercontent.com/1ffd19330e0112e238790f80ace2a275600a33c440a1154350998a595bbbdf07/68747470733a2f2f6170692d636c75622d66696c652e63622e686f746d6172742e636f6d2f7075626c69632f76352f66696c65732f39373131663735312d323563642d343638662d383639612d653932613965636132333632)\n\n### Objetivos e resultados\nComo analista de dados em uma equipe centralizada e que atende diversas áreas recebemos algumas demandas:\n\n- Numa ação de marketing, para atrair mais entregadores, vamos dar uma bonificação para os 20 entregadores que possuem maior distância percorrida ao todo. A bonificação vai variar de acordo com o tipo de profissional que ele é e o modelo que ele usa para se locomover (moto, bike, etc).\n\n- Além disso, o time de Pricing precisa ajustar os valores pagos aos entregadores. Para isso, eles precisam da distribuição da distância média percorrida pelos motoqueiros separada por estado, já que cada região terá seu preço.\n\n- Por fim, o CFO precisa de alguns indicadores de receita para apresentar para a diretoria executiva. Dentre esses indicadores, vocês precisarão levantar (1) a receita média e total separada por tipo (Food x Good), (2) A receita média e total por estado. Ou seja, são 4 tabelas ao todo.\n\n- Se a empresa tem um gasto fixo de 5 reais por entrega, recebe 15% do valor de cada entrega como receita e, do total do lucro, distribui 20% em forma de bônus para os 2 mil funcionários, quanto cada um irá receber no período contido no dataset?\n\nApós a realização de consultas SQL, limpeza e manipualação de dados com Python e uma análise das solicitações foram geradas as planilhas solicitadas (ranking de entregadores e receitas), além disso foram calculadas as distâncias médias e o bônus para os funcionários que foi de R$ 201,03. Os resultados em forma de apresentação .ppt você pode conferir [aqui](https://docs.google.com/presentation/d/1Ok_sNpYxzhzkrtfBb1XwWTQN4w1Z1cL_Jwdykt2WYd4/edit?usp=sharing) ou em um Dashboard do Power BI [aqui](https://app.powerbi.com/view?r=eyJrIjoiMzU4OTQ1NDYtZGMwZS00Yjg0LWEyZDktYzcwNmJmNDllMmJlIiwidCI6ImJmOWUzNDgwLTkyM2UtNDNmMS04OTE1LTlmMmY3YjY2NTc0MSJ9).\n### 🛠️ Ferramentas utilizadas\n![Jupyter Notebook](https://img.shields.io/badge/jupyter-%23FA0F00.svg?style=for-the-badge\u0026logo=jupyter\u0026logoColor=white) ![SQLite](https://img.shields.io/badge/sqlite-%2307405e.svg?style=for-the-badge\u0026logo=sqlite\u0026logoColor=white) ![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge\u0026logo=python\u0026logoColor=ffdd54) ![Visual Studio Code](https://img.shields.io/badge/Visual%20Studio%20Code-0078d7.svg?style=for-the-badge\u0026logo=visual-studio-code\u0026logoColor=white) ![Microsoft Excel](https://img.shields.io/badge/Microsoft_Excel-217346?style=for-the-badge\u0026logo=microsoft-excel\u0026logoColor=white) ![Microsoft PowerPoint](https://img.shields.io/badge/Microsoft_PowerPoint-B7472A?style=for-the-badge\u0026logo=microsoft-powerpoint\u0026logoColor=white)\n\n## Estrutura dos Dados\n![schema](https://i.imgur.com/GMqqrNJ.png)\n\n## Bibliotecas Python utilizadas\n#### Manipulação de dados\n- Pandas, Numpy, OS, sqlalchemy\n#### Análise Exploratória\n- Seaborn, Matplotlib\n\n# Consultas SQL para geração da tabela de análise\n```sql\nWITH tb_orders AS \n(SELECT\n    t1.order_id,\n    t1.store_id,\n    t1.channel_id,\n    t1.payment_order_id,\n    t1.delivery_order_id\nFROM orders AS t1\nWHERE t1.order_status = 'FINISHED'),\n\ntb_pay AS\n(SELECT \n    t1.*,\n    t2.payment_id,\n    t2.payment_amount,\n    t2.payment_fee,\n    ((t2.payment_amount - t2.payment_fee) * 0.15) - 5 AS order_revenue\nFROM tb_orders AS t1\nLEFT JOIN payments AS t2\nON t1.payment_order_id = t2.payment_order_id\nWHERE t2.payment_status = 'PAID'),\n\ntb_deliveries AS \n(SELECT \n    t1.*,\n    t2.driver_id,\n    t2.delivery_distance_meters,\n    t3.driver_modal\nFROM tb_pay t1\nLEFT JOIN deliveries AS t2\nON t1.delivery_order_id = t2.delivery_order_id\nLEFT JOIN drivers AS t3\nON t2.driver_id = t3.driver_id\nWHERE t2.delivery_status = 'DELIVERED'),\n\ntb_stores AS\n(SELECT \n    t1.*,\n    t2.store_segment,\n    t3.hub_state\nFROM tb_deliveries AS t1\nLEFT JOIN stores AS t2\nON t1.store_id = t2.store_id\nLEFT JOIN hubs AS t3\nON t2.hub_id = t3.hub_id)\n\nSELECT\n    DATE('2024-07-08') AS dt_ref,\n    order_id,\n    store_id,\n    payment_amount,\n    payment_fee,\n    order_revenue,\n    driver_id,\n    delivery_distance_meters,\n    driver_modal,\n    store_segment,\n    hub_state\nFROM tb_stores\n```\nApós carregar os dados no Python, foi realizado o processa de limpeza e manipulação dos dados, para tratar nulos, duplicados e outliers antes de prosseguir a análise.\n\n# Respondendo as demandas\n## Ranking dos entregadores\n### Melhores entregadores\n  \n| Colocação | driver_id | Modal | Distância Total (m) |\n|---------|-----------|--------------|--------------|\n| 1       | 25651     | MOTOBOY      | 13854626.0   |\n| 2       | 26223     | MOTOBOY      | 8340694.0    |\n| 3       | 7615      | MOTOBOY      | 2599726.0    |\n| 4       | 9806      | MOTOBOY      | 2295311.0    |\n| 5       | 4737      | MOTOBOY      | 2286124.0    |\n| 6       | 7549      | MOTOBOY      | 2283929.0    |\n| 7       | 11522     | MOTOBOY      | 2212062.0    |\n| 8       | 7799      | MOTOBOY      | 2184855.0    |\n| 9       | 15561     | MOTOBOY      | 2097759.0    |\n| 10      | 902       | MOTOBOY      | 2073159.0    |\n| 11      | 5527      | MOTOBOY      | 2044375.0    |\n| 12      | 17749     | MOTOBOY      | 2036488.0    |\n| 13      | 32109     | MOTOBOY      | 2006135.0    |\n| 14      | 20495     | MOTOBOY      | 1944693.0    |\n| 15      | 11063     | MOTOBOY      | 1940638.0    |\n| 16      | 34207     | MOTOBOY      | 1923331.0    |\n| 17      | 627       | MOTOBOY      | 1866923.0    |\n| 18      | 21923     | MOTOBOY      | 1854807.0    |\n| 19      | 26536     | MOTOBOY      | 1848829.0    |\n| 20      | 598       | MOTOBOY      | 1843619.0    |\n\n### Melhores motoboys\n| Colocação | driver_id | Modal | Distância Total (m) |\n|---------|-----------|--------------|--------------|\n| 1       | 25651     | MOTOBOY      | 13854626.0   |\n| 2       | 26223     | MOTOBOY      | 8340694.0    |\n| 3       | 7615      | MOTOBOY      | 2599726.0    |\n| 4       | 9806      | MOTOBOY      | 2295311.0    |\n| 5       | 4737      | MOTOBOY      | 2286124.0    |\n| 6       | 7549      | MOTOBOY      | 2283929.0    |\n| 7       | 11522     | MOTOBOY      | 2212062.0    |\n| 8       | 7799      | MOTOBOY      | 2184855.0    |\n| 9       | 15561     | MOTOBOY      | 2097759.0    |\n| 10      | 902       | MOTOBOY      | 2073159.0    |\n| 11      | 5527      | MOTOBOY      | 2044375.0    |\n| 12      | 17749     | MOTOBOY      | 2036488.0    |\n| 13      | 32109     | MOTOBOY      | 2006135.0    |\n| 14      | 20495     | MOTOBOY      | 1944693.0    |\n| 15      | 11063     | MOTOBOY      | 1940638.0    |\n| 16      | 34207     | MOTOBOY      | 1923331.0    |\n| 17      | 627       | MOTOBOY      | 1866923.0    |\n| 18      | 21923     | MOTOBOY      | 1854807.0    |\n| 19      | 26536     | MOTOBOY      | 1848829.0    |\n| 20      | 598       | MOTOBOY      | 1843619.0    |\n\n### Melhores bikers\n| Colocação | driver_id | Modal | Distância Total (m) |\n|---------|-----------|--------------|--------------|\n| 1       | 3780      | BIKER        | 829689.0     |\n| 2       | 794       | BIKER        | 826101.0     |\n| 3       | 12724     | BIKER        | 696300.0     |\n| 4       | 7773      | BIKER        | 604160.0     |\n| 5       | 18487     | BIKER        | 597504.0     |\n| 6       | 12079     | BIKER        | 560326.0     |\n| 7       | 14059     | BIKER        | 559636.0     |\n| 8       | 4536      | BIKER        | 553887.0     |\n| 9       | 9996      | BIKER        | 553366.0     |\n| 10      | 1203      | BIKER        | 542755.0     |\n| 11      | 18748     | BIKER        | 539334.0     |\n| 12      | 5364      | BIKER        | 497430.0     |\n| 13      | 8592      | BIKER        | 489791.0     |\n| 14      | 15279     | BIKER        | 487758.0     |\n| 15      | 34079     | BIKER        | 486136.0     |\n| 16      | 1943      | BIKER        | 483183.0     |\n| 17      | 8771      | BIKER        | 480084.0     |\n| 18      | 1301      | BIKER        | 474372.0     |\n| 19      | 6675      | BIKER        | 473240.0     |\n| 20      | 196       | BIKER        | 472256.0     |\n\n## Distância média por estado\n| Estado | Total de Entregadores | Distância Média por Entrega (m) |\n|-----------|---------------|------------------------|\n| RS        | 216           | 2890.157412            |\n| PR        | 291           | 2624.129476            |\n| SP        | 2051          | 2246.582950            |\n| RJ        | 1907          | 2010.072113            |\n\n## Receitas \n### Média: GOOD x FOOD\n|Segmento|Receita Média por Entrega|\n|-------------|------------------|\n|FOOD|6.08|\n|GOOD|12.61|\n\n### Total: GOOD x FOOD\n|Segmento|Receita Total|\n|-------------|------------------|\n|FOOD|1756841.99|\n|GOOD|253492.26|\n\n### Média: Estados\n| Estado | Receita Média por Entrega |\n|-----------|--------------------|\n| SP        | 7.79               |\n| RJ        | 6.52               |\n| RS        | 4.14               |\n| PR        | 2.40               |\n\n### Total: Estados\n| Estado | Receita Total|\n|-----------|--------------------|\n| SP        | 1041347.69         |\n| RJ        | 785328.08          |\n| RS        | 123573.03          |\n| PR        | 60085.45           |\n\n## Bônus para os funcionários\nO faturamento total foi de R$2.010.334,24 e o bônus para o funcionários é de R$201,03.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdatalopes1%2Fdesafio_delivery","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdatalopes1%2Fdesafio_delivery","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdatalopes1%2Fdesafio_delivery/lists"}