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
.
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.
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.
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.
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.
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.
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:
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".
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
A arquitetura do projeto é dividida em várias partes:
.github
: diretório que contém arquivos relacionados à integração contínua com o GitHub..husky
: diretório que contém arquivos relacionados à configuração do Husky, ferramenta que permite a execução de scripts no Git Hooks.admin
: diretório que contém arquivos relacionados à administração do projeto, como scripts para extração de dados (data_crawlers) e URLs alvo (target_url_crawlers).docs
: diretório que contém arquivos relacionados à documentação do projeto.src
: diretório que contém o código fonte do projeto, organizado em diferentes subdiretórios, como api (que contém as rotas da aplicação), data (que contém os arquivos de dados), error (que contém o tratamento de erros), log (que contém os arquivos de logs) e public (que contém arquivos estáticos, como imagens).app.py
: arquivo que contém a configuração e inicialização da aplicação Flask.docker-compose.yml
: arquivo que contém a configuração do Docker Compose para a execução da aplicação e do banco de dados.Dockerfile
: arquivo que contém a configuração do Docker para a construção da imagem da aplicação.Makefile
: arquivo que contém os comandos de automatização de tarefas do projeto.README.md
: arquivo que contém a descrição do projeto e sua documentação.requirements.txt
: arquivo que contém as dependências do projeto.LICENSE
: arquivo que contém as informações sobre a licença do projeto.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:
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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"
}
}
git clone https://github.com/big-data-estacio/data.git
cd data
É 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
:
venv
, caso ainda não tenha, com o seguinte comando:python3 -m pip install --user virtualenv
virtualenv myenv
# ou, se você estiver no Windows
py -m venv myenv
.\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
(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.
pip install
:pip install biblioteca1 biblioteca2 biblioteca3
Substitua biblioteca1
, biblioteca2
e biblioteca3
pelos nomes das bibliotecas que você deseja instalar.
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.
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
deactivate
.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.
yarn add
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/
Abra um terminal e navegue até o diretório raiz do projeto data
.
Execute o seguinte comando para criar e iniciar os containers do projeto, conforme definido no arquivo docker-compose.yml
:
docker build -t big_data_app_estacio .
docker run -p 8501:8501 -e MYSQL_USER=user -e MYSQL_PASSWORD=user -e MYSQL_DATABASE=big_data_app_estacio -e MYSQL_HOST=192.168.1.100 big_data_app_estacio
http://localhost:8501/