big-data-estacio / data

Este projeto seria um sistema para gerenciamento de restaurante foi desenvolvido utilizando as tecnologias Python, Streamlit e Pandas. A aplicação permite ao usuário cadastrar, atualizar, visualizar e deletar itens do menu, além de gerar relatórios de vendas por categoria.
https://my-new-bigadata.herokuapp.com/
GNU General Public License v3.0
5 stars 1 forks source link
api api-rest bootstrap docker docker-compose electron fish git github heroku html-css-javascript linux mysql pandas plotly python render streamlit travis yarn

Painel Streamlit para visualizar, analisar e prever dados de vendas de um restaurante

Projeto Pedacinho do Céu

Python Tableau Server Client Requests SQLAlchemy GitHub Last Commit GitHub Issues GitHub Stars GitHub Forks

Este painel foi desenvolvido usando Streamlit. Vários pacotes de código aberto são usados para processar os dados e gerar as visualizações, por exemplo. pandas, geopandas, leafmap, matplotlib e pydeck.

Este é um projeto de análise de dados para um bar e restaurante localizado no sul da ilha de Florianópolis. O objetivo do projeto é utilizar as informações disponíveis para realizar análises e obter insights que possam ser utilizados para tomar decisões estratégicas.

Nota: Resultados de gráficos e tabelas no power bi, estão disponíveis na pasta data/processed.

Power BI

Índice

  1. 🚀Introdução
  2. 🔮Arvore de Diretorios
  3. 🌃Arquitetura do projeto
  4. 🎆Tecnologias Utilizadas
  5. 💎Pré-requisitos
  6. ✨Instalando o Projeto
  7. 🎉Executando o Projeto
  8. 👾Testes
  9. 🔥Utilizando a API com Insomnia
  10. 🥶Versão atual
  11. 👹Coletando Dados
  12. 👻Processando Dados
  13. 🤖Visualizando os Dados
  14. 👽Futuras Atualizações
  15. 🐳Tecnologias e conceitos utilizados
  16. 🧠Roadmap v1
  17. 🧠Roadmap v2
  18. 🤖O que é o Apache Spark?
  19. 🎖️Critérios de aceitação do projeto
  20. 👹Contribuindo
  21. 👾Contribuidores
  22. 🎉Licença

Introdução

Este projeto é um estudo de caso de Big Data e Power BI. O objetivo é demonstrar como coletar, processar, analisar e visualizar grandes volumes de dados em tempo real usando ferramentas e tecnologias como Python, SQLite e Power BI.

O projeto é baseado em um restaurante chamado "Pedacinho do Céu". O restaurante está localizado em uma cidade turística e serve comida tradicional da região. O restaurante está interessado em coletar dados de várias fontes para analisar e obter insights sobre o negócio. O restaurante também deseja criar visualizações e relatórios interativos para ajudar na tomada de decisões e na compreensão de tendências e padrões nos dados.

O mesmo utiliza a linguagem Python e diversas bibliotecas para análise de dados, como Pandas, NumPy e Plotly. Além disso, é utilizado o framework Streamlit para a criação de uma interface interativa para o usuário, permitindo a visualização dos dados e a interação com as funcionalidades desenvolvidas.

Entre as funcionalidades desenvolvidas, estão a análise de vendas por mês, a previsão de clientes para o próximo mês, a análise de dados de clientes cadastrados, a exibição de um mapa de localização do estabelecimento e a criação de uma história do bar e restaurante.

Para utilizar o projeto, basta clonar o repositório e instalar as dependências listadas no arquivo requirements.txt. Em seguida, execute o comando "streamlit run app.py" para iniciar a aplicação.

  1. Coleta de dados: O projeto utiliza diversas fontes de dados, como arquivos CSV, APIs e bancos de dados. Os dados são coletados e processados em uma variedade de formatos para atender às necessidades do projeto. A coleta de dados é um processo crucial para garantir que as informações corretas estejam disponíveis para análise e visualização.

  2. Processamento de dados: O projeto utiliza uma variedade de técnicas para processar e limpar os dados coletados, incluindo o uso de bibliotecas Python para análise e transformação de dados. Os dados são organizados e limpos para garantir que estejam prontos para análise e visualização. O processamento de dados é uma etapa importante no processo de garantir que as informações corretas estejam disponíveis para o usuário final.

  3. Armazenamento de dados: O projeto utiliza uma variedade de tecnologias de armazenamento de dados, incluindo bancos de dados relacionais e não relacionais, armazenamento em nuvem e arquivos CSV. Os dados são armazenados de forma a garantir que estejam seguros e disponíveis para análise e visualização. O armazenamento de dados é um componente crítico do projeto, garantindo que os dados estejam disponíveis quando necessários.

  4. Análise e visualização de dados: O projeto utiliza ferramentas de análise e visualização de dados, como Power BI e bibliotecas Python, para extrair informações significativas dos dados coletados. As informações são apresentadas de forma clara e intuitiva, permitindo que o usuário final compreenda facilmente os insights obtidos a partir dos dados. A análise e visualização de dados são etapas críticas no processo de transformação de dados em informações úteis.

  5. Atualização e manutenção: O projeto requer atualizações regulares para garantir que os dados estejam atualizados e precisos. Além disso, a manutenção do sistema é importante para garantir que as tecnologias utilizadas estejam atualizadas e seguras. A atualização e manutenção do sistema são etapas críticas para garantir que o projeto continue funcionando de forma eficiente e eficaz ao longo do tempo.

O projeto utiliza conceitos de Big Data e Power BI. Vamos revisar como cada tecnologia é aplicada no projeto:

  1. Linguagem de programação Python para desenvolvimento do back-end e front-end da aplicação web, utilizando o framework Streamlit para criação da interface do usuário.
  2. Pandas e Numpy para manipulação e análise de dados, realizando operações como seleção, filtragem, agrupamento e junção de dados.
  3. Matplotlib e Plotly para criação de gráficos e visualizações de dados interativas.
  4. Scikit-Learn para modelagem de dados, com algoritmos de aprendizado de máquina para previsão e classificação.
  5. Power BI para criação de dashboards e relatórios interativos e visuais a partir dos dados gerados e analisados na aplicação web.

Combinando Big Data e Power BI, este projeto oferece uma solução completa para coletar, processar, analisar e visualizar grandes volumes de dados em tempo real, ajudando na tomada de decisões informadas e oferecendo insights valiosos para o negócio do restaurante "Pedacinho do Céu".

Arvore de Diretorios

Abaixo está a estrutura de diretórios do projeto:

.
├── 📂 .github
├── 📂 .husky
├── 📂 .vscode
├── 📂 assets
├── 📂 backend
│   └── 📂 admin
│       ├── 📂 conf
│       ├── 📂 data_crawlers
│       ├── 📂 target_url_crawlers
│       ├── .gitignore
│       ├── docker-compose.yml
│       ├── Dockerfile
│       ├── go_spider.py
│       ├── README.md
│       └── requirements.txt
├── 📂 build
├── 📂 client
├── 📂 docs
├── 📂 myenv
├── 📂 docs
├── 📂 src
│   ├── 📂 api
│   ├── 📂 data
│   ├── 📂 error
│   ├── 📂 log
│   ├── 📂 public
│   ├── 📂 scripts
│   └── main.py
├── .dockerignore
├── .editorconfig
├── .env
├── .gitignore
├── .npmrc
├── .travis.yml
├── app.py
├── architeture.md
├── AUTHORS.md
├── CHANGELOG.md
├── docker-compose.yml
├── Dockerfile
├── LICENSE
├── Makefile
├── package-lock.json
├── package.json
├── Procfile
├── pyproject.toml
├── README.md
├── requirements.txt
├── runtime.txt
├── SECURITY.md
└── setup.sh

Arquitetura do projeto

A arquitetura do projeto é dividida em várias partes:

Tecnologias Utilizadas

Neste projeto "Pedacinho do Céu", diversas tecnologias são utilizadas para coletar, processar, armazenar e visualizar dados. Abaixo está uma lista dessas tecnologias e como elas se encaixam no projeto:

  1. Docker Compose: Ferramenta para definir e gerenciar aplicações multi-container usando arquivos de configuração (docker-compose.yml). É usado para simplificar o processo de inicialização e gerenciamento de todos os serviços envolvidos no projeto.

  2. Power BI: Ferramenta de Business Intelligence (BI) da Microsoft para criar relatórios e visualizações de dados. É usado para analisar e visualizar os dados coletados e processados pelo projeto.

  3. Flask (opcional): Microframework Python para desenvolvimento de aplicações web. Pode ser usado para criar uma API RESTful que expõe os dados processados e armazenados para outras aplicações ou serviços.

  4. Matplotlib (opcional): Biblioteca Python para criação de gráficos e visualizações de dados. Pode ser usada em conjunto com o Apache Spark para criar gráficos e visualizações a partir dos dados processados.

  5. Pandas (opcional): Biblioteca Python para manipulação e análise de dados. Pode ser usada em conjunto com o Apache Spark para realizar análises e limpeza de dados em pequena escala antes de processá-los no Spark.

  6. Python: a linguagem de programação utilizada em todas as etapas do projeto, desde a coleta de dados até a análise e visualização. O Python é uma linguagem de programação interpretada, orientada a objetos e de alto nível, que possui uma vasta biblioteca padrão e diversas bibliotecas de terceiros para processamento de dados.

  7. Streamlit: uma biblioteca de código aberto para criação de aplicativos web de dados em Python. O Streamlit é utilizado no projeto para criar uma interface amigável e interativa para visualização dos dados.

  8. Plotly: uma biblioteca de visualização de dados interativa de código aberto para Python. O Plotly é utilizado no projeto para criar gráficos e visualizações interativas a partir dos dados processados com o Pandas.

  9. Apache Airflow: uma plataforma de orquestração de fluxo de trabalho para gerenciamento de tarefas de processamento de dados. O Apache Airflow é utilizado no projeto para agendar e executar tarefas de coleta, processamento e análise de dados de forma automática.

  10. Docker: uma plataforma de código aberto para criação, implantação e execução de aplicativos em contêineres. O Docker é utilizado no projeto para criar e executar contêineres para cada serviço envolvido no projeto.

  11. Apache Spark: um framework de computação distribuída de código aberto para processamento de dados em larga escala. O Apache Spark é utilizado no projeto para processar e analisar grandes quantidades de dados.

  12. Apache Hadoop: um framework de computação distribuída de código aberto para armazenamento de dados em larga escala. O Apache Hadoop é utilizado no projeto para armazenar os dados coletados e processados.

Pré-requisitos

REQUISITOS DE SOFTWARE

REQUISITOS DE HARDWARE

Arquivo de configuração package.json

O arquivo package.json contém as dependências do projeto. Para instalar as dependências, execute o seguinte comando:

{
  "name": "analise-de-dados",
  "author": "grupo-estacio",
  "version": "1.0.3",
  "main": "./build/electron/main.js",
  "keywords": [
    "restaurante",
    "python",
    "flask"
  ],
  "scripts": {
    "dump": "dump-stlite-desktop-artifacts",
    "dev:app": "streamlit run app.py",
    "production": "NODE_ENV=\"production\" electron .",
    "start": "node ./dist/server.js",
    "servewindows": "electron .",
    "pack": "electron-builder --dir",
    "prisma": "npx prisma",
    "dist": "electron-builder",
    "postinstall": "electron-builder install-app-deps",
    "server": "nodemon --exec npx babel-node client/src/api/router/router.js"
  },
  "build": {
    "files": ["build/**/*"],
    "directories": {
      "buildResources": "assets"
    },
    "win": {
      "target": "portable",
      "icon": "assets/icon.ico"
    }
  },
  "dependencies": {
    "-": "^0.0.1",
    "@prisma/client": "^4.13.0",
    "@types/multer": "^1.4.7",
    "D": "^1.0.0",
    "cors": "^2.8.5",
    "csv-parser": "^3.0.0",
    "csv-writer": "^1.6.0",
    "express": "^4.18.2",
    "multer": "^1.4.5-lts.1",
    "node-fetch": "^3.3.1",
    "typescript": "^5.0.4"
  },
  "devDependencies": {
    "@stlite/desktop": "^0.22.2",
    "electron": "22.0.0",
    "electron-builder": "^23.6.0",
    "@babel/core": "^7.21.5",
    "@babel/node": "^7.20.7",
    "@types/cors": "^2.8.13",
    "@types/express": "^4.17.17",
    "prisma": "^4.13.0",
    "nodemon": "^2.0.22"
  }
}

Instalando o Projeto

  1. Clone o repositório:
git clone https://github.com/big-data-estacio/data.git
cd data

Executando o Projeto

Configurando o ambiente virtual

É recomendado utilizar um ambiente virtual para isolar as dependências do projeto. Siga os passos abaixo para configurar e ativar o ambiente virtual usando o venv:

  1. Instale o módulo venv, caso ainda não tenha, com o seguinte comando:
python3 -m pip install --user virtualenv
  1. Navegue até a pasta do projeto e crie um ambiente virtual:
virtualenv myenv

# ou, se você estiver no Windows

py -m venv myenv
  1. Ative o ambiente virtual:
.\myenv\Scripts\activate

# ou, se você estiver usando o Git Bash

source myenv/Scripts/activate
set -x VIRTUAL_ENV /mnt/c/Users/estev/OneDrive/Área de Trabalho/johanEstevam/myenv
source myenv/bin/activate.fish
  1. Após a ativação do ambiente virtual, seu terminal deve mostrar o prefixo (venv).

Agora você pode executar o projeto com as dependências instaladas no ambiente virtual. Lembre-se de ativar o ambiente virtual sempre que for trabalhar no projeto.

  1. Instale todas as bibliotecas necessárias usando o comando pip install:
pip install biblioteca1 biblioteca2 biblioteca3

Substitua biblioteca1, biblioteca2 e biblioteca3 pelos nomes das bibliotecas que você deseja instalar.

  1. Agora que todas as bibliotecas estão instaladas, execute o seguinte comando para gerar o arquivo requirements.txt:
pip freeze > requirements.txt

O comando pip freeze listará todas as bibliotecas instaladas no ambiente virtual e suas versões específicas. O operador > redirecionará a saída para o arquivo requirements.txt, criando-o ou atualizando-o, se já existir.

  1. Instale as dependências do projeto utilizando o arquivo requirements.txt:
pip install -r requirements.txt

arquivo requirements.txt para esse projeto com as dependências necessárias.

aiohttp==3.8.4
aiosignal==1.3.1
altair==4.2.2
async-timeout==4.0.2
attrs==23.1.0
beautifulsoup4==4.12.2
blinker==1.6.2
Brotli==1.0.9
cachetools==5.3.0
certifi==2023.5.7
cffi==1.15.1
charset-normalizer==3.1.0
click==8.1.3
contourpy==1.0.7
cssselect2==0.7.0
cycler==0.11.0
decorator==5.1.1
deta==1.1.0
entrypoints==0.4
Faker==18.9.0
favicon==0.7.0
fonttools==4.39.4
frozenlist==1.3.3
gitdb==4.0.10
GitPython==3.1.31
htbuilder==0.6.1
html5lib==1.1
idna==3.4
importlib-metadata==6.6.0
Jinja2==3.1.2
jsonschema==4.17.3
kiwisolver==1.4.4
lxml==4.9.2
Markdown==3.4.3
markdown-it-py==2.2.0
markdownlit==0.0.7
MarkupSafe==2.1.2
matplotlib==3.7.1
mdurl==0.1.2
more-itertools==9.1.0
multidict==6.0.4
numpy==1.24.3
openai==0.27.7
packaging==23.1
pandas==2.0.1
Pillow==9.5.0
plotly==5.14.1
protobuf==3.20.3
pyarrow==12.0.0
pycparser==2.21
pydeck==0.8.1b0
pydyf==0.6.0
Pygments==2.15.1
pymdown-extensions==10.0.1
Pympler==1.0.1
pyparsing==3.0.9
pyphen==0.14.0
pypng==0.20220715.0
pyrsistent==0.19.3
python-dateutil==2.8.2
pytz==2023.3
PyYAML==6.0
qrcode==7.4.2
requests==2.31.0
rich==13.3.5
six==1.16.0
smmap==5.0.0
soupsieve==2.4.1
st-annotated-text==4.0.0
stqdm==0.0.5
streamlit==1.22.0
streamlit-camera-input-live==0.2.0
streamlit-card==0.0.4
streamlit-embedcode==0.1.2
streamlit-extras==0.2.7
streamlit-faker==0.0.2
streamlit-image-coordinates==0.1.3
streamlit-keyup==0.2.0
streamlit-lottie==0.0.3
streamlit-toggle-switch==1.0.2
streamlit-vertical-slider==1.0.2
tenacity==8.2.2
tinycss2==1.2.1
toml==0.10.2
toolz==0.12.0
tornado==6.3.2
tqdm==4.65.0
typing_extensions==4.6.0
tzdata==2023.3
tzlocal==5.0.1
urllib3==2.0.2
validators==0.20.0
watchdog==3.0.0
weasyprint==59.0
webencodings==0.5.1
yarl==1.9.2
zipp==3.15.0
zopfli==0.2.2
  1. Quando terminar de trabalhar no projeto, você pode desativar o ambiente virtual com o seguinte comando:
deactivate

Continuando a instalação

  1. Crie um arquivo .env na raiz do projeto com as variáveis de ambiente necessárias. Você pode usar o arquivo .env.example como modelo.
cp .env.example .env

O código acima copiará o arquivo .env.example e o renomeará para .env e você poderá preencher as variáveis de ambiente necessárias. Nota: O arquivo .env é ignorado pelo Git, portanto, não será enviado para o repositório.

  1. Instale as dependências do projeto com o yarn na raiz do projeto:
yarn add

Para iniciar o projeto "Pedacinho do Céu" com o Docker, siga estas etapas:

  1. Certifique-se de que o Docker e o Docker Compose estejam instalados em seu sistema. Se você ainda não os instalou, siga as instruções de instalação no site oficial do Docker: https://docs.docker.com/get-docker/ e https://docs.docker.com/compose/install/

  2. Abra um terminal e navegue até o diretório raiz do projeto data.

  3. Execute o seguinte comando para criar e iniciar os containers do projeto, conforme definido no arquivo docker-compose.yml: