chore(i18n): sync translations with latest source changes (chunk 5/6, 87 changes)

update-translations
localizeflow[bot] 5 days ago
parent c9a9a9ec52
commit a89e994767

File diff suppressed because one or more lines are too long

@ -0,0 +1,22 @@
# Introdução à Ciência de Dados
![dados em ação](../../../translated_images/pt-BR/data.48e22bb7617d8d92188afbc4c48effb920ba79f5cebdc0652cd9f34bbbd90c18.jpg)
> Foto por <a href="https://unsplash.com/@dawson2406?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Stephen Dawson</a> no <a href="https://unsplash.com/s/photos/data?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Unsplash</a>
Nestes módulos, você descobrirá como a Ciência de Dados é definida e aprenderá sobre as considerações éticas que devem ser levadas em conta por um cientista de dados. Você também aprenderá como os dados são definidos e terá uma introdução a estatística e probabilidade, os principais domínios acadêmicos da Ciência de Dados.
### Tópicos
1. [Definindo Ciência de Dados](01-defining-data-science/README.md)
2. [Ética na Ciência de Dados](02-ethics/README.md)
3. [Definindo Dados](03-defining-data/README.md)
4. [Introdução à Estatística e Probabilidade](04-stats-and-probability/README.md)
### Créditos
Esses módulos foram escritos com ❤️ por [Nitya Narasimhan](https://twitter.com/nitya) e [Dmitry Soshnikov](https://twitter.com/shwars).
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

@ -0,0 +1,190 @@
# Trabalhando com Dados: Bancos de Dados Relacionais
|![ Sketchnote por [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/05-RelationalData.png)|
|:---:|
| Trabalhando com Dados: Bancos de Dados Relacionais - _Sketchnote por [@nitya](https://twitter.com/nitya)_ |
É provável que você já tenha usado uma planilha no passado para armazenar informações. Você tinha um conjunto de linhas e colunas, onde as linhas continham as informações (ou dados), e as colunas descreviam as informações (às vezes chamadas de metadados). Um banco de dados relacional é construído sobre esse princípio básico de colunas e linhas em tabelas, permitindo que você tenha informações distribuídas em várias tabelas. Isso permite trabalhar com dados mais complexos, evitar duplicação e ter flexibilidade na forma como você explora os dados. Vamos explorar os conceitos de um banco de dados relacional.
## [Quiz pré-aula](https://ff-quizzes.netlify.app/en/ds/quiz/8)
## Tudo começa com tabelas
Um banco de dados relacional tem em seu núcleo tabelas. Assim como na planilha, uma tabela é uma coleção de colunas e linhas. A linha contém os dados ou informações com os quais queremos trabalhar, como o nome de uma cidade ou a quantidade de chuva. As colunas descrevem os dados que armazenam.
Vamos começar nossa exploração iniciando uma tabela para armazenar informações sobre cidades. Podemos começar com o nome e o país delas. Você poderia armazenar isso em uma tabela da seguinte forma:
| Cidade | País |
| -------- | ------------- |
| Tóquio | Japão |
| Atlanta | Estados Unidos|
| Auckland | Nova Zelândia |
Observe que os nomes das colunas **cidade**, **país** e **população** descrevem os dados armazenados, e cada linha tem informações sobre uma cidade.
## As limitações de uma abordagem com uma única tabela
É provável que a tabela acima pareça relativamente familiar para você. Vamos começar a adicionar alguns dados adicionais ao nosso banco de dados em crescimento - a precipitação anual (em milímetros). Vamos focar nos anos 2018, 2019 e 2020. Se fôssemos adicioná-la para Tóquio, poderia ficar algo assim:
| Cidade | País | Ano | Quantidade |
| ------ | ----- | ---- | ---------- |
| Tóquio | Japão | 2020 | 1690 |
| Tóquio | Japão | 2019 | 1874 |
| Tóquio | Japão | 2018 | 1445 |
O que você percebe sobre nossa tabela? Você pode notar que estamos duplicando o nome e o país da cidade repetidamente. Isso pode ocupar bastante espaço de armazenamento e é em grande parte desnecessário ter várias cópias. Afinal, Tóquio tem apenas um nome que nos interessa.
OK, vamos tentar outra coisa. Vamos adicionar novas colunas para cada ano:
| Cidade | País | 2018 | 2019 | 2020 |
| -------- | ------------- | ---- | ---- | ---- |
| Tóquio | Japão | 1445 | 1874 | 1690 |
| Atlanta | Estados Unidos| 1779 | 1111 | 1683 |
| Auckland | Nova Zelândia | 1386 | 942 | 1176 |
Embora isso evite a duplicação de linhas, adiciona alguns outros desafios. Precisaríamos modificar a estrutura da nossa tabela toda vez que houver um novo ano. Além disso, à medida que nossos dados crescem, ter os anos como colunas tornará mais difícil recuperar e calcular valores.
É por isso que precisamos de várias tabelas e relacionamentos. Ao dividir nossos dados, podemos evitar duplicação e ter mais flexibilidade na forma como trabalhamos com eles.
## Os conceitos de relacionamentos
Vamos voltar aos nossos dados e determinar como queremos dividir as coisas. Sabemos que queremos armazenar o nome e o país das nossas cidades, então isso provavelmente funcionará melhor em uma tabela.
| Cidade | País |
| -------- | ------------- |
| Tóquio | Japão |
| Atlanta | Estados Unidos|
| Auckland | Nova Zelândia |
Mas antes de criarmos a próxima tabela, precisamos descobrir como referenciar cada cidade. Precisamos de alguma forma de identificador, ID ou (em termos técnicos de banco de dados) uma chave primária. Uma chave primária é um valor usado para identificar uma linha específica em uma tabela. Embora isso possa ser baseado em um valor em si (poderíamos usar o nome da cidade, por exemplo), quase sempre deve ser um número ou outro identificador. Não queremos que o id mude, pois isso quebraria o relacionamento. Você verá que na maioria dos casos a chave primária ou id será um número auto-gerado.
> ✅ Chave primária é frequentemente abreviada como PK
### cidades
| city_id | Cidade | País |
| ------- | -------- | ------------- |
| 1 | Tóquio | Japão |
| 2 | Atlanta | Estados Unidos|
| 3 | Auckland | Nova Zelândia |
> ✅ Você notará que usamos os termos "id" e "chave primária" de forma intercambiável durante esta lição. Os conceitos aqui se aplicam a DataFrames, que você explorará mais tarde. DataFrames não usam a terminologia de "chave primária", no entanto, você notará que eles se comportam de maneira muito semelhante.
Com nossa tabela de cidades criada, vamos armazenar a precipitação. Em vez de duplicar as informações completas sobre a cidade, podemos usar o id. Também devemos garantir que a tabela recém-criada tenha uma coluna *id*, pois todas as tabelas devem ter um id ou chave primária.
### precipitação
| rainfall_id | city_id | Ano | Quantidade |
| ----------- | ------- | ---- | ---------- |
| 1 | 1 | 2018 | 1445 |
| 2 | 1 | 2019 | 1874 |
| 3 | 1 | 2020 | 1690 |
| 4 | 2 | 2018 | 1779 |
| 5 | 2 | 2019 | 1111 |
| 6 | 2 | 2020 | 1683 |
| 7 | 3 | 2018 | 1386 |
| 8 | 3 | 2019 | 942 |
| 9 | 3 | 2020 | 1176 |
Observe a coluna **city_id** dentro da tabela recém-criada **precipitação**. Essa coluna contém valores que referenciam os IDs na tabela **cidades**. Em termos técnicos de dados relacionais, isso é chamado de **chave estrangeira**; é uma chave primária de outra tabela. Você pode pensar nisso apenas como uma referência ou um ponteiro. **city_id** 1 referencia Tóquio.
> [!NOTE]
> Chave estrangeira é frequentemente abreviada como FK
## Recuperando os dados
Com nossos dados separados em duas tabelas, você pode estar se perguntando como os recuperamos. Se estivermos usando um banco de dados relacional como MySQL, SQL Server ou Oracle, podemos usar uma linguagem chamada Structured Query Language ou SQL. SQL (às vezes pronunciado sequel) é uma linguagem padrão usada para recuperar e modificar dados em um banco de dados relacional.
Para recuperar dados, você usa o comando `SELECT`. Em sua essência, você **seleciona** as colunas que deseja ver **da** tabela em que elas estão contidas. Se você quisesse exibir apenas os nomes das cidades, poderia usar o seguinte:
```sql
SELECT city
FROM cities;
-- Output:
-- Tokyo
-- Atlanta
-- Auckland
```
`SELECT` é onde você lista as colunas, e `FROM` é onde você lista as tabelas.
> [!NOTE]
> A sintaxe SQL não diferencia maiúsculas de minúsculas, o que significa que `select` e `SELECT` significam a mesma coisa. No entanto, dependendo do tipo de banco de dados que você está usando, as colunas e tabelas podem ser sensíveis a maiúsculas e minúsculas. Como resultado, é uma boa prática sempre tratar tudo em programação como se fosse sensível a maiúsculas e minúsculas. Ao escrever consultas SQL, a convenção comum é colocar as palavras-chave em letras maiúsculas.
A consulta acima exibirá todas as cidades. Vamos imaginar que queremos exibir apenas cidades na Nova Zelândia. Precisamos de algum tipo de filtro. A palavra-chave SQL para isso é `WHERE`, ou "onde algo é verdadeiro".
```sql
SELECT city
FROM cities
WHERE country = 'New Zealand';
-- Output:
-- Auckland
```
## Unindo dados
Até agora recuperamos dados de uma única tabela. Agora queremos juntar os dados de **cidades** e **precipitação**. Isso é feito *unindo* eles. Você efetivamente cria uma conexão entre as duas tabelas e combina os valores de uma coluna de cada tabela.
No nosso exemplo, vamos combinar a coluna **city_id** em **precipitação** com a coluna **city_id** em **cidades**. Isso combinará o valor da precipitação com sua respectiva cidade. O tipo de junção que faremos é chamado de junção *inner*, o que significa que se alguma linha não corresponder a nada da outra tabela, ela não será exibida. No nosso caso, toda cidade tem precipitação, então tudo será exibido.
Vamos recuperar a precipitação de 2019 para todas as nossas cidades.
Vamos fazer isso em etapas. A primeira etapa é unir os dados indicando as colunas para a conexão - **city_id** como destacado antes.
```sql
SELECT cities.city
rainfall.amount
FROM cities
INNER JOIN rainfall ON cities.city_id = rainfall.city_id
```
Destacamos as duas colunas que queremos, e o fato de querermos unir as tabelas pela **city_id**. Agora podemos adicionar a cláusula `WHERE` para filtrar apenas o ano de 2019.
```sql
SELECT cities.city
rainfall.amount
FROM cities
INNER JOIN rainfall ON cities.city_id = rainfall.city_id
WHERE rainfall.year = 2019
-- Output
-- city | amount
-- -------- | ------
-- Tokyo | 1874
-- Atlanta | 1111
-- Auckland | 942
```
## Resumo
Bancos de dados relacionais são centrados em dividir informações entre várias tabelas que são então reunidas para exibição e análise. Isso proporciona um alto grau de flexibilidade para realizar cálculos e manipular dados de outras formas. Você viu os conceitos básicos de um banco de dados relacional e como realizar uma junção entre duas tabelas.
## 🚀 Desafio
Existem inúmeros bancos de dados relacionais disponíveis na internet. Você pode explorar os dados usando as habilidades que aprendeu acima.
## Quiz pós-aula
## [Quiz pós-aula](https://ff-quizzes.netlify.app/en/ds/quiz/9)
## Revisão & Autoestudo
Existem vários recursos disponíveis no [Microsoft Learn](https://docs.microsoft.com/learn?WT.mc_id=academic-77958-bethanycheum) para você continuar sua exploração de SQL e conceitos de banco de dados relacional
- [Descrever conceitos de dados relacionais](https://docs.microsoft.com//learn/modules/describe-concepts-of-relational-data?WT.mc_id=academic-77958-bethanycheum)
- [Comece a consultar com Transact-SQL](https://docs.microsoft.com//learn/paths/get-started-querying-with-transact-sql?WT.mc_id=academic-77958-bethanycheum) (Transact-SQL é uma versão do SQL)
- [Conteúdo SQL no Microsoft Learn](https://docs.microsoft.com/learn/browse/?products=azure-sql-database%2Csql-server&expanded=azure&WT.mc_id=academic-77958-bethanycheum)
## Tarefa
[Exibindo dados de aeroportos](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se tradução profissional humana. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,65 @@
# Exibindo dados de aeroportos
Você recebeu um [banco de dados](https://raw.githubusercontent.com/Microsoft/Data-Science-For-Beginners/main/2-Working-With-Data/05-relational-databases/airports.db) baseado em [SQLite](https://sqlite.org/index.html), que contém informações sobre aeroportos. O esquema está exibido abaixo. Você usará a [extensão SQLite](https://marketplace.visualstudio.com/items?itemName=alexcvzz.vscode-sqlite&WT.mc_id=academic-77958-bethanycheum) no [Visual Studio Code](https://code.visualstudio.com?WT.mc_id=academic-77958-bethanycheum) para exibir informações sobre os aeroportos de diferentes cidades.
## Instruções
Para começar a tarefa, você precisará realizar algumas etapas. Será necessário instalar algumas ferramentas e baixar o banco de dados de exemplo.
### Configure seu sistema
Você pode usar o Visual Studio Code e a extensão SQLite para interagir com o banco de dados.
1. Acesse [code.visualstudio.com](https://code.visualstudio.com?WT.mc_id=academic-77958-bethanycheum) e siga as instruções para instalar o Visual Studio Code
1. Instale a extensão [SQLite extension](https://marketplace.visualstudio.com/items?itemName=alexcvzz.vscode-sqlite&WT.mc_id=academic-77958-bethanycheum) conforme instruído na página do Marketplace
### Baixe e abra o banco de dados
Em seguida, você fará o download e abrirá o banco de dados.
1. Baixe o [arquivo do banco de dados no GitHub](https://raw.githubusercontent.com/Microsoft/Data-Science-For-Beginners/main/2-Working-With-Data/05-relational-databases/airports.db) e salve-o em um diretório
1. Abra o Visual Studio Code
1. Abra o banco de dados na extensão SQLite selecionando **Ctrl-Shift-P** (ou **Cmd-Shift-P** em um Mac) e digitando `SQLite: Open database`
1. Selecione **Choose database from file** e abra o arquivo **airports.db** que você baixou anteriormente
1. Após abrir o banco de dados (não haverá uma atualização visível na tela), crie uma nova janela de consulta selecionando **Ctrl-Shift-P** (ou **Cmd-Shift-P** em um Mac) e digitando `SQLite: New query`
Depois de abrir, a nova janela de consulta pode ser usada para executar instruções SQL no banco de dados. Você pode usar o comando **Ctrl-Shift-Q** (ou **Cmd-Shift-Q** em um Mac) para executar consultas no banco de dados.
> [!NOTE]
> Para mais informações sobre a extensão SQLite, você pode consultar a [documentação](https://marketplace.visualstudio.com/items?itemName=alexcvzz.vscode-sqlite&WT.mc_id=academic-77958-bethanycheum)
## Esquema do banco de dados
O esquema de um banco de dados é o design e a estrutura de suas tabelas. O banco de dados **airports** possui duas tabelas, `cities`, que contém uma lista de cidades no Reino Unido e Irlanda, e `airports`, que contém a lista de todos os aeroportos. Como algumas cidades podem ter vários aeroportos, foram criadas duas tabelas para armazenar as informações. Neste exercício, você usará joins para exibir informações de diferentes cidades.
| Cities |
| ---------------- |
| id (PK, integer) |
| city (text) |
| country (text) |
| Airports |
| -------------------------------- |
| id (PK, integer) |
| name (text) |
| code (text) |
| city_id (FK to id in **Cities**) |
## Tarefa
Crie consultas para retornar as seguintes informações:
1. todos os nomes de cidades na tabela `Cities`
1. todas as cidades na Irlanda na tabela `Cities`
1. todos os nomes de aeroportos com suas respectivas cidades e países
1. todos os aeroportos em Londres, Reino Unido
## Rubrica
| Exemplar | Adequado | Necessita Melhorias |
| ---------- | ---------- | ------------------- |
---
**Aviso Legal**:
Este documento foi traduzido usando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional humana. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução.

@ -0,0 +1,149 @@
# Trabalhando com Dados: Dados Não-Relacionais
|![ Sketchnote por [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/06-NoSQL.png)|
|:---:|
|Trabalhando com Dados NoSQL - _Sketchnote por [@nitya](https://twitter.com/nitya)_ |
## [Quiz Pré-Aula](https://ff-quizzes.netlify.app/en/ds/quiz/10)
Os dados não estão limitados a bancos de dados relacionais. Esta lição foca em dados não-relacionais e abordará os conceitos básicos de planilhas e NoSQL.
## Planilhas
As planilhas são uma maneira popular de armazenar e explorar dados porque exigem menos trabalho para configurar e começar. Nesta lição, você aprenderá os componentes básicos de uma planilha, bem como fórmulas e funções. Os exemplos serão ilustrados com o Microsoft Excel, mas a maioria das partes e tópicos terá nomes e etapas semelhantes em comparação com outros softwares de planilhas.
![Uma planilha vazia do Microsoft Excel com duas abas](../../../../2-Working-With-Data/06-non-relational/images/parts-of-spreadsheet.png)
Uma planilha é um arquivo e estará acessível no sistema de arquivos de um computador, dispositivo ou sistema de arquivos baseado em nuvem. O software em si pode ser baseado em navegador ou um aplicativo que deve ser instalado em um computador ou baixado como um app. No Excel, esses arquivos também são definidos como **workbooks** (pastas de trabalho), e essa terminologia será usada no restante desta lição.
Uma pasta de trabalho contém uma ou mais **worksheets** (planilhas), onde cada planilha é identificada por abas. Dentro de uma planilha, há retângulos chamados **células**, que conterão os dados reais. Uma célula é a interseção de uma linha e uma coluna, onde as colunas são identificadas por caracteres alfabéticos e as linhas por números. Algumas planilhas conterão cabeçalhos nas primeiras linhas para descrever os dados em uma célula.
Com esses elementos básicos de uma pasta de trabalho do Excel, usaremos um exemplo dos [Modelos da Microsoft](https://templates.office.com/) focado em um inventário para explorar algumas partes adicionais de uma planilha.
### Gerenciando um Inventário
O arquivo de planilha chamado "InventoryExample" é uma planilha formatada de itens dentro de um inventário que contém três planilhas, onde as abas são rotuladas como "Inventory List", "Inventory Pick List" e "Bin Lookup". A linha 4 da planilha Inventory List é o cabeçalho, que descreve o valor de cada célula na coluna do cabeçalho.
![Uma fórmula destacada de um exemplo de lista de inventário no Microsoft Excel](../../../../2-Working-With-Data/06-non-relational/images/formula-excel.png)
Existem casos em que uma célula depende dos valores de outras células para gerar seu valor. A planilha Inventory List acompanha o custo de cada item em seu inventário, mas e se precisarmos saber o valor total de tudo no inventário? [**Fórmulas**](https://support.microsoft.com/en-us/office/overview-of-formulas-34519a4e-1e8d-4f4b-84d4-d642c4f63263) realizam ações nos dados das células e são usadas para calcular o custo do inventário neste exemplo. Esta planilha usou uma fórmula na coluna Inventory Value para calcular o valor de cada item, multiplicando a quantidade sob o cabeçalho QTY pelo custo nas células sob o cabeçalho COST. Ao clicar duas vezes ou destacar uma célula, a fórmula será exibida. Você notará que as fórmulas começam com um sinal de igual, seguido pelo cálculo ou operação.
![Uma função destacada de um exemplo de lista de inventário no Microsoft Excel](../../../../2-Working-With-Data/06-non-relational/images/function-excel.png)
Podemos usar outra fórmula para somar todos os valores da coluna Inventory Value e obter o valor total. Isso poderia ser calculado somando cada célula para gerar a soma, mas isso pode ser uma tarefa tediosa. O Excel possui [**funções**](https://support.microsoft.com/en-us/office/sum-function-043e1c7d-7726-4e80-8f32-07b23e057f89), ou fórmulas predefinidas, para realizar cálculos nos valores das células. As funções exigem argumentos, que são os valores necessários para realizar esses cálculos. Quando as funções exigem mais de um argumento, eles precisam ser listados em uma ordem específica, ou a função pode não calcular o valor correto. Este exemplo usa a função SUM e utiliza os valores de Inventory Value como argumento para gerar o total listado na linha 3, coluna B (também referida como B3).
## NoSQL
NoSQL é um termo abrangente para as diferentes maneiras de armazenar dados não-relacionais e pode ser interpretado como "não-SQL", "não-relacional" ou "não apenas SQL". Esses tipos de sistemas de banco de dados podem ser categorizados em 4 tipos.
![Representação gráfica de um banco de dados chave-valor mostrando 4 chaves numéricas únicas associadas a 4 valores variados](../../../../2-Working-With-Data/06-non-relational/images/kv-db.png)
> Fonte: [Blog de Michał Białecki](https://www.michalbialecki.com/2018/03/18/azure-cosmos-db-key-value-database-cloud/)
Bancos de dados [chave-valor](https://docs.microsoft.com/en-us/azure/architecture/data-guide/big-data/non-relational-data#keyvalue-data-stores) associam chaves únicas, que são identificadores únicos, a um valor. Esses pares são armazenados usando uma [tabela de hash](https://www.hackerearth.com/practice/data-structures/hash-tables/basics-of-hash-tables/tutorial/) com uma função de hash apropriada.
![Representação gráfica de um banco de dados em grafo mostrando as relações entre pessoas, seus interesses e locais](../../../../2-Working-With-Data/06-non-relational/images/graph-db.png)
> Fonte: [Microsoft](https://docs.microsoft.com/en-us/azure/cosmos-db/graph/graph-introduction#graph-database-by-example)
Bancos de dados em [grafo](https://docs.microsoft.com/en-us/azure/architecture/data-guide/big-data/non-relational-data#graph-data-stores) descrevem relações nos dados e são representados como uma coleção de nós e arestas. Um nó representa uma entidade, algo que existe no mundo real, como um estudante ou extrato bancário. As arestas representam a relação entre duas entidades. Cada nó e aresta possuem propriedades que fornecem informações adicionais sobre eles.
![Representação gráfica de um banco de dados colunar mostrando um banco de dados de clientes com duas famílias de colunas chamadas Identidade e Informações de Contato](../../../../2-Working-With-Data/06-non-relational/images/columnar-db.png)
Bancos de dados [colunares](https://docs.microsoft.com/en-us/azure/architecture/data-guide/big-data/non-relational-data#columnar-data-stores) organizam dados em colunas e linhas, como uma estrutura de dados relacional, mas cada coluna é dividida em grupos chamados famílias de colunas, onde todos os dados sob uma coluna estão relacionados e podem ser recuperados e alterados como uma unidade.
### Bancos de Dados de Documentos com o Azure Cosmos DB
Bancos de dados de [documentos](https://docs.microsoft.com/en-us/azure/architecture/data-guide/big-data/non-relational-data#document-data-stores) são baseados no conceito de um banco de dados chave-valor e são compostos por uma série de campos e objetos. Esta seção explorará bancos de dados de documentos com o emulador do Cosmos DB.
Um banco de dados Cosmos DB se encaixa na definição de "Não Apenas SQL", onde o banco de dados de documentos do Cosmos DB utiliza SQL para consultar os dados. A [lição anterior](../05-relational-databases/README.md) sobre SQL aborda os conceitos básicos da linguagem, e poderemos aplicar algumas das mesmas consultas a um banco de dados de documentos aqui. Usaremos o Emulador do Cosmos DB, que nos permite criar e explorar um banco de dados de documentos localmente em um computador. Leia mais sobre o Emulador [aqui](https://docs.microsoft.com/en-us/azure/cosmos-db/local-emulator?tabs=ssl-netstd21).
Um documento é uma coleção de campos e valores de objetos, onde os campos descrevem o que o valor do objeto representa. Abaixo está um exemplo de um documento.
```json
{
"firstname": "Eva",
"age": 44,
"id": "8c74a315-aebf-4a16-bb38-2430a9896ce5",
"_rid": "bHwDAPQz8s0BAAAAAAAAAA==",
"_self": "dbs/bHwDAA==/colls/bHwDAPQz8s0=/docs/bHwDAPQz8s0BAAAAAAAAAA==/",
"_etag": "\"00000000-0000-0000-9f95-010a691e01d7\"",
"_attachments": "attachments/",
"_ts": 1630544034
}
```
Os campos de interesse neste documento são: `firstname`, `id` e `age`. Os demais campos com sublinhados foram gerados pelo Cosmos DB.
#### Explorando Dados com o Emulador do Cosmos DB
Você pode baixar e instalar o emulador [para Windows aqui](https://aka.ms/cosmosdb-emulator). Consulte esta [documentação](https://docs.microsoft.com/en-us/azure/cosmos-db/local-emulator?tabs=ssl-netstd21#run-on-linux-macos) para opções de como executar o Emulador no macOS e Linux.
O Emulador abre uma janela no navegador, onde a visualização Explorer permite explorar documentos.
![A visualização Explorer do Emulador do Cosmos DB](../../../../2-Working-With-Data/06-non-relational/images/cosmosdb-emulator-explorer.png)
Se você estiver acompanhando, clique em "Start with Sample" para gerar um banco de dados de exemplo chamado SampleDB. Se você expandir o SampleDB clicando na seta, encontrará um contêiner chamado `Persons`. Um contêiner contém uma coleção de itens, que são os documentos dentro do contêiner. Você pode explorar os quatro documentos individuais em `Items`.
![Explorando dados de exemplo no Emulador do Cosmos DB](../../../../2-Working-With-Data/06-non-relational/images/cosmosdb-emulator-persons.png)
#### Consultando Dados de Documentos com o Emulador do Cosmos DB
Também podemos consultar os dados de exemplo clicando no botão "New SQL Query" (segundo botão da esquerda para a direita).
`SELECT * FROM c` retorna todos os documentos no contêiner. Vamos adicionar uma cláusula where e encontrar todos com menos de 40 anos.
`SELECT * FROM c where c.age < 40`
![Executando uma consulta SELECT em dados de exemplo no Emulador do Cosmos DB para encontrar documentos com um campo age menor que 40](../../../../2-Working-With-Data/06-non-relational/images/cosmosdb-emulator-persons-query.png)
A consulta retorna dois documentos. Note que o valor do campo age para cada documento é menor que 40.
#### JSON e Documentos
Se você está familiarizado com o JavaScript Object Notation (JSON), notará que os documentos se parecem com JSON. Há um arquivo `PersonsData.json` neste diretório com mais dados que você pode carregar no contêiner `Persons` no Emulador via o botão `Upload Item`.
Na maioria dos casos, APIs que retornam dados em JSON podem ser diretamente transferidas e armazenadas em bancos de dados de documentos. Abaixo está outro documento, que representa tweets da conta do Twitter da Microsoft, recuperados usando a API do Twitter e inseridos no Cosmos DB.
```json
{
"created_at": "2021-08-31T19:03:01.000Z",
"id": "1432780985872142341",
"text": "Blank slate. Like this tweet if youve ever painted in Microsoft Paint before. https://t.co/cFeEs8eOPK",
"_rid": "dhAmAIUsA4oHAAAAAAAAAA==",
"_self": "dbs/dhAmAA==/colls/dhAmAIUsA4o=/docs/dhAmAIUsA4oHAAAAAAAAAA==/",
"_etag": "\"00000000-0000-0000-9f84-a0958ad901d7\"",
"_attachments": "attachments/",
"_ts": 1630537000
```
Os campos de interesse neste documento são: `created_at`, `id` e `text`.
## 🚀 Desafio
Há um arquivo `TwitterData.json` que você pode carregar no banco de dados SampleDB. Recomenda-se adicioná-lo a um contêiner separado. Isso pode ser feito da seguinte forma:
1. Clique no botão "New Container" no canto superior direito.
1. Selecione o banco de dados existente (SampleDB), crie um ID para o contêiner.
1. Defina a chave de partição como `/id`.
1. Clique em OK (você pode ignorar o restante das informações nesta visualização, pois este é um pequeno conjunto de dados rodando localmente em sua máquina).
1. Abra seu novo contêiner e carregue o arquivo Twitter Data com o botão `Upload Item`.
Tente executar algumas consultas SELECT para encontrar os documentos que possuem "Microsoft" no campo text. Dica: tente usar a [palavra-chave LIKE](https://docs.microsoft.com/en-us/azure/cosmos-db/sql/sql-query-keywords#using-like-with-the--wildcard-character).
## [Quiz Pós-Aula](https://ff-quizzes.netlify.app/en/ds/quiz/11)
## Revisão e Autoestudo
- Há algumas formatações e recursos adicionais adicionados a esta planilha que não são abordados nesta lição. A Microsoft possui uma [grande biblioteca de documentação e vídeos](https://support.microsoft.com/excel) sobre o Excel, caso você tenha interesse em aprender mais.
- Esta documentação arquitetural detalha as características dos diferentes tipos de dados não-relacionais: [Dados Não-Relacionais e NoSQL](https://docs.microsoft.com/en-us/azure/architecture/data-guide/big-data/non-relational-data).
- O Cosmos DB é um banco de dados não-relacional baseado em nuvem que também pode armazenar os diferentes tipos de NoSQL mencionados nesta lição. Saiba mais sobre esses tipos neste [Módulo de Aprendizado do Cosmos DB da Microsoft](https://docs.microsoft.com/en-us/learn/paths/work-with-nosql-data-in-azure-cosmos-db/).
## Tarefa
[Soda Profits](assignment.md)
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

@ -0,0 +1,24 @@
# Lucros da Soda
## Instruções
A planilha [Coca Cola Co](../../../../2-Working-With-Data/06-non-relational/CocaColaCo.xlsx) está faltando alguns cálculos. Sua tarefa é:
1. Calcular os lucros brutos dos anos fiscais de '15, '16, '17 e '18
- Lucro Bruto = Receitas Operacionais Líquidas - Custo dos bens vendidos
1. Calcular a média de todos os lucros brutos. Tente fazer isso com uma função.
- Média = Soma dos lucros brutos dividida pelo número de anos fiscais (10)
- Documentação sobre a [função MÉDIA](https://support.microsoft.com/en-us/office/average-function-047bac88-d466-426c-a32b-8f33eb960cf6)
1. Este é um arquivo Excel, mas deve ser editável em qualquer plataforma de planilhas
[Crédito da fonte de dados para Yiyi Wang](https://www.kaggle.com/yiyiwang0826/cocacola-excel)
## Rubrica
Exemplar | Adequado | Precisa Melhorar
--- | --- | --- |
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

File diff suppressed because one or more lines are too long

@ -0,0 +1,281 @@
# Trabalhando com Dados: Python e a Biblioteca Pandas
| ![ Sketchnote por [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/07-WorkWithPython.png) |
| :-------------------------------------------------------------------------------------------------------: |
| Trabalhando com Python - _Sketchnote por [@nitya](https://twitter.com/nitya)_ |
[![Vídeo de Introdução](../../../../translated_images/pt-BR/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.png)](https://youtu.be/dZjWOGbsN4Y)
Embora bancos de dados ofereçam maneiras muito eficientes de armazenar dados e consultá-los usando linguagens de consulta, a forma mais flexível de processar dados é escrever seu próprio programa para manipulá-los. Em muitos casos, realizar uma consulta em um banco de dados seria uma maneira mais eficaz. No entanto, em alguns casos, quando é necessário um processamento de dados mais complexo, isso não pode ser feito facilmente usando SQL.
O processamento de dados pode ser programado em qualquer linguagem de programação, mas existem certas linguagens que são mais adequadas para trabalhar com dados. Cientistas de dados geralmente preferem uma das seguintes linguagens:
* **[Python](https://www.python.org/)**, uma linguagem de programação de propósito geral, frequentemente considerada uma das melhores opções para iniciantes devido à sua simplicidade. Python possui muitas bibliotecas adicionais que podem ajudar a resolver diversos problemas práticos, como extrair dados de um arquivo ZIP ou converter uma imagem para escala de cinza. Além da ciência de dados, Python também é amplamente utilizado para desenvolvimento web.
* **[R](https://www.r-project.org/)** é uma ferramenta tradicional desenvolvida com foco no processamento estatístico de dados. Ela também contém um grande repositório de bibliotecas (CRAN), tornando-se uma boa escolha para processamento de dados. No entanto, R não é uma linguagem de propósito geral e raramente é usada fora do domínio da ciência de dados.
* **[Julia](https://julialang.org/)** é outra linguagem desenvolvida especificamente para ciência de dados. Ela foi projetada para oferecer melhor desempenho do que Python, tornando-se uma ótima ferramenta para experimentação científica.
Nesta lição, vamos nos concentrar em usar Python para processamento simples de dados. Assumiremos que você já tem uma familiaridade básica com a linguagem. Se quiser um aprendizado mais aprofundado sobre Python, pode consultar os seguintes recursos:
* [Aprenda Python de forma divertida com Turtle Graphics e Fractais](https://github.com/shwars/pycourse) - Curso introdutório rápido baseado no GitHub sobre programação em Python
* [Dê seus primeiros passos com Python](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Caminho de aprendizado no [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
Os dados podem vir em muitas formas. Nesta lição, consideraremos três formas de dados - **dados tabulares**, **texto** e **imagens**.
Vamos nos concentrar em alguns exemplos de processamento de dados, em vez de oferecer uma visão geral completa de todas as bibliotecas relacionadas. Isso permitirá que você entenda o conceito principal do que é possível e tenha uma ideia de onde encontrar soluções para seus problemas quando necessário.
> **Conselho mais útil**. Quando precisar realizar uma operação específica em dados e não souber como fazê-lo, tente pesquisar na internet. [Stackoverflow](https://stackoverflow.com/) geralmente contém muitos exemplos úteis de código em Python para diversas tarefas típicas.
## [Quiz pré-aula](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## Dados Tabulares e Dataframes
Você já encontrou dados tabulares quando falamos sobre bancos de dados relacionais. Quando você tem muitos dados contidos em várias tabelas interligadas, faz sentido usar SQL para trabalhar com eles. No entanto, há muitos casos em que temos uma tabela de dados e precisamos obter algum **entendimento** ou **insights** sobre esses dados, como a distribuição, correlação entre valores, etc. Na ciência de dados, há muitos casos em que precisamos realizar algumas transformações nos dados originais, seguidas de visualização. Ambas as etapas podem ser facilmente realizadas usando Python.
Existem duas bibliotecas mais úteis em Python que podem ajudar você a lidar com dados tabulares:
* **[Pandas](https://pandas.pydata.org/)** permite manipular os chamados **Dataframes**, que são análogos às tabelas relacionais. Você pode ter colunas nomeadas e realizar diferentes operações em linhas, colunas e dataframes em geral.
* **[Numpy](https://numpy.org/)** é uma biblioteca para trabalhar com **tensores**, ou seja, **arrays** multidimensionais. Um array possui valores do mesmo tipo subjacente e é mais simples do que um dataframe, mas oferece mais operações matemáticas e cria menos sobrecarga.
Existem também algumas outras bibliotecas que você deve conhecer:
* **[Matplotlib](https://matplotlib.org/)** é uma biblioteca usada para visualização de dados e criação de gráficos
* **[SciPy](https://www.scipy.org/)** é uma biblioteca com algumas funções científicas adicionais. Já nos deparamos com essa biblioteca ao falar sobre probabilidade e estatística
Aqui está um trecho de código que você normalmente usaria para importar essas bibliotecas no início do seu programa em Python:
```python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy import ... # you need to specify exact sub-packages that you need
```
Pandas é centrado em alguns conceitos básicos.
### Series
**Series** é uma sequência de valores, semelhante a uma lista ou array do numpy. A principal diferença é que uma série também possui um **índice**, e quando operamos em séries (por exemplo, somamos), o índice é levado em consideração. O índice pode ser tão simples quanto o número inteiro da linha (é o índice usado por padrão ao criar uma série a partir de uma lista ou array), ou pode ter uma estrutura complexa, como intervalo de datas.
> **Nota**: Há algum código introdutório de Pandas no notebook associado [`notebook.ipynb`](notebook.ipynb). Apenas destacamos alguns exemplos aqui, e você está definitivamente convidado a conferir o notebook completo.
Considere um exemplo: queremos analisar as vendas de nossa sorveteria. Vamos gerar uma série de números de vendas (número de itens vendidos por dia) para um determinado período de tempo:
```python
start_date = "Jan 1, 2020"
end_date = "Mar 31, 2020"
idx = pd.date_range(start_date,end_date)
print(f"Length of index is {len(idx)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![Gráfico de Série Temporal](../../../../translated_images/pt-BR/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.png)
Agora suponha que, a cada semana, organizamos uma festa para amigos e levamos 10 pacotes adicionais de sorvete para a festa. Podemos criar outra série, indexada por semana, para demonstrar isso:
```python
additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"))
```
Quando somamos duas séries, obtemos o número total:
```python
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![Gráfico de Série Temporal](../../../../translated_images/pt-BR/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.png)
> **Nota** que não estamos usando a sintaxe simples `total_items+additional_items`. Se fizéssemos isso, receberíamos muitos valores `NaN` (*Not a Number*) na série resultante. Isso ocorre porque há valores ausentes para alguns pontos do índice na série `additional_items`, e somar `NaN` a qualquer coisa resulta em `NaN`. Assim, precisamos especificar o parâmetro `fill_value` durante a soma.
Com séries temporais, também podemos **re-amostrar** a série com diferentes intervalos de tempo. Por exemplo, suponha que queremos calcular o volume médio de vendas mensalmente. Podemos usar o seguinte código:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![Médias Mensais de Série Temporal](../../../../translated_images/pt-BR/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.png)
### DataFrame
Um DataFrame é essencialmente uma coleção de séries com o mesmo índice. Podemos combinar várias séries em um DataFrame:
```python
a = pd.Series(range(1,10))
b = pd.Series(["I","like","to","play","games","and","will","not","change"],index=range(0,9))
df = pd.DataFrame([a,b])
```
Isso criará uma tabela horizontal como esta:
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| --- | --- | ---- | --- | --- | ------ | --- | ------ | ---- | ---- |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 1 | I | like | to | use | Python | and | Pandas | very | much |
Também podemos usar Series como colunas e especificar nomes de colunas usando um dicionário:
```python
df = pd.DataFrame({ 'A' : a, 'B' : b })
```
Isso nos dará uma tabela como esta:
| | A | B |
| --- | --- | ------ |
| 0 | 1 | I |
| 1 | 2 | like |
| 2 | 3 | to |
| 3 | 4 | use |
| 4 | 5 | Python |
| 5 | 6 | and |
| 6 | 7 | Pandas |
| 7 | 8 | very |
| 8 | 9 | much |
**Nota** que também podemos obter esse layout de tabela transpondo a tabela anterior, por exemplo, escrevendo
```python
df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' })
```
Aqui `.T` significa a operação de transposição do DataFrame, ou seja, trocar linhas e colunas, e a operação `rename` nos permite renomear colunas para corresponder ao exemplo anterior.
Aqui estão algumas das operações mais importantes que podemos realizar em DataFrames:
**Seleção de colunas**. Podemos selecionar colunas individuais escrevendo `df['A']` - essa operação retorna uma Series. Também podemos selecionar um subconjunto de colunas em outro DataFrame escrevendo `df[['B','A']]` - isso retorna outro DataFrame.
**Filtragem** de apenas certas linhas por critérios. Por exemplo, para deixar apenas linhas com a coluna `A` maior que 5, podemos escrever `df[df['A']>5]`.
> **Nota**: A forma como a filtragem funciona é a seguinte. A expressão `df['A']<5` retorna uma série booleana, que indica se a expressão é `True` ou `False` para cada elemento da série original `df['A']`. Quando a série booleana é usada como índice, ela retorna um subconjunto de linhas no DataFrame. Assim, não é possível usar expressões booleanas arbitrárias do Python, por exemplo, escrever `df[df['A']>5 and df['A']<7]` estaria errado. Em vez disso, você deve usar a operação especial `&` na série booleana, escrevendo `df[(df['A']>5) & (df['A']<7)]` (*os parênteses são importantes aqui*).
**Criando novas colunas computáveis**. Podemos facilmente criar novas colunas computáveis para nosso DataFrame usando expressões intuitivas como esta:
```python
df['DivA'] = df['A']-df['A'].mean()
```
Este exemplo calcula a divergência de A em relação ao seu valor médio. O que realmente acontece aqui é que estamos computando uma série e, em seguida, atribuímos essa série ao lado esquerdo, criando outra coluna. Assim, não podemos usar operações que não sejam compatíveis com séries, por exemplo, o código abaixo está errado:
```python
# Wrong code -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi"
df['LenB'] = len(df['B']) # <- Wrong result
```
O último exemplo, embora seja sintaticamente correto, nos dá um resultado errado, porque atribui o comprimento da série `B` a todos os valores na coluna, e não o comprimento dos elementos individuais como pretendíamos.
Se precisarmos calcular expressões complexas como esta, podemos usar a função `apply`. O último exemplo pode ser escrito da seguinte forma:
```python
df['LenB'] = df['B'].apply(lambda x : len(x))
# or
df['LenB'] = df['B'].apply(len)
```
Após as operações acima, terminaremos com o seguinte DataFrame:
| | A | B | DivA | LenB |
| --- | --- | ------ | ---- | ---- |
| 0 | 1 | I | -4.0 | 1 |
| 1 | 2 | like | -3.0 | 4 |
| 2 | 3 | to | -2.0 | 2 |
| 3 | 4 | use | -1.0 | 3 |
| 4 | 5 | Python | 0.0 | 6 |
| 5 | 6 | and | 1.0 | 3 |
| 6 | 7 | Pandas | 2.0 | 6 |
| 7 | 8 | very | 3.0 | 4 |
| 8 | 9 | much | 4.0 | 4 |
**Selecionando linhas com base em números** pode ser feito usando o construto `iloc`. Por exemplo, para selecionar as primeiras 5 linhas do DataFrame:
```python
df.iloc[:5]
```
**Agrupamento** é frequentemente usado para obter um resultado semelhante a *tabelas dinâmicas* no Excel. Suponha que queremos calcular o valor médio da coluna `A` para cada número dado de `LenB`. Então podemos agrupar nosso DataFrame por `LenB` e chamar `mean`:
```python
df.groupby(by='LenB')[['A','DivA']].mean()
```
Se precisarmos calcular a média e o número de elementos no grupo, podemos usar a função mais complexa `aggregate`:
```python
df.groupby(by='LenB') \
.aggregate({ 'DivA' : len, 'A' : lambda x: x.mean() }) \
.rename(columns={ 'DivA' : 'Count', 'A' : 'Mean'})
```
Isso nos dá a seguinte tabela:
| LenB | Count | Mean |
| ---- | ----- | -------- |
| 1 | 1 | 1.000000 |
| 2 | 1 | 3.000000 |
| 3 | 2 | 5.000000 |
| 4 | 3 | 6.333333 |
| 6 | 2 | 6.000000 |
### Obtendo Dados
Já vimos como é fácil construir Series e DataFrames a partir de objetos Python. No entanto, os dados geralmente vêm na forma de um arquivo de texto ou uma tabela do Excel. Felizmente, o Pandas nos oferece uma maneira simples de carregar dados do disco. Por exemplo, ler um arquivo CSV é tão simples quanto isso:
```python
df = pd.read_csv('file.csv')
```
Veremos mais exemplos de carregamento de dados, incluindo como buscá-los de sites externos, na seção "Desafio".
### Impressão e Visualização
Um Cientista de Dados frequentemente precisa explorar os dados, então é importante ser capaz de visualizá-los. Quando o DataFrame é grande, muitas vezes queremos apenas garantir que estamos fazendo tudo corretamente imprimindo as primeiras linhas. Isso pode ser feito chamando `df.head()`. Se você estiver executando isso no Jupyter Notebook, ele imprimirá o DataFrame em uma forma tabular agradável.
Também vimos o uso da função `plot` para visualizar algumas colunas. Embora `plot` seja muito útil para muitas tarefas e suporte diferentes tipos de gráficos via o parâmetro `kind=`, você sempre pode usar a biblioteca `matplotlib` diretamente para criar algo mais complexo. Vamos abordar a visualização de dados em detalhes em lições separadas do curso.
Este panorama cobre os conceitos mais importantes do Pandas, no entanto, a biblioteca é muito rica e não há limites para o que você pode fazer com ela! Agora vamos aplicar esse conhecimento para resolver um problema específico.
## 🚀 Desafio 1: Analisando a Propagação da COVID
O primeiro problema em que vamos focar é o modelamento da propagação epidêmica da COVID-19. Para isso, usaremos os dados sobre o número de indivíduos infectados em diferentes países, fornecidos pelo [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) da [Johns Hopkins University](https://jhu.edu/). O conjunto de dados está disponível neste [repositório do GitHub](https://github.com/CSSEGISandData/COVID-19).
Como queremos demonstrar como lidar com dados, convidamos você a abrir [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) e lê-lo de cima a baixo. Você também pode executar as células e realizar alguns desafios que deixamos para você no final.
![Propagação da COVID](../../../../translated_images/pt-BR/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.png)
> Se você não sabe como executar código no Jupyter Notebook, confira [este artigo](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
## Trabalhando com Dados Não Estruturados
Embora os dados frequentemente venham em forma tabular, em alguns casos precisamos lidar com dados menos estruturados, como texto ou imagens. Nesse caso, para aplicar as técnicas de processamento de dados que vimos acima, precisamos de alguma forma **extrair** dados estruturados. Aqui estão alguns exemplos:
* Extrair palavras-chave de um texto e verificar com que frequência essas palavras aparecem
* Usar redes neurais para extrair informações sobre objetos em uma imagem
* Obter informações sobre emoções de pessoas em um feed de câmera de vídeo
## 🚀 Desafio 2: Analisando Artigos sobre COVID
Neste desafio, continuaremos com o tema da pandemia de COVID e focaremos no processamento de artigos científicos sobre o assunto. Existe o [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) com mais de 7.000 (na época da escrita) artigos sobre COVID, disponível com metadados e resumos (e para cerca de metade deles também há texto completo disponível).
Um exemplo completo de análise deste conjunto de dados usando o serviço cognitivo [Text Analytics for Health](https://docs.microsoft.com/azure/cognitive-services/text-analytics/how-tos/text-analytics-for-health/?WT.mc_id=academic-77958-bethanycheum) é descrito [neste post do blog](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Vamos discutir uma versão simplificada dessa análise.
> **NOTE**: Não fornecemos uma cópia do conjunto de dados como parte deste repositório. Você pode precisar primeiro baixar o arquivo [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) deste [conjunto de dados no Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Pode ser necessário se registrar no Kaggle. Você também pode baixar o conjunto de dados sem registro [aqui](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), mas ele incluirá todos os textos completos além do arquivo de metadados.
Abra [`notebook-papers.ipynb`](notebook-papers.ipynb) e leia-o de cima a baixo. Você também pode executar as células e realizar alguns desafios que deixamos para você no final.
![Tratamento Médico para COVID](../../../../translated_images/pt-BR/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.png)
## Processando Dados de Imagem
Recentemente, modelos de IA muito poderosos foram desenvolvidos, permitindo-nos entender imagens. Há muitas tarefas que podem ser resolvidas usando redes neurais pré-treinadas ou serviços em nuvem. Alguns exemplos incluem:
* **Classificação de Imagens**, que pode ajudar a categorizar a imagem em uma das classes pré-definidas. Você pode facilmente treinar seus próprios classificadores de imagem usando serviços como [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)
* **Detecção de Objetos** para identificar diferentes objetos na imagem. Serviços como [Computer Vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) podem detectar vários objetos comuns, e você pode treinar um modelo [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) para detectar objetos específicos de interesse.
* **Detecção Facial**, incluindo idade, gênero e emoções. Isso pode ser feito via [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum).
Todos esses serviços em nuvem podem ser chamados usando [Python SDKs](https://docs.microsoft.com/samples/azure-samples/cognitive-services-python-sdk-samples/cognitive-services-python-sdk-samples/?WT.mc_id=academic-77958-bethanycheum), e assim podem ser facilmente incorporados ao seu fluxo de trabalho de exploração de dados.
Aqui estão alguns exemplos de exploração de dados a partir de fontes de dados de imagem:
* No post do blog [Como Aprender Ciência de Dados sem Programação](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/), exploramos fotos do Instagram, tentando entender o que faz as pessoas darem mais curtidas em uma foto. Primeiro extraímos o máximo de informações das imagens usando [Computer Vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), e depois usamos [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) para construir um modelo interpretável.
* No [Workshop de Estudos Faciais](https://github.com/CloudAdvocacy/FaceStudies), usamos [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) para extrair emoções de pessoas em fotografias de eventos, a fim de tentar entender o que faz as pessoas felizes.
## Conclusão
Seja com dados estruturados ou não estruturados, usando Python você pode realizar todas as etapas relacionadas ao processamento e compreensão de dados. É provavelmente a maneira mais flexível de processar dados, e é por isso que a maioria dos cientistas de dados usa Python como sua principal ferramenta. Aprender Python em profundidade é provavelmente uma boa ideia se você está sério sobre sua jornada em ciência de dados!
## [Quiz pós-aula](https://ff-quizzes.netlify.app/en/ds/quiz/13)
## Revisão e Autoestudo
**Livros**
* [Wes McKinney. Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython](https://www.amazon.com/gp/product/1491957662)
**Recursos Online**
* Tutorial oficial [10 minutos para Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html)
* [Documentação sobre Visualização com Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
**Aprendendo Python**
* [Aprenda Python de forma divertida com Turtle Graphics e Fractais](https://github.com/shwars/pycourse)
* [Dê seus primeiros passos com Python](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) no caminho de aprendizado do [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
## Tarefa
[Realize um estudo mais detalhado dos dados para os desafios acima](assignment.md)
## Créditos
Esta lição foi criada com ♥️ por [Dmitry Soshnikov](http://soshnikov.com)
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

@ -0,0 +1,28 @@
# Tarefa de Processamento de Dados em Python
Nesta tarefa, pediremos que você desenvolva o código que começamos a criar em nossos desafios. A tarefa consiste em duas partes:
## Modelagem da Propagação da COVID-19
- [ ] Plote gráficos de *R* para 5-6 países diferentes em um único gráfico para comparação, ou usando vários gráficos lado a lado.
- [ ] Veja como o número de mortes e recuperações se correlaciona com o número de casos infectados.
- [ ] Descubra quanto tempo uma doença típica dura, correlacionando visualmente a taxa de infecção e a taxa de mortes e procurando por algumas anomalias. Pode ser necessário observar diferentes países para descobrir isso.
- [ ] Calcule a taxa de fatalidade e como ela muda ao longo do tempo. *Você pode querer levar em conta a duração da doença em dias para deslocar uma série temporal antes de fazer os cálculos.*
## Análise de Artigos sobre COVID-19
- [ ] Construa uma matriz de co-ocorrência de diferentes medicamentos e veja quais medicamentos frequentemente aparecem juntos (ou seja, mencionados em um mesmo resumo). Você pode modificar o código para construir a matriz de co-ocorrência de medicamentos e diagnósticos.
- [ ] Visualize essa matriz usando um mapa de calor.
- [ ] Como um objetivo adicional, visualize a co-ocorrência de medicamentos usando [diagrama de cordas](https://en.wikipedia.org/wiki/Chord_diagram). [Esta biblioteca](https://pypi.org/project/chord/) pode ajudar você a desenhar um diagrama de cordas.
- [ ] Como outro objetivo adicional, extraia as dosagens de diferentes medicamentos (como **400mg** em *tomar 400mg de cloroquina diariamente*) usando expressões regulares e construa um dataframe que mostre diferentes dosagens para diferentes medicamentos. **Nota**: considere valores numéricos que estejam em proximidade textual ao nome do medicamento.
## Rubrica
Exemplar | Adequado | Precisa Melhorar
--- | --- | -- |
Todas as tarefas estão completas, ilustradas graficamente e explicadas, incluindo pelo menos um dos dois objetivos adicionais | Mais de 5 tarefas estão completas, nenhum objetivo adicional foi tentado, ou os resultados não estão claros | Menos de 5 (mas mais de 3) tarefas estão completas, as visualizações não ajudam a demonstrar o ponto
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1,336 @@
# Trabalhando com Dados: Preparação de Dados
|![ Sketchnote por [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/08-DataPreparation.png)|
|:---:|
|Preparação de Dados - _Sketchnote por [@nitya](https://twitter.com/nitya)_ |
## [Quiz Pré-Aula](https://ff-quizzes.netlify.app/en/ds/quiz/14)
Dependendo da sua origem, os dados brutos podem conter algumas inconsistências que dificultam a análise e modelagem. Em outras palavras, esses dados podem ser categorizados como "sujos" e precisarão ser limpos. Esta lição foca em técnicas para limpar e transformar os dados, lidando com desafios como dados ausentes, imprecisos ou incompletos. Os tópicos abordados nesta lição utilizam Python e a biblioteca Pandas e serão [demonstrados no notebook](../../../../2-Working-With-Data/08-data-preparation/notebook.ipynb) dentro deste diretório.
## A importância de limpar os dados
- **Facilidade de uso e reutilização**: Quando os dados estão devidamente organizados e normalizados, é mais fácil pesquisá-los, utilizá-los e compartilhá-los com outras pessoas.
- **Consistência**: A ciência de dados frequentemente exige trabalhar com mais de um conjunto de dados, onde conjuntos de diferentes fontes precisam ser combinados. Garantir que cada conjunto de dados individual tenha uma padronização comum assegura que os dados ainda sejam úteis quando todos forem mesclados em um único conjunto.
- **Precisão do modelo**: Dados que foram limpos melhoram a precisão dos modelos que dependem deles.
## Objetivos e estratégias comuns de limpeza
- **Explorar um conjunto de dados**: A exploração de dados, que será abordada em uma [lição futura](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/4-Data-Science-Lifecycle/15-analyzing), pode ajudar a identificar dados que precisam ser limpos. Observar visualmente os valores dentro de um conjunto de dados pode estabelecer expectativas sobre o restante ou fornecer uma ideia dos problemas que podem ser resolvidos. A exploração pode envolver consultas básicas, visualizações e amostragem.
- **Formatação**: Dependendo da origem, os dados podem ter inconsistências na forma como são apresentados. Isso pode causar problemas na busca e representação dos valores, onde eles são vistos no conjunto de dados, mas não são devidamente representados em visualizações ou resultados de consultas. Problemas comuns de formatação envolvem resolver espaços em branco, datas e tipos de dados. Resolver problemas de formatação geralmente depende das pessoas que estão utilizando os dados. Por exemplo, os padrões de como datas e números são apresentados podem variar de país para país.
- **Duplicações**: Dados que possuem mais de uma ocorrência podem produzir resultados imprecisos e geralmente devem ser removidos. Isso pode ocorrer frequentemente ao combinar dois ou mais conjuntos de dados. No entanto, há casos em que duplicações em conjuntos combinados contêm informações adicionais que podem precisar ser preservadas.
- **Dados ausentes**: Dados ausentes podem causar imprecisões, bem como resultados fracos ou tendenciosos. Às vezes, isso pode ser resolvido com um "recarregamento" dos dados, preenchendo os valores ausentes com cálculos e código, como Python, ou simplesmente removendo o valor e os dados correspondentes. Existem várias razões para os dados estarem ausentes, e as ações tomadas para resolver esses valores ausentes podem depender de como e por que eles desapareceram.
## Explorando informações de DataFrame
> **Objetivo de aprendizado:** Ao final desta subseção, você deve estar confortável em encontrar informações gerais sobre os dados armazenados em DataFrames do pandas.
Depois de carregar seus dados no pandas, eles provavelmente estarão em um DataFrame (consulte a [lição anterior](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/2-Working-With-Data/07-python#dataframe) para uma visão detalhada). No entanto, se o conjunto de dados no seu DataFrame tiver 60.000 linhas e 400 colunas, como começar a entender com o que você está lidando? Felizmente, o [pandas](https://pandas.pydata.org/) fornece ferramentas convenientes para rapidamente visualizar informações gerais sobre um DataFrame, além das primeiras e últimas linhas.
Para explorar essa funcionalidade, importaremos a biblioteca Python scikit-learn e usaremos um conjunto de dados icônico: o **conjunto de dados Iris**.
```python
import pandas as pd
from sklearn.datasets import load_iris
iris = load_iris()
iris_df = pd.DataFrame(data=iris['data'], columns=iris['feature_names'])
```
| |sepal length (cm)|sepal width (cm)|petal length (cm)|petal width (cm)|
|----------------------------------------|-----------------|----------------|-----------------|----------------|
|0 |5.1 |3.5 |1.4 |0.2 |
|1 |4.9 |3.0 |1.4 |0.2 |
|2 |4.7 |3.2 |1.3 |0.2 |
|3 |4.6 |3.1 |1.5 |0.2 |
|4 |5.0 |3.6 |1.4 |0.2 |
- **DataFrame.info**: Para começar, o método `info()` é usado para imprimir um resumo do conteúdo presente em um `DataFrame`. Vamos dar uma olhada neste conjunto de dados para ver o que temos:
```python
iris_df.info()
```
```
RangeIndex: 150 entries, 0 to 149
Data columns (total 4 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 sepal length (cm) 150 non-null float64
1 sepal width (cm) 150 non-null float64
2 petal length (cm) 150 non-null float64
3 petal width (cm) 150 non-null float64
dtypes: float64(4)
memory usage: 4.8 KB
```
A partir disso, sabemos que o conjunto de dados *Iris* tem 150 entradas em quatro colunas, sem entradas nulas. Todos os dados estão armazenados como números de ponto flutuante de 64 bits.
- **DataFrame.head()**: Em seguida, para verificar o conteúdo real do `DataFrame`, usamos o método `head()`. Vamos ver como são as primeiras linhas do nosso `iris_df`:
```python
iris_df.head()
```
```
sepal length (cm) sepal width (cm) petal length (cm) petal width (cm)
0 5.1 3.5 1.4 0.2
1 4.9 3.0 1.4 0.2
2 4.7 3.2 1.3 0.2
3 4.6 3.1 1.5 0.2
4 5.0 3.6 1.4 0.2
```
- **DataFrame.tail()**: Por outro lado, para verificar as últimas linhas do `DataFrame`, usamos o método `tail()`:
```python
iris_df.tail()
```
```
sepal length (cm) sepal width (cm) petal length (cm) petal width (cm)
145 6.7 3.0 5.2 2.3
146 6.3 2.5 5.0 1.9
147 6.5 3.0 5.2 2.0
148 6.2 3.4 5.4 2.3
149 5.9 3.0 5.1 1.8
```
> **Conclusão:** Apenas olhando os metadados sobre as informações em um DataFrame ou os primeiros e últimos valores, você pode ter uma ideia imediata sobre o tamanho, formato e conteúdo dos dados com os quais está lidando.
## Lidando com Dados Ausentes
> **Objetivo de aprendizado:** Ao final desta subseção, você deve saber como substituir ou remover valores nulos de DataFrames.
Na maioria das vezes, os conjuntos de dados que você deseja usar (ou precisa usar) têm valores ausentes. Como os dados ausentes são tratados envolve sutis compensações que podem afetar sua análise final e os resultados no mundo real.
O pandas lida com valores ausentes de duas maneiras. A primeira, que você já viu em seções anteriores, é `NaN`, ou Not a Number. Este é, na verdade, um valor especial que faz parte da especificação IEEE de ponto flutuante e é usado apenas para indicar valores de ponto flutuante ausentes.
Para valores ausentes que não sejam de ponto flutuante, o pandas usa o objeto `None` do Python. Embora possa parecer confuso encontrar dois tipos diferentes de valores que essencialmente dizem a mesma coisa, há razões programáticas sólidas para essa escolha de design e, na prática, isso permite que o pandas ofereça um bom compromisso para a grande maioria dos casos. Apesar disso, tanto `None` quanto `NaN` possuem restrições que você precisa estar atento em relação ao uso deles.
Confira mais sobre `NaN` e `None` no [notebook](https://github.com/microsoft/Data-Science-For-Beginners/blob/main/4-Data-Science-Lifecycle/15-analyzing/notebook.ipynb)!
- **Detectando valores nulos**: No `pandas`, os métodos `isnull()` e `notnull()` são suas principais ferramentas para detectar dados nulos. Ambos retornam máscaras booleanas sobre seus dados. Usaremos `numpy` para valores `NaN`:
```python
import numpy as np
example1 = pd.Series([0, np.nan, '', None])
example1.isnull()
```
```
0 False
1 True
2 False
3 True
dtype: bool
```
Observe atentamente a saída. Alguma coisa te surpreende? Embora `0` seja um nulo aritmético, ele é, no entanto, um número inteiro perfeitamente válido, e o pandas o trata como tal. `''` é um pouco mais sutil. Embora o tenhamos usado na Seção 1 para representar um valor de string vazio, ele é, no entanto, um objeto de string e não uma representação de nulo para o pandas.
Agora, vamos inverter isso e usar esses métodos de uma maneira mais parecida com a prática. Você pode usar máscaras booleanas diretamente como um índice de ``Series`` ou ``DataFrame``, o que pode ser útil ao trabalhar com valores ausentes (ou presentes) isolados.
> **Conclusão**: Tanto os métodos `isnull()` quanto `notnull()` produzem resultados semelhantes quando usados em `DataFrame`s: eles mostram os resultados e o índice desses resultados, o que será extremamente útil ao lidar com seus dados.
- **Removendo valores nulos**: Além de identificar valores ausentes, o pandas fornece um meio conveniente de remover valores nulos de `Series` e `DataFrame`s. (Particularmente em conjuntos de dados grandes, muitas vezes é mais aconselhável simplesmente remover valores ausentes [NA] da sua análise do que lidar com eles de outras maneiras.) Para ver isso em ação, vamos voltar ao `example1`:
```python
example1 = example1.dropna()
example1
```
```
0 0
2
dtype: object
```
Observe que isso deve se parecer com sua saída de `example3[example3.notnull()]`. A diferença aqui é que, em vez de apenas indexar os valores mascarados, `dropna` removeu esses valores ausentes da `Series` `example1`.
Como os `DataFrame`s têm duas dimensões, eles oferecem mais opções para remover dados.
```python
example2 = pd.DataFrame([[1, np.nan, 7],
[2, 5, 8],
[np.nan, 6, 9]])
example2
```
| | 0 | 1 | 2 |
|------|---|---|---|
|0 |1.0|NaN|7 |
|1 |2.0|5.0|8 |
|2 |NaN|6.0|9 |
(Você percebeu que o pandas converteu duas das colunas para ponto flutuante para acomodar os `NaN`s?)
Você não pode remover um único valor de um `DataFrame`, então precisa remover linhas ou colunas inteiras. Dependendo do que você está fazendo, pode querer fazer uma coisa ou outra, e o pandas oferece opções para ambas. Como na ciência de dados as colunas geralmente representam variáveis e as linhas representam observações, é mais provável que você remova linhas de dados; a configuração padrão para `dropna()` é remover todas as linhas que contêm quaisquer valores nulos:
```python
example2.dropna()
```
```
0 1 2
1 2.0 5.0 8
```
Se necessário, você pode remover valores NA de colunas. Use `axis=1` para fazer isso:
```python
example2.dropna(axis='columns')
```
```
2
0 7
1 8
2 9
```
Observe que isso pode remover muitos dados que você pode querer manter, especialmente em conjuntos de dados menores. E se você quiser remover apenas linhas ou colunas que contenham vários ou até mesmo todos os valores nulos? Você especifica essas configurações em `dropna` com os parâmetros `how` e `thresh`.
Por padrão, `how='any'` (se você quiser verificar por si mesmo ou ver quais outros parâmetros o método possui, execute `example4.dropna?` em uma célula de código). Você poderia, alternativamente, especificar `how='all'` para remover apenas linhas ou colunas que contenham todos os valores nulos. Vamos expandir nosso exemplo de `DataFrame` para ver isso em ação.
```python
example2[3] = np.nan
example2
```
| |0 |1 |2 |3 |
|------|---|---|---|---|
|0 |1.0|NaN|7 |NaN|
|1 |2.0|5.0|8 |NaN|
|2 |NaN|6.0|9 |NaN|
O parâmetro `thresh` oferece um controle mais refinado: você define o número de valores *não nulos* que uma linha ou coluna precisa ter para ser mantida:
```python
example2.dropna(axis='rows', thresh=3)
```
```
0 1 2 3
1 2.0 5.0 8 NaN
```
Aqui, a primeira e última linha foram removidas, porque contêm apenas dois valores não nulos.
- **Preenchendo valores nulos**: Dependendo do seu conjunto de dados, às vezes faz mais sentido preencher valores nulos com valores válidos do que removê-los. Você poderia usar `isnull` para fazer isso diretamente, mas isso pode ser trabalhoso, especialmente se você tiver muitos valores para preencher. Como essa é uma tarefa comum na ciência de dados, o pandas fornece `fillna`, que retorna uma cópia da `Series` ou `DataFrame` com os valores ausentes substituídos por um de sua escolha. Vamos criar outra `Series` de exemplo para ver como isso funciona na prática.
```python
example3 = pd.Series([1, np.nan, 2, None, 3], index=list('abcde'))
example3
```
```
a 1.0
b NaN
c 2.0
d NaN
e 3.0
dtype: float64
```
Você pode preencher todas as entradas nulas com um único valor, como `0`:
```python
example3.fillna(0)
```
```
a 1.0
b 0.0
c 2.0
d 0.0
e 3.0
dtype: float64
```
Você pode **preencher para frente** valores nulos, usando o último valor válido para preencher um nulo:
```python
example3.fillna(method='ffill')
```
```
a 1.0
b 1.0
c 2.0
d 2.0
e 3.0
dtype: float64
```
Você também pode **preencher para trás** para propagar o próximo valor válido para trás e preencher um nulo:
```python
example3.fillna(method='bfill')
```
```
a 1.0
b 2.0
c 2.0
d 3.0
e 3.0
dtype: float64
```
Como você pode imaginar, isso funciona da mesma forma com `DataFrame`s, mas você também pode especificar um `axis` ao longo do qual preencher valores nulos. Usando novamente o `example2` anteriormente:
```python
example2.fillna(method='ffill', axis=1)
```
```
0 1 2 3
0 1.0 1.0 7.0 7.0
1 2.0 5.0 8.0 8.0
2 NaN 6.0 9.0 9.0
```
Observe que, quando um valor anterior não está disponível para preenchimento para frente, o valor nulo permanece.
> **Conclusão:** Existem várias maneiras de lidar com valores ausentes em seus conjuntos de dados. A estratégia específica que você utiliza (removê-los, substituí-los ou até mesmo como substituí-los) deve ser determinada pelas particularidades desses dados. Você desenvolverá uma melhor percepção de como lidar com valores ausentes à medida que trabalhar e interagir mais com conjuntos de dados.
## Removendo dados duplicados
> **Objetivo de aprendizado:** Ao final desta subseção, você deve estar confortável em identificar e remover valores duplicados de DataFrames.
Além de dados ausentes, você frequentemente encontrará dados duplicados em conjuntos de dados do mundo real. Felizmente, o `pandas` oferece uma maneira fácil de detectar e remover entradas duplicadas.
- **Identificando duplicados: `duplicated`**: Você pode identificar facilmente valores duplicados usando o método `duplicated` no pandas, que retorna uma máscara booleana indicando se uma entrada em um `DataFrame` é um duplicado de uma anterior. Vamos criar outro exemplo de `DataFrame` para ver isso em ação.
```python
example4 = pd.DataFrame({'letters': ['A','B'] * 2 + ['B'],
'numbers': [1, 2, 1, 3, 3]})
example4
```
| |letters|numbers|
|------|-------|-------|
|0 |A |1 |
|1 |B |2 |
|2 |A |1 |
|3 |B |3 |
|4 |B |3 |
```python
example4.duplicated()
```
```
0 False
1 False
2 True
3 False
4 True
dtype: bool
```
- **Removendo duplicados: `drop_duplicates`:** simplesmente retorna uma cópia dos dados para os quais todos os valores `duplicated` são `False`:
```python
example4.drop_duplicates()
```
```
letters numbers
0 A 1
1 B 2
3 B 3
```
Tanto `duplicated` quanto `drop_duplicates` consideram todas as colunas por padrão, mas você pode especificar que eles examinem apenas um subconjunto de colunas no seu `DataFrame`:
```python
example4.drop_duplicates(['letters'])
```
```
letters numbers
0 A 1
1 B 2
```
> **Conclusão:** Remover dados duplicados é uma parte essencial de quase todos os projetos de ciência de dados. Dados duplicados podem alterar os resultados de suas análises e fornecer resultados imprecisos!
## 🚀 Desafio
Todo o material discutido está disponível como um [Jupyter Notebook](https://github.com/microsoft/Data-Science-For-Beginners/blob/main/2-Working-With-Data/08-data-preparation/notebook.ipynb). Além disso, há exercícios presentes após cada seção, experimente resolvê-los!
## [Quiz pós-aula](https://ff-quizzes.netlify.app/en/ds/quiz/15)
## Revisão e Autoestudo
Existem muitas maneiras de descobrir e abordar a preparação de seus dados para análise e modelagem, e a limpeza dos dados é uma etapa importante que exige uma experiência prática. Experimente esses desafios do Kaggle para explorar técnicas que esta lição não abordou.
- [Desafio de Limpeza de Dados: Análise de Datas](https://www.kaggle.com/rtatman/data-cleaning-challenge-parsing-dates/)
- [Desafio de Limpeza de Dados: Escalar e Normalizar Dados](https://www.kaggle.com/rtatman/data-cleaning-challenge-scale-and-normalize-data)
## Tarefa
[Avaliando Dados de um Formulário](assignment.md)
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

File diff suppressed because one or more lines are too long

@ -0,0 +1,19 @@
# Avaliando Dados de um Formulário
Um cliente tem testado um [formulário simples](../../../../2-Working-With-Data/08-data-preparation/index.html) para coletar alguns dados básicos sobre sua base de clientes. Eles trouxeram os resultados para você validar os dados que foram coletados. Você pode abrir a página `index.html` no navegador para dar uma olhada no formulário.
Foi fornecido a você um [conjunto de dados em formato csv](../../../../data/form.csv) que contém entradas do formulário, bem como algumas visualizações básicas. O cliente apontou que algumas das visualizações parecem incorretas, mas não sabem como resolvê-las. Você pode explorá-las no [notebook da tarefa](assignment.ipynb).
## Instruções
Use as técnicas desta lição para fazer recomendações sobre o formulário, garantindo que ele capture informações precisas e consistentes.
## Rubrica
Exemplar | Adequado | Precisa Melhorar
--- | --- | --- |
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

@ -0,0 +1,22 @@
# Trabalhando com Dados
![amor por dados](../../../translated_images/pt-BR/data-love.a22ef29e6742c852505ada062920956d3d7604870b281a8ca7c7ac6f37381d5a.jpg)
> Foto por <a href="https://unsplash.com/@swimstaralex?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Alexander Sinn</a> no <a href="https://unsplash.com/s/photos/data?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Unsplash</a>
Nestas lições, você aprenderá algumas das maneiras de gerenciar, manipular e usar dados em aplicações. Você aprenderá sobre bancos de dados relacionais e não relacionais e como os dados podem ser armazenados neles. Aprenderá os fundamentos de trabalhar com Python para gerenciar dados e descobrirá algumas das muitas formas de usar Python para gerenciar e explorar dados.
### Tópicos
1. [Bancos de dados relacionais](05-relational-databases/README.md)
2. [Bancos de dados não relacionais](06-non-relational/README.md)
3. [Trabalhando com Python](07-python/README.md)
4. [Preparando dados](08-data-preparation/README.md)
### Créditos
Estas lições foram escritas com ❤️ por [Christopher Harrison](https://twitter.com/geektrainer), [Dmitry Soshnikov](https://twitter.com/shwars) e [Jasmine Greenaway](https://twitter.com/paladique)
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

@ -0,0 +1,209 @@
# Visualizando Quantidades
|![ Sketchnote por [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/09-Visualizing-Quantities.png)|
|:---:|
| Visualizando Quantidades - _Sketchnote por [@nitya](https://twitter.com/nitya)_ |
Nesta lição, você explorará como usar uma das muitas bibliotecas disponíveis em Python para aprender a criar visualizações interessantes em torno do conceito de quantidade. Usando um conjunto de dados limpo sobre os pássaros de Minnesota, você pode aprender muitos fatos interessantes sobre a vida selvagem local.
## [Quiz pré-aula](https://ff-quizzes.netlify.app/en/ds/quiz/16)
## Observe a envergadura com Matplotlib
Uma excelente biblioteca para criar gráficos e diagramas, tanto simples quanto sofisticados, é [Matplotlib](https://matplotlib.org/stable/index.html). Em termos gerais, o processo de plotar dados usando essas bibliotecas inclui identificar as partes do seu dataframe que você deseja analisar, realizar as transformações necessárias nos dados, atribuir valores aos eixos x e y, decidir o tipo de gráfico a ser exibido e, finalmente, mostrar o gráfico. O Matplotlib oferece uma grande variedade de visualizações, mas para esta lição, vamos focar nas mais apropriadas para visualizar quantidades: gráficos de linha, dispersão e barras.
> ✅ Use o melhor gráfico para se adequar à estrutura dos seus dados e à história que você quer contar.
> - Para analisar tendências ao longo do tempo: linha
> - Para comparar valores: barra, coluna, pizza, dispersão
> - Para mostrar como as partes se relacionam com o todo: pizza
> - Para mostrar a distribuição dos dados: dispersão, barra
> - Para mostrar tendências: linha, coluna
> - Para mostrar relações entre valores: linha, dispersão, bolha
Se você tem um conjunto de dados e precisa descobrir a quantidade de um determinado item, uma das primeiras tarefas será inspecionar seus valores.
✅ Existem ótimos 'cheat sheets' disponíveis para Matplotlib [aqui](https://matplotlib.org/cheatsheets/cheatsheets.pdf).
## Construa um gráfico de linha sobre os valores de envergadura das asas dos pássaros
Abra o arquivo `notebook.ipynb` na raiz da pasta desta lição e adicione uma célula.
> Nota: os dados estão armazenados na raiz deste repositório na pasta `/data`.
```python
import pandas as pd
import matplotlib.pyplot as plt
birds = pd.read_csv('../../data/birds.csv')
birds.head()
```
Esses dados são uma mistura de texto e números:
| | Nome | NomeCientífico | Categoria | Ordem | Família | Gênero | StatusConservação | MinComprimento | MaxComprimento | MinPesoCorporal | MaxPesoCorporal | MinEnvergadura | MaxEnvergadura |
| ---: | :--------------------------- | :--------------------- | :-------------------- | :----------- | :------- | :---------- | :----------------- | --------: | --------: | ----------: | ----------: | ----------: | ----------: |
| 0 | Pato-de-bico-preto | Dendrocygna autumnalis | Patos/Gansos/AvesAquáticas | Anseriformes | Anatidae | Dendrocygna | LC | 47 | 56 | 652 | 1020 | 76 | 94 |
| 1 | Pato-de-bico-fulvo | Dendrocygna bicolor | Patos/Gansos/AvesAquáticas | Anseriformes | Anatidae | Dendrocygna | LC | 45 | 53 | 712 | 1050 | 85 | 93 |
| 2 | Ganso-da-neve | Anser caerulescens | Patos/Gansos/AvesAquáticas | Anseriformes | Anatidae | Anser | LC | 64 | 79 | 2050 | 4050 | 135 | 165 |
| 3 | Ganso-de-Ross | Anser rossii | Patos/Gansos/AvesAquáticas | Anseriformes | Anatidae | Anser | LC | 57.3 | 64 | 1066 | 1567 | 113 | 116 |
| 4 | Ganso-de-fronte-branca | Anser albifrons | Patos/Gansos/AvesAquáticas | Anseriformes | Anatidae | Anser | LC | 64 | 81 | 1930 | 3310 | 130 | 165 |
Vamos começar plotando alguns dos dados numéricos usando um gráfico de linha básico. Suponha que você queira visualizar a envergadura máxima desses pássaros interessantes.
```python
wingspan = birds['MaxWingspan']
wingspan.plot()
```
![Envergadura Máxima](../../../../3-Data-Visualization/09-visualization-quantities/images/max-wingspan-02.png)
O que você percebe imediatamente? Parece haver pelo menos um valor discrepante - que envergadura impressionante! Uma envergadura de 2300 centímetros equivale a 23 metros - há Pterodátilos vagando por Minnesota? Vamos investigar.
Embora você possa fazer uma classificação rápida no Excel para encontrar esses valores discrepantes, que provavelmente são erros de digitação, continue o processo de visualização trabalhando diretamente no gráfico.
Adicione rótulos ao eixo x para mostrar quais tipos de pássaros estão em questão:
```
plt.title('Max Wingspan in Centimeters')
plt.ylabel('Wingspan (CM)')
plt.xlabel('Birds')
plt.xticks(rotation=45)
x = birds['Name']
y = birds['MaxWingspan']
plt.plot(x, y)
plt.show()
```
![Envergadura com rótulos](../../../../3-Data-Visualization/09-visualization-quantities/images/max-wingspan-labels-02.png)
Mesmo com a rotação dos rótulos ajustada para 45 graus, há muitos para serem lidos. Vamos tentar uma estratégia diferente: rotular apenas os valores discrepantes e definir os rótulos dentro do gráfico. Você pode usar um gráfico de dispersão para criar mais espaço para os rótulos:
```python
plt.title('Max Wingspan in Centimeters')
plt.ylabel('Wingspan (CM)')
plt.tick_params(axis='both',which='both',labelbottom=False,bottom=False)
for i in range(len(birds)):
x = birds['Name'][i]
y = birds['MaxWingspan'][i]
plt.plot(x, y, 'bo')
if birds['MaxWingspan'][i] > 500:
plt.text(x, y * (1 - 0.05), birds['Name'][i], fontsize=12)
plt.show()
```
O que está acontecendo aqui? Você usou `tick_params` para ocultar os rótulos inferiores e, em seguida, criou um loop sobre o conjunto de dados dos pássaros. Plotando o gráfico com pequenos pontos azuis redondos usando `bo`, você verificou se algum pássaro tinha uma envergadura máxima acima de 500 e exibiu seu rótulo ao lado do ponto, caso positivo. Você deslocou os rótulos um pouco no eixo y (`y * (1 - 0.05)`) e usou o nome do pássaro como rótulo.
O que você descobriu?
![Valores discrepantes](../../../../3-Data-Visualization/09-visualization-quantities/images/labeled-wingspan-02.png)
## Filtre seus dados
Tanto a Águia-careca quanto o Falcão-das-pradarias, embora provavelmente sejam pássaros muito grandes, parecem estar com valores incorretos, com um `0` extra adicionado à sua envergadura máxima. É improvável que você encontre uma Águia-careca com uma envergadura de 25 metros, mas, se encontrar, por favor, nos avise! Vamos criar um novo dataframe sem esses dois valores discrepantes:
```python
plt.title('Max Wingspan in Centimeters')
plt.ylabel('Wingspan (CM)')
plt.xlabel('Birds')
plt.tick_params(axis='both',which='both',labelbottom=False,bottom=False)
for i in range(len(birds)):
x = birds['Name'][i]
y = birds['MaxWingspan'][i]
if birds['Name'][i] not in ['Bald eagle', 'Prairie falcon']:
plt.plot(x, y, 'bo')
plt.show()
```
Ao filtrar os valores discrepantes, seus dados agora estão mais coesos e compreensíveis.
![Gráfico de dispersão das envergaduras](../../../../3-Data-Visualization/09-visualization-quantities/images/scatterplot-wingspan-02.png)
Agora que temos um conjunto de dados mais limpo, pelo menos em termos de envergadura, vamos descobrir mais sobre esses pássaros.
Embora gráficos de linha e dispersão possam exibir informações sobre valores de dados e suas distribuições, queremos pensar nos valores inerentes a este conjunto de dados. Você poderia criar visualizações para responder às seguintes perguntas sobre quantidade:
> Quantas categorias de pássaros existem e quais são seus números?
> Quantos pássaros estão extintos, ameaçados, raros ou comuns?
> Quantos existem dos vários gêneros e ordens na terminologia de Linnaeus?
## Explore gráficos de barras
Gráficos de barras são práticos quando você precisa mostrar agrupamentos de dados. Vamos explorar as categorias de pássaros que existem neste conjunto de dados para ver qual é a mais comum em número.
No arquivo do notebook, crie um gráfico de barras básico.
✅ Nota: você pode filtrar os dois pássaros discrepantes que identificamos na seção anterior, corrigir o erro de digitação na envergadura deles ou deixá-los para esses exercícios que não dependem dos valores de envergadura.
Se você quiser criar um gráfico de barras, pode selecionar os dados nos quais deseja focar. Gráficos de barras podem ser criados a partir de dados brutos:
```python
birds.plot(x='Category',
kind='bar',
stacked=True,
title='Birds of Minnesota')
```
![Dados completos como gráfico de barras](../../../../3-Data-Visualization/09-visualization-quantities/images/full-data-bar-02.png)
Este gráfico de barras, no entanto, é ilegível porque há muitos dados não agrupados. Você precisa selecionar apenas os dados que deseja plotar, então vamos observar o comprimento dos pássaros com base em sua categoria.
Filtre seus dados para incluir apenas a categoria dos pássaros.
✅ Observe que você usa Pandas para gerenciar os dados e, em seguida, deixa o Matplotlib fazer o gráfico.
Como há muitas categorias, você pode exibir este gráfico verticalmente e ajustar sua altura para acomodar todos os dados:
```python
category_count = birds.value_counts(birds['Category'].values, sort=True)
plt.rcParams['figure.figsize'] = [6, 12]
category_count.plot.barh()
```
![Categoria e comprimento](../../../../3-Data-Visualization/09-visualization-quantities/images/category-counts-02.png)
Este gráfico de barras mostra uma boa visão do número de pássaros em cada categoria. Num piscar de olhos, você vê que o maior número de pássaros nesta região está na categoria Patos/Gansos/AvesAquáticas. Minnesota é a 'terra dos 10.000 lagos', então isso não é surpreendente!
✅ Experimente outros contagens neste conjunto de dados. Algo te surpreende?
## Comparando dados
Você pode tentar diferentes comparações de dados agrupados criando novos eixos. Experimente uma comparação do MaxComprimento de um pássaro, com base em sua categoria:
```python
maxlength = birds['MaxLength']
plt.barh(y=birds['Category'], width=maxlength)
plt.rcParams['figure.figsize'] = [6, 12]
plt.show()
```
![Comparando dados](../../../../3-Data-Visualization/09-visualization-quantities/images/category-length-02.png)
Nada é surpreendente aqui: beija-flores têm o menor MaxComprimento em comparação com Pelicanos ou Gansos. É bom quando os dados fazem sentido lógico!
Você pode criar visualizações mais interessantes de gráficos de barras sobrepondo dados. Vamos sobrepor Comprimento Mínimo e Máximo em uma determinada categoria de pássaros:
```python
minLength = birds['MinLength']
maxLength = birds['MaxLength']
category = birds['Category']
plt.barh(category, maxLength)
plt.barh(category, minLength)
plt.show()
```
Neste gráfico, você pode ver o intervalo por categoria de pássaros do Comprimento Mínimo e Máximo. Você pode dizer com segurança que, dados esses dados, quanto maior o pássaro, maior seu intervalo de comprimento. Fascinante!
![Valores sobrepostos](../../../../3-Data-Visualization/09-visualization-quantities/images/superimposed-02.png)
## 🚀 Desafio
Este conjunto de dados de pássaros oferece uma riqueza de informações sobre diferentes tipos de pássaros dentro de um ecossistema específico. Pesquise na internet e veja se consegue encontrar outros conjuntos de dados relacionados a pássaros. Pratique a construção de gráficos e diagramas sobre esses pássaros para descobrir fatos que você não conhecia.
## [Quiz pós-aula](https://ff-quizzes.netlify.app/en/ds/quiz/17)
## Revisão & Autoestudo
Esta primeira lição deu a você algumas informações sobre como usar Matplotlib para visualizar quantidades. Pesquise outras maneiras de trabalhar com conjuntos de dados para visualização. [Plotly](https://github.com/plotly/plotly.py) é uma que não abordaremos nessas lições, então dê uma olhada no que ela pode oferecer.
## Tarefa
[Linhas, Dispersões e Barras](assignment.md)
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

@ -0,0 +1,16 @@
# Linhas, Dispersões e Barras
## Instruções
Nesta lição, você trabalhou com gráficos de linha, dispersões e gráficos de barras para mostrar fatos interessantes sobre este conjunto de dados. Nesta tarefa, aprofunde-se no conjunto de dados para descobrir um fato sobre um tipo específico de pássaro. Por exemplo, crie um notebook visualizando todos os dados interessantes que você puder encontrar sobre Gansos-da-neve. Use os três tipos de gráficos mencionados acima para contar uma história no seu notebook.
## Rubrica
Exemplar | Adequado | Precisa Melhorar
--- | --- | -- |
Um notebook é apresentado com boas anotações, narrativa sólida e gráficos atraentes | O notebook está faltando um desses elementos | O notebook está faltando dois desses elementos
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional feita por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

@ -0,0 +1,92 @@
{
"cells": [
{
"cell_type": "markdown",
"source": [
"# Vamos aprender sobre pássaros\n",
"\n",
"## Introdução\n",
"\n",
"Os pássaros são criaturas fascinantes que podem ser encontrados em quase todos os lugares do mundo. Eles vêm em uma variedade de formas, tamanhos e cores, e desempenham papéis importantes em nossos ecossistemas.\n",
"\n",
"[!NOTE] Este guia é apenas uma introdução ao mundo dos pássaros. Para informações mais detalhadas, consulte fontes especializadas.\n",
"\n",
"## Características dos pássaros\n",
"\n",
"Os pássaros possuem várias características únicas que os diferenciam de outros animais:\n",
"\n",
"- **Penas**: As penas ajudam os pássaros a voar, manter-se aquecidos e até se camuflar.\n",
"- **Bico**: O formato do bico varia dependendo da dieta do pássaro.\n",
"- **Ovos**: Todos os pássaros põem ovos, geralmente em ninhos.\n",
"- **Voo**: A maioria dos pássaros pode voar, embora existam exceções como o avestruz e o pinguim.\n",
"\n",
"[!TIP] Observe os pássaros em seu ambiente natural para aprender mais sobre seus comportamentos.\n",
"\n",
"## Tipos de pássaros\n",
"\n",
"Existem milhares de espécies de pássaros, mas aqui estão alguns grupos principais:\n",
"\n",
"- **Passeriformes**: Incluem pardais, canários e outros pássaros pequenos.\n",
"- **Rapinantes**: Como águias e falcões, conhecidos por sua visão aguçada e habilidades de caça.\n",
"- **Aquáticos**: Pássaros como patos e pelicanos que vivem perto da água.\n",
"- **Noturnos**: Corujas e outros pássaros que são ativos à noite.\n",
"\n",
"[!WARNING] Não tente se aproximar de pássaros selvagens sem o devido cuidado. Eles podem se sentir ameaçados.\n",
"\n",
"## Por que estudar pássaros?\n",
"\n",
"Estudar pássaros pode ser uma atividade gratificante por várias razões:\n",
"\n",
"- **Conservação**: Entender os pássaros ajuda a proteger espécies ameaçadas.\n",
"- **Ciência**: Os pássaros são importantes para pesquisas sobre evolução e comportamento animal.\n",
"- **Lazer**: A observação de pássaros é um passatempo relaxante e educativo.\n",
"\n",
"[!IMPORTANT] Sempre respeite os habitats naturais dos pássaros ao observá-los.\n",
"\n",
"## Conclusão\n",
"\n",
"Os pássaros são uma parte essencial do nosso mundo natural. Aprender sobre eles não apenas enriquece nosso conhecimento, mas também nos ajuda a apreciar a beleza e a complexidade da vida ao nosso redor.\n",
"\n",
"[!CAUTION] Certifique-se de seguir as leis locais ao interagir com pássaros ou seus habitats.\n"
],
"metadata": {}
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n---\n\n**Aviso Legal**: \nEste documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional feita por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.\n"
]
}
],
"metadata": {
"orig_nbformat": 4,
"language_info": {
"name": "python",
"version": "3.7.0",
"mimetype": "text/x-python",
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"pygments_lexer": "ipython3",
"nbconvert_exporter": "python",
"file_extension": ".py"
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3.7.0 64-bit"
},
"interpreter": {
"hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d"
},
"coopTranslator": {
"original_hash": "33e5c5d3f0630388e20f2e161bd4cdf3",
"translation_date": "2025-09-01T22:30:24+00:00",
"source_file": "3-Data-Visualization/09-visualization-quantities/notebook.ipynb",
"language_code": "br"
}
},
"nbformat": 4,
"nbformat_minor": 2
}

@ -0,0 +1,208 @@
# Visualizando Distribuições
|![ Sketchnote por [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/10-Visualizing-Distributions.png)|
|:---:|
| Visualizando Distribuições - _Sketchnote por [@nitya](https://twitter.com/nitya)_ |
Na lição anterior, você aprendeu alguns fatos interessantes sobre um conjunto de dados sobre os pássaros de Minnesota. Você encontrou alguns dados errôneos ao visualizar outliers e analisou as diferenças entre categorias de pássaros com base no comprimento máximo.
## [Quiz pré-aula](https://ff-quizzes.netlify.app/en/ds/quiz/18)
## Explore o conjunto de dados dos pássaros
Outra maneira de explorar os dados é analisando sua distribuição, ou como os dados estão organizados ao longo de um eixo. Talvez, por exemplo, você queira aprender sobre a distribuição geral, para este conjunto de dados, da envergadura máxima ou da massa corporal máxima dos pássaros de Minnesota.
Vamos descobrir alguns fatos sobre as distribuições de dados neste conjunto de dados. No arquivo _notebook.ipynb_ na raiz da pasta desta lição, importe Pandas, Matplotlib e seus dados:
```python
import pandas as pd
import matplotlib.pyplot as plt
birds = pd.read_csv('../../data/birds.csv')
birds.head()
```
| | Nome | NomeCientífico | Categoria | Ordem | Família | Gênero | StatusConservação | ComprimentoMin | ComprimentoMax | MassaCorporalMin | MassaCorporalMax | EnvergaduraMin | EnvergaduraMax |
| ---: | :--------------------------- | :--------------------- | :-------------------- | :----------- | :------- | :---------- | :----------------- | --------: | --------: | ----------: | ----------: | ----------: | ----------: |
| 0 | Pato-silvo-de-barriga-preta | Dendrocygna autumnalis | Patos/Gansos/AvesAquáticas | Anseriformes | Anatidae | Dendrocygna | LC | 47 | 56 | 652 | 1020 | 76 | 94 |
| 1 | Pato-silvo-ferrugem | Dendrocygna bicolor | Patos/Gansos/AvesAquáticas | Anseriformes | Anatidae | Dendrocygna | LC | 45 | 53 | 712 | 1050 | 85 | 93 |
| 2 | Ganso-da-neve | Anser caerulescens | Patos/Gansos/AvesAquáticas | Anseriformes | Anatidae | Anser | LC | 64 | 79 | 2050 | 4050 | 135 | 165 |
| 3 | Ganso-de-Ross | Anser rossii | Patos/Gansos/AvesAquáticas | Anseriformes | Anatidae | Anser | LC | 57.3 | 64 | 1066 | 1567 | 113 | 116 |
| 4 | Ganso-de-testa-branca-maior | Anser albifrons | Patos/Gansos/AvesAquáticas | Anseriformes | Anatidae | Anser | LC | 64 | 81 | 1930 | 3310 | 130 | 165 |
Em geral, você pode rapidamente observar como os dados estão distribuídos usando um gráfico de dispersão, como fizemos na lição anterior:
```python
birds.plot(kind='scatter',x='MaxLength',y='Order',figsize=(12,8))
plt.title('Max Length per Order')
plt.ylabel('Order')
plt.xlabel('Max Length')
plt.show()
```
![comprimento máximo por ordem](../../../../3-Data-Visualization/10-visualization-distributions/images/scatter-wb.png)
Isso fornece uma visão geral da distribuição do comprimento corporal por ordem de pássaros, mas não é a maneira ideal de exibir distribuições reais. Essa tarefa geralmente é realizada criando um histograma.
## Trabalhando com histogramas
O Matplotlib oferece ótimas maneiras de visualizar a distribuição de dados usando histogramas. Esse tipo de gráfico é semelhante a um gráfico de barras, onde a distribuição pode ser vista pelo aumento e diminuição das barras. Para construir um histograma, você precisa de dados numéricos. Para criar um histograma, você pode plotar um gráfico definindo o tipo como 'hist' para histograma. Este gráfico mostra a distribuição de MassaCorporalMax para o intervalo de dados numéricos de todo o conjunto de dados. Dividindo o array de dados em pequenos intervalos, ele pode exibir a distribuição dos valores dos dados:
```python
birds['MaxBodyMass'].plot(kind = 'hist', bins = 10, figsize = (12,12))
plt.show()
```
![distribuição em todo o conjunto de dados](../../../../3-Data-Visualization/10-visualization-distributions/images/dist1-wb.png)
Como você pode ver, a maioria dos 400+ pássaros neste conjunto de dados está na faixa de menos de 2000 para sua Massa Corporal Máxima. Obtenha mais informações sobre os dados alterando o parâmetro `bins` para um número maior, como 30:
```python
birds['MaxBodyMass'].plot(kind = 'hist', bins = 30, figsize = (12,12))
plt.show()
```
![distribuição em todo o conjunto de dados com maior parâmetro de bins](../../../../3-Data-Visualization/10-visualization-distributions/images/dist2-wb.png)
Este gráfico mostra a distribuição de forma um pouco mais detalhada. Um gráfico menos inclinado para a esquerda poderia ser criado garantindo que você selecione apenas dados dentro de um determinado intervalo:
Filtre seus dados para obter apenas os pássaros cuja massa corporal seja inferior a 60 e mostre 40 `bins`:
```python
filteredBirds = birds[(birds['MaxBodyMass'] > 1) & (birds['MaxBodyMass'] < 60)]
filteredBirds['MaxBodyMass'].plot(kind = 'hist',bins = 40,figsize = (12,12))
plt.show()
```
![histograma filtrado](../../../../3-Data-Visualization/10-visualization-distributions/images/dist3-wb.png)
✅ Experimente outros filtros e pontos de dados. Para ver a distribuição completa dos dados, remova o filtro `['MaxBodyMass']` para mostrar distribuições rotuladas.
O histograma oferece algumas melhorias de cor e rotulagem interessantes para experimentar também:
Crie um histograma 2D para comparar a relação entre duas distribuições. Vamos comparar `MaxBodyMass` vs. `MaxLength`. O Matplotlib oferece uma maneira integrada de mostrar convergência usando cores mais brilhantes:
```python
x = filteredBirds['MaxBodyMass']
y = filteredBirds['MaxLength']
fig, ax = plt.subplots(tight_layout=True)
hist = ax.hist2d(x, y)
```
Parece haver uma correlação esperada entre esses dois elementos ao longo de um eixo esperado, com um ponto particularmente forte de convergência:
![gráfico 2D](../../../../3-Data-Visualization/10-visualization-distributions/images/2D-wb.png)
Os histogramas funcionam bem por padrão para dados numéricos. E se você precisar ver distribuições de acordo com dados textuais?
## Explore o conjunto de dados para distribuições usando dados textuais
Este conjunto de dados também inclui boas informações sobre a categoria do pássaro, seu gênero, espécie e família, bem como seu status de conservação. Vamos explorar essas informações de conservação. Qual é a distribuição dos pássaros de acordo com seu status de conservação?
> ✅ No conjunto de dados, vários acrônimos são usados para descrever o status de conservação. Esses acrônimos vêm das [Categorias da Lista Vermelha da IUCN](https://www.iucnredlist.org/), uma organização que cataloga o status das espécies.
>
> - CR: Criticamente Ameaçado
> - EN: Ameaçado
> - EX: Extinto
> - LC: Pouco Preocupante
> - NT: Quase Ameaçado
> - VU: Vulnerável
Esses valores são baseados em texto, então você precisará fazer uma transformação para criar um histograma. Usando o dataframe filteredBirds, exiba seu status de conservação ao lado de sua Envergadura Mínima. O que você observa?
```python
x1 = filteredBirds.loc[filteredBirds.ConservationStatus=='EX', 'MinWingspan']
x2 = filteredBirds.loc[filteredBirds.ConservationStatus=='CR', 'MinWingspan']
x3 = filteredBirds.loc[filteredBirds.ConservationStatus=='EN', 'MinWingspan']
x4 = filteredBirds.loc[filteredBirds.ConservationStatus=='NT', 'MinWingspan']
x5 = filteredBirds.loc[filteredBirds.ConservationStatus=='VU', 'MinWingspan']
x6 = filteredBirds.loc[filteredBirds.ConservationStatus=='LC', 'MinWingspan']
kwargs = dict(alpha=0.5, bins=20)
plt.hist(x1, **kwargs, color='red', label='Extinct')
plt.hist(x2, **kwargs, color='orange', label='Critically Endangered')
plt.hist(x3, **kwargs, color='yellow', label='Endangered')
plt.hist(x4, **kwargs, color='green', label='Near Threatened')
plt.hist(x5, **kwargs, color='blue', label='Vulnerable')
plt.hist(x6, **kwargs, color='gray', label='Least Concern')
plt.gca().set(title='Conservation Status', ylabel='Min Wingspan')
plt.legend();
```
![envergadura e status de conservação](../../../../3-Data-Visualization/10-visualization-distributions/images/histogram-conservation-wb.png)
Não parece haver uma boa correlação entre envergadura mínima e status de conservação. Teste outros elementos do conjunto de dados usando este método. Você encontra alguma correlação?
## Gráficos de densidade
Você pode ter notado que os histogramas que analisamos até agora são 'escalonados' e não fluem suavemente em um arco. Para mostrar um gráfico de densidade mais suave, você pode tentar um gráfico de densidade.
Para trabalhar com gráficos de densidade, familiarize-se com uma nova biblioteca de plotagem, [Seaborn](https://seaborn.pydata.org/generated/seaborn.kdeplot.html).
Carregando o Seaborn, experimente um gráfico de densidade básico:
```python
import seaborn as sns
import matplotlib.pyplot as plt
sns.kdeplot(filteredBirds['MinWingspan'])
plt.show()
```
![Gráfico de densidade](../../../../3-Data-Visualization/10-visualization-distributions/images/density1.png)
Você pode ver como o gráfico reflete o anterior para os dados de Envergadura Mínima; é apenas um pouco mais suave. De acordo com a documentação do Seaborn, "Em relação a um histograma, o KDE pode produzir um gráfico menos confuso e mais interpretável, especialmente ao desenhar várias distribuições. Mas ele tem o potencial de introduzir distorções se a distribuição subjacente for limitada ou não suave. Como um histograma, a qualidade da representação também depende da seleção de bons parâmetros de suavização." [fonte](https://seaborn.pydata.org/generated/seaborn.kdeplot.html) Em outras palavras, outliers, como sempre, farão seus gráficos se comportarem mal.
Se você quisesse revisitar aquela linha irregular de MassaCorporalMax no segundo gráfico que construiu, poderia suavizá-la muito bem recriando-a usando este método:
```python
sns.kdeplot(filteredBirds['MaxBodyMass'])
plt.show()
```
![linha de massa corporal suavizada](../../../../3-Data-Visualization/10-visualization-distributions/images/density2.png)
Se você quisesse uma linha suave, mas não muito suave, edite o parâmetro `bw_adjust`:
```python
sns.kdeplot(filteredBirds['MaxBodyMass'], bw_adjust=.2)
plt.show()
```
![linha de massa corporal menos suave](../../../../3-Data-Visualization/10-visualization-distributions/images/density3.png)
✅ Leia sobre os parâmetros disponíveis para este tipo de gráfico e experimente!
Este tipo de gráfico oferece visualizações explicativas muito bonitas. Com algumas linhas de código, por exemplo, você pode mostrar a densidade de massa corporal máxima por ordem de pássaros:
```python
sns.kdeplot(
data=filteredBirds, x="MaxBodyMass", hue="Order",
fill=True, common_norm=False, palette="crest",
alpha=.5, linewidth=0,
)
```
![massa corporal por ordem](../../../../3-Data-Visualization/10-visualization-distributions/images/density4.png)
Você também pode mapear a densidade de várias variáveis em um único gráfico. Teste o ComprimentoMáximo e ComprimentoMínimo de um pássaro em comparação com seu status de conservação:
```python
sns.kdeplot(data=filteredBirds, x="MinLength", y="MaxLength", hue="ConservationStatus")
```
![múltiplas densidades, sobrepostas](../../../../3-Data-Visualization/10-visualization-distributions/images/multi.png)
Talvez valha a pena pesquisar se o agrupamento de pássaros 'Vulneráveis' de acordo com seus comprimentos é significativo ou não.
## 🚀 Desafio
Os histogramas são um tipo de gráfico mais sofisticado do que gráficos de dispersão, gráficos de barras ou gráficos de linhas básicos. Faça uma busca na internet para encontrar bons exemplos do uso de histogramas. Como eles são usados, o que demonstram e em quais campos ou áreas de estudo tendem a ser utilizados?
## [Quiz pós-aula](https://ff-quizzes.netlify.app/en/ds/quiz/19)
## Revisão e Autoestudo
Nesta lição, você usou o Matplotlib e começou a trabalhar com o Seaborn para mostrar gráficos mais sofisticados. Pesquise sobre `kdeplot` no Seaborn, uma "curva de densidade de probabilidade contínua em uma ou mais dimensões". Leia a [documentação](https://seaborn.pydata.org/generated/seaborn.kdeplot.html) para entender como funciona.
## Tarefa
[Coloque suas habilidades em prática](assignment.md)
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

@ -0,0 +1,16 @@
# Aplique suas habilidades
## Instruções
Até agora, você trabalhou com o conjunto de dados de aves de Minnesota para descobrir informações sobre quantidades de aves e densidade populacional. Pratique a aplicação dessas técnicas experimentando um conjunto de dados diferente, talvez obtido no [Kaggle](https://www.kaggle.com/). Construa um notebook para contar uma história sobre esse conjunto de dados e certifique-se de usar histogramas ao discuti-lo.
## Rubrica
Exemplar | Adequado | Precisa Melhorar
--- | --- | --- |
Um notebook é apresentado com anotações sobre este conjunto de dados, incluindo sua fonte, e utiliza pelo menos 5 histogramas para descobrir fatos sobre os dados. | Um notebook é apresentado com anotações incompletas ou erros. | Um notebook é apresentado sem anotações e inclui erros.
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

@ -0,0 +1,32 @@
{
"cells": [
{
"cell_type": "markdown",
"source": [
"# Distribuições de pássaros\n"
],
"metadata": {}
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n---\n\n**Aviso Legal**: \nEste documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.\n"
]
}
],
"metadata": {
"orig_nbformat": 4,
"language_info": {
"name": "python"
},
"coopTranslator": {
"original_hash": "e5272cbcbffd1ddcc09e44d3d8e7e8cd",
"translation_date": "2025-09-01T22:46:22+00:00",
"source_file": "3-Data-Visualization/10-visualization-distributions/notebook.ipynb",
"language_code": "br"
}
},
"nbformat": 4,
"nbformat_minor": 2
}

@ -0,0 +1,196 @@
# Visualizando Proporções
|![ Sketchnote por [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/11-Visualizing-Proportions.png)|
|:---:|
|Visualizando Proporções - _Sketchnote por [@nitya](https://twitter.com/nitya)_ |
Nesta lição, você usará um conjunto de dados com foco na natureza para visualizar proporções, como a quantidade de diferentes tipos de fungos presentes em um conjunto de dados sobre cogumelos. Vamos explorar esses fascinantes fungos usando um conjunto de dados obtido da Audubon, que lista detalhes sobre 23 espécies de cogumelos com lamelas das famílias Agaricus e Lepiota. Você experimentará visualizações interessantes como:
- Gráficos de pizza 🥧
- Gráficos de rosca 🍩
- Gráficos de waffle 🧇
> 💡 Um projeto muito interessante chamado [Charticulator](https://charticulator.com) da Microsoft Research oferece uma interface gratuita de arrastar e soltar para visualizações de dados. Em um de seus tutoriais, eles também utilizam este conjunto de dados de cogumelos! Assim, você pode explorar os dados e aprender a biblioteca ao mesmo tempo: [Tutorial do Charticulator](https://charticulator.com/tutorials/tutorial4.html).
## [Quiz pré-aula](https://ff-quizzes.netlify.app/en/ds/quiz/20)
## Conheça seus cogumelos 🍄
Cogumelos são muito interessantes. Vamos importar um conjunto de dados para estudá-los:
```python
import pandas as pd
import matplotlib.pyplot as plt
mushrooms = pd.read_csv('../../data/mushrooms.csv')
mushrooms.head()
```
Uma tabela é exibida com ótimos dados para análise:
| classe | formato do chapéu | superfície do chapéu | cor do chapéu | machucados | odor | fixação das lamelas | espaçamento das lamelas | tamanho das lamelas | cor das lamelas | formato do caule | raiz do caule | superfície acima do anel | superfície abaixo do anel | cor acima do anel | cor abaixo do anel | tipo de véu | cor do véu | número de anéis | tipo de anel | cor do esporo | população | habitat |
| --------- | ----------------- | -------------------- | ------------- | ---------- | ------- | ------------------- | ----------------------- | ------------------- | --------------- | --------------- | ------------ | ------------------------ | ------------------------ | ----------------- | ----------------- | ----------- | ---------- | -------------- | ------------ | ------------- | ---------- | ------- |
| Venenoso | Convexo | Liso | Marrom | Machucados | Pungente | Livre | Fechado | Estreito | Preto | Alargado | Igual | Liso | Liso | Branco | Branco | Parcial | Branco | Um | Pendente | Preto | Espalhado | Urbano |
| Comestível| Convexo | Liso | Amarelo | Machucados | Amêndoa | Livre | Fechado | Largo | Preto | Alargado | Club | Liso | Liso | Branco | Branco | Parcial | Branco | Um | Pendente | Marrom | Numeroso | Grama |
| Comestível| Sino | Liso | Branco | Machucados | Anis | Livre | Fechado | Largo | Marrom | Alargado | Club | Liso | Liso | Branco | Branco | Parcial | Branco | Um | Pendente | Marrom | Numeroso | Campos |
| Venenoso | Convexo | Escamoso | Branco | Machucados | Pungente | Livre | Fechado | Estreito | Marrom | Alargado | Igual | Liso | Liso | Branco | Branco | Parcial | Branco | Um | Pendente | Preto | Espalhado | Urbano |
De imediato, você percebe que todos os dados são textuais. Será necessário converter esses dados para utilizá-los em um gráfico. Na verdade, a maior parte dos dados está representada como um objeto:
```python
print(mushrooms.select_dtypes(["object"]).columns)
```
O resultado é:
```output
Index(['class', 'cap-shape', 'cap-surface', 'cap-color', 'bruises', 'odor',
'gill-attachment', 'gill-spacing', 'gill-size', 'gill-color',
'stalk-shape', 'stalk-root', 'stalk-surface-above-ring',
'stalk-surface-below-ring', 'stalk-color-above-ring',
'stalk-color-below-ring', 'veil-type', 'veil-color', 'ring-number',
'ring-type', 'spore-print-color', 'population', 'habitat'],
dtype='object')
```
Pegue esses dados e converta a coluna 'classe' para uma categoria:
```python
cols = mushrooms.select_dtypes(["object"]).columns
mushrooms[cols] = mushrooms[cols].astype('category')
```
```python
edibleclass=mushrooms.groupby(['class']).count()
edibleclass
```
Agora, se você imprimir os dados dos cogumelos, verá que eles foram agrupados em categorias de acordo com a classe venenoso/comestível:
| | formato do chapéu | superfície do chapéu | cor do chapéu | machucados | odor | fixação das lamelas | espaçamento das lamelas | tamanho das lamelas | cor das lamelas | formato do caule | ... | superfície abaixo do anel | cor acima do anel | cor abaixo do anel | tipo de véu | cor do véu | número de anéis | tipo de anel | cor do esporo | população | habitat |
| --------- | ----------------- | -------------------- | ------------- | ---------- | ---- | ------------------- | ----------------------- | ------------------- | --------------- | --------------- | --- | ------------------------ | ----------------- | ----------------- | ----------- | ---------- | -------------- | ------------ | ------------- | ---------- | ------- |
| classe | | | | | | | | | | | | | | | | | | | | | |
| Comestível| 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | ... | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 |
| Venenoso | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | ... | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 |
Se você seguir a ordem apresentada nesta tabela para criar os rótulos da categoria classe, poderá construir um gráfico de pizza:
## Pizza!
```python
labels=['Edible','Poisonous']
plt.pie(edibleclass['population'],labels=labels,autopct='%.1f %%')
plt.title('Edible?')
plt.show()
```
Voilá, um gráfico de pizza mostrando as proporções desses dados de acordo com essas duas classes de cogumelos. É muito importante acertar a ordem dos rótulos, especialmente aqui, então certifique-se de verificar a ordem com a qual o array de rótulos foi construído!
![gráfico de pizza](../../../../3-Data-Visualization/11-visualization-proportions/images/pie1-wb.png)
## Roscas!
Um gráfico de rosca é uma variação visualmente mais interessante do gráfico de pizza, com um buraco no meio. Vamos observar nossos dados usando este método.
Veja os diversos habitats onde os cogumelos crescem:
```python
habitat=mushrooms.groupby(['habitat']).count()
habitat
```
Aqui, você está agrupando seus dados por habitat. Existem 7 listados, então use esses como rótulos para seu gráfico de rosca:
```python
labels=['Grasses','Leaves','Meadows','Paths','Urban','Waste','Wood']
plt.pie(habitat['class'], labels=labels,
autopct='%1.1f%%', pctdistance=0.85)
center_circle = plt.Circle((0, 0), 0.40, fc='white')
fig = plt.gcf()
fig.gca().add_artist(center_circle)
plt.title('Mushroom Habitats')
plt.show()
```
![gráfico de rosca](../../../../3-Data-Visualization/11-visualization-proportions/images/donut-wb.png)
Este código desenha um gráfico e um círculo central, depois adiciona esse círculo ao gráfico. Edite a largura do círculo central alterando `0.40` para outro valor.
Gráficos de rosca podem ser ajustados de várias maneiras para alterar os rótulos. Os rótulos, em particular, podem ser destacados para melhorar a legibilidade. Saiba mais nos [documentos](https://matplotlib.org/stable/gallery/pie_and_polar_charts/pie_and_donut_labels.html?highlight=donut).
Agora que você sabe como agrupar seus dados e exibi-los como pizza ou rosca, pode explorar outros tipos de gráficos. Experimente um gráfico de waffle, que é apenas uma maneira diferente de explorar quantidades.
## Waffles!
Um gráfico do tipo 'waffle' é uma maneira diferente de visualizar quantidades como uma matriz 2D de quadrados. Experimente visualizar as diferentes quantidades de cores de chapéus de cogumelos neste conjunto de dados. Para isso, você precisa instalar uma biblioteca auxiliar chamada [PyWaffle](https://pypi.org/project/pywaffle/) e usar o Matplotlib:
```python
pip install pywaffle
```
Selecione um segmento de seus dados para agrupar:
```python
capcolor=mushrooms.groupby(['cap-color']).count()
capcolor
```
Crie um gráfico de waffle criando rótulos e agrupando seus dados:
```python
import pandas as pd
import matplotlib.pyplot as plt
from pywaffle import Waffle
data ={'color': ['brown', 'buff', 'cinnamon', 'green', 'pink', 'purple', 'red', 'white', 'yellow'],
'amount': capcolor['class']
}
df = pd.DataFrame(data)
fig = plt.figure(
FigureClass = Waffle,
rows = 100,
values = df.amount,
labels = list(df.color),
figsize = (30,30),
colors=["brown", "tan", "maroon", "green", "pink", "purple", "red", "whitesmoke", "yellow"],
)
```
Usando um gráfico de waffle, você pode ver claramente as proporções das cores dos chapéus neste conjunto de dados de cogumelos. Curiosamente, há muitos cogumelos com chapéus verdes!
![gráfico de waffle](../../../../3-Data-Visualization/11-visualization-proportions/images/waffle.png)
✅ O PyWaffle suporta ícones dentro dos gráficos que utilizam qualquer ícone disponível no [Font Awesome](https://fontawesome.com/). Faça alguns experimentos para criar um gráfico de waffle ainda mais interessante usando ícones em vez de quadrados.
Nesta lição, você aprendeu três maneiras de visualizar proporções. Primeiro, você precisa agrupar seus dados em categorias e depois decidir qual é a melhor maneira de exibir os dados - pizza, rosca ou waffle. Todas são deliciosas e proporcionam ao usuário uma visão instantânea de um conjunto de dados.
## 🚀 Desafio
Tente recriar esses gráficos saborosos no [Charticulator](https://charticulator.com).
## [Quiz pós-aula](https://ff-quizzes.netlify.app/en/ds/quiz/21)
## Revisão e Autoestudo
Às vezes, não é óbvio quando usar um gráfico de pizza, rosca ou waffle. Aqui estão alguns artigos para ler sobre este tópico:
https://www.beautiful.ai/blog/battle-of-the-charts-pie-chart-vs-donut-chart
https://medium.com/@hypsypops/pie-chart-vs-donut-chart-showdown-in-the-ring-5d24fd86a9ce
https://www.mit.edu/~mbarker/formula1/f1help/11-ch-c6.htm
https://medium.datadriveninvestor.com/data-visualization-done-the-right-way-with-tableau-waffle-chart-fdf2a19be402
Pesquise mais informações sobre essa decisão difícil.
## Tarefa
[Tente no Excel](assignment.md)
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

@ -0,0 +1,16 @@
# Experimente no Excel
## Instruções
Você sabia que é possível criar gráficos de rosca, pizza e waffle no Excel? Usando um conjunto de dados à sua escolha, crie esses três tipos de gráficos diretamente em uma planilha do Excel.
## Critérios de Avaliação
| Exemplar | Adequado | Precisa Melhorar |
| ------------------------------------------------------- | ------------------------------------------------- | ----------------------------------------------------- |
| Uma planilha do Excel é apresentada com todos os três gráficos | Uma planilha do Excel é apresentada com dois gráficos | Uma planilha do Excel é apresentada com apenas um gráfico |
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução.

@ -0,0 +1,30 @@
{
"cells": [
{
"cell_type": "markdown",
"source": [],
"metadata": {}
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n---\n\n**Aviso Legal**: \nEste documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.\n"
]
}
],
"metadata": {
"orig_nbformat": 4,
"language_info": {
"name": "python"
},
"coopTranslator": {
"original_hash": "397e9bbc0743761dbf72e5f16b7043e6",
"translation_date": "2025-09-01T22:25:17+00:00",
"source_file": "3-Data-Visualization/11-visualization-proportions/notebook.ipynb",
"language_code": "br"
}
},
"nbformat": 4,
"nbformat_minor": 2
}

@ -0,0 +1,180 @@
# Visualizando Relações: Tudo Sobre Mel 🍯
|![ Sketchnote por [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/12-Visualizing-Relationships.png)|
|:---:|
|Visualizando Relações - _Sketchnote por [@nitya](https://twitter.com/nitya)_ |
Continuando com o foco na natureza em nossa pesquisa, vamos descobrir visualizações interessantes para mostrar as relações entre vários tipos de mel, de acordo com um conjunto de dados derivado do [Departamento de Agricultura dos Estados Unidos](https://www.nass.usda.gov/About_NASS/index.php).
Este conjunto de dados, com cerca de 600 itens, exibe a produção de mel em muitos estados dos EUA. Por exemplo, você pode observar o número de colônias, rendimento por colônia, produção total, estoques, preço por libra e valor do mel produzido em um determinado estado de 1998 a 2012, com uma linha por ano para cada estado.
Será interessante visualizar a relação entre a produção anual de um estado e, por exemplo, o preço do mel nesse estado. Alternativamente, você poderia visualizar a relação entre o rendimento de mel por colônia nos estados. Este período cobre o devastador 'CCD' ou 'Colony Collapse Disorder' (Desordem do Colapso das Colônias), observado pela primeira vez em 2006 (http://npic.orst.edu/envir/ccd.html), tornando este um conjunto de dados significativo para estudo. 🐝
## [Quiz pré-aula](https://ff-quizzes.netlify.app/en/ds/quiz/22)
Nesta lição, você pode usar o Seaborn, que já utilizou antes, como uma boa biblioteca para visualizar relações entre variáveis. Particularmente interessante é o uso da função `relplot` do Seaborn, que permite criar gráficos de dispersão e gráficos de linha para visualizar rapidamente '[relações estatísticas](https://seaborn.pydata.org/tutorial/relational.html?highlight=relationships)', ajudando o cientista de dados a entender melhor como as variáveis se relacionam.
## Gráficos de Dispersão
Use um gráfico de dispersão para mostrar como o preço do mel evoluiu ano após ano, por estado. O Seaborn, usando `relplot`, agrupa convenientemente os dados dos estados e exibe pontos de dados para dados categóricos e numéricos.
Vamos começar importando os dados e o Seaborn:
```python
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
honey = pd.read_csv('../../data/honey.csv')
honey.head()
```
Você percebe que os dados de mel possuem várias colunas interessantes, incluindo ano e preço por libra. Vamos explorar esses dados, agrupados por estado dos EUA:
| estado | numcol | yieldpercol | totalprod | estoques | priceperlb | prodvalue | ano |
| ------ | ------ | ----------- | --------- | -------- | ---------- | --------- | --- |
| AL | 16000 | 71 | 1136000 | 159000 | 0.72 | 818000 | 1998 |
| AZ | 55000 | 60 | 3300000 | 1485000 | 0.64 | 2112000 | 1998 |
| AR | 53000 | 65 | 3445000 | 1688000 | 0.59 | 2033000 | 1998 |
| CA | 450000 | 83 | 37350000 | 12326000 | 0.62 | 23157000 | 1998 |
| CO | 27000 | 72 | 1944000 | 1594000 | 0.7 | 1361000 | 1998 |
Crie um gráfico de dispersão básico para mostrar a relação entre o preço por libra de mel e seu estado de origem nos EUA. Faça o eixo `y` alto o suficiente para exibir todos os estados:
```python
sns.relplot(x="priceperlb", y="state", data=honey, height=15, aspect=.5);
```
![scatterplot 1](../../../../translated_images/pt-BR/scatter1.5e1aa5fd6706c5d12b5e503ccb77f8a930f8620f539f524ddf56a16c039a5d2f.png)
Agora, mostre os mesmos dados com um esquema de cores de mel para mostrar como o preço evolui ao longo dos anos. Você pode fazer isso adicionando um parâmetro 'hue' para mostrar a mudança ano após ano:
> ✅ Saiba mais sobre as [paletas de cores que você pode usar no Seaborn](https://seaborn.pydata.org/tutorial/color_palettes.html) - experimente um belo esquema de cores em arco-íris!
```python
sns.relplot(x="priceperlb", y="state", hue="year", palette="YlOrBr", data=honey, height=15, aspect=.5);
```
![scatterplot 2](../../../../translated_images/pt-BR/scatter2.c0041a58621ca702990b001aa0b20cd68c1e1814417139af8a7211a2bed51c5f.png)
Com essa mudança de esquema de cores, você pode ver claramente uma forte progressão ao longo dos anos em termos de preço do mel por libra. De fato, se você observar um conjunto de amostra nos dados para verificar (escolha um estado, como o Arizona, por exemplo), pode ver um padrão de aumento de preço ano após ano, com poucas exceções:
| estado | numcol | yieldpercol | totalprod | estoques | priceperlb | prodvalue | ano |
| ------ | ------ | ----------- | --------- | -------- | ---------- | --------- | --- |
| AZ | 55000 | 60 | 3300000 | 1485000 | 0.64 | 2112000 | 1998 |
| AZ | 52000 | 62 | 3224000 | 1548000 | 0.62 | 1999000 | 1999 |
| AZ | 40000 | 59 | 2360000 | 1322000 | 0.73 | 1723000 | 2000 |
| AZ | 43000 | 59 | 2537000 | 1142000 | 0.72 | 1827000 | 2001 |
| AZ | 38000 | 63 | 2394000 | 1197000 | 1.08 | 2586000 | 2002 |
| AZ | 35000 | 72 | 2520000 | 983000 | 1.34 | 3377000 | 2003 |
| AZ | 32000 | 55 | 1760000 | 774000 | 1.11 | 1954000 | 2004 |
| AZ | 36000 | 50 | 1800000 | 720000 | 1.04 | 1872000 | 2005 |
| AZ | 30000 | 65 | 1950000 | 839000 | 0.91 | 1775000 | 2006 |
| AZ | 30000 | 64 | 1920000 | 902000 | 1.26 | 2419000 | 2007 |
| AZ | 25000 | 64 | 1600000 | 336000 | 1.26 | 2016000 | 2008 |
| AZ | 20000 | 52 | 1040000 | 562000 | 1.45 | 1508000 | 2009 |
| AZ | 24000 | 77 | 1848000 | 665000 | 1.52 | 2809000 | 2010 |
| AZ | 23000 | 53 | 1219000 | 427000 | 1.55 | 1889000 | 2011 |
| AZ | 22000 | 46 | 1012000 | 253000 | 1.79 | 1811000 | 2012 |
Outra maneira de visualizar essa progressão é usar tamanho, em vez de cor. Para usuários daltônicos, isso pode ser uma opção melhor. Edite sua visualização para mostrar o aumento do preço por meio do aumento na circunferência dos pontos:
```python
sns.relplot(x="priceperlb", y="state", size="year", data=honey, height=15, aspect=.5);
```
Você pode ver o tamanho dos pontos aumentando gradualmente.
![scatterplot 3](../../../../translated_images/pt-BR/scatter3.3c160a3d1dcb36b37900ebb4cf97f34036f28ae2b7b8e6062766c7c1dfc00853.png)
Isso é um caso simples de oferta e demanda? Devido a fatores como mudanças climáticas e colapso das colônias, há menos mel disponível para compra ano após ano, e, portanto, o preço aumenta?
Para descobrir uma correlação entre algumas das variáveis neste conjunto de dados, vamos explorar alguns gráficos de linha.
## Gráficos de Linha
Pergunta: Há um aumento claro no preço do mel por libra ano após ano? Você pode descobrir isso mais facilmente criando um único gráfico de linha:
```python
sns.relplot(x="year", y="priceperlb", kind="line", data=honey);
```
Resposta: Sim, com algumas exceções em torno do ano de 2003:
![line chart 1](../../../../translated_images/pt-BR/line1.f36eb465229a3b1fe385cdc93861aab3939de987d504b05de0b6cd567ef79f43.png)
✅ Como o Seaborn está agregando dados em torno de uma linha, ele exibe "as múltiplas medições em cada valor de x, plotando a média e o intervalo de confiança de 95% em torno da média". [Fonte](https://seaborn.pydata.org/tutorial/relational.html). Esse comportamento demorado pode ser desativado adicionando `ci=None`.
Pergunta: Bem, em 2003 também podemos ver um pico na oferta de mel? E se você observar a produção total ano após ano?
```python
sns.relplot(x="year", y="totalprod", kind="line", data=honey);
```
![line chart 2](../../../../translated_images/pt-BR/line2.a5b3493dc01058af6402e657aaa9ae1125fafb5e7d6630c777aa60f900a544e4.png)
Resposta: Não exatamente. Se você observar a produção total, parece que ela realmente aumentou naquele ano específico, embora, de forma geral, a quantidade de mel sendo produzida esteja em declínio durante esses anos.
Pergunta: Nesse caso, o que poderia ter causado o aumento no preço do mel em torno de 2003?
Para descobrir isso, você pode explorar uma grade de facetas.
## Grades de Facetas
Grades de facetas pegam um aspecto do seu conjunto de dados (neste caso, você pode escolher 'ano' para evitar produzir muitas facetas). O Seaborn pode então criar um gráfico para cada uma dessas facetas de suas coordenadas x e y escolhidas para facilitar a comparação visual. 2003 se destaca nesse tipo de comparação?
Crie uma grade de facetas continuando a usar `relplot`, conforme recomendado pela [documentação do Seaborn](https://seaborn.pydata.org/generated/seaborn.FacetGrid.html?highlight=facetgrid#seaborn.FacetGrid).
```python
sns.relplot(
data=honey,
x="yieldpercol", y="numcol",
col="year",
col_wrap=3,
kind="line"
)
```
Nesta visualização, você pode comparar o rendimento por colônia e o número de colônias ano após ano, lado a lado, com um wrap definido em 3 para as colunas:
![facet grid](../../../../translated_images/pt-BR/facet.6a34851dcd540050dcc0ead741be35075d776741668dd0e42f482c89b114c217.png)
Para este conjunto de dados, nada particularmente se destaca em relação ao número de colônias e seu rendimento, ano após ano e estado por estado. Existe uma maneira diferente de encontrar uma correlação entre essas duas variáveis?
## Gráficos de Linha Dupla
Experimente um gráfico de linha múltipla sobrepondo dois gráficos de linha um sobre o outro, usando o 'despine' do Seaborn para remover as bordas superior e direita, e usando `ax.twinx` [derivado do Matplotlib](https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.twinx.html). Twinx permite que um gráfico compartilhe o eixo x e exiba dois eixos y. Então, exiba o rendimento por colônia e o número de colônias, sobrepostos:
```python
fig, ax = plt.subplots(figsize=(12,6))
lineplot = sns.lineplot(x=honey['year'], y=honey['numcol'], data=honey,
label = 'Number of bee colonies', legend=False)
sns.despine()
plt.ylabel('# colonies')
plt.title('Honey Production Year over Year');
ax2 = ax.twinx()
lineplot2 = sns.lineplot(x=honey['year'], y=honey['yieldpercol'], ax=ax2, color="r",
label ='Yield per colony', legend=False)
sns.despine(right=False)
plt.ylabel('colony yield')
ax.figure.legend();
```
![superimposed plots](../../../../translated_images/pt-BR/dual-line.a4c28ce659603fab2c003f4df816733df2bf41d1facb7de27989ec9afbf01b33.png)
Embora nada salte aos olhos em torno do ano de 2003, isso nos permite terminar esta lição com uma nota um pouco mais feliz: embora o número de colônias esteja em declínio geral, ele está se estabilizando, mesmo que o rendimento por colônia esteja diminuindo.
Vai, abelhas, vai!
🐝❤️
## 🚀 Desafio
Nesta lição, você aprendeu um pouco mais sobre outros usos de gráficos de dispersão e grades de linha, incluindo grades de facetas. Desafie-se a criar uma grade de facetas usando um conjunto de dados diferente, talvez um que você tenha usado antes dessas lições. Observe quanto tempo elas levam para serem criadas e como você precisa ter cuidado com a quantidade de grades que deseja desenhar usando essas técnicas.
## [Quiz pós-aula](https://ff-quizzes.netlify.app/en/ds/quiz/23)
## Revisão & Autoestudo
Gráficos de linha podem ser simples ou bastante complexos. Leia um pouco na [documentação do Seaborn](https://seaborn.pydata.org/generated/seaborn.lineplot.html) sobre as várias maneiras de construí-los. Tente aprimorar os gráficos de linha que você construiu nesta lição com outros métodos listados na documentação.
## Tarefa
[Explore a colmeia](assignment.md)
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

@ -0,0 +1,16 @@
# Mergulhe na colmeia
## Instruções
Nesta lição, você começou a analisar um conjunto de dados sobre abelhas e sua produção de mel ao longo de um período que registrou perdas na população geral das colônias de abelhas. Explore mais profundamente este conjunto de dados e construa um notebook que conte a história da saúde da população de abelhas, estado por estado e ano por ano. Você descobre algo interessante sobre este conjunto de dados?
## Rubrica
| Exemplar | Adequado | Precisa de Melhorias |
| ------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------- | ---------------------------------------- |
| Um notebook é apresentado com uma história anotada com pelo menos três gráficos diferentes mostrando aspectos do conjunto de dados, estado por estado e ano por ano | O notebook carece de um desses elementos | O notebook carece de dois desses elementos |
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

@ -0,0 +1,32 @@
{
"cells": [
{
"cell_type": "markdown",
"source": [
"# Visualizando a Produção de Mel 🍯 🐝\n"
],
"metadata": {}
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n---\n\n**Aviso Legal**: \nEste documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.\n"
]
}
],
"metadata": {
"orig_nbformat": 4,
"language_info": {
"name": "python"
},
"coopTranslator": {
"original_hash": "0f988634b7192626d91cc33b4b6388c5",
"translation_date": "2025-09-01T22:39:49+00:00",
"source_file": "3-Data-Visualization/12-visualization-relationships/notebook.ipynb",
"language_code": "br"
}
},
"nbformat": 4,
"nbformat_minor": 2
}

@ -0,0 +1,173 @@
# Criando Visualizações Significativas
|![ Sketchnote por [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/13-MeaningfulViz.png)|
|:---:|
| Visualizações Significativas - _Sketchnote por [@nitya](https://twitter.com/nitya)_ |
> "Se você torturar os dados por tempo suficiente, eles confessarão qualquer coisa" -- [Ronald Coase](https://en.wikiquote.org/wiki/Ronald_Coase)
Uma das habilidades básicas de um cientista de dados é a capacidade de criar uma visualização de dados significativa que ajude a responder às perguntas que você possa ter. Antes de visualizar seus dados, é necessário garantir que eles foram limpos e preparados, como você fez em lições anteriores. Depois disso, você pode começar a decidir a melhor forma de apresentar os dados.
Nesta lição, você revisará:
1. Como escolher o tipo de gráfico certo
2. Como evitar gráficos enganosos
3. Como trabalhar com cores
4. Como estilizar seus gráficos para melhor legibilidade
5. Como criar soluções de gráficos animados ou em 3D
6. Como construir uma visualização criativa
## [Quiz Pré-Aula](https://ff-quizzes.netlify.app/en/ds/quiz/24)
## Escolha o tipo de gráfico certo
Em lições anteriores, você experimentou criar diversos tipos interessantes de visualizações de dados usando Matplotlib e Seaborn. Em geral, você pode selecionar o [tipo certo de gráfico](https://chartio.com/learn/charts/how-to-select-a-data-vizualization/) para a pergunta que está fazendo usando esta tabela:
| Você precisa: | Você deve usar: |
| -------------------------- | ------------------------------- |
| Mostrar tendências ao longo do tempo | Linha |
| Comparar categorias | Barra, Pizza |
| Comparar totais | Pizza, Barra Empilhada |
| Mostrar relações | Dispersão, Linha, Faceta, Linha Dupla |
| Mostrar distribuições | Dispersão, Histograma, Caixa |
| Mostrar proporções | Pizza, Donut, Waffle |
> ✅ Dependendo da composição dos seus dados, pode ser necessário convertê-los de texto para numérico para que um determinado gráfico os suporte.
## Evite enganos
Mesmo que um cientista de dados seja cuidadoso ao escolher o gráfico certo para os dados certos, existem muitas maneiras de exibir dados de forma a provar um ponto, muitas vezes às custas de prejudicar os próprios dados. Há muitos exemplos de gráficos e infográficos enganosos!
[![Como os Gráficos Enganam por Alberto Cairo](../../../../3-Data-Visualization/13-meaningful-visualizations/images/tornado.png)](https://www.youtube.com/watch?v=oX74Nge8Wkw "Como os gráficos enganam")
> 🎥 Clique na imagem acima para assistir a uma palestra sobre gráficos enganosos
Este gráfico inverte o eixo X para mostrar o oposto da verdade, com base na data:
![gráfico ruim 1](../../../../3-Data-Visualization/13-meaningful-visualizations/images/bad-chart-1.png)
[Este gráfico](https://media.firstcoastnews.com/assets/WTLV/images/170ae16f-4643-438f-b689-50d66ca6a8d8/170ae16f-4643-438f-b689-50d66ca6a8d8_1140x641.jpg) é ainda mais enganoso, pois o olhar é atraído para a direita, levando à conclusão de que, ao longo do tempo, os casos de COVID diminuíram nos vários condados. Na verdade, se você olhar atentamente para as datas, verá que elas foram reorganizadas para criar essa falsa tendência de queda.
![gráfico ruim 2](../../../../3-Data-Visualization/13-meaningful-visualizations/images/bad-chart-2.jpg)
Este exemplo notório usa cor E um eixo Y invertido para enganar: em vez de concluir que as mortes por armas aumentaram após a aprovação de uma legislação favorável às armas, o olhar é enganado para pensar que o oposto é verdadeiro:
![gráfico ruim 3](../../../../3-Data-Visualization/13-meaningful-visualizations/images/bad-chart-3.jpg)
Este gráfico estranho mostra como a proporção pode ser manipulada, de forma hilária:
![gráfico ruim 4](../../../../3-Data-Visualization/13-meaningful-visualizations/images/bad-chart-4.jpg)
Comparar o incomparável é mais um truque duvidoso. Existe um [site maravilhoso](https://tylervigen.com/spurious-correlations) dedicado a 'correlações espúrias', exibindo 'fatos' que correlacionam coisas como a taxa de divórcio no Maine e o consumo de margarina. Um grupo no Reddit também coleta os [usos ruins](https://www.reddit.com/r/dataisugly/top/?t=all) de dados.
É importante entender como o olhar pode ser facilmente enganado por gráficos enganosos. Mesmo que a intenção do cientista de dados seja boa, a escolha de um tipo ruim de gráfico, como um gráfico de pizza com muitas categorias, pode ser enganosa.
## Cor
Você viu no gráfico de 'violência armada na Flórida' acima como a cor pode fornecer uma camada adicional de significado aos gráficos, especialmente aqueles não projetados usando bibliotecas como Matplotlib e Seaborn, que vêm com várias bibliotecas e paletas de cores validadas. Se você estiver criando um gráfico manualmente, estude um pouco sobre [teoria das cores](https://colormatters.com/color-and-design/basic-color-theory).
> ✅ Esteja ciente, ao projetar gráficos, que acessibilidade é um aspecto importante da visualização. Alguns dos seus usuários podem ser daltônicos - seu gráfico é exibido bem para usuários com deficiências visuais?
Tenha cuidado ao escolher cores para seu gráfico, pois elas podem transmitir significados que você não pretende. As 'senhoras de rosa' no gráfico de 'altura' acima transmitem um significado distintamente 'feminino' que aumenta a estranheza do próprio gráfico.
Embora o [significado das cores](https://colormatters.com/color-symbolism/the-meanings-of-colors) possa variar em diferentes partes do mundo e tende a mudar de acordo com sua tonalidade, geralmente os significados incluem:
| Cor | Significado |
| ------ | ------------------- |
| vermelho | poder |
| azul | confiança, lealdade |
| amarelo | felicidade, cautela |
| verde | ecologia, sorte, inveja |
| roxo | felicidade |
| laranja | vivacidade |
Se você for encarregado de criar um gráfico com cores personalizadas, certifique-se de que seus gráficos sejam acessíveis e que a cor escolhida coincida com o significado que você está tentando transmitir.
## Estilizando seus gráficos para legibilidade
Gráficos não são significativos se não forem legíveis! Reserve um momento para considerar o estilo da largura e altura do seu gráfico para que ele se ajuste bem aos seus dados. Se uma variável (como todos os 50 estados) precisar ser exibida, mostre-os verticalmente no eixo Y, se possível, para evitar um gráfico com rolagem horizontal.
Rotule seus eixos, forneça uma legenda, se necessário, e ofereça tooltips para melhor compreensão dos dados.
Se seus dados forem textuais e extensos no eixo X, você pode inclinar o texto para melhorar a legibilidade. [Matplotlib](https://matplotlib.org/stable/tutorials/toolkits/mplot3d.html) oferece gráficos em 3D, se seus dados suportarem isso. Visualizações de dados sofisticadas podem ser produzidas usando `mpl_toolkits.mplot3d`.
![gráficos 3D](../../../../3-Data-Visualization/13-meaningful-visualizations/images/3d.png)
## Exibição de gráficos animados e em 3D
Algumas das melhores visualizações de dados hoje em dia são animadas. Shirley Wu tem exemplos incríveis feitos com D3, como '[film flowers](http://bl.ocks.org/sxywu/raw/d612c6c653fb8b4d7ff3d422be164a5d/)', onde cada flor é uma visualização de um filme. Outro exemplo para o Guardian é 'bussed out', uma experiência interativa que combina visualizações com Greensock e D3, além de um formato de artigo com narrativa para mostrar como NYC lida com seu problema de moradores de rua, enviando pessoas para fora da cidade.
![busing](../../../../3-Data-Visualization/13-meaningful-visualizations/images/busing.png)
> "Bussed Out: Como os EUA Movem seus Moradores de Rua" do [Guardian](https://www.theguardian.com/us-news/ng-interactive/2017/dec/20/bussed-out-america-moves-homeless-people-country-study). Visualizações por Nadieh Bremer & Shirley Wu
Embora esta lição não seja suficiente para ensinar essas poderosas bibliotecas de visualização em profundidade, experimente usar D3 em um aplicativo Vue.js para exibir uma visualização do livro "Ligações Perigosas" como uma rede social animada.
> "Les Liaisons Dangereuses" é um romance epistolar, ou seja, um romance apresentado como uma série de cartas. Escrito em 1782 por Choderlos de Laclos, conta a história das manobras sociais cruéis e moralmente falidas de dois protagonistas rivais da aristocracia francesa do final do século XVIII, o Visconde de Valmont e a Marquesa de Merteuil. Ambos encontram seu fim no final, mas não sem causar muitos danos sociais. O romance se desenrola como uma série de cartas escritas para várias pessoas em seus círculos, tramando vingança ou simplesmente para causar problemas. Crie uma visualização dessas cartas para descobrir os principais personagens da narrativa, visualmente.
Você completará um aplicativo web que exibirá uma visão animada dessa rede social. Ele usa uma biblioteca criada para criar uma [visualização de uma rede](https://github.com/emiliorizzo/vue-d3-network) usando Vue.js e D3. Quando o aplicativo estiver em execução, você pode mover os nós na tela para reorganizar os dados.
![liaisons](../../../../3-Data-Visualization/13-meaningful-visualizations/images/liaisons.png)
## Projeto: Crie um gráfico para mostrar uma rede usando D3.js
> Esta pasta de lição inclui uma pasta `solution` onde você pode encontrar o projeto concluído, para sua referência.
1. Siga as instruções no arquivo README.md na raiz da pasta inicial. Certifique-se de que você tenha NPM e Node.js instalados em sua máquina antes de instalar as dependências do projeto.
2. Abra a pasta `starter/src`. Você encontrará uma pasta `assets` onde há um arquivo .json com todas as cartas do romance, numeradas, com uma anotação 'to' e 'from'.
3. Complete o código em `components/Nodes.vue` para habilitar a visualização. Procure o método chamado `createLinks()` e adicione o seguinte loop aninhado.
Percorra o objeto .json para capturar os dados 'to' e 'from' das cartas e construa o objeto `links` para que a biblioteca de visualização possa consumi-lo:
```javascript
//loop through letters
let f = 0;
let t = 0;
for (var i = 0; i < letters.length; i++) {
for (var j = 0; j < characters.length; j++) {
if (characters[j] == letters[i].from) {
f = j;
}
if (characters[j] == letters[i].to) {
t = j;
}
}
this.links.push({ sid: f, tid: t });
}
```
Execute seu aplicativo a partir do terminal (npm run serve) e aproveite a visualização!
## 🚀 Desafio
Faça um tour pela internet para descobrir visualizações enganosas. Como o autor engana o usuário, e isso é intencional? Tente corrigir as visualizações para mostrar como elas deveriam ser.
## [Quiz Pós-Aula](https://ff-quizzes.netlify.app/en/ds/quiz/25)
## Revisão & Autoestudo
Aqui estão alguns artigos para ler sobre visualizações de dados enganosas:
https://gizmodo.com/how-to-lie-with-data-visualization-1563576606
http://ixd.prattsi.org/2017/12/visual-lies-usability-in-deceptive-data-visualizations/
Confira estas visualizações interessantes de ativos e artefatos históricos:
https://handbook.pubpub.org/
Leia este artigo sobre como animações podem melhorar suas visualizações:
https://medium.com/@EvanSinar/use-animation-to-supercharge-data-visualization-cd905a882ad4
## Tarefa
[Crie sua própria visualização personalizada](assignment.md)
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

@ -0,0 +1,16 @@
# Crie sua própria visualização personalizada
## Instruções
Usando o exemplo de código neste projeto para criar uma rede social, modele dados das suas próprias interações sociais. Você pode mapear seu uso de redes sociais ou criar um diagrama dos membros da sua família. Desenvolva um aplicativo web interessante que mostre uma visualização única de uma rede social.
## Critérios de Avaliação
Exemplar | Adequado | Precisa de Melhorias
--- | --- | --- |
Um repositório no GitHub é apresentado com código que funciona corretamente (tente implantá-lo como um aplicativo web estático) e possui um README anotado explicando o projeto | O repositório não funciona corretamente ou não está bem documentado | O repositório não funciona corretamente e não está bem documentado
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

@ -0,0 +1,31 @@
# Projeto de visualização de dados Dangerous Liaisons
Para começar, certifique-se de que você tem o NPM e o Node instalados e funcionando na sua máquina. Instale as dependências (npm install) e, em seguida, execute o projeto localmente (npm run serve):
## Configuração do projeto
```
npm install
```
### Compila e recarrega automaticamente para desenvolvimento
```
npm run serve
```
### Compila e minimiza para produção
```
npm run build
```
### Verifica e corrige arquivos
```
npm run lint
```
### Personalizar configuração
Veja [Referência de Configuração](https://cli.vuejs.org/config/).
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

@ -0,0 +1,31 @@
# Projeto de visualização de dados Dangerous Liaisons
Para começar, você precisa garantir que o NPM e o Node estejam funcionando na sua máquina. Instale as dependências (npm install) e, em seguida, execute o projeto localmente (npm run serve):
## Configuração do projeto
```
npm install
```
### Compila e recarrega automaticamente para desenvolvimento
```
npm run serve
```
### Compila e minimiza para produção
```
npm run build
```
### Verifica e corrige arquivos
```
npm run lint
```
### Personalizar configuração
Veja [Referência de Configuração](https://cli.vuejs.org/config/).
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional feita por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

@ -0,0 +1,222 @@
# Visualizando Quantidades
|![ Sketchnote por [(@sketchthedocs)](https://sketchthedocs.dev) ](https://github.com/microsoft/Data-Science-For-Beginners/blob/main/sketchnotes/09-Visualizing-Quantities.png)|
|:---:|
| Visualizando Quantidades - _Sketchnote por [@nitya](https://twitter.com/nitya)_ |
Nesta lição, você explorará como usar algumas das muitas bibliotecas de pacotes disponíveis no R para aprender a criar visualizações interessantes em torno do conceito de quantidade. Usando um conjunto de dados limpo sobre os pássaros de Minnesota, você pode aprender muitos fatos interessantes sobre a vida selvagem local.
## [Quiz pré-aula](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/16)
## Observe a envergadura com ggplot2
Uma excelente biblioteca para criar gráficos e diagramas simples e sofisticados de vários tipos é o [ggplot2](https://cran.r-project.org/web/packages/ggplot2/index.html). Em termos gerais, o processo de plotar dados usando essas bibliotecas inclui identificar as partes do seu dataframe que você deseja analisar, realizar as transformações necessárias nesses dados, atribuir valores aos eixos x e y, decidir o tipo de gráfico a ser exibido e, por fim, exibir o gráfico.
O `ggplot2` é um sistema para criar gráficos de forma declarativa, baseado na Gramática dos Gráficos. A [Gramática dos Gráficos](https://en.wikipedia.org/wiki/Ggplot2) é um esquema geral para visualização de dados que divide os gráficos em componentes semânticos, como escalas e camadas. Em outras palavras, a facilidade de criar gráficos para dados univariados ou multivariados com pouco código torna o `ggplot2` o pacote mais popular para visualizações no R. O usuário informa ao `ggplot2` como mapear as variáveis para os elementos visuais, os elementos gráficos a serem usados, e o `ggplot2` cuida do restante.
> ✅ Gráfico = Dados + Estética + Geometria
> - Dados referem-se ao conjunto de dados
> - Estética indica as variáveis a serem estudadas (variáveis x e y)
> - Geometria refere-se ao tipo de gráfico (gráfico de linha, gráfico de barras, etc.)
Escolha a melhor geometria (tipo de gráfico) de acordo com seus dados e a história que você deseja contar por meio do gráfico.
> - Para analisar tendências: linha, coluna
> - Para comparar valores: barra, coluna, pizza, dispersão
> - Para mostrar como as partes se relacionam com o todo: pizza
> - Para mostrar a distribuição dos dados: dispersão, barra
> - Para mostrar relações entre valores: linha, dispersão, bolha
✅ Você também pode conferir este [cheatsheet](https://nyu-cdsc.github.io/learningr/assets/data-visualization-2.1.pdf) descritivo para ggplot2.
## Construa um gráfico de linha sobre os valores de envergadura de pássaros
Abra o console do R e importe o conjunto de dados.
> Nota: O conjunto de dados está armazenado na raiz deste repositório na pasta `/data`.
Vamos importar o conjunto de dados e observar as primeiras linhas (topo) dos dados.
```r
birds <- read.csv("../../data/birds.csv",fileEncoding="UTF-8-BOM")
head(birds)
```
O início dos dados contém uma mistura de texto e números:
| | Nome | NomeCientífico | Categoria | Ordem | Família | Gênero | StatusConservação | ComprimentoMín | ComprimentoMáx | MassaCorporalMín | MassaCorporalMáx | EnvergaduraMín | EnvergaduraMáx |
| ---: | :--------------------------- | :--------------------- | :-------------------- | :----------- | :------- | :---------- | :---------------- | --------------: | --------------: | ----------------: | ----------------: | --------------: | --------------: |
| 0 | Pato-assobiador-de-barriga-preta | Dendrocygna autumnalis | Patos/Gansos/AvesAquáticas | Anseriformes | Anatidae | Dendrocygna | LC | 47 | 56 | 652 | 1020 | 76 | 94 |
| 1 | Pato-assobiador-fulvo | Dendrocygna bicolor | Patos/Gansos/AvesAquáticas | Anseriformes | Anatidae | Dendrocygna | LC | 45 | 53 | 712 | 1050 | 85 | 93 |
| 2 | Ganso-das-neves | Anser caerulescens | Patos/Gansos/AvesAquáticas | Anseriformes | Anatidae | Anser | LC | 64 | 79 | 2050 | 4050 | 135 | 165 |
| 3 | Ganso-de-Ross | Anser rossii | Patos/Gansos/AvesAquáticas | Anseriformes | Anatidae | Anser | LC | 57.3 | 64 | 1066 | 1567 | 113 | 116 |
| 4 | Ganso-de-testa-branca-maior | Anser albifrons | Patos/Gansos/AvesAquáticas | Anseriformes | Anatidae | Anser | LC | 64 | 81 | 1930 | 3310 | 130 | 165 |
Vamos começar plotando alguns dos dados numéricos usando um gráfico de linha básico. Suponha que você queira visualizar a envergadura máxima desses pássaros interessantes.
```r
install.packages("ggplot2")
library("ggplot2")
ggplot(data=birds, aes(x=Name, y=MaxWingspan,group=1)) +
geom_line()
```
Aqui, você instala o pacote `ggplot2` e o importa para o ambiente de trabalho usando o comando `library("ggplot2")`. Para plotar qualquer gráfico no ggplot, a função `ggplot()` é usada, e você especifica o conjunto de dados, as variáveis x e y como atributos. Neste caso, usamos a função `geom_line()` porque queremos plotar um gráfico de linha.
![MaxWingspan-lineplot](../../../../../translated_images/pt-BR/MaxWingspan-lineplot.b12169f99d26fdd263f291008dfd73c18a4ba8f3d32b1fda3d74af51a0a28616.png)
O que você percebe imediatamente? Parece haver pelo menos um outlier - que envergadura impressionante! Uma envergadura de mais de 2000 centímetros equivale a mais de 20 metros - será que há Pterodáctilos em Minnesota? Vamos investigar.
Embora você possa fazer uma classificação rápida no Excel para encontrar esses outliers, que provavelmente são erros de digitação, continue o processo de visualização trabalhando diretamente no gráfico.
Adicione rótulos ao eixo x para mostrar quais tipos de pássaros estão em questão:
```r
ggplot(data=birds, aes(x=Name, y=MaxWingspan,group=1)) +
geom_line() +
theme(axis.text.x = element_text(angle = 45, hjust=1))+
xlab("Birds") +
ylab("Wingspan (CM)") +
ggtitle("Max Wingspan in Centimeters")
```
Especificamos o ângulo no `theme` e definimos os rótulos dos eixos x e y em `xlab()` e `ylab()`, respectivamente. O `ggtitle()` dá um nome ao gráfico.
![MaxWingspan-lineplot-improved](../../../../../translated_images/pt-BR/MaxWingspan-lineplot-improved.04b73b4d5a59552a6bc7590678899718e1f065abe9eada9ebb4148939b622fd4.png)
Mesmo com a rotação dos rótulos ajustada para 45 graus, ainda há muitos para ler. Vamos tentar uma estratégia diferente: rotular apenas os outliers e definir os rótulos dentro do gráfico. Você pode usar um gráfico de dispersão para criar mais espaço para os rótulos:
```r
ggplot(data=birds, aes(x=Name, y=MaxWingspan,group=1)) +
geom_point() +
geom_text(aes(label=ifelse(MaxWingspan>500,as.character(Name),'')),hjust=0,vjust=0) +
theme(axis.title.x=element_blank(), axis.text.x=element_blank(), axis.ticks.x=element_blank())
ylab("Wingspan (CM)") +
ggtitle("Max Wingspan in Centimeters") +
```
O que está acontecendo aqui? Você usou a função `geom_point()` para plotar pontos de dispersão. Com isso, você adicionou rótulos para os pássaros cuja `MaxWingspan > 500` e também ocultou os rótulos no eixo x para desobstruir o gráfico.
O que você descobre?
![MaxWingspan-scatterplot](../../../../../translated_images/pt-BR/MaxWingspan-scatterplot.60dc9e0e19d32700283558f253841fdab5104abb62bc96f7d97f9c0ee857fa8b.png)
## Filtre seus dados
Tanto a Águia-careca quanto o Falcão-das-pradarias, embora provavelmente sejam pássaros muito grandes, parecem estar rotulados incorretamente, com um zero extra adicionado à sua envergadura máxima. É improvável que você encontre uma Águia-careca com uma envergadura de 25 metros, mas, se encontrar, por favor, nos avise! Vamos criar um novo dataframe sem esses dois outliers:
```r
birds_filtered <- subset(birds, MaxWingspan < 500)
ggplot(data=birds_filtered, aes(x=Name, y=MaxWingspan,group=1)) +
geom_point() +
ylab("Wingspan (CM)") +
xlab("Birds") +
ggtitle("Max Wingspan in Centimeters") +
geom_text(aes(label=ifelse(MaxWingspan>500,as.character(Name),'')),hjust=0,vjust=0) +
theme(axis.text.x=element_blank(), axis.ticks.x=element_blank())
```
Criamos um novo dataframe `birds_filtered` e, em seguida, plotamos um gráfico de dispersão. Ao filtrar os outliers, seus dados agora estão mais coesos e compreensíveis.
![MaxWingspan-scatterplot-improved](../../../../../translated_images/pt-BR/MaxWingspan-scatterplot-improved.7d0af81658c65f3e75b8fedeb2335399e31108257e48db15d875ece608272051.png)
Agora que temos um conjunto de dados mais limpo, pelo menos em termos de envergadura, vamos descobrir mais sobre esses pássaros.
Embora gráficos de linha e dispersão possam exibir informações sobre valores de dados e suas distribuições, queremos pensar nos valores inerentes a este conjunto de dados. Você poderia criar visualizações para responder às seguintes perguntas sobre quantidade:
> Quantas categorias de pássaros existem e quais são seus números?
> Quantos pássaros estão extintos, ameaçados, raros ou comuns?
> Quantos existem dos vários gêneros e ordens na terminologia de Lineu?
## Explore gráficos de barras
Gráficos de barras são práticos quando você precisa mostrar agrupamentos de dados. Vamos explorar as categorias de pássaros que existem neste conjunto de dados para ver qual é a mais comum em número.
Vamos criar um gráfico de barras com os dados filtrados.
```r
install.packages("dplyr")
install.packages("tidyverse")
library(lubridate)
library(scales)
library(dplyr)
library(ggplot2)
library(tidyverse)
birds_filtered %>% group_by(Category) %>%
summarise(n=n(),
MinLength = mean(MinLength),
MaxLength = mean(MaxLength),
MinBodyMass = mean(MinBodyMass),
MaxBodyMass = mean(MaxBodyMass),
MinWingspan=mean(MinWingspan),
MaxWingspan=mean(MaxWingspan)) %>%
gather("key", "value", - c(Category, n)) %>%
ggplot(aes(x = Category, y = value, group = key, fill = key)) +
geom_bar(stat = "identity") +
scale_fill_manual(values = c("#D62728", "#FF7F0E", "#8C564B","#2CA02C", "#1F77B4", "#9467BD")) +
xlab("Category")+ggtitle("Birds of Minnesota")
```
No trecho a seguir, instalamos os pacotes [dplyr](https://www.rdocumentation.org/packages/dplyr/versions/0.7.8) e [lubridate](https://www.rdocumentation.org/packages/lubridate/versions/1.8.0) para ajudar a manipular e agrupar dados a fim de plotar um gráfico de barras empilhadas. Primeiro, agrupamos os dados pela `Categoria` do pássaro e, em seguida, resumimos as colunas `MinLength`, `MaxLength`, `MinBodyMass`, `MaxBodyMass`, `MinWingspan`, `MaxWingspan`. Depois, plotamos o gráfico de barras usando o pacote `ggplot2`, especificando as cores para as diferentes categorias e os rótulos.
![Stacked bar chart](../../../../../translated_images/pt-BR/stacked-bar-chart.0c92264e89da7b391a7490224d1e7059a020e8b74dcd354414aeac78871c02f1.png)
Este gráfico de barras, no entanto, é ilegível porque há muitos dados não agrupados. Você precisa selecionar apenas os dados que deseja plotar, então vamos observar o comprimento dos pássaros com base em sua categoria.
Filtre seus dados para incluir apenas a categoria do pássaro.
Como há muitas categorias, você pode exibir este gráfico verticalmente e ajustar sua altura para acomodar todos os dados:
```r
birds_count<-dplyr::count(birds_filtered, Category, sort = TRUE)
birds_count$Category <- factor(birds_count$Category, levels = birds_count$Category)
ggplot(birds_count,aes(Category,n))+geom_bar(stat="identity")+coord_flip()
```
Primeiro, contamos os valores únicos na coluna `Categoria` e, em seguida, os classificamos em um novo dataframe `birds_count`. Esses dados classificados são então organizados no mesmo nível para que sejam plotados de forma ordenada. Usando o `ggplot2`, você então plota os dados em um gráfico de barras. O `coord_flip()` plota barras horizontais.
![category-length](../../../../../translated_images/pt-BR/category-length.7e34c296690e85d64f7e4d25a56077442683eca96c4f5b4eae120a64c0755636.png)
Este gráfico de barras mostra uma boa visão do número de pássaros em cada categoria. Em um piscar de olhos, você vê que o maior número de pássaros nesta região está na categoria Patos/Gansos/AvesAquáticas. Minnesota é a "terra dos 10.000 lagos", então isso não é surpreendente!
✅ Experimente outras contagens neste conjunto de dados. Algo te surpreende?
## Comparando dados
Você pode tentar diferentes comparações de dados agrupados criando novos eixos. Experimente uma comparação do ComprimentoMáximo de um pássaro, com base em sua categoria:
```r
birds_grouped <- birds_filtered %>%
group_by(Category) %>%
summarise(
MaxLength = max(MaxLength, na.rm = T),
MinLength = max(MinLength, na.rm = T)
) %>%
arrange(Category)
ggplot(birds_grouped,aes(Category,MaxLength))+geom_bar(stat="identity")+coord_flip()
```
Agrupamos os dados `birds_filtered` por `Categoria` e, em seguida, plotamos um gráfico de barras.
![comparing data](../../../../../translated_images/pt-BR/comparingdata.f486a450d61c7ca5416f27f3f55a6a4465d00df3be5e6d33936e9b07b95e2fdd.png)
Nada surpreendente aqui: beija-flores têm o menor ComprimentoMáximo em comparação com Pelicanos ou Gansos. É bom quando os dados fazem sentido lógico!
Você pode criar visualizações mais interessantes de gráficos de barras sobrepondo dados. Vamos sobrepor os valores de ComprimentoMínimo e ComprimentoMáximo em uma determinada categoria de pássaro:
```r
ggplot(data=birds_grouped, aes(x=Category)) +
geom_bar(aes(y=MaxLength), stat="identity", position ="identity", fill='blue') +
geom_bar(aes(y=MinLength), stat="identity", position="identity", fill='orange')+
coord_flip()
```
![super-imposed values](../../../../../translated_images/pt-BR/superimposed-values.5363f0705a1da4167625a373a1064331ea3cb7a06a297297d0734fcc9b3819a0.png)
## 🚀 Desafio
Este conjunto de dados de pássaros oferece uma riqueza de informações sobre diferentes tipos de pássaros dentro de um ecossistema específico. Pesquise na internet e veja se consegue encontrar outros conjuntos de dados relacionados a pássaros. Pratique a construção de gráficos e diagramas sobre esses pássaros para descobrir fatos que você não conhecia.
## [Quiz pós-aula](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/17)
## Revisão e Autoestudo
Esta primeira lição forneceu algumas informações sobre como usar o `ggplot2` para visualizar quantidades. Pesquise outras maneiras de trabalhar com conjuntos de dados para visualização. Pesquise e procure por conjuntos de dados que você possa visualizar usando outros pacotes como [Lattice](https://stat.ethz.ch/R-manual/R-devel/library/lattice/html/Lattice.html) e [Plotly](https://github.com/plotly/plotly.R#readme).
## Tarefa
[Linhas, Dispersões e Barras](assignment.md)
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

@ -0,0 +1,16 @@
# Linhas, Dispersões e Barras
## Instruções
Nesta lição, você trabalhou com gráficos de linha, gráficos de dispersão e gráficos de barras para mostrar fatos interessantes sobre este conjunto de dados. Nesta tarefa, aprofunde-se no conjunto de dados para descobrir um fato sobre um tipo específico de pássaro. Por exemplo, crie um script visualizando todos os dados interessantes que você puder encontrar sobre Gansos-da-neve. Use os três tipos de gráficos mencionados acima para contar uma história em seu notebook.
## Rubrica
Exemplar | Adequado | Precisa Melhorar
--- | --- | -- |
Um script é apresentado com boas anotações, narrativa sólida e gráficos atraentes | O script está faltando um desses elementos | O script está faltando dois desses elementos
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

@ -0,0 +1,175 @@
# Visualizando Distribuições
|![ Sketchnote por [(@sketchthedocs)](https://sketchthedocs.dev) ](https://github.com/microsoft/Data-Science-For-Beginners/blob/main/sketchnotes/10-Visualizing-Distributions.png)|
|:---:|
| Visualizando Distribuições - _Sketchnote por [@nitya](https://twitter.com/nitya)_ |
Na lição anterior, você aprendeu alguns fatos interessantes sobre um conjunto de dados sobre os pássaros de Minnesota. Você encontrou alguns dados errôneos ao visualizar outliers e analisou as diferenças entre categorias de pássaros com base no comprimento máximo.
## [Quiz pré-aula](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/18)
## Explore o conjunto de dados dos pássaros
Outra maneira de explorar os dados é analisando sua distribuição, ou como os dados estão organizados ao longo de um eixo. Talvez, por exemplo, você queira aprender sobre a distribuição geral, neste conjunto de dados, da envergadura máxima ou da massa corporal máxima dos pássaros de Minnesota.
Vamos descobrir alguns fatos sobre as distribuições de dados neste conjunto de dados. No seu console R, importe `ggplot2` e o banco de dados. Remova os outliers do banco de dados, assim como no tópico anterior.
```r
library(ggplot2)
birds <- read.csv("../../data/birds.csv",fileEncoding="UTF-8-BOM")
birds_filtered <- subset(birds, MaxWingspan < 500)
head(birds_filtered)
```
| | Nome | NomeCientífico | Categoria | Ordem | Família | Gênero | StatusConservação | MinComprimento | MaxComprimento | MinMassaCorporal | MaxMassaCorporal | MinEnvergadura | MaxEnvergadura |
| ---: | :-------------------------- | :--------------------- | :-------------------- | :----------- | :------- | :---------- | :----------------- | --------------: | --------------: | ----------------: | ----------------: | --------------: | --------------: |
| 0 | Pato-silvo-de-barriga-preta | Dendrocygna autumnalis | Patos/Gansos/Aquáticos| Anseriformes | Anatidae | Dendrocygna | LC | 47 | 56 | 652 | 1020 | 76 | 94 |
| 1 | Pato-silvo-fulvo | Dendrocygna bicolor | Patos/Gansos/Aquáticos| Anseriformes | Anatidae | Dendrocygna | LC | 45 | 53 | 712 | 1050 | 85 | 93 |
| 2 | Ganso-da-neve | Anser caerulescens | Patos/Gansos/Aquáticos| Anseriformes | Anatidae | Anser | LC | 64 | 79 | 2050 | 4050 | 135 | 165 |
| 3 | Ganso-de-Ross | Anser rossii | Patos/Gansos/Aquáticos| Anseriformes | Anatidae | Anser | LC | 57.3 | 64 | 1066 | 1567 | 113 | 116 |
| 4 | Ganso-de-testa-branca-maior | Anser albifrons | Patos/Gansos/Aquáticos| Anseriformes | Anatidae | Anser | LC | 64 | 81 | 1930 | 3310 | 130 | 165 |
Em geral, você pode rapidamente observar como os dados estão distribuídos usando um gráfico de dispersão, como fizemos na lição anterior:
```r
ggplot(data=birds_filtered, aes(x=Order, y=MaxLength,group=1)) +
geom_point() +
ggtitle("Max Length per order") + coord_flip()
```
![comprimento máximo por ordem](../../../../../translated_images/pt-BR/max-length-per-order.e5b283d952c78c12b091307c5d3cf67132dad6fefe80a073353b9dc5c2bd3eb8.png)
Isso fornece uma visão geral da distribuição do comprimento corporal por ordem de pássaros, mas não é a maneira ideal de exibir distribuições reais. Essa tarefa geralmente é realizada criando um histograma.
## Trabalhando com histogramas
O `ggplot2` oferece ótimas maneiras de visualizar a distribuição de dados usando histogramas. Esse tipo de gráfico é semelhante a um gráfico de barras, onde a distribuição pode ser vista pelo aumento e diminuição das barras. Para construir um histograma, você precisa de dados numéricos. Para criar um histograma, você pode plotar um gráfico definindo o tipo como 'hist' para histograma. Este gráfico mostra a distribuição de MaxBodyMass para o intervalo de dados numéricos do conjunto de dados. Dividindo o conjunto de dados em pequenos intervalos, ele pode exibir a distribuição dos valores dos dados:
```r
ggplot(data = birds_filtered, aes(x = MaxBodyMass)) +
geom_histogram(bins=10)+ylab('Frequency')
```
![distribuição em todo o conjunto de dados](../../../../../translated_images/pt-BR/distribution-over-the-entire-dataset.d22afd3fa96be854e4c82213fedec9e3703cba753d07fad4606aadf58cf7e78e.png)
Como você pode ver, a maioria dos 400+ pássaros neste conjunto de dados está na faixa de menos de 2000 para sua massa corporal máxima. Obtenha mais informações sobre os dados alterando o parâmetro `bins` para um número maior, algo como 30:
```r
ggplot(data = birds_filtered, aes(x = MaxBodyMass)) + geom_histogram(bins=30)+ylab('Frequency')
```
![distribuição-30bins](../../../../../translated_images/pt-BR/distribution-30bins.6a3921ea7a421bf71f06bf5231009e43d1146f1b8da8dc254e99b5779a4983e5.png)
Este gráfico mostra a distribuição de forma um pouco mais detalhada. Um gráfico menos inclinado para a esquerda poderia ser criado garantindo que você selecione apenas dados dentro de um determinado intervalo:
Filtre seus dados para obter apenas os pássaros cuja massa corporal seja inferior a 60 e mostre 30 `bins`:
```r
birds_filtered_1 <- subset(birds_filtered, MaxBodyMass > 1 & MaxBodyMass < 60)
ggplot(data = birds_filtered_1, aes(x = MaxBodyMass)) +
geom_histogram(bins=30)+ylab('Frequency')
```
![histograma filtrado](../../../../../translated_images/pt-BR/filtered-histogram.6bf5d2bfd82533220e1bd4bc4f7d14308f43746ed66721d9ec8f460732be6674.png)
✅ Experimente outros filtros e pontos de dados. Para ver a distribuição completa dos dados, remova o filtro `['MaxBodyMass']` para mostrar distribuições rotuladas.
O histograma oferece algumas melhorias interessantes de cor e rotulagem para experimentar também:
Crie um histograma 2D para comparar a relação entre duas distribuições. Vamos comparar `MaxBodyMass` vs. `MaxLength`. O `ggplot2` oferece uma maneira integrada de mostrar convergência usando cores mais brilhantes:
```r
ggplot(data=birds_filtered_1, aes(x=MaxBodyMass, y=MaxLength) ) +
geom_bin2d() +scale_fill_continuous(type = "viridis")
```
Parece haver uma correlação esperada entre esses dois elementos ao longo de um eixo esperado, com um ponto de convergência particularmente forte:
![gráfico 2d](../../../../../translated_images/pt-BR/2d-plot.c504786f439bd7ebceebf2465c70ca3b124103e06c7ff7214bf24e26f7aec21e.png)
Os histogramas funcionam bem por padrão para dados numéricos. E se você precisar ver distribuições de acordo com dados textuais?
## Explore o conjunto de dados para distribuições usando dados textuais
Este conjunto de dados também inclui boas informações sobre a categoria dos pássaros, seu gênero, espécie e família, bem como seu status de conservação. Vamos explorar essas informações de conservação. Qual é a distribuição dos pássaros de acordo com seu status de conservação?
> ✅ No conjunto de dados, vários acrônimos são usados para descrever o status de conservação. Esses acrônimos vêm das [Categorias da Lista Vermelha da IUCN](https://www.iucnredlist.org/), uma organização que cataloga o status das espécies.
>
> - CR: Criticamente Ameaçado
> - EN: Ameaçado
> - EX: Extinto
> - LC: Pouco Preocupante
> - NT: Quase Ameaçado
> - VU: Vulnerável
Esses são valores baseados em texto, então você precisará fazer uma transformação para criar um histograma. Usando o dataframe filteredBirds, exiba seu status de conservação junto com sua envergadura mínima. O que você observa?
```r
birds_filtered_1$ConservationStatus[birds_filtered_1$ConservationStatus == 'EX'] <- 'x1'
birds_filtered_1$ConservationStatus[birds_filtered_1$ConservationStatus == 'CR'] <- 'x2'
birds_filtered_1$ConservationStatus[birds_filtered_1$ConservationStatus == 'EN'] <- 'x3'
birds_filtered_1$ConservationStatus[birds_filtered_1$ConservationStatus == 'NT'] <- 'x4'
birds_filtered_1$ConservationStatus[birds_filtered_1$ConservationStatus == 'VU'] <- 'x5'
birds_filtered_1$ConservationStatus[birds_filtered_1$ConservationStatus == 'LC'] <- 'x6'
ggplot(data=birds_filtered_1, aes(x = MinWingspan, fill = ConservationStatus)) +
geom_histogram(position = "identity", alpha = 0.4, bins = 20) +
scale_fill_manual(name="Conservation Status",values=c("red","green","blue","pink"),labels=c("Endangered","Near Threathened","Vulnerable","Least Concern"))
```
![envergadura e status de conservação](../../../../../translated_images/pt-BR/wingspan-conservation-collation.4024e9aa6910866aa82f0c6cb6a6b4b925bd10079e6b0ef8f92eefa5a6792f76.png)
Não parece haver uma boa correlação entre envergadura mínima e status de conservação. Teste outros elementos do conjunto de dados usando este método. Você encontra alguma correlação?
## Gráficos de densidade
Você pode ter notado que os histogramas que analisamos até agora são 'escalonados' e não fluem suavemente em um arco. Para mostrar um gráfico de densidade mais suave, você pode tentar um gráfico de densidade.
Vamos trabalhar com gráficos de densidade agora!
```r
ggplot(data = birds_filtered_1, aes(x = MinWingspan)) +
geom_density()
```
![gráfico de densidade](../../../../../translated_images/pt-BR/density-plot.675ccf865b76c690487fb7f69420a8444a3515f03bad5482886232d4330f5c85.png)
Você pode ver como o gráfico reflete o anterior para os dados de envergadura mínima; é apenas um pouco mais suave. Se você quisesse revisitar aquela linha irregular de MaxBodyMass no segundo gráfico que construiu, poderia suavizá-la muito bem recriando-a usando este método:
```r
ggplot(data = birds_filtered_1, aes(x = MaxBodyMass)) +
geom_density()
```
![densidade de massa corporal](../../../../../translated_images/pt-BR/bodymass-smooth.d31ce526d82b0a1f19a073815dea28ecfbe58145ec5337e4ef7e8cdac81120b3.png)
Se você quisesse uma linha suave, mas não muito suave, edite o parâmetro `adjust`:
```r
ggplot(data = birds_filtered_1, aes(x = MaxBodyMass)) +
geom_density(adjust = 1/5)
```
![massa corporal menos suave](../../../../../translated_images/pt-BR/less-smooth-bodymass.10f4db8b683cc17d17b2d33f22405413142004467a1493d416608dafecfdee23.png)
✅ Leia sobre os parâmetros disponíveis para este tipo de gráfico e experimente!
Este tipo de gráfico oferece visualizações explicativas muito bonitas. Com algumas linhas de código, por exemplo, você pode mostrar a densidade de massa corporal máxima por ordem de pássaros:
```r
ggplot(data=birds_filtered_1,aes(x = MaxBodyMass, fill = Order)) +
geom_density(alpha=0.5)
```
![massa corporal por ordem](../../../../../translated_images/pt-BR/bodymass-per-order.9d2b065dd931b928c839d8cdbee63067ab1ae52218a1b90717f4bc744354f485.png)
## 🚀 Desafio
Os histogramas são um tipo de gráfico mais sofisticado do que gráficos de dispersão, gráficos de barras ou gráficos de linhas básicos. Faça uma busca na internet para encontrar bons exemplos do uso de histogramas. Como eles são usados, o que demonstram e em quais campos ou áreas de estudo tendem a ser utilizados?
## [Quiz pós-aula](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/19)
## Revisão e Autoestudo
Nesta lição, você usou `ggplot2` e começou a trabalhar para mostrar gráficos mais sofisticados. Pesquise sobre `geom_density_2d()`, uma "curva de densidade de probabilidade contínua em uma ou mais dimensões". Leia a [documentação](https://ggplot2.tidyverse.org/reference/geom_density_2d.html) para entender como funciona.
## Tarefa
[Coloque suas habilidades em prática](assignment.md)
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução.

@ -0,0 +1,16 @@
# Aplique suas habilidades
## Instruções
Até agora, você trabalhou com o conjunto de dados de aves de Minnesota para descobrir informações sobre quantidades de aves e densidade populacional. Pratique a aplicação dessas técnicas experimentando um conjunto de dados diferente, talvez obtido no [Kaggle](https://www.kaggle.com/). Crie um script em R para contar uma história sobre esse conjunto de dados e certifique-se de usar histogramas ao discuti-lo.
## Rubrica
Exemplar | Adequado | Precisa Melhorar
--- | --- | --- |
Um script é apresentado com anotações sobre este conjunto de dados, incluindo sua fonte, e utiliza pelo menos 5 histogramas para descobrir fatos sobre os dados. | Um script é apresentado com anotações incompletas ou erros. | Um script é apresentado sem anotações e inclui erros.
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

@ -0,0 +1,188 @@
# Visualizando Proporções
|![ Sketchnote por [(@sketchthedocs)](https://sketchthedocs.dev) ](../../../sketchnotes/11-Visualizing-Proportions.png)|
|:---:|
|Visualizando Proporções - _Sketchnote por [@nitya](https://twitter.com/nitya)_ |
Nesta lição, você usará um conjunto de dados com foco na natureza para visualizar proporções, como a quantidade de diferentes tipos de fungos presentes em um conjunto de dados sobre cogumelos. Vamos explorar esses fascinantes fungos usando um conjunto de dados da Audubon que lista detalhes sobre 23 espécies de cogumelos com lamelas das famílias Agaricus e Lepiota. Você experimentará visualizações interessantes como:
- Gráficos de pizza 🥧
- Gráficos de rosca 🍩
- Gráficos de waffle 🧇
> 💡 Um projeto muito interessante chamado [Charticulator](https://charticulator.com) da Microsoft Research oferece uma interface gratuita de arrastar e soltar para visualizações de dados. Em um de seus tutoriais, eles também usam este conjunto de dados de cogumelos! Assim, você pode explorar os dados e aprender a biblioteca ao mesmo tempo: [Tutorial do Charticulator](https://charticulator.com/tutorials/tutorial4.html).
## [Quiz pré-aula](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/20)
## Conheça seus cogumelos 🍄
Cogumelos são muito interessantes. Vamos importar um conjunto de dados para estudá-los:
```r
mushrooms = read.csv('../../data/mushrooms.csv')
head(mushrooms)
```
Uma tabela é exibida com alguns dados excelentes para análise:
| classe | formato do chapéu | superfície do chapéu | cor do chapéu | machucados | odor | fixação das lamelas | espaçamento das lamelas | tamanho das lamelas | cor das lamelas | formato do caule | raiz do caule | superfície acima do anel | superfície abaixo do anel | cor acima do anel | cor abaixo do anel | tipo de véu | cor do véu | número de anéis | tipo de anel | cor do esporo | população | habitat |
| --------- | ----------------- | -------------------- | ------------- | ---------- | ------- | ------------------- | ----------------------- | ------------------- | --------------- | --------------- | ------------ | ------------------------ | ------------------------ | ----------------- | ----------------- | ---------- | ---------- | -------------- | ------------ | ------------- | ---------- | ------- |
| Venenoso | Convexo | Liso | Marrom | Machucado | Pungente | Livre | Fechado | Estreito | Preto | Alargado | Igual | Liso | Liso | Branco | Branco | Parcial | Branco | Um | Pendente | Preto | Espalhado | Urbano |
| Comestível| Convexo | Liso | Amarelo | Machucado | Amêndoa | Livre | Fechado | Largo | Preto | Alargado | Club | Liso | Liso | Branco | Branco | Parcial | Branco | Um | Pendente | Marrom | Numeroso | Gramíneas |
| Comestível| Sino | Liso | Branco | Machucado | Anis | Livre | Fechado | Largo | Marrom | Alargado | Club | Liso | Liso | Branco | Branco | Parcial | Branco | Um | Pendente | Marrom | Numeroso | Prados |
| Venenoso | Convexo | Escamoso | Branco | Machucado | Pungente | Livre | Fechado | Estreito | Marrom | Alargado | Igual | Liso | Liso | Branco | Branco | Parcial | Branco | Um | Pendente | Preto | Espalhado | Urbano |
| Comestível| Convexo | Liso | Verde | Sem machucados | Nenhum | Livre | Aglomerado | Largo | Preto | Afunilado | Igual | Liso | Liso | Branco | Branco | Parcial | Branco | Um | Evanescente | Marrom | Abundante | Gramíneas |
| Comestível| Convexo | Escamoso | Amarelo | Machucado | Amêndoa | Livre | Fechado | Largo | Marrom | Alargado | Club | Liso | Liso | Branco | Branco | Parcial | Branco | Um | Pendente | Preto | Numeroso | Gramíneas |
Logo de cara, você percebe que todos os dados são textuais. Será necessário converter esses dados para poder usá-los em um gráfico. Na verdade, a maior parte dos dados está representada como um objeto:
```r
names(mushrooms)
```
A saída é:
```output
[1] "class" "cap.shape"
[3] "cap.surface" "cap.color"
[5] "bruises" "odor"
[7] "gill.attachment" "gill.spacing"
[9] "gill.size" "gill.color"
[11] "stalk.shape" "stalk.root"
[13] "stalk.surface.above.ring" "stalk.surface.below.ring"
[15] "stalk.color.above.ring" "stalk.color.below.ring"
[17] "veil.type" "veil.color"
[19] "ring.number" "ring.type"
[21] "spore.print.color" "population"
[23] "habitat"
```
Pegue esses dados e converta a coluna 'class' para uma categoria:
```r
library(dplyr)
grouped=mushrooms %>%
group_by(class) %>%
summarise(count=n())
```
Agora, se você imprimir os dados dos cogumelos, verá que eles foram agrupados em categorias de acordo com a classe venenoso/comestível:
```r
View(grouped)
```
| classe | contagem |
| --------- | -------- |
| Comestível| 4208 |
| Venenoso | 3916 |
Se você seguir a ordem apresentada nesta tabela para criar os rótulos da categoria 'class', poderá construir um gráfico de pizza.
## Pizza!
```r
pie(grouped$count,grouped$class, main="Edible?")
```
Voilá, um gráfico de pizza mostrando as proporções desses dados de acordo com essas duas classes de cogumelos. É muito importante obter a ordem correta dos rótulos, especialmente aqui, então certifique-se de verificar a ordem com a qual o array de rótulos foi construído!
![gráfico de pizza](../../../../../translated_images/pt-BR/pie1-wb.685df063673751f4b0b82127f7a52c7f9a920192f22ae61ad28412ba9ace97bf.png)
## Roscas!
Um gráfico de pizza um pouco mais visualmente interessante é o gráfico de rosca, que é um gráfico de pizza com um buraco no meio. Vamos observar nossos dados usando este método.
Veja os diversos habitats onde os cogumelos crescem:
```r
library(dplyr)
habitat=mushrooms %>%
group_by(habitat) %>%
summarise(count=n())
View(habitat)
```
A saída é:
| habitat | contagem |
| --------- | -------- |
| Gramíneas | 2148 |
| Folhas | 832 |
| Prados | 292 |
| Trilhas | 1144 |
| Urbano | 368 |
| Resíduos | 192 |
| Madeira | 3148 |
Aqui, você está agrupando seus dados por habitat. Existem 7 listados, então use-os como rótulos para seu gráfico de rosca:
```r
library(ggplot2)
library(webr)
PieDonut(habitat, aes(habitat, count=count))
```
![gráfico de rosca](../../../../../translated_images/pt-BR/donut-wb.34e6fb275da9d834c2205145e39a3de9b6878191dcdba6f7a9e85f4b520449bc.png)
Este código usa duas bibliotecas - ggplot2 e webr. Usando a função PieDonut da biblioteca webr, podemos criar um gráfico de rosca facilmente!
Gráficos de rosca no R também podem ser feitos usando apenas a biblioteca ggplot2. Você pode aprender mais sobre isso [aqui](https://www.r-graph-gallery.com/128-ring-or-donut-plot.html) e experimentar por conta própria.
Agora que você sabe como agrupar seus dados e exibi-los como pizza ou rosca, pode explorar outros tipos de gráficos. Experimente um gráfico de waffle, que é apenas uma maneira diferente de explorar quantidades.
## Waffles!
Um gráfico do tipo 'waffle' é uma maneira diferente de visualizar quantidades como uma matriz 2D de quadrados. Experimente visualizar as diferentes quantidades de cores de chapéus de cogumelos neste conjunto de dados. Para isso, você precisa instalar uma biblioteca auxiliar chamada [waffle](https://cran.r-project.org/web/packages/waffle/waffle.pdf) e usá-la para gerar sua visualização:
```r
install.packages("waffle", repos = "https://cinc.rud.is")
```
Selecione um segmento de seus dados para agrupar:
```r
library(dplyr)
cap_color=mushrooms %>%
group_by(cap.color) %>%
summarise(count=n())
View(cap_color)
```
Crie um gráfico de waffle criando rótulos e agrupando seus dados:
```r
library(waffle)
names(cap_color$count) = paste0(cap_color$cap.color)
waffle((cap_color$count/10), rows = 7, title = "Waffle Chart")+scale_fill_manual(values=c("brown", "#F0DC82", "#D2691E", "green",
"pink", "purple", "red", "grey",
"yellow","white"))
```
Usando um gráfico de waffle, você pode ver claramente as proporções das cores dos chapéus neste conjunto de dados de cogumelos. Curiosamente, há muitos cogumelos com chapéus verdes!
![gráfico de waffle](../../../../../translated_images/pt-BR/waffle.aaa75c5337735a6ef32ace0ffb6506ef49e5aefe870ffd72b1bb080f4843c217.png)
Nesta lição, você aprendeu três maneiras de visualizar proporções. Primeiro, você precisa agrupar seus dados em categorias e, em seguida, decidir qual é a melhor maneira de exibir os dados - pizza, rosca ou waffle. Todas são deliciosas e proporcionam ao usuário uma visão instantânea de um conjunto de dados.
## 🚀 Desafio
Tente recriar esses gráficos saborosos no [Charticulator](https://charticulator.com).
## [Quiz pós-aula](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/21)
## Revisão e Autoestudo
Às vezes, não é óbvio quando usar um gráfico de pizza, rosca ou waffle. Aqui estão alguns artigos para ler sobre este tópico:
https://www.beautiful.ai/blog/battle-of-the-charts-pie-chart-vs-donut-chart
https://medium.com/@hypsypops/pie-chart-vs-donut-chart-showdown-in-the-ring-5d24fd86a9ce
https://www.mit.edu/~mbarker/formula1/f1help/11-ch-c6.htm
https://medium.datadriveninvestor.com/data-visualization-done-the-right-way-with-tableau-waffle-chart-fdf2a19be402
Pesquise mais informações sobre essa decisão difícil.
## Tarefa
[Tente no Excel](assignment.md)
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional feita por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

@ -0,0 +1,168 @@
# Visualizando Relações: Tudo Sobre o Mel 🍯
|![ Sketchnote por [(@sketchthedocs)](https://sketchthedocs.dev) ](../../../sketchnotes/12-Visualizing-Relationships.png)|
|:---:|
|Visualizando Relações - _Sketchnote por [@nitya](https://twitter.com/nitya)_ |
Continuando com o foco na natureza em nossa pesquisa, vamos descobrir visualizações interessantes para mostrar as relações entre vários tipos de mel, de acordo com um conjunto de dados derivado do [Departamento de Agricultura dos Estados Unidos](https://www.nass.usda.gov/About_NASS/index.php).
Este conjunto de dados, com cerca de 600 itens, exibe a produção de mel em muitos estados dos EUA. Por exemplo, você pode observar o número de colônias, rendimento por colônia, produção total, estoques, preço por libra e valor do mel produzido em um determinado estado de 1998 a 2012, com uma linha por ano para cada estado.
Será interessante visualizar a relação entre a produção anual de um estado e, por exemplo, o preço do mel nesse estado. Alternativamente, você poderia visualizar a relação entre o rendimento de mel por colônia em diferentes estados. Este período cobre o devastador 'CCD' ou 'Desordem do Colapso das Colônias', observado pela primeira vez em 2006 (http://npic.orst.edu/envir/ccd.html), tornando este um conjunto de dados significativo para estudo. 🐝
## [Quiz pré-aula](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/22)
Nesta lição, você pode usar o ggplot2, que já utilizou antes, como uma boa biblioteca para visualizar relações entre variáveis. Particularmente interessante é o uso das funções `geom_point` e `qplot` do ggplot2, que permitem criar gráficos de dispersão e gráficos de linha para visualizar rapidamente '[relações estatísticas](https://ggplot2.tidyverse.org/)', ajudando o cientista de dados a entender melhor como as variáveis se relacionam.
## Gráficos de Dispersão
Use um gráfico de dispersão para mostrar como o preço do mel evoluiu, ano após ano, por estado. O ggplot2, usando `ggplot` e `geom_point`, agrupa convenientemente os dados por estado e exibe pontos de dados para dados categóricos e numéricos.
Vamos começar importando os dados e o Seaborn:
```r
honey=read.csv('../../data/honey.csv')
head(honey)
```
Você notará que os dados de mel possuem várias colunas interessantes, incluindo ano e preço por libra. Vamos explorar esses dados, agrupados por estado dos EUA:
| estado | numcol | rendimento_por_col | produção_total | estoques | preço_por_libra | valor_prod | ano |
| ------ | ------ | ------------------ | -------------- | -------- | ---------------- | ---------- | --- |
| AL | 16000 | 71 | 1136000 | 159000 | 0.72 | 818000 | 1998 |
| AZ | 55000 | 60 | 3300000 | 1485000 | 0.64 | 2112000 | 1998 |
| AR | 53000 | 65 | 3445000 | 1688000 | 0.59 | 2033000 | 1998 |
| CA | 450000 | 83 | 37350000 | 12326000 | 0.62 | 23157000 | 1998 |
| CO | 27000 | 72 | 1944000 | 1594000 | 0.7 | 1361000 | 1998 |
| FL | 230000 | 98 | 22540000 | 4508000 | 0.64 | 14426000 | 1998 |
Crie um gráfico de dispersão básico para mostrar a relação entre o preço por libra do mel e seu estado de origem nos EUA. Ajuste o eixo `y` para ser alto o suficiente para exibir todos os estados:
```r
library(ggplot2)
ggplot(honey, aes(x = priceperlb, y = state)) +
geom_point(colour = "blue")
```
![scatterplot 1](../../../../../translated_images/pt-BR/scatter1.86b8900674d88b26dd3353a83fe604e9ab3722c4680cc40ee9beb452ff02cdea.png)
Agora, mostre os mesmos dados com um esquema de cores de mel para ilustrar como o preço evolui ao longo dos anos. Você pode fazer isso adicionando um parâmetro 'scale_color_gradientn' para mostrar a mudança, ano após ano:
> ✅ Saiba mais sobre o [scale_color_gradientn](https://www.rdocumentation.org/packages/ggplot2/versions/0.9.1/topics/scale_colour_gradientn) - experimente um esquema de cores em arco-íris!
```r
ggplot(honey, aes(x = priceperlb, y = state, color=year)) +
geom_point()+scale_color_gradientn(colours = colorspace::heat_hcl(7))
```
![scatterplot 2](../../../../../translated_images/pt-BR/scatter2.4d1cbc693bad20e2b563888747eb6bdf65b73ce449d903f7cd4068a78502dcff.png)
Com essa mudança no esquema de cores, você pode ver claramente uma forte progressão ao longo dos anos no preço do mel por libra. De fato, se você observar um conjunto de amostra nos dados para verificar (escolha um estado, como o Arizona, por exemplo), verá um padrão de aumento de preços ano após ano, com poucas exceções:
| estado | numcol | rendimento_por_col | produção_total | estoques | preço_por_libra | valor_prod | ano |
| ------ | ------ | ------------------ | -------------- | -------- | ---------------- | ---------- | --- |
| AZ | 55000 | 60 | 3300000 | 1485000 | 0.64 | 2112000 | 1998 |
| AZ | 52000 | 62 | 3224000 | 1548000 | 0.62 | 1999000 | 1999 |
| AZ | 40000 | 59 | 2360000 | 1322000 | 0.73 | 1723000 | 2000 |
| AZ | 43000 | 59 | 2537000 | 1142000 | 0.72 | 1827000 | 2001 |
| AZ | 38000 | 63 | 2394000 | 1197000 | 1.08 | 2586000 | 2002 |
| AZ | 35000 | 72 | 2520000 | 983000 | 1.34 | 3377000 | 2003 |
| AZ | 32000 | 55 | 1760000 | 774000 | 1.11 | 1954000 | 2004 |
| AZ | 36000 | 50 | 1800000 | 720000 | 1.04 | 1872000 | 2005 |
| AZ | 30000 | 65 | 1950000 | 839000 | 0.91 | 1775000 | 2006 |
| AZ | 30000 | 64 | 1920000 | 902000 | 1.26 | 2419000 | 2007 |
| AZ | 25000 | 64 | 1600000 | 336000 | 1.26 | 2016000 | 2008 |
| AZ | 20000 | 52 | 1040000 | 562000 | 1.45 | 1508000 | 2009 |
| AZ | 24000 | 77 | 1848000 | 665000 | 1.52 | 2809000 | 2010 |
| AZ | 23000 | 53 | 1219000 | 427000 | 1.55 | 1889000 | 2011 |
| AZ | 22000 | 46 | 1012000 | 253000 | 1.79 | 1811000 | 2012 |
Outra forma de visualizar essa progressão é usar o tamanho, em vez da cor. Para usuários daltônicos, isso pode ser uma opção melhor. Edite sua visualização para mostrar o aumento do preço por meio de um aumento no tamanho dos pontos:
```r
ggplot(honey, aes(x = priceperlb, y = state)) +
geom_point(aes(size = year),colour = "blue") +
scale_size_continuous(range = c(0.25, 3))
```
Você pode ver o tamanho dos pontos aumentando gradualmente.
![scatterplot 3](../../../../../translated_images/pt-BR/scatter3.722d21e6f20b3ea2e18339bb9b10d75906126715eb7d5fdc88fe74dcb6d7066a.png)
Isso é um caso simples de oferta e demanda? Devido a fatores como mudanças climáticas e colapso das colônias, há menos mel disponível para compra ano após ano, e, portanto, o preço aumenta?
Para descobrir uma correlação entre algumas das variáveis neste conjunto de dados, vamos explorar alguns gráficos de linha.
## Gráficos de Linha
Pergunta: Há um aumento claro no preço do mel por libra ano após ano? Você pode descobrir isso mais facilmente criando um único gráfico de linha:
```r
qplot(honey$year,honey$priceperlb, geom='smooth', span =0.5, xlab = "year",ylab = "priceperlb")
```
Resposta: Sim, com algumas exceções por volta do ano de 2003:
![line chart 1](../../../../../translated_images/pt-BR/line1.299b576fbb2a59e60a59e7130030f59836891f90302be084e4e8d14da0562e2a.png)
Pergunta: Bem, em 2003 também podemos ver um aumento na oferta de mel? E se você observar a produção total ano após ano?
```python
qplot(honey$year,honey$totalprod, geom='smooth', span =0.5, xlab = "year",ylab = "totalprod")
```
![line chart 2](../../../../../translated_images/pt-BR/line2.3b18fcda7176ceba5b6689eaaabb817d49c965e986f11cac1ae3f424030c34d8.png)
Resposta: Não exatamente. Se você observar a produção total, parece que ela realmente aumentou naquele ano específico, embora, de forma geral, a quantidade de mel produzida esteja em declínio durante esses anos.
Pergunta: Nesse caso, o que poderia ter causado o aumento no preço do mel por volta de 2003?
Para descobrir isso, você pode explorar uma grade de facetas.
## Grades de Facetas
Grades de facetas pegam um aspecto do seu conjunto de dados (neste caso, você pode escolher 'ano' para evitar produzir muitas facetas). O Seaborn pode então criar um gráfico para cada uma dessas facetas de suas coordenadas x e y escolhidas, facilitando a comparação visual. O ano de 2003 se destaca nesse tipo de comparação?
Crie uma grade de facetas usando `facet_wrap`, conforme recomendado pela [documentação do ggplot2](https://ggplot2.tidyverse.org/reference/facet_wrap.html).
```r
ggplot(honey, aes(x=yieldpercol, y = numcol,group = 1)) +
geom_line() + facet_wrap(vars(year))
```
Nesta visualização, você pode comparar o rendimento por colônia e o número de colônias ano após ano, lado a lado, com um wrap configurado para 3 colunas:
![facet grid](../../../../../translated_images/pt-BR/facet.491ad90d61c2a7cc69b50c929f80786c749e38217ccedbf1e22ed8909b65987c.png)
Para este conjunto de dados, nada particularmente se destaca em relação ao número de colônias e seu rendimento, ano após ano e estado por estado. Existe uma maneira diferente de encontrar uma correlação entre essas duas variáveis?
## Gráficos de Linha Dupla
Experimente um gráfico de múltiplas linhas sobrepondo dois gráficos de linha um sobre o outro, usando as funções `par` e `plot` do R. Vamos plotar o ano no eixo x e exibir dois eixos y. Assim, exibiremos o rendimento por colônia e o número de colônias, sobrepostos:
```r
par(mar = c(5, 4, 4, 4) + 0.3)
plot(honey$year, honey$numcol, pch = 16, col = 2,type="l")
par(new = TRUE)
plot(honey$year, honey$yieldpercol, pch = 17, col = 3,
axes = FALSE, xlab = "", ylab = "",type="l")
axis(side = 4, at = pretty(range(y2)))
mtext("colony yield", side = 4, line = 3)
```
![superimposed plots](../../../../../translated_images/pt-BR/dual-line.fc4665f360a54018d7df9bc6abcc26460112e17dcbda18d3b9ae6109b32b36c3.png)
Embora nada salte aos olhos em torno do ano de 2003, isso nos permite terminar esta lição com uma nota um pouco mais feliz: embora o número de colônias esteja em declínio geral, ele está se estabilizando, mesmo que o rendimento por colônia esteja diminuindo.
Vai, abelhas, vai!
🐝❤️
## 🚀 Desafio
Nesta lição, você aprendeu um pouco mais sobre outros usos de gráficos de dispersão e grades de linha, incluindo grades de facetas. Desafie-se a criar uma grade de facetas usando um conjunto de dados diferente, talvez um que você tenha usado antes destas lições. Observe quanto tempo leva para criá-las e como você precisa ter cuidado com a quantidade de grades que deseja desenhar usando essas técnicas.
## [Quiz pós-aula](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/23)
## Revisão e Autoestudo
Gráficos de linha podem ser simples ou bastante complexos. Faça uma leitura na [documentação do ggplot2](https://ggplot2.tidyverse.org/reference/geom_path.html#:~:text=geom_line()%20connects%20them%20in,which%20cases%20are%20connected%20together) sobre as várias maneiras de construí-los. Tente aprimorar os gráficos de linha que você criou nesta lição com outros métodos listados na documentação.
## Tarefa
[Explore a colmeia](assignment.md)
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

@ -0,0 +1,173 @@
# Criando Visualizações Significativas
|![Sketchnote por [(@sketchthedocs)](https://sketchthedocs.dev)](../../../sketchnotes/13-MeaningfulViz.png)|
|:---:|
| Visualizações Significativas - _Sketchnote por [@nitya](https://twitter.com/nitya)_ |
> "Se você torturar os dados por tempo suficiente, eles confessarão qualquer coisa" -- [Ronald Coase](https://en.wikiquote.org/wiki/Ronald_Coase)
Uma das habilidades básicas de um cientista de dados é a capacidade de criar uma visualização de dados significativa que ajude a responder às perguntas que você possa ter. Antes de visualizar seus dados, é necessário garantir que eles foram limpos e preparados, como você fez em lições anteriores. Depois disso, você pode começar a decidir como apresentar os dados da melhor forma.
Nesta lição, você revisará:
1. Como escolher o tipo de gráfico certo
2. Como evitar gráficos enganosos
3. Como trabalhar com cores
4. Como estilizar seus gráficos para melhor legibilidade
5. Como criar soluções de gráficos animados ou em 3D
6. Como construir uma visualização criativa
## [Quiz Pré-Aula](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/24)
## Escolha o tipo de gráfico certo
Em lições anteriores, você experimentou criar vários tipos interessantes de visualizações de dados usando Matplotlib e Seaborn. Em geral, você pode selecionar o [tipo certo de gráfico](https://chartio.com/learn/charts/how-to-select-a-data-vizualization/) para a pergunta que está fazendo usando esta tabela:
| Você precisa: | Você deve usar: |
| -------------------------- | ------------------------------- |
| Mostrar tendências ao longo do tempo | Linha |
| Comparar categorias | Barra, Pizza |
| Comparar totais | Pizza, Barra Empilhada |
| Mostrar relações | Dispersão, Linha, Faceta, Linha Dupla |
| Mostrar distribuições | Dispersão, Histograma, Caixa |
| Mostrar proporções | Pizza, Donut, Waffle |
> ✅ Dependendo da composição dos seus dados, pode ser necessário convertê-los de texto para numérico para que um determinado gráfico os suporte.
## Evite enganos
Mesmo que um cientista de dados seja cuidadoso ao escolher o gráfico certo para os dados certos, há muitas maneiras de exibir dados de forma a provar um ponto, muitas vezes às custas de comprometer os próprios dados. Existem muitos exemplos de gráficos e infográficos enganosos!
[![Como os Gráficos Mentem por Alberto Cairo](../../../../../translated_images/pt-BR/tornado.2880ffc7f135f82b5e5328624799010abefd1080ae4b7ecacbdc7d792f1d8849.png)](https://www.youtube.com/watch?v=oX74Nge8Wkw "Como os gráficos mentem")
> 🎥 Clique na imagem acima para assistir a uma palestra sobre gráficos enganosos
Este gráfico inverte o eixo X para mostrar o oposto da verdade, com base na data:
![gráfico ruim 1](../../../../../translated_images/pt-BR/bad-chart-1.596bc93425a8ac301a28b8361f59a970276e7b961658ce849886aa1fed427341.png)
[Este gráfico](https://media.firstcoastnews.com/assets/WTLV/images/170ae16f-4643-438f-b689-50d66ca6a8d8/170ae16f-4643-438f-b689-50d66ca6a8d8_1140x641.jpg) é ainda mais enganoso, pois o olhar é atraído para a direita, levando à conclusão de que, ao longo do tempo, os casos de COVID diminuíram nos vários condados. Na verdade, se você olhar atentamente para as datas, verá que elas foram reorganizadas para criar essa tendência enganosa de queda.
![gráfico ruim 2](../../../../../translated_images/pt-BR/bad-chart-2.62edf4d2f30f4e519f5ef50c07ce686e27b0196a364febf9a4d98eecd21f9f60.jpg)
Este exemplo notório usa cor E um eixo Y invertido para enganar: em vez de concluir que as mortes por armas aumentaram após a aprovação de uma legislação favorável às armas, o olhar é enganado para pensar que o oposto é verdadeiro:
![gráfico ruim 3](../../../../../translated_images/pt-BR/bad-chart-3.e201e2e915a230bc2cde289110604ec9abeb89be510bd82665bebc1228258972.jpg)
Este gráfico estranho mostra como a proporção pode ser manipulada, de forma hilária:
![gráfico ruim 4](../../../../../translated_images/pt-BR/bad-chart-4.8872b2b881ffa96c3e0db10eb6aed7793efae2cac382c53932794260f7bfff07.jpg)
Comparar o incomparável é mais um truque duvidoso. Existe um [site maravilhoso](https://tylervigen.com/spurious-correlations) dedicado a 'correlações espúrias', exibindo 'fatos' que correlacionam coisas como a taxa de divórcio no Maine e o consumo de margarina. Um grupo no Reddit também coleta os [usos feios](https://www.reddit.com/r/dataisugly/top/?t=all) de dados.
É importante entender como o olhar pode ser facilmente enganado por gráficos enganosos. Mesmo que a intenção do cientista de dados seja boa, a escolha de um tipo ruim de gráfico, como um gráfico de pizza com muitas categorias, pode ser enganosa.
## Cor
Você viu no gráfico de 'violência armada na Flórida' acima como a cor pode fornecer uma camada adicional de significado aos gráficos, especialmente aqueles que não foram projetados usando bibliotecas como ggplot2 e RColorBrewer, que vêm com várias bibliotecas e paletas de cores validadas. Se você estiver criando um gráfico manualmente, estude um pouco sobre [teoria das cores](https://colormatters.com/color-and-design/basic-color-theory).
> ✅ Esteja ciente, ao projetar gráficos, que acessibilidade é um aspecto importante da visualização. Alguns dos seus usuários podem ser daltônicos - seu gráfico é exibido bem para usuários com deficiências visuais?
Tenha cuidado ao escolher cores para seu gráfico, pois elas podem transmitir significados que você não pretende. As 'senhoras de rosa' no gráfico de 'altura' acima transmitem um significado distintamente 'feminino' que aumenta a estranheza do próprio gráfico.
Embora o [significado das cores](https://colormatters.com/color-symbolism/the-meanings-of-colors) possa ser diferente em diferentes partes do mundo e tenda a mudar de acordo com sua tonalidade, de forma geral, os significados incluem:
| Cor | Significado |
| ------ | ------------------- |
| vermelho | poder |
| azul | confiança, lealdade |
| amarelo | felicidade, cautela |
| verde | ecologia, sorte, inveja |
| roxo | felicidade |
| laranja | vivacidade |
Se você for encarregado de criar um gráfico com cores personalizadas, certifique-se de que seus gráficos sejam acessíveis e que a cor escolhida coincida com o significado que você está tentando transmitir.
## Estilizando seus gráficos para legibilidade
Gráficos não são significativos se não forem legíveis! Reserve um momento para considerar o estilo da largura e altura do seu gráfico para que ele se ajuste bem aos seus dados. Se uma variável (como todos os 50 estados) precisar ser exibida, mostre-os verticalmente no eixo Y, se possível, para evitar um gráfico com rolagem horizontal.
Rotule seus eixos, forneça uma legenda, se necessário, e ofereça tooltips para melhor compreensão dos dados.
Se seus dados forem textuais e extensos no eixo X, você pode inclinar o texto para melhorar a legibilidade. [plot3D](https://cran.r-project.org/web/packages/plot3D/index.html) oferece gráficos em 3D, se seus dados suportarem. Visualizações de dados sofisticadas podem ser produzidas usando essa ferramenta.
![gráficos 3D](../../../../../translated_images/pt-BR/3d.db1734c151eee87d924989306a00e23f8cddac6a0aab122852ece220e9448def.png)
## Exibição de gráficos animados e em 3D
Algumas das melhores visualizações de dados hoje em dia são animadas. Shirley Wu tem exemplos incríveis feitos com D3, como '[film flowers](http://bl.ocks.org/sxywu/raw/d612c6c653fb8b4d7ff3d422be164a5d/)', onde cada flor é uma visualização de um filme. Outro exemplo para o Guardian é 'bussed out', uma experiência interativa que combina visualizações com Greensock e D3, além de um formato de artigo com narrativa para mostrar como NYC lida com seu problema de moradores de rua, enviando pessoas para fora da cidade.
![busing](../../../../../translated_images/pt-BR/busing.8157cf1bc89a3f65052d362a78c72f964982ceb9dcacbe44480e35909c3dce62.png)
> "Bussed Out: Como os EUA Movem seus Moradores de Rua" do [Guardian](https://www.theguardian.com/us-news/ng-interactive/2017/dec/20/bussed-out-america-moves-homeless-people-country-study). Visualizações por Nadieh Bremer & Shirley Wu
Embora esta lição não seja suficiente para ensinar essas poderosas bibliotecas de visualização em profundidade, experimente usar D3 em um aplicativo Vue.js para exibir uma visualização do livro "Ligações Perigosas" como uma rede social animada.
> "Les Liaisons Dangereuses" é um romance epistolar, ou seja, um romance apresentado como uma série de cartas. Escrito em 1782 por Choderlos de Laclos, conta a história das manobras sociais imorais e vingativas de dois protagonistas da aristocracia francesa do final do século XVIII, o Visconde de Valmont e a Marquesa de Merteuil. Ambos encontram seu fim trágico, mas não sem causar muitos danos sociais. O romance se desenrola como uma série de cartas escritas para várias pessoas em seus círculos, tramando vingança ou simplesmente causando problemas. Crie uma visualização dessas cartas para descobrir os principais personagens da narrativa, visualmente.
Você completará um aplicativo web que exibirá uma visão animada dessa rede social. Ele usa uma biblioteca criada para gerar uma [visualização de uma rede](https://github.com/emiliorizzo/vue-d3-network) usando Vue.js e D3. Quando o aplicativo estiver em execução, você poderá mover os nós na tela para reorganizar os dados.
![liaisons](../../../../../translated_images/pt-BR/liaisons.90ce7360bcf8476558f700bbbaf198ad697d5b5cb2829ba141a89c0add7c6ecd.png)
## Projeto: Crie um gráfico para mostrar uma rede usando D3.js
> Esta pasta de lição inclui uma pasta `solution` onde você pode encontrar o projeto concluído, para sua referência.
1. Siga as instruções no arquivo README.md na pasta raiz do starter. Certifique-se de que você tenha NPM e Node.js instalados em sua máquina antes de instalar as dependências do projeto.
2. Abra a pasta `starter/src`. Você encontrará uma pasta `assets` onde há um arquivo .json com todas as cartas do romance, numeradas, com anotações de 'para' e 'de'.
3. Complete o código em `components/Nodes.vue` para habilitar a visualização. Procure pelo método chamado `createLinks()` e adicione o seguinte loop aninhado.
Percorra o objeto .json para capturar os dados de 'para' e 'de' das cartas e construa o objeto `links` para que a biblioteca de visualização possa consumi-lo:
```javascript
//loop through letters
let f = 0;
let t = 0;
for (var i = 0; i < letters.length; i++) {
for (var j = 0; j < characters.length; j++) {
if (characters[j] == letters[i].from) {
f = j;
}
if (characters[j] == letters[i].to) {
t = j;
}
}
this.links.push({ sid: f, tid: t });
}
```
Execute seu aplicativo a partir do terminal (npm run serve) e aproveite a visualização!
## 🚀 Desafio
Faça um tour pela internet para descobrir visualizações enganosas. Como o autor engana o usuário, e isso é intencional? Tente corrigir as visualizações para mostrar como elas deveriam ser.
## [Quiz Pós-Aula](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/25)
## Revisão & Autoestudo
Aqui estão alguns artigos para ler sobre visualizações de dados enganosas:
https://gizmodo.com/how-to-lie-with-data-visualization-1563576606
http://ixd.prattsi.org/2017/12/visual-lies-usability-in-deceptive-data-visualizations/
Confira estas visualizações interessantes de ativos e artefatos históricos:
https://handbook.pubpub.org/
Leia este artigo sobre como animações podem melhorar suas visualizações:
https://medium.com/@EvanSinar/use-animation-to-supercharge-data-visualization-cd905a882ad4
## Tarefa
[Crie sua própria visualização personalizada](assignment.md)
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional feita por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

@ -0,0 +1,33 @@
# Visualizações
![uma abelha em uma flor de lavanda](../../../translated_images/pt-BR/bee.0aa1d91132b12e3a8994b9ca12816d05ce1642010d9b8be37f8d37365ba845cf.jpg)
> Foto por <a href="https://unsplash.com/@jenna2980?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Jenna Lee</a> no <a href="https://unsplash.com/s/photos/bees-in-a-meadow?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Unsplash</a>
Visualizar dados é uma das tarefas mais importantes de um cientista de dados. Imagens valem mais que mil palavras, e uma visualização pode ajudar você a identificar diversos aspectos interessantes dos seus dados, como picos, valores atípicos, agrupamentos, tendências e muito mais, que podem ajudar a entender a história que seus dados estão tentando contar.
Nestas cinco lições, você explorará dados provenientes da natureza e criará visualizações interessantes e bonitas usando várias técnicas.
| Número do Tópico | Tópico | Aula Vinculada | Autor |
| :--------------: | :----: | :------------: | :----: |
| 1. | Visualizando quantidades | <ul> <li> [Python](09-visualization-quantities/README.md)</li> <li>[R](../../../3-Data-Visualization/R/09-visualization-quantities) </li> </ul>|<ul> <li> [Jen Looper](https://twitter.com/jenlooper)</li><li> [Vidushi Gupta](https://github.com/Vidushi-Gupta)</li> <li>[Jasleen Sondhi](https://github.com/jasleen101010)</li></ul> |
| 2. | Visualizando distribuição | <ul> <li> [Python](10-visualization-distributions/README.md)</li> <li>[R](../../../3-Data-Visualization/R/10-visualization-distributions) </li> </ul>|<ul> <li> [Jen Looper](https://twitter.com/jenlooper)</li><li> [Vidushi Gupta](https://github.com/Vidushi-Gupta)</li> <li>[Jasleen Sondhi](https://github.com/jasleen101010)</li></ul> |
| 3. | Visualizando proporções | <ul> <li> [Python](11-visualization-proportions/README.md)</li> <li>[R](../../../3-Data-Visualization) </li> </ul>|<ul> <li> [Jen Looper](https://twitter.com/jenlooper)</li><li> [Vidushi Gupta](https://github.com/Vidushi-Gupta)</li> <li>[Jasleen Sondhi](https://github.com/jasleen101010)</li></ul> |
| 4. | Visualizando relações | <ul> <li> [Python](12-visualization-relationships/README.md)</li> <li>[R](../../../3-Data-Visualization) </li> </ul>|<ul> <li> [Jen Looper](https://twitter.com/jenlooper)</li><li> [Vidushi Gupta](https://github.com/Vidushi-Gupta)</li> <li>[Jasleen Sondhi](https://github.com/jasleen101010)</li></ul> |
| 5. | Criando Visualizações Significativas | <ul> <li> [Python](13-meaningful-visualizations/README.md)</li> <li>[R](../../../3-Data-Visualization) </li> </ul>|<ul> <li> [Jen Looper](https://twitter.com/jenlooper)</li><li> [Vidushi Gupta](https://github.com/Vidushi-Gupta)</li> <li>[Jasleen Sondhi](https://github.com/jasleen101010)</li></ul> |
### Créditos
Essas lições de visualização foram escritas com 🌸 por [Jen Looper](https://twitter.com/jenlooper), [Jasleen Sondhi](https://github.com/jasleen101010) e [Vidushi Gupta](https://github.com/Vidushi-Gupta).
🍯 Os dados sobre Produção de Mel nos EUA foram obtidos do projeto de Jessica Li no [Kaggle](https://www.kaggle.com/jessicali9530/honey-production). Os [dados](https://usda.library.cornell.edu/concern/publications/rn301137d) são derivados do [Departamento de Agricultura dos Estados Unidos](https://www.nass.usda.gov/About_NASS/index.php).
🍄 Os dados sobre cogumelos também foram obtidos do [Kaggle](https://www.kaggle.com/hatterasdunton/mushroom-classification-updated-dataset), revisados por Hatteras Dunton. Este conjunto de dados inclui descrições de amostras hipotéticas correspondentes a 23 espécies de cogumelos com lamelas das famílias Agaricus e Lepiota. Os cogumelos foram descritos no livro The Audubon Society Field Guide to North American Mushrooms (1981). Este conjunto de dados foi doado ao UCI ML 27 em 1987.
🦆 Os dados sobre pássaros de Minnesota foram obtidos do [Kaggle](https://www.kaggle.com/hannahcollins/minnesota-birds), extraídos do [Wikipedia](https://en.wikipedia.org/wiki/List_of_birds_of_Minnesota) por Hannah Collins.
Todos esses conjuntos de dados estão licenciados como [CC0: Creative Commons](https://creativecommons.org/publicdomain/zero/1.0/).
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

@ -0,0 +1,114 @@
# Introdução ao Ciclo de Vida da Ciência de Dados
|![ Sketchnote por [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/14-DataScience-Lifecycle.png)|
|:---:|
| Introdução ao Ciclo de Vida da Ciência de Dados - _Sketchnote por [@nitya](https://twitter.com/nitya)_ |
## [Quiz Pré-Aula](https://ff-quizzes.netlify.app/en/ds/quiz/26)
Neste ponto, você provavelmente já percebeu que a ciência de dados é um processo. Esse processo pode ser dividido em 5 etapas:
- Captura
- Processamento
- Análise
- Comunicação
- Manutenção
Esta lição foca em 3 partes do ciclo de vida: captura, processamento e manutenção.
![Diagrama do ciclo de vida da ciência de dados](../../../../translated_images/pt-BR/data-science-lifecycle.a1e362637503c4fb0cd5e859d7552edcdb4aa629a279727008baa121f2d33f32.jpg)
> Foto por [Berkeley School of Information](https://ischoolonline.berkeley.edu/data-science/what-is-data-science/)
## Captura
A primeira etapa do ciclo de vida é muito importante, pois as próximas etapas dependem dela. É praticamente duas etapas combinadas em uma: adquirir os dados e definir o propósito e os problemas que precisam ser abordados.
Definir os objetivos do projeto exigirá um entendimento mais profundo do problema ou da questão. Primeiro, precisamos identificar e envolver aqueles que precisam de uma solução para seu problema. Esses podem ser stakeholders de uma empresa ou patrocinadores do projeto, que podem ajudar a identificar quem ou o que se beneficiará deste projeto, bem como o que e por que precisam disso. Um objetivo bem definido deve ser mensurável e quantificável para determinar um resultado aceitável.
Perguntas que um cientista de dados pode fazer:
- Este problema já foi abordado antes? O que foi descoberto?
- O propósito e o objetivo são compreendidos por todos os envolvidos?
- Existe ambiguidade e como reduzi-la?
- Quais são as restrições?
- Como será o resultado final?
- Quantos recursos (tempo, pessoas, computação) estão disponíveis?
Em seguida, é necessário identificar, coletar e, finalmente, explorar os dados necessários para alcançar esses objetivos definidos. Nesta etapa de aquisição, os cientistas de dados também devem avaliar a quantidade e a qualidade dos dados. Isso exige alguma exploração dos dados para confirmar se o que foi adquirido ajudará a alcançar o resultado desejado.
Perguntas que um cientista de dados pode fazer sobre os dados:
- Quais dados já estão disponíveis para mim?
- Quem é o proprietário desses dados?
- Quais são as preocupações de privacidade?
- Tenho dados suficientes para resolver este problema?
- Os dados têm qualidade aceitável para este problema?
- Se eu descobrir informações adicionais por meio desses dados, devemos considerar mudar ou redefinir os objetivos?
## Processamento
A etapa de processamento do ciclo de vida foca em descobrir padrões nos dados, bem como na modelagem. Algumas técnicas usadas nesta etapa exigem métodos estatísticos para revelar os padrões. Normalmente, essa seria uma tarefa tediosa para um humano realizar com um grande conjunto de dados, e por isso dependemos de computadores para acelerar o processo. Esta etapa também é onde a ciência de dados e o aprendizado de máquina se cruzam. Como você aprendeu na primeira lição, aprendizado de máquina é o processo de construir modelos para entender os dados. Modelos são representações da relação entre variáveis nos dados que ajudam a prever resultados.
Técnicas comuns usadas nesta etapa são abordadas no currículo de ML para Iniciantes. Siga os links para aprender mais sobre elas:
- [Classificação](https://github.com/microsoft/ML-For-Beginners/tree/main/4-Classification): Organizar dados em categorias para uso mais eficiente.
- [Agrupamento](https://github.com/microsoft/ML-For-Beginners/tree/main/5-Clustering): Agrupar dados em grupos semelhantes.
- [Regressão](https://github.com/microsoft/ML-For-Beginners/tree/main/2-Regression): Determinar as relações entre variáveis para prever ou estimar valores.
## Manutenção
No diagrama do ciclo de vida, você pode ter notado que a manutenção está entre captura e processamento. Manutenção é um processo contínuo de gerenciar, armazenar e proteger os dados ao longo do processo de um projeto e deve ser considerada durante todo o projeto.
### Armazenamento de Dados
Considerações sobre como e onde os dados são armazenados podem influenciar o custo de armazenamento, bem como o desempenho de acesso aos dados. Decisões como essas provavelmente não serão feitas apenas por um cientista de dados, mas ele pode se deparar com escolhas sobre como trabalhar com os dados com base em como eles estão armazenados.
Aqui estão alguns aspectos dos sistemas modernos de armazenamento de dados que podem influenciar essas escolhas:
**No local vs fora do local vs nuvem pública ou privada**
No local refere-se a hospedar e gerenciar os dados em seu próprio equipamento, como possuir um servidor com discos rígidos que armazenam os dados, enquanto fora do local depende de equipamentos que você não possui, como um data center. A nuvem pública é uma escolha popular para armazenar dados que não exige conhecimento de como ou onde exatamente os dados estão armazenados, onde pública refere-se a uma infraestrutura unificada compartilhada por todos que usam a nuvem. Algumas organizações têm políticas de segurança rigorosas que exigem acesso completo ao equipamento onde os dados estão hospedados e dependem de uma nuvem privada que fornece seus próprios serviços de nuvem. Você aprenderá mais sobre dados na nuvem em [lições futuras](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/5-Data-Science-In-Cloud).
**Dados frios vs dados quentes**
Ao treinar seus modelos, você pode precisar de mais dados de treinamento. Se estiver satisfeito com seu modelo, mais dados chegarão para que ele cumpra seu propósito. Em qualquer caso, o custo de armazenar e acessar dados aumentará à medida que você acumular mais. Separar dados raramente usados, conhecidos como dados frios, de dados frequentemente acessados, conhecidos como dados quentes, pode ser uma opção mais barata de armazenamento por meio de serviços de hardware ou software. Se os dados frios precisarem ser acessados, pode levar um pouco mais de tempo para recuperá-los em comparação com os dados quentes.
### Gerenciamento de Dados
Ao trabalhar com dados, você pode descobrir que alguns deles precisam ser limpos usando algumas das técnicas abordadas na lição sobre [preparação de dados](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/2-Working-With-Data/08-data-preparation) para construir modelos precisos. Quando novos dados chegam, eles precisarão das mesmas aplicações para manter a consistência na qualidade. Alguns projetos envolverão o uso de uma ferramenta automatizada para limpeza, agregação e compressão antes que os dados sejam movidos para seu local final. O Azure Data Factory é um exemplo de uma dessas ferramentas.
### Proteção dos Dados
Um dos principais objetivos de proteger os dados é garantir que aqueles que trabalham com eles tenham controle sobre o que é coletado e em que contexto está sendo usado. Manter os dados seguros envolve limitar o acesso apenas àqueles que precisam deles, aderir às leis e regulamentos locais, bem como manter padrões éticos, conforme abordado na [lição de ética](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/1-Introduction/02-ethics).
Aqui estão algumas ações que uma equipe pode realizar com a segurança em mente:
- Confirmar que todos os dados estão criptografados
- Fornecer aos clientes informações sobre como seus dados são usados
- Remover o acesso aos dados de pessoas que deixaram o projeto
- Permitir que apenas certos membros do projeto alterem os dados
## 🚀 Desafio
Existem muitas versões do Ciclo de Vida da Ciência de Dados, onde cada etapa pode ter nomes diferentes e um número diferente de estágios, mas conterá os mesmos processos mencionados nesta lição.
Explore o [Ciclo de Vida do Processo de Ciência de Dados em Equipe](https://docs.microsoft.com/en-us/azure/architecture/data-science-process/lifecycle) e o [Processo padrão da indústria para mineração de dados](https://www.datascience-pm.com/crisp-dm-2/). Nomeie 3 semelhanças e diferenças entre os dois.
|Processo de Ciência de Dados em Equipe (TDSP)|Processo padrão da indústria para mineração de dados (CRISP-DM)|
|--|--|
|![Ciclo de Vida do Processo de Ciência de Dados em Equipe](../../../../translated_images/pt-BR/tdsp-lifecycle2.e19029d598e2e73d5ef8a4b98837d688ec6044fe332c905d4dbb69eb6d5c1d96.png) | ![Imagem do Processo de Ciência de Dados](../../../../translated_images/pt-BR/CRISP-DM.8bad2b4c66e62aa75278009e38e3e99902c73b0a6f63fd605a67c687a536698c.png) |
| Imagem por [Microsoft](https://docs.microsoft.comazure/architecture/data-science-process/lifecycle) | Imagem por [Data Science Process Alliance](https://www.datascience-pm.com/crisp-dm-2/) |
## [Quiz Pós-Aula](https://ff-quizzes.netlify.app/en/ds/quiz/27)
## Revisão e Autoestudo
Aplicar o Ciclo de Vida da Ciência de Dados envolve múltiplos papéis e tarefas, onde alguns podem se concentrar em partes específicas de cada etapa. O Processo de Ciência de Dados em Equipe fornece alguns recursos que explicam os tipos de papéis e tarefas que alguém pode ter em um projeto.
* [Papéis e tarefas do Processo de Ciência de Dados em Equipe](https://docs.microsoft.com/en-us/azure/architecture/data-science-process/roles-tasks)
* [Executar tarefas de ciência de dados: exploração, modelagem e implantação](https://docs.microsoft.com/en-us/azure/architecture/data-science-process/execute-data-science-tasks)
## Tarefa
[Avaliando um Conjunto de Dados](assignment.md)
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

@ -0,0 +1,28 @@
# Avaliando um Conjunto de Dados
Um cliente procurou sua equipe para ajudar a investigar os hábitos sazonais de gastos de clientes de táxi em Nova York.
Eles querem saber: **Os passageiros de táxi amarelo em Nova York dão gorjetas maiores aos motoristas no inverno ou no verão?**
Sua equipe está na etapa de [Captura](Readme.md#Capturing) do Ciclo de Vida de Ciência de Dados e você está encarregado de lidar com o conjunto de dados. Foi fornecido a você um notebook e [dados](../../../../data/taxi.csv) para explorar.
Neste diretório há um [notebook](notebook.ipynb) que utiliza Python para carregar dados de viagens de táxi amarelo da [Comissão de Táxi e Limusine de Nova York](https://docs.microsoft.com/en-us/azure/open-datasets/dataset-taxi-yellow?tabs=azureml-opendatasets).
Você também pode abrir o arquivo de dados de táxi em um editor de texto ou software de planilhas como o Excel.
## Instruções
- Avalie se os dados deste conjunto podem ajudar a responder à pergunta.
- Explore o [catálogo de Dados Abertos de Nova York](https://data.cityofnewyork.us/browse?sortBy=most_accessed&utf8=%E2%9C%93). Identifique um conjunto de dados adicional que poderia ser útil para responder à pergunta do cliente.
- Escreva 3 perguntas que você faria ao cliente para obter mais esclarecimentos e melhor compreensão do problema.
Consulte o [dicionário do conjunto de dados](https://www1.nyc.gov/assets/tlc/downloads/pdf/data_dictionary_trip_records_yellow.pdf) e o [guia do usuário](https://www1.nyc.gov/assets/tlc/downloads/pdf/trip_record_user_guide.pdf) para mais informações sobre os dados.
## Rubrica
Exemplar | Adequado | Precisa Melhorar
--- | --- | --- |
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional feita por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

@ -0,0 +1,140 @@
{
"cells": [
{
"cell_type": "markdown",
"source": [
"# Dados de táxi de NYC no inverno e verão\n",
"\n",
"Consulte o [Data dictionary](https://www1.nyc.gov/assets/tlc/downloads/pdf/data_dictionary_trip_records_yellow.pdf) para saber mais sobre as colunas que foram fornecidas.\n"
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"#Install the pandas library\r\n",
"!pip install pandas"
],
"outputs": [],
"metadata": {
"scrolled": true
}
},
{
"cell_type": "code",
"execution_count": 7,
"source": [
"import pandas as pd\r\n",
"\r\n",
"path = '../../data/taxi.csv'\r\n",
"\r\n",
"#Load the csv file into a dataframe\r\n",
"df = pd.read_csv(path)\r\n",
"\r\n",
"#Print the dataframe\r\n",
"print(df)\r\n"
],
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
" VendorID tpep_pickup_datetime tpep_dropoff_datetime passenger_count \\\n",
"0 2.0 2019-07-15 16:27:53 2019-07-15 16:44:21 3.0 \n",
"1 2.0 2019-07-17 20:26:35 2019-07-17 20:40:09 6.0 \n",
"2 2.0 2019-07-06 16:01:08 2019-07-06 16:10:25 1.0 \n",
"3 1.0 2019-07-18 22:32:23 2019-07-18 22:35:08 1.0 \n",
"4 2.0 2019-07-19 14:54:29 2019-07-19 15:19:08 1.0 \n",
".. ... ... ... ... \n",
"195 2.0 2019-01-18 08:42:15 2019-01-18 08:56:57 1.0 \n",
"196 1.0 2019-01-19 04:34:45 2019-01-19 04:43:44 1.0 \n",
"197 2.0 2019-01-05 10:37:39 2019-01-05 10:42:03 1.0 \n",
"198 2.0 2019-01-23 10:36:29 2019-01-23 10:44:34 2.0 \n",
"199 2.0 2019-01-30 06:55:58 2019-01-30 07:07:02 5.0 \n",
"\n",
" trip_distance RatecodeID store_and_fwd_flag PULocationID DOLocationID \\\n",
"0 2.02 1.0 N 186 233 \n",
"1 1.59 1.0 N 141 161 \n",
"2 1.69 1.0 N 246 249 \n",
"3 0.90 1.0 N 229 141 \n",
"4 4.79 1.0 N 237 107 \n",
".. ... ... ... ... ... \n",
"195 1.18 1.0 N 43 237 \n",
"196 2.30 1.0 N 148 234 \n",
"197 0.83 1.0 N 237 263 \n",
"198 1.12 1.0 N 144 113 \n",
"199 2.41 1.0 N 209 107 \n",
"\n",
" payment_type fare_amount extra mta_tax tip_amount tolls_amount \\\n",
"0 1.0 12.0 1.0 0.5 4.08 0.0 \n",
"1 2.0 10.0 0.5 0.5 0.00 0.0 \n",
"2 2.0 8.5 0.0 0.5 0.00 0.0 \n",
"3 1.0 4.5 3.0 0.5 1.65 0.0 \n",
"4 1.0 19.5 0.0 0.5 5.70 0.0 \n",
".. ... ... ... ... ... ... \n",
"195 1.0 10.0 0.0 0.5 2.16 0.0 \n",
"196 1.0 9.5 0.5 0.5 2.15 0.0 \n",
"197 1.0 5.0 0.0 0.5 1.16 0.0 \n",
"198 2.0 7.0 0.0 0.5 0.00 0.0 \n",
"199 1.0 10.5 0.0 0.5 1.00 0.0 \n",
"\n",
" improvement_surcharge total_amount congestion_surcharge \n",
"0 0.3 20.38 2.5 \n",
"1 0.3 13.80 2.5 \n",
"2 0.3 11.80 2.5 \n",
"3 0.3 9.95 2.5 \n",
"4 0.3 28.50 2.5 \n",
".. ... ... ... \n",
"195 0.3 12.96 0.0 \n",
"196 0.3 12.95 0.0 \n",
"197 0.3 6.96 0.0 \n",
"198 0.3 7.80 0.0 \n",
"199 0.3 12.30 0.0 \n",
"\n",
"[200 rows x 18 columns]\n"
]
}
],
"metadata": {}
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n---\n\n**Aviso Legal**: \nEste documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.\n"
]
}
],
"metadata": {
"kernelspec": {
"name": "python3",
"display_name": "Python 3.9.7 64-bit ('venv': venv)"
},
"language_info": {
"mimetype": "text/x-python",
"name": "python",
"pygments_lexer": "ipython3",
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"version": "3.9.7",
"nbconvert_exporter": "python",
"file_extension": ".py"
},
"name": "04-nyc-taxi-join-weather-in-pandas",
"notebookId": 1709144033725344,
"interpreter": {
"hash": "6b9b57232c4b57163d057191678da2030059e733b8becc68f245de5a75abe84e"
},
"coopTranslator": {
"original_hash": "3bd4c20c4e8f3158f483f0f1cc543bb1",
"translation_date": "2025-09-01T22:23:35+00:00",
"source_file": "4-Data-Science-Lifecycle/14-Introduction/notebook.ipynb",
"language_code": "br"
}
},
"nbformat": 4,
"nbformat_minor": 2
}

@ -0,0 +1,54 @@
# O Ciclo de Vida da Ciência de Dados: Análise
|![ Sketchnote por [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/15-Analyzing.png)|
|:---:|
| Ciclo de Vida da Ciência de Dados: Análise - _Sketchnote por [@nitya](https://twitter.com/nitya)_ |
## [Quiz Pré-Aula](https://ff-quizzes.netlify.app/en/ds/quiz/28)
A análise no ciclo de vida dos dados confirma se os dados podem responder às perguntas propostas ou resolver um problema específico. Esta etapa também pode se concentrar em confirmar se um modelo está abordando corretamente essas questões e problemas. Esta lição é focada na Análise Exploratória de Dados (EDA), que são técnicas para definir características e relações dentro dos dados e podem ser usadas para preparar os dados para modelagem.
Usaremos um conjunto de dados de exemplo do [Kaggle](https://www.kaggle.com/balaka18/email-spam-classification-dataset-csv/version/1) para mostrar como isso pode ser aplicado com Python e a biblioteca Pandas. Este conjunto de dados contém uma contagem de algumas palavras comuns encontradas em e-mails, sendo que as fontes desses e-mails são anônimas. Use o [notebook](notebook.ipynb) neste diretório para acompanhar.
## Análise Exploratória de Dados
A fase de captura do ciclo de vida é onde os dados são adquiridos, bem como os problemas e questões em questão, mas como sabemos se os dados podem ajudar a apoiar o resultado final?
Lembre-se de que um cientista de dados pode fazer as seguintes perguntas ao adquirir os dados:
- Eu tenho dados suficientes para resolver este problema?
- Os dados têm qualidade aceitável para este problema?
- Se eu descobrir informações adicionais por meio desses dados, devemos considerar mudar ou redefinir os objetivos?
A Análise Exploratória de Dados é o processo de conhecer os dados e pode ser usada para responder a essas perguntas, além de identificar os desafios de trabalhar com o conjunto de dados. Vamos nos concentrar em algumas das técnicas usadas para alcançar isso.
## Perfilamento de Dados, Estatísticas Descritivas e Pandas
Como avaliamos se temos dados suficientes para resolver este problema? O perfilamento de dados pode resumir e reunir algumas informações gerais sobre nosso conjunto de dados por meio de técnicas de estatísticas descritivas. O perfilamento de dados nos ajuda a entender o que está disponível para nós, e as estatísticas descritivas nos ajudam a entender quantas coisas estão disponíveis para nós.
Em algumas das lições anteriores, usamos o Pandas para fornecer algumas estatísticas descritivas com a função [`describe()`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.describe.html). Ela fornece a contagem, valores máximos e mínimos, média, desvio padrão e quantis nos dados numéricos. Usar estatísticas descritivas como a função `describe()` pode ajudar você a avaliar quanto você tem e se precisa de mais.
## Amostragem e Consultas
Explorar tudo em um grande conjunto de dados pode ser muito demorado e geralmente é uma tarefa deixada para o computador. No entanto, a amostragem é uma ferramenta útil para entender os dados e nos permite ter uma melhor compreensão do que está no conjunto de dados e o que ele representa. Com uma amostra, você pode aplicar probabilidade e estatísticas para chegar a algumas conclusões gerais sobre seus dados. Embora não haja uma regra definida sobre quanto dos dados você deve amostrar, é importante notar que quanto mais dados você amostrar, mais precisa será a generalização que você pode fazer sobre os dados.
O Pandas possui a função [`sample()`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.sample.html) em sua biblioteca, onde você pode passar um argumento de quantas amostras aleatórias gostaria de receber e usar.
Consultas gerais aos dados podem ajudar você a responder algumas perguntas e teorias gerais que possa ter. Em contraste com a amostragem, as consultas permitem que você tenha controle e se concentre em partes específicas dos dados sobre as quais tem perguntas.
A função [`query()`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.query.html) na biblioteca Pandas permite selecionar colunas e receber respostas simples sobre os dados por meio das linhas recuperadas.
## Explorando com Visualizações
Você não precisa esperar até que os dados estejam completamente limpos e analisados para começar a criar visualizações. Na verdade, ter uma representação visual enquanto explora pode ajudar a identificar padrões, relações e problemas nos dados. Além disso, as visualizações fornecem um meio de comunicação com aqueles que não estão envolvidos no gerenciamento dos dados e podem ser uma oportunidade para compartilhar e esclarecer questões adicionais que não foram abordadas na etapa de captura. Consulte a [seção sobre Visualizações](../../../../../../../../../3-Data-Visualization) para aprender mais sobre algumas formas populares de explorar visualmente.
## Explorando para Identificar Inconsistências
Todos os tópicos desta lição podem ajudar a identificar valores ausentes ou inconsistentes, mas o Pandas fornece funções para verificar alguns deles. [isna() ou isnull()](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.isna.html) podem verificar valores ausentes. Uma parte importante de explorar esses valores dentro de seus dados é investigar por que eles acabaram dessa forma. Isso pode ajudar você a decidir quais [ações tomar para resolvê-los](/2-Working-With-Data/08-data-preparation/notebook.ipynb).
## [Quiz Pós-Aula](https://ff-quizzes.netlify.app/en/ds/quiz/29)
## Tarefa
[Explorando para respostas](assignment.md)
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

@ -0,0 +1,154 @@
{
"cells": [
{
"cell_type": "markdown",
"source": [
"# Dados de táxi de NYC no inverno e verão\n",
"\n",
"Consulte o [Dicionário de dados](https://www1.nyc.gov/assets/tlc/downloads/pdf/data_dictionary_trip_records_yellow.pdf) para saber mais sobre as colunas que foram fornecidas.\n"
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"#Install the pandas library\r\n",
"!pip install pandas"
],
"outputs": [],
"metadata": {
"scrolled": true
}
},
{
"cell_type": "code",
"execution_count": 7,
"source": [
"import pandas as pd\r\n",
"\r\n",
"path = '../../data/taxi.csv'\r\n",
"\r\n",
"#Load the csv file into a dataframe\r\n",
"df = pd.read_csv(path)\r\n",
"\r\n",
"#Print the dataframe\r\n",
"print(df)\r\n"
],
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
" VendorID tpep_pickup_datetime tpep_dropoff_datetime passenger_count \\\n",
"0 2.0 2019-07-15 16:27:53 2019-07-15 16:44:21 3.0 \n",
"1 2.0 2019-07-17 20:26:35 2019-07-17 20:40:09 6.0 \n",
"2 2.0 2019-07-06 16:01:08 2019-07-06 16:10:25 1.0 \n",
"3 1.0 2019-07-18 22:32:23 2019-07-18 22:35:08 1.0 \n",
"4 2.0 2019-07-19 14:54:29 2019-07-19 15:19:08 1.0 \n",
".. ... ... ... ... \n",
"195 2.0 2019-01-18 08:42:15 2019-01-18 08:56:57 1.0 \n",
"196 1.0 2019-01-19 04:34:45 2019-01-19 04:43:44 1.0 \n",
"197 2.0 2019-01-05 10:37:39 2019-01-05 10:42:03 1.0 \n",
"198 2.0 2019-01-23 10:36:29 2019-01-23 10:44:34 2.0 \n",
"199 2.0 2019-01-30 06:55:58 2019-01-30 07:07:02 5.0 \n",
"\n",
" trip_distance RatecodeID store_and_fwd_flag PULocationID DOLocationID \\\n",
"0 2.02 1.0 N 186 233 \n",
"1 1.59 1.0 N 141 161 \n",
"2 1.69 1.0 N 246 249 \n",
"3 0.90 1.0 N 229 141 \n",
"4 4.79 1.0 N 237 107 \n",
".. ... ... ... ... ... \n",
"195 1.18 1.0 N 43 237 \n",
"196 2.30 1.0 N 148 234 \n",
"197 0.83 1.0 N 237 263 \n",
"198 1.12 1.0 N 144 113 \n",
"199 2.41 1.0 N 209 107 \n",
"\n",
" payment_type fare_amount extra mta_tax tip_amount tolls_amount \\\n",
"0 1.0 12.0 1.0 0.5 4.08 0.0 \n",
"1 2.0 10.0 0.5 0.5 0.00 0.0 \n",
"2 2.0 8.5 0.0 0.5 0.00 0.0 \n",
"3 1.0 4.5 3.0 0.5 1.65 0.0 \n",
"4 1.0 19.5 0.0 0.5 5.70 0.0 \n",
".. ... ... ... ... ... ... \n",
"195 1.0 10.0 0.0 0.5 2.16 0.0 \n",
"196 1.0 9.5 0.5 0.5 2.15 0.0 \n",
"197 1.0 5.0 0.0 0.5 1.16 0.0 \n",
"198 2.0 7.0 0.0 0.5 0.00 0.0 \n",
"199 1.0 10.5 0.0 0.5 1.00 0.0 \n",
"\n",
" improvement_surcharge total_amount congestion_surcharge \n",
"0 0.3 20.38 2.5 \n",
"1 0.3 13.80 2.5 \n",
"2 0.3 11.80 2.5 \n",
"3 0.3 9.95 2.5 \n",
"4 0.3 28.50 2.5 \n",
".. ... ... ... \n",
"195 0.3 12.96 0.0 \n",
"196 0.3 12.95 0.0 \n",
"197 0.3 6.96 0.0 \n",
"198 0.3 7.80 0.0 \n",
"199 0.3 12.30 0.0 \n",
"\n",
"[200 rows x 18 columns]\n"
]
}
],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"# Use as células abaixo para fazer sua própria Análise Exploratória de Dados\n"
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": null,
"source": [],
"outputs": [],
"metadata": {}
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n---\n\n**Aviso Legal**: \nEste documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.\n"
]
}
],
"metadata": {
"kernelspec": {
"name": "python3",
"display_name": "Python 3.9.7 64-bit ('venv': venv)"
},
"language_info": {
"mimetype": "text/x-python",
"name": "python",
"pygments_lexer": "ipython3",
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"version": "3.9.7",
"nbconvert_exporter": "python",
"file_extension": ".py"
},
"name": "04-nyc-taxi-join-weather-in-pandas",
"notebookId": 1709144033725344,
"interpreter": {
"hash": "6b9b57232c4b57163d057191678da2030059e733b8becc68f245de5a75abe84e"
},
"coopTranslator": {
"original_hash": "7bca1c1abc1e55842817b62e44e1a963",
"translation_date": "2025-09-01T22:21:18+00:00",
"source_file": "4-Data-Science-Lifecycle/15-analyzing/assignment.ipynb",
"language_code": "br"
}
},
"nbformat": 4,
"nbformat_minor": 2
}

@ -0,0 +1,27 @@
# Explorando respostas
Esta é uma continuação da [atividade](../14-Introduction/assignment.md) da lição anterior, onde examinamos brevemente o conjunto de dados. Agora, vamos analisar o conjunto de dados de forma mais aprofundada.
Novamente, a pergunta que o cliente quer responder é: **Os passageiros de táxi amarelo na cidade de Nova York dão gorjetas maiores aos motoristas no inverno ou no verão?**
Sua equipe está na etapa de [Análise](README.md) do Ciclo de Vida de Ciência de Dados, onde vocês são responsáveis por realizar a análise exploratória de dados no conjunto de dados. Foi fornecido a vocês um notebook e um conjunto de dados contendo 200 transações de táxi de janeiro e julho de 2019.
## Instruções
Neste diretório há um [notebook](assignment.ipynb) e dados da [Taxi & Limousine Commission](https://docs.microsoft.com/en-us/azure/open-datasets/dataset-taxi-yellow?tabs=azureml-opendatasets). Consulte o [dicionário do conjunto de dados](https://www1.nyc.gov/assets/tlc/downloads/pdf/data_dictionary_trip_records_yellow.pdf) e o [guia do usuário](https://www1.nyc.gov/assets/tlc/downloads/pdf/trip_record_user_guide.pdf) para mais informações sobre os dados.
Utilize algumas das técnicas desta lição para realizar sua própria análise exploratória de dados no notebook (adicione células, se necessário) e responda às seguintes perguntas:
- Quais outros fatores nos dados podem influenciar o valor da gorjeta?
- Quais colunas provavelmente não serão necessárias para responder às perguntas do cliente?
- Com base no que foi fornecido até agora, os dados parecem fornecer alguma evidência de comportamento sazonal nas gorjetas?
## Rubrica
Exemplar | Adequado | Precisa Melhorar
--- | --- | --- |
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

@ -0,0 +1,193 @@
{
"cells": [
{
"cell_type": "markdown",
"source": [
"# Analisando Dados\n",
"Exemplos das funções do Pandas mencionadas na [lição](README.md).\n"
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 1,
"source": [
"import pandas as pd\r\n",
"import glob\r\n",
"\r\n",
"#Loading the dataset\r\n",
"path = '../../data/emails.csv'\r\n",
"email_df = pd.read_csv(path)"
],
"outputs": [],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 2,
"source": [
"# Using Describe on the email dataset\r\n",
"print(email_df.describe())"
],
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
" the to ect and for of \\\n",
"count 406.000000 406.000000 406.000000 406.000000 406.000000 406.000000 \n",
"mean 7.022167 6.519704 4.948276 3.059113 3.502463 2.662562 \n",
"std 10.945522 9.801907 9.293820 6.267806 4.901372 5.443939 \n",
"min 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 \n",
"25% 1.000000 1.000000 1.000000 0.000000 1.000000 0.000000 \n",
"50% 3.000000 3.000000 2.000000 1.000000 2.000000 1.000000 \n",
"75% 9.000000 7.750000 4.000000 3.000000 4.750000 3.000000 \n",
"max 99.000000 88.000000 79.000000 69.000000 39.000000 57.000000 \n",
"\n",
" a you in on is this \\\n",
"count 406.000000 406.000000 406.000000 406.000000 406.000000 406.000000 \n",
"mean 57.017241 2.394089 10.817734 11.591133 5.901478 1.485222 \n",
"std 78.868243 4.067015 19.050972 16.407175 8.793103 2.912473 \n",
"min 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 \n",
"25% 15.000000 0.000000 1.250000 3.000000 1.000000 0.000000 \n",
"50% 29.000000 1.000000 5.000000 6.000000 3.000000 0.000000 \n",
"75% 61.000000 3.000000 12.000000 13.000000 7.000000 2.000000 \n",
"max 843.000000 31.000000 223.000000 125.000000 61.000000 24.000000 \n",
"\n",
" i be that will \n",
"count 406.000000 406.000000 406.000000 406.000000 \n",
"mean 47.155172 2.950739 1.034483 0.955665 \n",
"std 71.043009 4.297865 1.904846 2.042271 \n",
"min 0.000000 0.000000 0.000000 0.000000 \n",
"25% 11.000000 1.000000 0.000000 0.000000 \n",
"50% 24.000000 1.000000 0.000000 0.000000 \n",
"75% 50.750000 3.000000 1.000000 1.000000 \n",
"max 754.000000 40.000000 14.000000 24.000000 \n"
]
}
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 5,
"source": [
"# Sampling 10 emails\r\n",
"print(email_df.sample(10))"
],
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
" Email No. the to ect and for of a you in on is this i \\\n",
"150 Email 151 0 1 2 0 3 0 15 0 0 5 0 0 7 \n",
"380 Email 5147 0 3 2 0 0 0 7 0 1 1 0 0 3 \n",
"19 Email 20 3 4 11 0 4 2 32 1 1 3 9 5 25 \n",
"300 Email 301 2 1 1 0 1 1 15 2 2 3 2 0 8 \n",
"307 Email 308 0 0 1 0 0 0 1 0 1 0 0 0 2 \n",
"167 Email 168 2 2 2 1 5 1 24 2 5 6 4 0 30 \n",
"320 Email 321 10 12 4 6 8 6 187 5 26 28 23 2 171 \n",
"61 Email 62 0 1 1 0 4 1 15 4 4 3 3 0 19 \n",
"26 Email 27 5 4 1 1 4 4 51 0 8 6 6 2 44 \n",
"73 Email 74 0 0 1 0 0 0 7 0 4 3 0 0 6 \n",
"\n",
" be that will \n",
"150 1 0 0 \n",
"380 0 0 0 \n",
"19 3 0 1 \n",
"300 0 0 0 \n",
"307 0 0 0 \n",
"167 2 0 0 \n",
"320 5 1 1 \n",
"61 2 0 0 \n",
"26 6 0 0 \n",
"73 0 0 0 \n"
]
}
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 14,
"source": [
"# Returns rows where there are more occurrences of \"to\" than \"the\"\r\n",
"print(email_df.query('the < to'))"
],
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
" Email No. the to ect and for of a you in on is this i \\\n",
"1 Email 2 8 13 24 6 6 2 102 1 18 21 13 0 61 \n",
"3 Email 4 0 5 22 0 5 1 51 2 1 5 9 2 16 \n",
"5 Email 6 4 5 1 4 2 3 45 1 16 12 8 1 52 \n",
"7 Email 8 0 2 2 3 1 2 21 6 2 6 2 0 28 \n",
"13 Email 14 4 5 7 1 5 1 37 1 8 8 6 1 43 \n",
".. ... ... .. ... ... ... .. ... ... .. .. .. ... .. \n",
"390 Email 5157 4 13 1 0 3 1 48 2 8 26 9 1 45 \n",
"393 Email 5160 2 13 1 0 2 1 38 2 7 24 6 1 34 \n",
"396 Email 5163 2 3 1 2 1 2 32 0 7 3 2 0 26 \n",
"404 Email 5171 2 7 1 0 2 1 28 2 8 11 7 1 39 \n",
"405 Email 5172 22 24 5 1 6 5 148 8 23 13 5 4 99 \n",
"\n",
" be that will \n",
"1 4 2 0 \n",
"3 2 0 0 \n",
"5 2 0 0 \n",
"7 1 0 1 \n",
"13 1 0 1 \n",
".. .. ... ... \n",
"390 1 0 0 \n",
"393 1 0 0 \n",
"396 3 0 0 \n",
"404 1 0 0 \n",
"405 6 4 1 \n",
"\n",
"[169 rows x 17 columns]\n"
]
}
],
"metadata": {}
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n---\n\n**Aviso Legal**: \nEste documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.\n"
]
}
],
"metadata": {
"orig_nbformat": 4,
"language_info": {
"name": "python",
"version": "3.9.7",
"mimetype": "text/x-python",
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"pygments_lexer": "ipython3",
"nbconvert_exporter": "python",
"file_extension": ".py"
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3.9.7 64-bit ('venv': venv)"
},
"interpreter": {
"hash": "6b9b57232c4b57163d057191678da2030059e733b8becc68f245de5a75abe84e"
},
"coopTranslator": {
"original_hash": "9d102c8c3cdbc8ea4e92fc32593462c6",
"translation_date": "2025-09-01T22:19:27+00:00",
"source_file": "4-Data-Science-Lifecycle/15-analyzing/notebook.ipynb",
"language_code": "br"
}
},
"nbformat": 4,
"nbformat_minor": 2
}

@ -0,0 +1,218 @@
# O Ciclo de Vida da Ciência de Dados: Comunicação
|![ Sketchnote por [(@sketchthedocs)](https://sketchthedocs.dev)](../../sketchnotes/16-Communicating.png)|
|:---:|
| Ciclo de Vida da Ciência de Dados: Comunicação - _Sketchnote por [@nitya](https://twitter.com/nitya)_ |
## [Quiz Pré-Aula](https://ff-quizzes.netlify.app/en/ds/quiz/30)
Teste seus conhecimentos sobre o que está por vir com o Quiz Pré-Aula acima!
# Introdução
### O que é Comunicação?
Vamos começar esta lição definindo o que significa comunicar. **Comunicar é transmitir ou trocar informações.** Informações podem ser ideias, pensamentos, sentimentos, mensagens, sinais ocultos, dados qualquer coisa que um **_emissor_** (alguém que envia informações) queira que um **_receptor_** (alguém que recebe informações) entenda. Nesta lição, nos referiremos aos emissores como comunicadores e aos receptores como o público.
### Comunicação de Dados e Contação de Histórias
Entendemos que, ao comunicar, o objetivo é transmitir ou trocar informações. Mas ao comunicar dados, seu objetivo não deve ser simplesmente passar números para o público. Seu objetivo deve ser contar uma história informada pelos seus dados comunicação eficaz de dados e contação de histórias andam de mãos dadas. Seu público tem mais chances de lembrar de uma história que você conta do que de um número que você apresenta. Mais adiante nesta lição, abordaremos algumas maneiras de usar a contação de histórias para comunicar seus dados de forma mais eficaz.
### Tipos de Comunicação
Ao longo desta lição, dois tipos diferentes de comunicação serão discutidos: Comunicação Unidirecional e Comunicação Bidirecional.
**Comunicação unidirecional** ocorre quando um emissor envia informações a um receptor, sem qualquer feedback ou resposta. Vemos exemplos de comunicação unidirecional todos os dias em e-mails em massa, quando as notícias apresentam as histórias mais recentes ou até mesmo quando um comercial de TV aparece e informa por que o produto deles é ótimo. Em cada um desses casos, o emissor não busca uma troca de informações, apenas transmitir ou entregar informações.
**Comunicação bidirecional** ocorre quando todas as partes envolvidas atuam como emissores e receptores. Um emissor começa comunicando-se com um receptor, e o receptor fornece feedback ou uma resposta. Comunicação bidirecional é o que tradicionalmente pensamos quando falamos sobre comunicação. Geralmente imaginamos pessoas engajadas em uma conversa seja pessoalmente, por telefone, redes sociais ou mensagem de texto.
Ao comunicar dados, haverá casos em que você usará comunicação unidirecional (pense em apresentar em uma conferência ou para um grande grupo onde perguntas não serão feitas diretamente depois) e casos em que você usará comunicação bidirecional (pense em usar dados para persuadir alguns stakeholders a apoiar uma ideia ou convencer um colega de equipe de que tempo e esforço devem ser dedicados a construir algo novo).
# Comunicação Eficaz
### Suas Responsabilidades como Comunicador
Ao comunicar, é sua responsabilidade garantir que o(s) receptor(es) absorvam as informações que você deseja transmitir. Ao comunicar dados, você não quer que seus receptores absorvam apenas números, mas sim uma história informada pelos seus dados. Um bom comunicador de dados é um bom contador de histórias.
Como contar uma história com dados? Existem infinitas maneiras mas abaixo estão 6 que discutiremos nesta lição:
1. Entenda Seu Público, Seu Canal e Seu Método de Comunicação
2. Comece com o Fim em Mente
3. Aborde Como uma História Real
4. Use Palavras e Frases Significativas
5. Use Emoção
Cada uma dessas estratégias será explicada em mais detalhes abaixo.
### 1. Entenda Seu Público, Seu Canal e Seu Método de Comunicação
A forma como você se comunica com membros da família provavelmente é diferente da forma como você se comunica com amigos. Você provavelmente usa palavras e frases diferentes que as pessoas com quem está falando têm mais chances de entender. Você deve adotar a mesma abordagem ao comunicar dados. Pense em quem você está comunicando. Pense nos objetivos deles e no contexto que eles têm sobre a situação que você está explicando.
Você provavelmente pode agrupar a maioria do seu público em uma categoria. Em um artigo da _Harvard Business Review_, “[How to Tell a Story with Data](http://blogs.hbr.org/2013/04/how-to-tell-a-story-with-data/)” (Como Contar uma História com Dados), o Estrategista Executivo da Dell, Jim Stikeleather, identifica cinco categorias de públicos:
- **Novato**: primeira exposição ao assunto, mas não quer simplificação
excessiva
- **Generalista**: ciente do tópico, mas busca uma visão geral e temas
principais
- **Gerencial**: compreensão detalhada e acionável das complexidades e
inter-relações com acesso a detalhes
- **Especialista**: mais exploração e descoberta e menos contação de
histórias com grande nível de detalhe
- **Executivo**: só tem tempo para captar a importância e as conclusões de
probabilidades ponderadas
Essas categorias podem informar a maneira como você apresenta dados ao seu público.
Além de pensar na categoria do seu público, você também deve considerar o canal que está usando para se comunicar com ele. Sua abordagem deve ser ligeiramente diferente se você estiver escrevendo um memorando ou e-mail versus realizando uma reunião ou apresentando em uma conferência.
Além de entender seu público, saber como você se comunicará com ele (usando comunicação unidirecional ou bidirecional) também é fundamental.
Se você estiver se comunicando com um público majoritariamente novato e usando comunicação unidirecional, primeiro deve educar o público e fornecer o contexto adequado. Em seguida, deve apresentar seus dados e explicar o que eles significam e por que são importantes. Nesse caso, você pode querer ser extremamente focado em garantir clareza, pois seu público não poderá fazer perguntas diretas.
Se você estiver se comunicando com um público majoritariamente gerencial e usando comunicação bidirecional, provavelmente não precisará educar seu público ou fornecer muito contexto. Você pode ir direto para a discussão dos dados que coletou e por que eles são importantes. Nesse cenário, no entanto, você deve se concentrar no tempo e no controle da sua apresentação. Ao usar comunicação bidirecional (especialmente com um público gerencial que busca uma “compreensão acionável das complexidades e inter-relações com acesso a detalhes”), perguntas podem surgir durante sua interação que podem levar a discussão para uma direção que não está relacionada à história que você está tentando contar. Quando isso acontecer, você pode tomar medidas para trazer a discussão de volta ao foco da sua história.
### 2. Comece com o Fim em Mente
Começar com o fim em mente significa entender os resultados pretendidos para seu público antes de começar a se comunicar com eles. Ser cuidadoso sobre o que você quer que seu público absorva antecipadamente pode ajudá-lo a criar uma história que eles possam seguir. Começar com o fim em mente é apropriado tanto para comunicação unidirecional quanto bidirecional.
Como começar com o fim em mente? Antes de comunicar seus dados, escreva os principais pontos que deseja transmitir. Então, a cada etapa enquanto prepara a história que deseja contar com seus dados, pergunte a si mesmo: "Como isso se integra à história que estou contando?"
Esteja atento embora começar com o fim em mente seja ideal, você não deve comunicar apenas os dados que apoiam os resultados pretendidos. Fazer isso é chamado de "Cherry-Picking", que ocorre quando um comunicador apresenta apenas os dados que apoiam o ponto que está tentando fazer e ignora todos os outros dados.
Se todos os dados que você coletou claramente apoiam seus resultados pretendidos, ótimo. Mas se houver dados que você coletou que não apoiam seus resultados ou até mesmo sustentam um argumento contrário, você deve comunicar esses dados também. Se isso acontecer, seja transparente com seu público e explique por que está optando por seguir sua história, mesmo que todos os dados não a apoiem necessariamente.
### 3. Aborde Como uma História Real
Uma história tradicional ocorre em 5 fases. Você pode ter ouvido essas fases expressas como Exposição, Ação Crescente, Clímax, Ação Decrescente e Desfecho. Ou de forma mais fácil de lembrar: Contexto, Conflito, Clímax, Encerramento, Conclusão. Ao comunicar seus dados e sua história, você pode adotar uma abordagem semelhante.
Você pode começar com o contexto, definir o cenário e garantir que seu público esteja na mesma página. Em seguida, introduza o conflito. Por que você precisou coletar esses dados? Que problemas você estava tentando resolver? Depois disso, o clímax. Quais são os dados? O que os dados significam? Que soluções os dados indicam que precisamos? Então você chega ao encerramento, onde pode reiterar o problema e as soluções propostas. Por último, chegamos à conclusão, onde você pode resumir os principais pontos e os próximos passos que recomenda que a equipe tome.
### 4. Use Palavras e Frases Significativas
Se estivéssemos trabalhando juntos em um produto e eu dissesse: "Nossos usuários demoram muito para se cadastrar na nossa plataforma", quanto tempo você estimaria que "muito tempo" significa? Uma hora? Uma semana? É difícil saber. E se eu dissesse isso para um público inteiro? Cada pessoa no público poderia acabar com uma ideia diferente de quanto tempo os usuários levam para se cadastrar na nossa plataforma.
Agora, e se eu dissesse: "Nossos usuários levam, em média, 3 minutos para se cadastrar e começar a usar nossa plataforma."
Essa mensagem é mais clara. Ao comunicar dados, pode ser fácil pensar que todos no seu público estão pensando como você. Mas isso nem sempre é o caso. Garantir clareza sobre seus dados e o que eles significam é uma das suas responsabilidades como comunicador. Se os dados ou sua história não forem claros, seu público terá dificuldade em acompanhar e será menos provável que eles entendam seus principais pontos.
Você pode comunicar dados de forma mais clara ao usar palavras e frases significativas, em vez de vagas. Abaixo estão alguns exemplos:
- Tivemos um ano *impressionante*!
- Uma pessoa pode pensar que um ano impressionante significa um aumento de 2% - 3% na receita, enquanto outra pode pensar que significa um aumento de 50% - 60%.
- As taxas de sucesso dos nossos usuários aumentaram *dramaticamente*.
- Qual é o tamanho de um aumento dramático?
- Este projeto exigirá um esforço *significativo*.
- Quanto esforço é significativo?
Usar palavras vagas pode ser útil como introdução para mais dados que estão por vir ou como um resumo da história que você acabou de contar. Mas considere garantir que cada parte da sua apresentação seja clara para seu público.
### 5. Use Emoção
A emoção é essencial na contação de histórias. É ainda mais importante quando você está contando uma história com dados. Ao comunicar dados, tudo está focado nos resultados que você deseja que seu público absorva. Quando você evoca uma emoção no público, isso ajuda a criar empatia e aumenta a probabilidade de que eles tomem uma ação. A emoção também aumenta a chance de que o público se lembre da sua mensagem.
Você pode ter encontrado isso antes em comerciais de TV. Alguns comerciais são muito sombrios e usam uma emoção triste para se conectar com o público e destacar os dados que estão apresentando. Outros comerciais são muito animados e felizes, fazendo você associar os dados a um sentimento positivo.
Como usar emoção ao comunicar dados? Abaixo estão algumas maneiras:
- Use Depoimentos e Histórias Pessoais
- Ao coletar dados, tente coletar tanto dados quantitativos quanto qualitativos e integre ambos ao comunicar. Se seus dados forem principalmente quantitativos, busque histórias de indivíduos para aprender mais sobre suas experiências com o que seus dados estão dizendo.
- Use Imagens
- Imagens ajudam o público a se ver em uma situação. Ao usar imagens, você pode direcionar o público para a emoção que acredita que eles devem ter em relação aos seus dados.
- Use Cores
- Cores diferentes evocam emoções diferentes. Cores populares e as emoções que elas evocam estão abaixo. Esteja atento, pois as cores podem ter significados diferentes em culturas diferentes.
- Azul geralmente evoca emoções de paz e confiança
- Verde geralmente está relacionado à natureza e ao meio ambiente
- Vermelho geralmente representa paixão e entusiasmo
- Amarelo geralmente está associado ao otimismo e felicidade
# Estudo de Caso de Comunicação
Emerson é Gerente de Produto de um aplicativo móvel. Emerson percebeu que os clientes enviam 42% mais reclamações e relatórios de bugs nos finais de semana. Emerson também percebeu que clientes que enviam uma reclamação que não é respondida após 48 horas têm 32% mais chances de dar ao aplicativo uma avaliação de 1 ou 2 na loja de aplicativos.
Após realizar pesquisas, Emerson tem algumas soluções que abordarão o problema. Emerson agenda uma reunião de 30 minutos com os 3 líderes da empresa para comunicar os dados e as soluções propostas.
Durante esta reunião, o objetivo de Emerson é fazer com que os líderes da empresa entendam que as 2 soluções abaixo podem melhorar a avaliação do aplicativo, o que provavelmente se traduzirá em maior receita.
**Solução 1.** Contratar representantes de atendimento ao cliente para trabalhar nos finais de semana
**Solução 2.** Comprar um novo sistema de gerenciamento de tickets de atendimento ao cliente, onde os representantes possam identificar facilmente quais reclamações estão na fila há mais tempo para que possam priorizar o atendimento.
Na reunião, Emerson passa 5 minutos explicando por que ter uma baixa avaliação na loja de aplicativos é ruim, 10 minutos explicando o processo de pesquisa e como as tendências foram identificadas, 10 minutos revisando algumas das reclamações recentes dos clientes e os últimos 5 minutos passando rapidamente pelas 2 soluções potenciais.
Foi uma maneira eficaz para Emerson se comunicar durante esta reunião?
Durante a reunião, um líder da empresa ficou fixado nos 10 minutos de reclamações de clientes que Emerson apresentou. Após a reunião, essas reclamações foram a única coisa que esse líder de equipe lembrou. Outro líder da empresa focou principalmente na descrição do processo de pesquisa feita por Emerson. O terceiro líder da empresa lembrou das soluções propostas por Emerson, mas não tinha certeza de como essas soluções poderiam ser implementadas.
Na situação acima, é possível perceber que houve uma lacuna significativa entre o que Emerson queria que os líderes de equipe absorvessem e o que eles realmente levaram da reunião. Abaixo está outra abordagem que Emerson poderia considerar.
Como Emerson poderia melhorar essa abordagem?
Contexto, Conflito, Clímax, Encerramento, Conclusão
**Contexto** - Emerson poderia gastar os primeiros 5 minutos introduzindo toda a situação e garantindo que os líderes de equipe entendam como os problemas afetam métricas críticas para a empresa, como receita.
Poderia ser apresentado desta forma: "Atualmente, a classificação do nosso aplicativo na loja de aplicativos é 2.5. As classificações na loja de aplicativos são fundamentais para a Otimização da Loja de Aplicativos, que impacta quantos usuários veem nosso aplicativo nas buscas e como nosso aplicativo é percebido por usuários potenciais. E, claro, o número de usuários que temos está diretamente ligado à receita."
**Conflito** Emerson poderia então dedicar os próximos 5 minutos ou mais para falar sobre o conflito.
Poderia ser algo assim: “Os usuários enviam 42% mais reclamações e relatórios de bugs nos finais de semana. Clientes que enviam uma reclamação que não é respondida em até 48 horas têm 32% menos probabilidade de dar ao nosso aplicativo uma classificação acima de 2 na loja de aplicativos. Melhorar a classificação do nosso aplicativo na loja para 4 aumentaria nossa visibilidade em 20-30%, o que eu projeto que aumentaria a receita em 10%." Claro, Emerson deve estar preparado para justificar esses números.
**Clímax** Após estabelecer as bases, Emerson poderia então passar para o Clímax por cerca de 5 minutos.
Emerson poderia apresentar as soluções propostas, explicar como essas soluções abordariam os problemas apresentados, como essas soluções poderiam ser implementadas nos fluxos de trabalho existentes, quanto custariam, qual seria o ROI das soluções e talvez até mostrar algumas capturas de tela ou wireframes de como as soluções seriam se implementadas. Emerson também poderia compartilhar depoimentos de usuários que tiveram suas reclamações respondidas após mais de 48 horas, e até mesmo um depoimento de um representante atual de atendimento ao cliente da empresa comentando sobre o sistema de tickets atual.
**Encerramento** Agora Emerson pode gastar 5 minutos recapitulando os problemas enfrentados pela empresa, revisitar as soluções propostas e revisar por que essas soluções são as mais adequadas.
**Conclusão** Como esta é uma reunião com alguns stakeholders onde será utilizada comunicação bidirecional, Emerson poderia então planejar deixar 10 minutos para perguntas, para garantir que qualquer coisa que tenha sido confusa para os líderes de equipe seja esclarecida antes do término da reunião.
Se Emerson adotasse a abordagem #2, é muito mais provável que os líderes de equipe absorvam exatamente o que Emerson pretendia que eles absorvessem que a forma como as reclamações e bugs são tratados pode ser melhorada, e que existem 2 soluções que poderiam ser implementadas para realizar essa melhoria. Essa abordagem seria muito mais eficaz para comunicar os dados e a história que Emerson deseja transmitir.
# Conclusão
### Resumo dos pontos principais
- Comunicar é transmitir ou trocar informações.
- Ao comunicar dados, seu objetivo não deve ser apenas passar números para sua audiência. Seu objetivo deve ser contar uma história informada pelos seus dados.
- Existem 2 tipos de comunicação: Comunicação Unidirecional (informação é comunicada sem intenção de resposta) e Comunicação Bidirecional (informação é comunicada de forma interativa).
- Existem muitas estratégias que você pode usar para contar uma história com seus dados. As 5 estratégias que abordamos são:
- Entenda sua audiência, seu meio e seu método de comunicação
- Comece com o fim em mente
- Aborde como uma história real
- Use palavras e frases significativas
- Use emoção
### Recursos recomendados para estudo independente
[The Five C's of Storytelling - Articulate Persuasion](http://articulatepersuasion.com/the-five-cs-of-storytelling/)
[1.4 Your Responsibilities as a Communicator Business Communication for Success (umn.edu)](https://open.lib.umn.edu/businesscommunication/chapter/1-4-your-responsibilities-as-a-communicator/)
[How to Tell a Story with Data (hbr.org)](https://hbr.org/2013/04/how-to-tell-a-story-with-data)
[Two-Way Communication: 4 Tips for a More Engaged Workplace (yourthoughtpartner.com)](https://www.yourthoughtpartner.com/blog/bid/59576/4-steps-to-increase-employee-engagement-through-two-way-communication)
[6 succinct steps to great data storytelling - BarnRaisers, LLC (barnraisersllc.com)](https://barnraisersllc.com/2021/05/02/6-succinct-steps-to-great-data-storytelling/)
[How to Tell a Story With Data | Lucidchart Blog](https://www.lucidchart.com/blog/how-to-tell-a-story-with-data)
[6 Cs of Effective Storytelling on Social Media | Cooler Insights](https://coolerinsights.com/2018/06/effective-storytelling-social-media/)
[The Importance of Emotions In Presentations | Ethos3 - A Presentation Training and Design Agency](https://ethos3.com/2015/02/the-importance-of-emotions-in-presentations/)
[Data storytelling: linking emotions and rational decisions (toucantoco.com)](https://www.toucantoco.com/en/blog/data-storytelling-dataviz)
[Emotional Advertising: How Brands Use Feelings to Get People to Buy (hubspot.com)](https://blog.hubspot.com/marketing/emotions-in-advertising-examples)
[Choosing Colors for Your Presentation Slides | Think Outside The Slide](https://www.thinkoutsidetheslide.com/choosing-colors-for-your-presentation-slides/)
[How To Present Data [10 Expert Tips] | ObservePoint](https://resources.observepoint.com/blog/10-tips-for-presenting-data)
[Microsoft Word - Persuasive Instructions.doc (tpsnva.org)](https://www.tpsnva.org/teach/lq/016/persinstr.pdf)
[The Power of Story for Your Data (thinkhdi.com)](https://www.thinkhdi.com/library/supportworld/2019/power-story-your-data.aspx)
[Common Mistakes in Data Presentation (perceptualedge.com)](https://www.perceptualedge.com/articles/ie/data_presentation.pdf)
[Infographic: Here are 15 Common Data Fallacies to Avoid (visualcapitalist.com)](https://www.visualcapitalist.com/here-are-15-common-data-fallacies-to-avoid/)
[Cherry Picking: When People Ignore Evidence that They Dislike Effectiviology](https://effectiviology.com/cherry-picking/#How_to_avoid_cherry_picking)
[Tell Stories with Data: Communication in Data Science | by Sonali Verghese | Towards Data Science](https://towardsdatascience.com/tell-stories-with-data-communication-in-data-science-5266f7671d7)
[1. Communicating Data - Communicating Data with Tableau [Book] (oreilly.com)](https://www.oreilly.com/library/view/communicating-data-with/9781449372019/ch01.html)
## [Post-lecture quiz](https://ff-quizzes.netlify.app/en/ds/quiz/31)
Revise o que você acabou de aprender com o Quiz Pós-Aula acima!
## Tarefa
[Market Research](assignment.md)
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução.

@ -0,0 +1,17 @@
# Conte uma história
## Instruções
Ciência de Dados é, acima de tudo, sobre contar histórias. Escolha qualquer conjunto de dados e escreva um pequeno artigo sobre uma história que você poderia contar com ele. O que você espera que seu conjunto de dados revele? O que você fará se as revelações forem problemáticas? E se seus dados não revelarem seus segredos facilmente? Pense nos cenários que seu conjunto de dados pode apresentar e escreva sobre eles.
## Rubrica
Exemplar | Adequado | Precisa de Melhorias
--- | --- | -- |
Um ensaio de uma página é apresentado em formato .doc com o conjunto de dados explicado, documentado, creditado, e uma história coerente é apresentada sobre ele com exemplos detalhados dos dados. | Um ensaio mais curto é apresentado em um formato menos detalhado | O ensaio apresenta falhas em um dos detalhes acima.
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

@ -0,0 +1,21 @@
# O Ciclo de Vida da Ciência de Dados
![communication](../../../translated_images/pt-BR/communication.06d8e2a88d30d168d661ad9f9f0a4f947ebff3719719cfdaf9ed00a406a01ead.jpg)
> Foto por <a href="https://unsplash.com/@headwayio?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Headway</a> no <a href="https://unsplash.com/s/photos/communication?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Unsplash</a>
Nestes módulos, você explorará alguns aspectos do ciclo de vida da Ciência de Dados, incluindo análise e comunicação de dados.
### Tópicos
1. [Introdução](14-Introduction/README.md)
2. [Análise](15-analyzing/README.md)
3. [Comunicação](16-communication/README.md)
### Créditos
Esses módulos foram escritos com ❤️ por [Jalen McGee](https://twitter.com/JalenMCG) e [Jasmine Greenaway](https://twitter.com/paladique)
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

@ -0,0 +1,107 @@
# Introdução à Ciência de Dados na Nuvem
|![ Sketchnote por [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/17-DataScience-Cloud.png)|
|:---:|
| Ciência de Dados na Nuvem: Introdução - _Sketchnote por [@nitya](https://twitter.com/nitya)_ |
Nesta lição, você aprenderá os princípios fundamentais da Nuvem, verá por que pode ser interessante usar serviços de Nuvem para executar seus projetos de ciência de dados e analisará alguns exemplos de projetos de ciência de dados realizados na Nuvem.
## [Quiz Pré-Aula](https://ff-quizzes.netlify.app/en/ds/quiz/32)
## O que é a Nuvem?
A Nuvem, ou Computação em Nuvem, é a entrega de uma ampla gama de serviços de computação sob demanda, hospedados em uma infraestrutura pela internet. Esses serviços incluem soluções como armazenamento, bancos de dados, redes, software, análises e serviços inteligentes.
Normalmente, diferenciamos as Nuvens Pública, Privada e Híbrida da seguinte forma:
* Nuvem pública: uma nuvem pública é propriedade e operada por um provedor de serviços de nuvem terceirizado que entrega seus recursos de computação pela Internet ao público.
* Nuvem privada: refere-se aos recursos de computação em nuvem usados exclusivamente por uma única empresa ou organização, com serviços e infraestrutura mantidos em uma rede privada.
* Nuvem híbrida: a nuvem híbrida é um sistema que combina nuvens públicas e privadas. Os usuários optam por um datacenter local, enquanto permitem que dados e aplicativos sejam executados em uma ou mais nuvens públicas.
A maioria dos serviços de computação em nuvem se enquadra em três categorias: Infraestrutura como Serviço (IaaS), Plataforma como Serviço (PaaS) e Software como Serviço (SaaS).
* Infraestrutura como Serviço (IaaS): os usuários alugam uma infraestrutura de TI, como servidores e máquinas virtuais (VMs), armazenamento, redes e sistemas operacionais.
* Plataforma como Serviço (PaaS): os usuários alugam um ambiente para desenvolver, testar, entregar e gerenciar aplicativos de software. Os usuários não precisam se preocupar em configurar ou gerenciar a infraestrutura subjacente de servidores, armazenamento, rede e bancos de dados necessários para o desenvolvimento.
* Software como Serviço (SaaS): os usuários têm acesso a aplicativos de software pela Internet, sob demanda e, geralmente, com base em assinatura. Os usuários não precisam se preocupar em hospedar e gerenciar o aplicativo de software, a infraestrutura subjacente ou a manutenção, como atualizações de software e correções de segurança.
Alguns dos maiores provedores de Nuvem são Amazon Web Services, Google Cloud Platform e Microsoft Azure.
## Por que escolher a Nuvem para Ciência de Dados?
Desenvolvedores e profissionais de TI escolhem trabalhar com a Nuvem por vários motivos, incluindo os seguintes:
* Inovação: você pode potencializar seus aplicativos integrando serviços inovadores criados por provedores de Nuvem diretamente em seus aplicativos.
* Flexibilidade: você paga apenas pelos serviços que precisa e pode escolher entre uma ampla gama de serviços. Normalmente, você paga conforme usa e adapta seus serviços de acordo com suas necessidades em evolução.
* Orçamento: você não precisa fazer investimentos iniciais para comprar hardware e software, configurar e operar datacenters locais, e pode simplesmente pagar pelo que usar.
* Escalabilidade: seus recursos podem ser escalados de acordo com as necessidades do seu projeto, o que significa que seus aplicativos podem usar mais ou menos poder de computação, armazenamento e largura de banda, adaptando-se a fatores externos a qualquer momento.
* Produtividade: você pode se concentrar no seu negócio em vez de gastar tempo em tarefas que podem ser gerenciadas por outra pessoa, como administrar datacenters.
* Confiabilidade: a Computação em Nuvem oferece várias maneiras de fazer backup contínuo de seus dados e permite configurar planos de recuperação de desastres para manter seu negócio e serviços funcionando, mesmo em tempos de crise.
* Segurança: você pode se beneficiar de políticas, tecnologias e controles que fortalecem a segurança do seu projeto.
Esses são alguns dos motivos mais comuns pelos quais as pessoas escolhem usar serviços de Nuvem. Agora que temos uma melhor compreensão do que é a Nuvem e quais são seus principais benefícios, vamos olhar mais especificamente para o trabalho de cientistas de dados e desenvolvedores que trabalham com dados, e como a Nuvem pode ajudá-los com vários desafios que podem enfrentar:
* Armazenar grandes volumes de dados: em vez de comprar, gerenciar e proteger grandes servidores, você pode armazenar seus dados diretamente na nuvem, com soluções como Azure Cosmos DB, Azure SQL Database e Azure Data Lake Storage.
* Realizar integração de dados: a integração de dados é uma parte essencial da Ciência de Dados, que permite fazer a transição da coleta de dados para a tomada de ações. Com serviços de integração de dados oferecidos na nuvem, você pode coletar, transformar e integrar dados de várias fontes em um único data warehouse, com o Data Factory.
* Processar dados: processar grandes volumes de dados requer muito poder de computação, e nem todos têm acesso a máquinas poderosas o suficiente para isso, razão pela qual muitas pessoas escolhem aproveitar diretamente o enorme poder de computação da nuvem para executar e implantar suas soluções.
* Usar serviços de análise de dados: serviços de nuvem como Azure Synapse Analytics, Azure Stream Analytics e Azure Databricks ajudam você a transformar seus dados em insights acionáveis.
* Usar serviços de aprendizado de máquina e inteligência de dados: em vez de começar do zero, você pode usar algoritmos de aprendizado de máquina oferecidos pelo provedor de nuvem, com serviços como AzureML. Você também pode usar serviços cognitivos, como conversão de fala para texto, texto para fala, visão computacional e mais.
## Exemplos de Ciência de Dados na Nuvem
Vamos tornar isso mais tangível analisando alguns cenários.
### Análise de sentimento em redes sociais em tempo real
Começaremos com um cenário comumente estudado por pessoas que iniciam no aprendizado de máquina: análise de sentimento em redes sociais em tempo real.
Imagine que você administra um site de notícias e deseja aproveitar dados ao vivo para entender quais conteúdos podem interessar aos seus leitores. Para saber mais sobre isso, você pode criar um programa que realiza análise de sentimento em tempo real de dados de publicações no Twitter, sobre tópicos relevantes para seus leitores.
Os indicadores-chave que você analisará são o volume de tweets sobre tópicos específicos (hashtags) e o sentimento, que é estabelecido usando ferramentas de análise que realizam análise de sentimento em torno dos tópicos especificados.
Os passos necessários para criar este projeto são os seguintes:
* Criar um hub de eventos para entrada de streaming, que coletará dados do Twitter.
* Configurar e iniciar um aplicativo cliente do Twitter, que chamará as APIs de Streaming do Twitter.
* Criar um trabalho de Stream Analytics.
* Especificar a entrada e a consulta do trabalho.
* Criar um destino de saída e especificar a saída do trabalho.
* Iniciar o trabalho.
Para ver o processo completo, confira a [documentação](https://docs.microsoft.com/azure/stream-analytics/stream-analytics-twitter-sentiment-analysis-trends?WT.mc_id=academic-77958-bethanycheum&ocid=AID30411099).
### Análise de artigos científicos
Vamos analisar outro exemplo de um projeto criado por [Dmitry Soshnikov](http://soshnikov.com), um dos autores deste currículo.
Dmitry criou uma ferramenta que analisa artigos sobre COVID. Ao revisar este projeto, você verá como criar uma ferramenta que extrai conhecimento de artigos científicos, obtém insights e ajuda pesquisadores a navegar por grandes coleções de artigos de forma eficiente.
Vamos ver os diferentes passos usados para isso:
* Extrair e pré-processar informações com [Text Analytics for Health](https://docs.microsoft.com/azure/cognitive-services/text-analytics/how-tos/text-analytics-for-health?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109).
* Usar [Azure ML](https://azure.microsoft.com/services/machine-learning?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109) para paralelizar o processamento.
* Armazenar e consultar informações com [Cosmos DB](https://azure.microsoft.com/services/cosmos-db?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109).
* Criar um painel interativo para exploração e visualização de dados usando Power BI.
Para ver o processo completo, visite o [blog de Dmitry](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/).
Como você pode ver, podemos aproveitar os serviços de Nuvem de várias maneiras para realizar Ciência de Dados.
## Nota de Rodapé
Fontes:
* https://azure.microsoft.com/overview/what-is-cloud-computing?ocid=AID3041109
* https://docs.microsoft.com/azure/stream-analytics/stream-analytics-twitter-sentiment-analysis-trends?ocid=AID3041109
* https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/
## Quiz Pós-Aula
## [Quiz Pós-Aula](https://ff-quizzes.netlify.app/en/ds/quiz/33)
## Tarefa
[Pesquisa de Mercado](assignment.md)
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução.

@ -0,0 +1,16 @@
# Pesquisa de Mercado
## Instruções
Nesta lição, você aprendeu que existem vários provedores de nuvem importantes. Faça uma pesquisa de mercado para descobrir o que cada um pode oferecer ao Cientista de Dados. As ofertas são comparáveis? Escreva um artigo descrevendo as ofertas de três ou mais desses provedores de nuvem.
## Rubrica
Exemplar | Adequado | Precisa Melhorar
--- | --- | -- |
Um artigo de uma página descreve as ofertas de ciência de dados de três provedores de nuvem e diferencia entre elas. | Um artigo mais curto é apresentado. | Um artigo é apresentado sem concluir a análise.
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

@ -0,0 +1,341 @@
# Ciência de Dados na Nuvem: O caminho "Low code/No code"
|![ Sketchnote por [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/18-DataScience-Cloud.png)|
|:---:|
| Ciência de Dados na Nuvem: Low Code - _Sketchnote por [@nitya](https://twitter.com/nitya)_ |
Índice:
- [Ciência de Dados na Nuvem: O caminho "Low code/No code"](../../../../5-Data-Science-In-Cloud/18-Low-Code)
- [Quiz Pré-Aula](../../../../5-Data-Science-In-Cloud/18-Low-Code)
- [1. Introdução](../../../../5-Data-Science-In-Cloud/18-Low-Code)
- [1.1 O que é o Azure Machine Learning?](../../../../5-Data-Science-In-Cloud/18-Low-Code)
- [1.2 O Projeto de Previsão de Insuficiência Cardíaca:](../../../../5-Data-Science-In-Cloud/18-Low-Code)
- [1.3 O Conjunto de Dados de Insuficiência Cardíaca:](../../../../5-Data-Science-In-Cloud/18-Low-Code)
- [2. Treinamento Low code/No code de um modelo no Azure ML Studio](../../../../5-Data-Science-In-Cloud/18-Low-Code)
- [2.1 Criar um workspace no Azure ML](../../../../5-Data-Science-In-Cloud/18-Low-Code)
- [2.2 Recursos de Computação](../../../../5-Data-Science-In-Cloud/18-Low-Code)
- [2.2.1 Escolhendo as opções certas para seus recursos de computação](../../../../5-Data-Science-In-Cloud/18-Low-Code)
- [2.2.2 Criando um cluster de computação](../../../../5-Data-Science-In-Cloud/18-Low-Code)
- [2.3 Carregando o Conjunto de Dados](../../../../5-Data-Science-In-Cloud/18-Low-Code)
- [2.4 Treinamento Low code/No code com AutoML](../../../../5-Data-Science-In-Cloud/18-Low-Code)
- [3. Implantação do modelo Low code/No code e consumo do endpoint](../../../../5-Data-Science-In-Cloud/18-Low-Code)
- [3.1 Implantação do modelo](../../../../5-Data-Science-In-Cloud/18-Low-Code)
- [3.2 Consumo do endpoint](../../../../5-Data-Science-In-Cloud/18-Low-Code)
- [🚀 Desafio](../../../../5-Data-Science-In-Cloud/18-Low-Code)
- [Quiz Pós-Aula](../../../../5-Data-Science-In-Cloud/18-Low-Code)
- [Revisão e Autoestudo](../../../../5-Data-Science-In-Cloud/18-Low-Code)
- [Tarefa](../../../../5-Data-Science-In-Cloud/18-Low-Code)
## [Quiz Pré-Aula](https://ff-quizzes.netlify.app/en/ds/quiz/34)
## 1. Introdução
### 1.1 O que é o Azure Machine Learning?
A plataforma de nuvem Azure oferece mais de 200 produtos e serviços em nuvem projetados para ajudar você a criar novas soluções. Cientistas de dados gastam muito esforço explorando e pré-processando dados, além de testar vários tipos de algoritmos de treinamento de modelos para produzir modelos precisos. Essas tarefas consomem tempo e frequentemente utilizam de forma ineficiente recursos de hardware de computação caros.
[Azure ML](https://docs.microsoft.com/azure/machine-learning/overview-what-is-azure-machine-learning?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109) é uma plataforma baseada em nuvem para construir e operar soluções de aprendizado de máquina no Azure. Ela inclui uma ampla gama de recursos e capacidades que ajudam cientistas de dados a preparar dados, treinar modelos, publicar serviços preditivos e monitorar seu uso. O mais importante é que ela aumenta a eficiência ao automatizar muitas das tarefas demoradas associadas ao treinamento de modelos e permite o uso de recursos de computação baseados na nuvem que escalam de forma eficaz para lidar com grandes volumes de dados, incorrendo em custos apenas quando realmente utilizados.
O Azure ML fornece todas as ferramentas que desenvolvedores e cientistas de dados precisam para seus fluxos de trabalho de aprendizado de máquina. Isso inclui:
- **Azure Machine Learning Studio**: um portal web no Azure Machine Learning para opções de treinamento, implantação, automação, rastreamento e gerenciamento de ativos com pouco ou nenhum código. O Studio integra-se ao SDK do Azure Machine Learning para uma experiência contínua.
- **Jupyter Notebooks**: para prototipar e testar rapidamente modelos de aprendizado de máquina.
- **Azure Machine Learning Designer**: permite arrastar e soltar módulos para construir experimentos e, em seguida, implantar pipelines em um ambiente de baixo código.
- **Interface de AutoML**: automatiza tarefas iterativas de desenvolvimento de modelos de aprendizado de máquina, permitindo construir modelos com alta escala, eficiência e produtividade, mantendo a qualidade do modelo.
- **Rotulagem de Dados**: uma ferramenta assistida de aprendizado de máquina para rotular dados automaticamente.
- **Extensão de aprendizado de máquina para o Visual Studio Code**: fornece um ambiente de desenvolvimento completo para construir e gerenciar projetos de aprendizado de máquina.
- **CLI de aprendizado de máquina**: fornece comandos para gerenciar recursos do Azure ML a partir da linha de comando.
- **Integração com frameworks de código aberto** como PyTorch, TensorFlow, Scikit-learn e muitos outros para treinar, implantar e gerenciar o processo de aprendizado de máquina de ponta a ponta.
- **MLflow**: uma biblioteca de código aberto para gerenciar o ciclo de vida de seus experimentos de aprendizado de máquina. **MLFlow Tracking** é um componente do MLflow que registra e rastreia métricas de execução de treinamento e artefatos do modelo, independentemente do ambiente do experimento.
### 1.2 O Projeto de Previsão de Insuficiência Cardíaca:
Não há dúvida de que criar e desenvolver projetos é a melhor maneira de colocar suas habilidades e conhecimentos à prova. Nesta lição, vamos explorar duas maneiras diferentes de construir um projeto de ciência de dados para prever ataques de insuficiência cardíaca no Azure ML Studio, através de Low code/No code e do Azure ML SDK, conforme mostrado no esquema a seguir:
![esquema-do-projeto](../../../../5-Data-Science-In-Cloud/18-Low-Code/images/project-schema.PNG)
Cada abordagem tem seus próprios prós e contras. O método Low code/No code é mais fácil para começar, pois envolve a interação com uma interface gráfica (GUI), sem necessidade de conhecimento prévio de código. Esse método permite testar rapidamente a viabilidade do projeto e criar um POC (Prova de Conceito). No entanto, à medida que o projeto cresce e precisa estar pronto para produção, não é viável criar recursos por meio de uma GUI. É necessário automatizar tudo programaticamente, desde a criação de recursos até a implantação de um modelo. É aqui que o conhecimento do Azure ML SDK se torna essencial.
| | Low code/No code | Azure ML SDK |
|-------------------|------------------|---------------------------|
| Conhecimento de código | Não necessário | Necessário |
| Tempo de desenvolvimento | Rápido e fácil | Depende da experiência em código |
| Pronto para produção | Não | Sim |
### 1.3 O Conjunto de Dados de Insuficiência Cardíaca:
As doenças cardiovasculares (DCVs) são a principal causa de morte no mundo, representando 31% de todas as mortes globalmente. Fatores de risco ambientais e comportamentais, como uso de tabaco, dieta não saudável e obesidade, inatividade física e consumo nocivo de álcool, podem ser usados como características para modelos de estimativa. Ser capaz de estimar a probabilidade de desenvolvimento de uma DCV pode ser muito útil para prevenir ataques em pessoas de alto risco.
O Kaggle disponibilizou publicamente um [conjunto de dados de insuficiência cardíaca](https://www.kaggle.com/andrewmvd/heart-failure-clinical-data), que usaremos neste projeto. Você pode baixar o conjunto de dados agora. Este é um conjunto de dados tabular com 13 colunas (12 características e 1 variável alvo) e 299 linhas.
| | Nome da variável | Tipo | Descrição | Exemplo |
|----|---------------------------|-----------------|---------------------------------------------------------|-------------------|
| 1 | age | numérico | idade do paciente | 25 |
| 2 | anaemia | booleano | Diminuição de glóbulos vermelhos ou hemoglobina | 0 ou 1 |
| 3 | creatinine_phosphokinase | numérico | Nível da enzima CPK no sangue | 542 |
| 4 | diabetes | booleano | Se o paciente tem diabetes | 0 ou 1 |
| 5 | ejection_fraction | numérico | Percentual de sangue que sai do coração a cada contração | 45 |
| 6 | high_blood_pressure | booleano | Se o paciente tem hipertensão | 0 ou 1 |
| 7 | platelets | numérico | Plaquetas no sangue | 149000 |
| 8 | serum_creatinine | numérico | Nível de creatinina sérica no sangue | 0.5 |
| 9 | serum_sodium | numérico | Nível de sódio sérico no sangue | jun |
| 10 | sex | booleano | mulher ou homem | 0 ou 1 |
| 11 | smoking | booleano | Se o paciente fuma | 0 ou 1 |
| 12 | time | numérico | período de acompanhamento (dias) | 4 |
|----|---------------------------|-----------------|---------------------------------------------------------|-------------------|
| 21 | DEATH_EVENT [Alvo] | booleano | se o paciente morre durante o período de acompanhamento | 0 ou 1 |
Depois de obter o conjunto de dados, podemos começar o projeto no Azure.
## 2. Treinamento Low code/No code de um modelo no Azure ML Studio
### 2.1 Criar um workspace no Azure ML
Para treinar um modelo no Azure ML, você precisa primeiro criar um workspace no Azure ML. O workspace é o recurso de nível superior para o Azure Machine Learning, fornecendo um local centralizado para trabalhar com todos os artefatos que você cria ao usar o Azure Machine Learning. O workspace mantém um histórico de todas as execuções de treinamento, incluindo logs, métricas, saídas e um snapshot de seus scripts. Você usa essas informações para determinar qual execução de treinamento produz o melhor modelo. [Saiba mais](https://docs.microsoft.com/azure/machine-learning/concept-workspace?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109)
Recomenda-se usar o navegador mais atualizado compatível com seu sistema operacional. Os seguintes navegadores são suportados:
- Microsoft Edge (O novo Microsoft Edge, versão mais recente. Não o Microsoft Edge legado)
- Safari (versão mais recente, apenas para Mac)
- Chrome (versão mais recente)
- Firefox (versão mais recente)
Para usar o Azure Machine Learning, crie um workspace em sua assinatura do Azure. Você pode então usar esse workspace para gerenciar dados, recursos de computação, código, modelos e outros artefatos relacionados às suas cargas de trabalho de aprendizado de máquina.
> **_NOTA:_** Sua assinatura do Azure será cobrada uma pequena quantia pelo armazenamento de dados enquanto o workspace do Azure Machine Learning existir em sua assinatura. Portanto, recomendamos que você exclua o workspace do Azure Machine Learning quando não estiver mais usando.
1. Faça login no [portal do Azure](https://ms.portal.azure.com/) usando as credenciais da Microsoft associadas à sua assinatura do Azure.
2. Selecione **Criar um recurso**
![workspace-1](../../../../5-Data-Science-In-Cloud/18-Low-Code/images/workspace-1.PNG)
Pesquise por Machine Learning e selecione o tile Machine Learning.
![workspace-2](../../../../5-Data-Science-In-Cloud/18-Low-Code/images/workspace-2.PNG)
Clique no botão criar.
![workspace-3](../../../../5-Data-Science-In-Cloud/18-Low-Code/images/workspace-3.PNG)
Preencha as configurações da seguinte forma:
- Assinatura: Sua assinatura do Azure
- Grupo de recursos: Crie ou selecione um grupo de recursos
- Nome do workspace: Insira um nome único para seu workspace
- Região: Selecione a região geográfica mais próxima de você
- Conta de armazenamento: Observe a nova conta de armazenamento padrão que será criada para seu workspace
- Cofre de chaves: Observe o novo cofre de chaves padrão que será criado para seu workspace
- Insights de aplicação: Observe o novo recurso de insights de aplicação padrão que será criado para seu workspace
- Registro de contêiner: Nenhum (um será criado automaticamente na primeira vez que você implantar um modelo em um contêiner)
![workspace-4](../../../../5-Data-Science-In-Cloud/18-Low-Code/images/workspace-4.PNG)
- Clique em criar + revisar e, em seguida, no botão criar.
3. Aguarde a criação do seu workspace (isso pode levar alguns minutos). Depois, acesse-o no portal. Você pode encontrá-lo através do serviço Azure Machine Learning.
4. Na página de visão geral do seu workspace, inicie o Azure Machine Learning Studio (ou abra uma nova aba do navegador e navegue até https://ml.azure.com), e faça login no Azure Machine Learning Studio usando sua conta Microsoft. Se solicitado, selecione seu diretório e assinatura do Azure, e seu workspace do Azure Machine Learning.
![workspace-5](../../../../5-Data-Science-In-Cloud/18-Low-Code/images/workspace-5.PNG)
5. No Azure Machine Learning Studio, alterne o ícone ☰ no canto superior esquerdo para visualizar as várias páginas da interface. Você pode usar essas páginas para gerenciar os recursos do seu workspace.
![workspace-6](../../../../5-Data-Science-In-Cloud/18-Low-Code/images/workspace-6.PNG)
Você pode gerenciar seu workspace usando o portal do Azure, mas para cientistas de dados e engenheiros de operações de aprendizado de máquina, o Azure Machine Learning Studio fornece uma interface de usuário mais focada para gerenciar os recursos do workspace.
### 2.2 Recursos de Computação
Os Recursos de Computação são recursos baseados na nuvem nos quais você pode executar processos de treinamento de modelo e exploração de dados. Existem quatro tipos de recursos de computação que você pode criar:
- **Instâncias de Computação**: Estações de trabalho de desenvolvimento que cientistas de dados podem usar para trabalhar com dados e modelos. Isso envolve a criação de uma Máquina Virtual (VM) e o lançamento de uma instância de notebook. Você pode então treinar um modelo chamando um cluster de computação a partir do notebook.
- **Clusters de Computação**: Clusters escaláveis de VMs para processamento sob demanda de código de experimentos. Você precisará deles ao treinar um modelo. Clusters de computação também podem empregar recursos especializados de GPU ou CPU.
- **Clusters de Inferência**: Alvos de implantação para serviços preditivos que usam seus modelos treinados.
- **Attached Compute**: Links para recursos de computação existentes no Azure, como Máquinas Virtuais ou clusters do Azure Databricks.
#### 2.2.1 Escolhendo as opções certas para seus recursos de computação
Alguns fatores importantes devem ser considerados ao criar um recurso de computação, e essas escolhas podem ser decisões críticas.
**Você precisa de CPU ou GPU?**
Uma CPU (Unidade Central de Processamento) é o circuito eletrônico que executa instruções que compõem um programa de computador. Uma GPU (Unidade de Processamento Gráfico) é um circuito eletrônico especializado que pode executar código relacionado a gráficos em uma taxa muito alta.
A principal diferença entre a arquitetura de CPU e GPU é que uma CPU é projetada para lidar com uma ampla gama de tarefas rapidamente (medida pela velocidade do clock da CPU), mas é limitada na simultaneidade das tarefas que podem ser executadas. GPUs são projetadas para computação paralela e, portanto, são muito melhores para tarefas de aprendizado profundo.
| CPU | GPU |
|-----------------------------------------|-----------------------------|
| Menos caro | Mais caro |
| Menor nível de simultaneidade | Maior nível de simultaneidade |
| Mais lento no treinamento de modelos de aprendizado profundo | Ideal para aprendizado profundo |
**Tamanho do Cluster**
Clusters maiores são mais caros, mas resultarão em melhor capacidade de resposta. Portanto, se você tem tempo, mas não muito dinheiro, deve começar com um cluster pequeno. Por outro lado, se você tem dinheiro, mas pouco tempo, deve começar com um cluster maior.
**Tamanho da VM**
Dependendo das suas restrições de tempo e orçamento, você pode variar o tamanho da RAM, disco, número de núcleos e velocidade do clock. Aumentar todos esses parâmetros será mais caro, mas resultará em melhor desempenho.
**Instâncias Dedicadas ou de Baixa Prioridade?**
Uma instância de baixa prioridade significa que ela é interrompível: essencialmente, o Microsoft Azure pode tomar esses recursos e atribuí-los a outra tarefa, interrompendo assim um trabalho. Uma instância dedicada, ou não interrompível, significa que o trabalho nunca será encerrado sem sua permissão.
Essa é outra consideração entre tempo e dinheiro, já que instâncias interrompíveis são menos caras do que as dedicadas.
#### 2.2.2 Criando um cluster de computação
No [workspace do Azure ML](https://ml.azure.com/) que criamos anteriormente, vá para a seção de computação e você poderá ver os diferentes recursos de computação que discutimos (ou seja, instâncias de computação, clusters de computação, clusters de inferência e computação anexada). Para este projeto, precisaremos de um cluster de computação para o treinamento do modelo. No Studio, clique no menu "Compute", depois na aba "Compute cluster" e clique no botão "+ New" para criar um cluster de computação.
![22](../../../../5-Data-Science-In-Cloud/18-Low-Code/images/cluster-1.PNG)
1. Escolha suas opções: Dedicado vs Baixa prioridade, CPU ou GPU, tamanho da VM e número de núcleos (você pode manter as configurações padrão para este projeto).
2. Clique no botão Next.
![23](../../../../5-Data-Science-In-Cloud/18-Low-Code/images/cluster-2.PNG)
3. Dê um nome ao cluster de computação.
4. Escolha suas opções: Número mínimo/máximo de nós, segundos de inatividade antes de reduzir o tamanho, acesso SSH. Observe que, se o número mínimo de nós for 0, você economizará dinheiro quando o cluster estiver inativo. Note que quanto maior o número máximo de nós, mais curto será o treinamento. O número máximo de nós recomendado é 3.
5. Clique no botão "Create". Esta etapa pode levar alguns minutos.
![29](../../../../5-Data-Science-In-Cloud/18-Low-Code/images/cluster-3.PNG)
Incrível! Agora que temos um cluster de computação, precisamos carregar os dados para o Azure ML Studio.
### 2.3 Carregando o Conjunto de Dados
1. No [workspace do Azure ML](https://ml.azure.com/) que criamos anteriormente, clique em "Datasets" no menu à esquerda e clique no botão "+ Create dataset" para criar um conjunto de dados. Escolha a opção "From local files" e selecione o conjunto de dados do Kaggle que baixamos anteriormente.
![24](../../../../5-Data-Science-In-Cloud/18-Low-Code/images/dataset-1.PNG)
2. Dê um nome, um tipo e uma descrição ao seu conjunto de dados. Clique em Next. Faça o upload dos dados a partir dos arquivos. Clique em Next.
![25](../../../../5-Data-Science-In-Cloud/18-Low-Code/images/dataset-2.PNG)
3. No Schema, altere o tipo de dado para Boolean para as seguintes características: anaemia, diabetes, high blood pressure, sex, smoking e DEATH_EVENT. Clique em Next e depois em Create.
![26](../../../../5-Data-Science-In-Cloud/18-Low-Code/images/dataset-3.PNG)
Ótimo! Agora que o conjunto de dados está configurado e o cluster de computação foi criado, podemos começar o treinamento do modelo!
### 2.4 Treinamento com pouco ou nenhum código usando AutoML
O desenvolvimento tradicional de modelos de aprendizado de máquina é intensivo em recursos, exige conhecimento significativo do domínio e tempo para produzir e comparar dezenas de modelos.
O aprendizado de máquina automatizado (AutoML) é o processo de automatizar as tarefas iterativas e demoradas do desenvolvimento de modelos de aprendizado de máquina. Ele permite que cientistas de dados, analistas e desenvolvedores criem modelos de aprendizado de máquina com alta escala, eficiência e produtividade, mantendo a qualidade do modelo. Isso reduz o tempo necessário para obter modelos prontos para produção, com grande facilidade e eficiência. [Saiba mais](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109)
1. No [workspace do Azure ML](https://ml.azure.com/) que criamos anteriormente, clique em "Automated ML" no menu à esquerda e selecione o conjunto de dados que você acabou de carregar. Clique em Next.
![27](../../../../5-Data-Science-In-Cloud/18-Low-Code/images/aml-1.PNG)
2. Insira um novo nome de experimento, a coluna alvo (DEATH_EVENT) e o cluster de computação que criamos. Clique em Next.
![28](../../../../5-Data-Science-In-Cloud/18-Low-Code/images/aml-2.PNG)
3. Escolha "Classification" e clique em Finish. Esta etapa pode levar entre 30 minutos e 1 hora, dependendo do tamanho do cluster de computação.
![30](../../../../5-Data-Science-In-Cloud/18-Low-Code/images/aml-3.PNG)
4. Quando a execução for concluída, clique na aba "Automated ML", clique na sua execução e clique no Algoritmo no cartão "Best model summary".
![31](../../../../5-Data-Science-In-Cloud/18-Low-Code/images/aml-4.PNG)
Aqui você pode ver uma descrição detalhada do melhor modelo que o AutoML gerou. Você também pode explorar outros modelos gerados na aba Models. Reserve alguns minutos para explorar os modelos na seção Explanations (botão preview). Depois de escolher o modelo que deseja usar (aqui escolheremos o melhor modelo selecionado pelo AutoML), veremos como podemos implantá-lo.
## 3. Implantação de modelo com pouco ou nenhum código e consumo de endpoint
### 3.1 Implantação do modelo
A interface de aprendizado de máquina automatizado permite implantar o melhor modelo como um serviço web em algumas etapas. A implantação é a integração do modelo para que ele possa fazer previsões com base em novos dados e identificar possíveis áreas de oportunidade. Para este projeto, a implantação em um serviço web significa que aplicativos médicos poderão consumir o modelo para fazer previsões ao vivo sobre o risco de seus pacientes sofrerem um ataque cardíaco.
Na descrição do melhor modelo, clique no botão "Deploy".
![deploy-1](../../../../5-Data-Science-In-Cloud/18-Low-Code/images/deploy-1.PNG)
15. Dê um nome, uma descrição, tipo de computação (Azure Container Instance), habilite a autenticação e clique em Deploy. Esta etapa pode levar cerca de 20 minutos para ser concluída. O processo de implantação envolve várias etapas, incluindo o registro do modelo, a geração de recursos e sua configuração para o serviço web. Uma mensagem de status aparece em Deploy status. Selecione Refresh periodicamente para verificar o status da implantação. Ele estará implantado e em execução quando o status for "Healthy".
![deploy-2](../../../../5-Data-Science-In-Cloud/18-Low-Code/images/deploy-2.PNG)
16. Depois de implantado, clique na aba Endpoint e clique no endpoint que você acabou de implantar. Aqui você pode encontrar todos os detalhes que precisa saber sobre o endpoint.
![deploy-3](../../../../5-Data-Science-In-Cloud/18-Low-Code/images/deploy-3.PNG)
Incrível! Agora que temos um modelo implantado, podemos começar o consumo do endpoint.
### 3.2 Consumo do Endpoint
Clique na aba "Consume". Aqui você pode encontrar o endpoint REST e um script Python na opção de consumo. Reserve um tempo para ler o código Python.
Este script pode ser executado diretamente da sua máquina local e consumirá seu endpoint.
![35](../../../../5-Data-Science-In-Cloud/18-Low-Code/images/consumption-1.PNG)
Reserve um momento para verificar estas 2 linhas de código:
```python
url = 'http://98e3715f-xxxx-xxxx-xxxx-9ec22d57b796.centralus.azurecontainer.io/score'
api_key = '' # Replace this with the API key for the web service
```
A variável `url` é o endpoint REST encontrado na aba de consumo e a variável `api_key` é a chave primária também encontrada na aba de consumo (somente no caso de você ter habilitado a autenticação). É assim que o script pode consumir o endpoint.
18. Ao executar o script, você deve ver a seguinte saída:
```python
b'"{\\"result\\": [true]}"'
```
Isso significa que a previsão de falha cardíaca para os dados fornecidos é verdadeira. Isso faz sentido porque, se você observar mais de perto os dados gerados automaticamente no script, tudo está em 0 e falso por padrão. Você pode alterar os dados com o seguinte exemplo de entrada:
```python
data = {
"data":
[
{
'age': "0",
'anaemia': "false",
'creatinine_phosphokinase': "0",
'diabetes': "false",
'ejection_fraction': "0",
'high_blood_pressure': "false",
'platelets': "0",
'serum_creatinine': "0",
'serum_sodium': "0",
'sex': "false",
'smoking': "false",
'time': "0",
},
{
'age': "60",
'anaemia': "false",
'creatinine_phosphokinase': "500",
'diabetes': "false",
'ejection_fraction': "38",
'high_blood_pressure': "false",
'platelets': "260000",
'serum_creatinine': "1.40",
'serum_sodium': "137",
'sex': "false",
'smoking': "false",
'time': "130",
},
],
}
```
O script deve retornar:
```python
b'"{\\"result\\": [true, false]}"'
```
Parabéns! Você acabou de consumir o modelo implantado e treinado no Azure ML!
> **_NOTA:_** Quando terminar o projeto, não se esqueça de excluir todos os recursos.
## 🚀 Desafio
Observe atentamente as explicações e os detalhes do modelo que o AutoML gerou para os principais modelos. Tente entender por que o melhor modelo é melhor do que os outros. Quais algoritmos foram comparados? Quais são as diferenças entre eles? Por que o melhor está tendo um desempenho superior neste caso?
## [Questionário pós-aula](https://ff-quizzes.netlify.app/en/ds/quiz/35)
## Revisão e Autoestudo
Nesta lição, você aprendeu como treinar, implantar e consumir um modelo para prever o risco de falha cardíaca de forma Low code/No code na nuvem. Se ainda não fez isso, aprofunde-se nas explicações do modelo que o AutoML gerou para os principais modelos e tente entender por que o melhor modelo é melhor que os outros.
Você pode ir além no AutoML Low code/No code lendo esta [documentação](https://docs.microsoft.com/azure/machine-learning/tutorial-first-experiment-automated-ml?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109).
## Tarefa
[Projeto de Ciência de Dados Low code/No code no Azure ML](assignment.md)
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

@ -0,0 +1,16 @@
# Projeto de Ciência de Dados com Baixo Código/Sem Código no Azure ML
## Instruções
Vimos como usar a plataforma Azure ML para treinar, implantar e consumir um modelo de forma com baixo código/sem código. Agora procure por alguns dados que você possa usar para treinar outro modelo, implantá-lo e consumi-lo. Você pode buscar conjuntos de dados no [Kaggle](https://kaggle.com) e [Azure Open Datasets](https://azure.microsoft.com/services/open-datasets/catalog?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109).
## Critérios de Avaliação
| Exemplar | Adequado | Precisa Melhorar |
|----------|----------|------------------|
|Ao carregar os dados, você se certificou de alterar o tipo das características, se necessário. Você também limpou os dados, caso fosse necessário. Você realizou um treinamento em um conjunto de dados usando AutoML e verificou as explicações do modelo. Você implantou o melhor modelo e conseguiu consumi-lo. | Ao carregar os dados, você se certificou de alterar o tipo das características, se necessário. Você realizou um treinamento em um conjunto de dados usando AutoML, implantou o melhor modelo e conseguiu consumi-lo. | Você implantou o melhor modelo treinado pelo AutoML e conseguiu consumi-lo. |
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

@ -0,0 +1,303 @@
# Ciência de Dados na Nuvem: O caminho do "Azure ML SDK"
|![ Sketchnote por [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/19-DataScience-Cloud.png)|
|:---:|
| Ciência de Dados na Nuvem: Azure ML SDK - _Sketchnote por [@nitya](https://twitter.com/nitya)_ |
Índice:
- [Ciência de Dados na Nuvem: O caminho do "Azure ML SDK"](../../../../5-Data-Science-In-Cloud/19-Azure)
- [Quiz Pré-Aula](../../../../5-Data-Science-In-Cloud/19-Azure)
- [1. Introdução](../../../../5-Data-Science-In-Cloud/19-Azure)
- [1.1 O que é o Azure ML SDK?](../../../../5-Data-Science-In-Cloud/19-Azure)
- [1.2 Introdução ao projeto de previsão de insuficiência cardíaca e ao conjunto de dados](../../../../5-Data-Science-In-Cloud/19-Azure)
- [2. Treinando um modelo com o Azure ML SDK](../../../../5-Data-Science-In-Cloud/19-Azure)
- [2.1 Criar um workspace do Azure ML](../../../../5-Data-Science-In-Cloud/19-Azure)
- [2.2 Criar uma instância de computação](../../../../5-Data-Science-In-Cloud/19-Azure)
- [2.3 Carregando o conjunto de dados](../../../../5-Data-Science-In-Cloud/19-Azure)
- [2.4 Criando Notebooks](../../../../5-Data-Science-In-Cloud/19-Azure)
- [2.5 Treinando um modelo](../../../../5-Data-Science-In-Cloud/19-Azure)
- [2.5.1 Configurar Workspace, experimento, cluster de computação e conjunto de dados](../../../../5-Data-Science-In-Cloud/19-Azure)
- [2.5.2 Configuração e treinamento com AutoML](../../../../5-Data-Science-In-Cloud/19-Azure)
- [3. Implantação do modelo e consumo do endpoint com o Azure ML SDK](../../../../5-Data-Science-In-Cloud/19-Azure)
- [3.1 Salvando o melhor modelo](../../../../5-Data-Science-In-Cloud/19-Azure)
- [3.2 Implantação do modelo](../../../../5-Data-Science-In-Cloud/19-Azure)
- [3.3 Consumo do endpoint](../../../../5-Data-Science-In-Cloud/19-Azure)
- [🚀 Desafio](../../../../5-Data-Science-In-Cloud/19-Azure)
- [Quiz Pós-Aula](../../../../5-Data-Science-In-Cloud/19-Azure)
- [Revisão e Autoestudo](../../../../5-Data-Science-In-Cloud/19-Azure)
- [Tarefa](../../../../5-Data-Science-In-Cloud/19-Azure)
## [Quiz Pré-Aula](https://ff-quizzes.netlify.app/en/ds/quiz/36)
## 1. Introdução
### 1.1 O que é o Azure ML SDK?
Cientistas de dados e desenvolvedores de IA utilizam o Azure Machine Learning SDK para construir e executar fluxos de trabalho de aprendizado de máquina com o serviço Azure Machine Learning. Você pode interagir com o serviço em qualquer ambiente Python, incluindo Jupyter Notebooks, Visual Studio Code ou seu IDE Python favorito.
Áreas principais do SDK incluem:
- Explorar, preparar e gerenciar o ciclo de vida dos conjuntos de dados usados em experimentos de aprendizado de máquina.
- Gerenciar recursos na nuvem para monitoramento, registro e organização de seus experimentos de aprendizado de máquina.
- Treinar modelos localmente ou utilizando recursos na nuvem, incluindo treinamento acelerado por GPU.
- Usar aprendizado de máquina automatizado, que aceita parâmetros de configuração e dados de treinamento. Ele itera automaticamente entre algoritmos e configurações de hiperparâmetros para encontrar o melhor modelo para realizar previsões.
- Implantar serviços web para converter seus modelos treinados em serviços RESTful que podem ser consumidos em qualquer aplicação.
[Saiba mais sobre o Azure Machine Learning SDK](https://docs.microsoft.com/python/api/overview/azure/ml?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109)
Na [lição anterior](../18-Low-Code/README.md), vimos como treinar, implantar e consumir um modelo de forma Low code/No code. Utilizamos o conjunto de dados de insuficiência cardíaca para gerar um modelo de previsão de insuficiência cardíaca. Nesta lição, faremos exatamente a mesma coisa, mas utilizando o Azure Machine Learning SDK.
![esquema-do-projeto](../../../../5-Data-Science-In-Cloud/19-Azure/images/project-schema.PNG)
### 1.2 Introdução ao projeto de previsão de insuficiência cardíaca e ao conjunto de dados
Confira [aqui](../18-Low-Code/README.md) a introdução ao projeto de previsão de insuficiência cardíaca e ao conjunto de dados.
## 2. Treinando um modelo com o Azure ML SDK
### 2.1 Criar um workspace do Azure ML
Para simplificar, vamos trabalhar em um notebook Jupyter. Isso implica que você já possui um Workspace e uma instância de computação. Se você já tem um Workspace, pode pular diretamente para a seção 2.3 Criação de Notebooks.
Caso contrário, siga as instruções na seção **2.1 Criar um workspace do Azure ML** na [lição anterior](../18-Low-Code/README.md) para criar um workspace.
### 2.2 Criar uma instância de computação
No [workspace do Azure ML](https://ml.azure.com/) que criamos anteriormente, vá ao menu de computação e você verá os diferentes recursos de computação disponíveis.
![instância-de-computação-1](../../../../5-Data-Science-In-Cloud/19-Azure/images/compute-instance-1.PNG)
Vamos criar uma instância de computação para provisionar um notebook Jupyter.
1. Clique no botão + Novo.
2. Dê um nome à sua instância de computação.
3. Escolha suas opções: CPU ou GPU, tamanho da VM e número de núcleos.
4. Clique no botão Criar.
Parabéns, você acabou de criar uma instância de computação! Usaremos essa instância de computação para criar um Notebook na seção [Criação de Notebooks](../../../../5-Data-Science-In-Cloud/19-Azure).
### 2.3 Carregando o conjunto de dados
Consulte a [lição anterior](../18-Low-Code/README.md) na seção **2.3 Carregando o conjunto de dados** caso ainda não tenha carregado o conjunto de dados.
### 2.4 Criando Notebooks
> **_NOTA:_** Para o próximo passo, você pode criar um novo notebook do zero ou carregar o [notebook que criamos](../../../../5-Data-Science-In-Cloud/19-Azure/notebook.ipynb) no seu Azure ML Studio. Para carregá-lo, basta clicar no menu "Notebook" e carregar o notebook.
Notebooks são uma parte muito importante do processo de ciência de dados. Eles podem ser usados para realizar Análise Exploratória de Dados (EDA), chamar um cluster de computação para treinar um modelo ou chamar um cluster de inferência para implantar um endpoint.
Para criar um Notebook, precisamos de um nó de computação que esteja servindo a instância do notebook Jupyter. Volte ao [workspace do Azure ML](https://ml.azure.com/) e clique em Instâncias de computação. Na lista de instâncias de computação, você deve ver a [instância de computação que criamos anteriormente](../../../../5-Data-Science-In-Cloud/19-Azure).
1. Na seção Aplicativos, clique na opção Jupyter.
2. Marque a caixa "Sim, eu entendo" e clique no botão Continuar.
![notebook-1](../../../../5-Data-Science-In-Cloud/19-Azure/images/notebook-1.PNG)
3. Isso deve abrir uma nova aba no navegador com sua instância de notebook Jupyter. Clique no botão "Novo" para criar um notebook.
![notebook-2](../../../../5-Data-Science-In-Cloud/19-Azure/images/notebook-2.PNG)
Agora que temos um Notebook, podemos começar a treinar o modelo com o Azure ML SDK.
### 2.5 Treinando um modelo
Primeiramente, se você tiver alguma dúvida, consulte a [documentação do Azure ML SDK](https://docs.microsoft.com/python/api/overview/azure/ml?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109). Ela contém todas as informações necessárias para entender os módulos que veremos nesta lição.
#### 2.5.1 Configurar Workspace, experimento, cluster de computação e conjunto de dados
Você precisa carregar o `workspace` a partir do arquivo de configuração usando o seguinte código:
```python
from azureml.core import Workspace
ws = Workspace.from_config()
```
Isso retorna um objeto do tipo `Workspace` que representa o workspace. Em seguida, você precisa criar um `experimento` usando o seguinte código:
```python
from azureml.core import Experiment
experiment_name = 'aml-experiment'
experiment = Experiment(ws, experiment_name)
```
Para obter ou criar um experimento a partir de um workspace, você solicita o experimento usando o nome do experimento. O nome do experimento deve ter entre 3 e 36 caracteres, começar com uma letra ou número e conter apenas letras, números, sublinhados e traços. Se o experimento não for encontrado no workspace, um novo experimento será criado.
Agora você precisa criar um cluster de computação para o treinamento usando o seguinte código. Note que esta etapa pode levar alguns minutos.
```python
from azureml.core.compute import AmlCompute
aml_name = "heart-f-cluster"
try:
aml_compute = AmlCompute(ws, aml_name)
print('Found existing AML compute context.')
except:
print('Creating new AML compute context.')
aml_config = AmlCompute.provisioning_configuration(vm_size = "Standard_D2_v2", min_nodes=1, max_nodes=3)
aml_compute = AmlCompute.create(ws, name = aml_name, provisioning_configuration = aml_config)
aml_compute.wait_for_completion(show_output = True)
cts = ws.compute_targets
compute_target = cts[aml_name]
```
Você pode obter o conjunto de dados do workspace usando o nome do conjunto de dados da seguinte forma:
```python
dataset = ws.datasets['heart-failure-records']
df = dataset.to_pandas_dataframe()
df.describe()
```
#### 2.5.2 Configuração e treinamento com AutoML
Para configurar o AutoML, use a classe [AutoMLConfig](https://docs.microsoft.com/python/api/azureml-train-automl-client/azureml.train.automl.automlconfig(class)?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109).
Conforme descrito na documentação, há muitos parâmetros com os quais você pode trabalhar. Para este projeto, usaremos os seguintes parâmetros:
- `experiment_timeout_minutes`: O tempo máximo (em minutos) que o experimento pode ser executado antes de ser automaticamente interrompido e os resultados serem disponibilizados automaticamente.
- `max_concurrent_iterations`: O número máximo de iterações de treinamento simultâneas permitidas para o experimento.
- `primary_metric`: A métrica principal usada para determinar o status do experimento.
- `compute_target`: O alvo de computação do Azure Machine Learning para executar o experimento de aprendizado de máquina automatizado.
- `task`: O tipo de tarefa a ser executada. Os valores podem ser 'classification', 'regression' ou 'forecasting', dependendo do tipo de problema de aprendizado de máquina automatizado a ser resolvido.
- `training_data`: Os dados de treinamento a serem usados no experimento. Deve conter tanto as características de treinamento quanto uma coluna de rótulo (opcionalmente uma coluna de pesos de amostra).
- `label_column_name`: O nome da coluna de rótulo.
- `path`: O caminho completo para a pasta do projeto do Azure Machine Learning.
- `enable_early_stopping`: Indica se a interrupção antecipada deve ser habilitada caso a pontuação não esteja melhorando no curto prazo.
- `featurization`: Indicador para determinar se a etapa de featurização deve ser feita automaticamente ou não, ou se uma featurização personalizada deve ser usada.
- `debug_log`: O arquivo de log para gravar informações de depuração.
```python
from azureml.train.automl import AutoMLConfig
project_folder = './aml-project'
automl_settings = {
"experiment_timeout_minutes": 20,
"max_concurrent_iterations": 3,
"primary_metric" : 'AUC_weighted'
}
automl_config = AutoMLConfig(compute_target=compute_target,
task = "classification",
training_data=dataset,
label_column_name="DEATH_EVENT",
path = project_folder,
enable_early_stopping= True,
featurization= 'auto',
debug_log = "automl_errors.log",
**automl_settings
)
```
Agora que você configurou, pode treinar o modelo usando o seguinte código. Esta etapa pode levar até uma hora, dependendo do tamanho do cluster.
```python
remote_run = experiment.submit(automl_config)
```
Você pode executar o widget RunDetails para mostrar os diferentes experimentos.
```python
from azureml.widgets import RunDetails
RunDetails(remote_run).show()
```
## 3. Implantação do modelo e consumo do endpoint com o Azure ML SDK
### 3.1 Salvando o melhor modelo
O `remote_run` é um objeto do tipo [AutoMLRun](https://docs.microsoft.com/python/api/azureml-train-automl-client/azureml.train.automl.run.automlrun?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109). Este objeto contém o método `get_output()` que retorna a melhor execução e o modelo ajustado correspondente.
```python
best_run, fitted_model = remote_run.get_output()
```
Você pode ver os parâmetros usados para o melhor modelo apenas imprimindo o fitted_model e ver as propriedades do melhor modelo usando o método [get_properties()](https://docs.microsoft.com/python/api/azureml-core/azureml.core.run(class)?view=azure-ml-py#azureml_core_Run_get_properties?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109).
```python
best_run.get_properties()
```
Agora registre o modelo com o método [register_model](https://docs.microsoft.com/python/api/azureml-train-automl-client/azureml.train.automl.run.automlrun?view=azure-ml-py#register-model-model-name-none--description-none--tags-none--iteration-none--metric-none-?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109).
```python
model_name = best_run.properties['model_name']
script_file_name = 'inference/score.py'
best_run.download_file('outputs/scoring_file_v_1_0_0.py', 'inference/score.py')
description = "aml heart failure project sdk"
model = best_run.register_model(model_name = model_name,
model_path = './outputs/',
description = description,
tags = None)
```
### 3.2 Implantação do modelo
Depois de salvar o melhor modelo, podemos implantá-lo com a classe [InferenceConfig](https://docs.microsoft.com/python/api/azureml-core/azureml.core.model.inferenceconfig?view=azure-ml-py?ocid=AID3041109). InferenceConfig representa as configurações de configuração para um ambiente personalizado usado para implantação. A classe [AciWebservice](https://docs.microsoft.com/python/api/azureml-core/azureml.core.webservice.aciwebservice?view=azure-ml-py) representa um modelo de aprendizado de máquina implantado como um endpoint de serviço web em Azure Container Instances. Um serviço implantado é criado a partir de um modelo, script e arquivos associados. O serviço web resultante é um endpoint HTTP balanceado com uma API REST. Você pode enviar dados para esta API e receber a previsão retornada pelo modelo.
O modelo é implantado usando o método [deploy](https://docs.microsoft.com/python/api/azureml-core/azureml.core.model(class)?view=azure-ml-py#deploy-workspace--name--models--inference-config-none--deployment-config-none--deployment-target-none--overwrite-false--show-output-false-?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109).
```python
from azureml.core.model import InferenceConfig, Model
from azureml.core.webservice import AciWebservice
inference_config = InferenceConfig(entry_script=script_file_name, environment=best_run.get_environment())
aciconfig = AciWebservice.deploy_configuration(cpu_cores = 1,
memory_gb = 1,
tags = {'type': "automl-heart-failure-prediction"},
description = 'Sample service for AutoML Heart Failure Prediction')
aci_service_name = 'automl-hf-sdk'
aci_service = Model.deploy(ws, aci_service_name, [model], inference_config, aciconfig)
aci_service.wait_for_deployment(True)
print(aci_service.state)
```
Esta etapa deve levar alguns minutos.
### 3.3 Consumo do endpoint
Você consome seu endpoint criando uma entrada de exemplo:
```python
data = {
"data":
[
{
'age': "60",
'anaemia': "false",
'creatinine_phosphokinase': "500",
'diabetes': "false",
'ejection_fraction': "38",
'high_blood_pressure': "false",
'platelets': "260000",
'serum_creatinine': "1.40",
'serum_sodium': "137",
'sex': "false",
'smoking': "false",
'time': "130",
},
],
}
test_sample = str.encode(json.dumps(data))
```
E então pode enviar esta entrada para seu modelo para obter a previsão:
```python
response = aci_service.run(input_data=test_sample)
response
```
Isso deve gerar `'{"result": [false]}'`. Isso significa que o input do paciente que enviamos para o endpoint gerou a previsão `false`, o que indica que essa pessoa provavelmente não terá um ataque cardíaco.
Parabéns! Você acabou de consumir o modelo implantado e treinado no Azure ML com o Azure ML SDK!
> **_NOTE:_** Quando terminar o projeto, não se esqueça de excluir todos os recursos.
## 🚀 Desafio
Há muitas outras coisas que você pode fazer com o SDK, infelizmente, não podemos abordar todas nesta lição. Mas uma boa notícia: aprender a navegar pela documentação do SDK pode te levar muito longe por conta própria. Dê uma olhada na documentação do Azure ML SDK e encontre a classe `Pipeline`, que permite criar pipelines. Um Pipeline é uma coleção de etapas que podem ser executadas como um fluxo de trabalho.
**DICA:** Acesse a [documentação do SDK](https://docs.microsoft.com/python/api/overview/azure/ml/?view=azure-ml-py?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109) e digite palavras-chave na barra de pesquisa, como "Pipeline". Você deve encontrar a classe `azureml.pipeline.core.Pipeline` nos resultados da pesquisa.
## [Quiz pós-aula](https://ff-quizzes.netlify.app/en/ds/quiz/37)
## Revisão e Autoestudo
Nesta lição, você aprendeu como treinar, implantar e consumir um modelo para prever o risco de insuficiência cardíaca com o Azure ML SDK na nuvem. Confira esta [documentação](https://docs.microsoft.com/python/api/overview/azure/ml/?view=azure-ml-py?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109) para mais informações sobre o Azure ML SDK. Tente criar seu próprio modelo com o Azure ML SDK.
## Tarefa
[Projeto de Ciência de Dados usando Azure ML SDK](assignment.md)
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

@ -0,0 +1,16 @@
# Projeto de Ciência de Dados usando Azure ML SDK
## Instruções
Vimos como usar a plataforma Azure ML para treinar, implantar e consumir um modelo com o Azure ML SDK. Agora procure por alguns dados que você possa usar para treinar outro modelo, implantá-lo e consumi-lo. Você pode procurar conjuntos de dados no [Kaggle](https://kaggle.com) e no [Azure Open Datasets](https://azure.microsoft.com/services/open-datasets/catalog?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109).
## Critérios de Avaliação
| Exemplar | Adequado | Precisa de Melhorias |
|----------|----------|----------------------|
|Ao configurar o AutoML, você consultou a documentação do SDK para ver quais parâmetros poderia usar. Você realizou um treinamento em um conjunto de dados usando AutoML com o Azure ML SDK e verificou as explicações do modelo. Você implantou o melhor modelo e conseguiu consumi-lo através do Azure ML SDK. | Você realizou um treinamento em um conjunto de dados usando AutoML com o Azure ML SDK e verificou as explicações do modelo. Você implantou o melhor modelo e conseguiu consumi-lo através do Azure ML SDK. | Você realizou um treinamento em um conjunto de dados usando AutoML com o Azure ML SDK. Você implantou o melhor modelo e conseguiu consumi-lo através do Azure ML SDK. |
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

@ -0,0 +1,323 @@
{
"cells": [
{
"cell_type": "markdown",
"source": [
"# Ciência de Dados na Nuvem: O jeito \"Azure ML SDK\"\n",
"\n",
"## Introdução\n",
"\n",
"Neste notebook, vamos aprender como usar o Azure ML SDK para treinar, implantar e consumir um modelo através do Azure ML.\n",
"\n",
"Pré-requisitos: \n",
"1. Você criou um workspace do Azure ML. \n",
"2. Você carregou o [conjunto de dados de Insuficiência Cardíaca](https://www.kaggle.com/andrewmvd/heart-failure-clinical-data) no Azure ML. \n",
"3. Você fez o upload deste notebook no Azure ML Studio. \n",
"\n",
"Os próximos passos são:\n",
"\n",
"1. Criar um Experimento em um Workspace existente. \n",
"2. Criar um cluster de Computação. \n",
"3. Carregar o conjunto de dados. \n",
"4. Configurar o AutoML usando AutoMLConfig. \n",
"5. Executar o experimento AutoML. \n",
"6. Explorar os resultados e obter o melhor modelo. \n",
"7. Registrar o melhor modelo. \n",
"8. Implantar o melhor modelo. \n",
"9. Consumir o endpoint. \n",
"\n",
"## Importações específicas do Azure Machine Learning SDK\n"
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"from azureml.core import Workspace, Experiment\n",
"from azureml.core.compute import AmlCompute\n",
"from azureml.train.automl import AutoMLConfig\n",
"from azureml.widgets import RunDetails\n",
"from azureml.core.model import InferenceConfig, Model\n",
"from azureml.core.webservice import AciWebservice"
],
"outputs": [],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"## Inicializar Espaço de Trabalho\n",
"Inicialize um objeto de espaço de trabalho a partir de uma configuração persistida. Certifique-se de que o arquivo de configuração esteja presente em .\\config.json\n"
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"ws = Workspace.from_config()\n",
"print(ws.name, ws.resource_group, ws.location, ws.subscription_id, sep = '\\n')"
],
"outputs": [],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"## Criar um experimento no Azure ML\n",
"\n",
"Vamos criar um experimento chamado 'aml-experiment' no espaço de trabalho que acabamos de inicializar.\n"
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"experiment_name = 'aml-experiment'\n",
"experiment = Experiment(ws, experiment_name)\n",
"experiment"
],
"outputs": [],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"## Criar um Cluster de Computação \n",
"Você precisará criar um [destino de computação](https://docs.microsoft.com/azure/machine-learning/concept-azure-machine-learning-architecture#compute-target) para sua execução do AutoML. \n"
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"aml_name = \"heart-f-cluster\"\n",
"try:\n",
" aml_compute = AmlCompute(ws, aml_name)\n",
" print('Found existing AML compute context.')\n",
"except:\n",
" print('Creating new AML compute context.')\n",
" aml_config = AmlCompute.provisioning_configuration(vm_size = \"Standard_D2_v2\", min_nodes=1, max_nodes=3)\n",
" aml_compute = AmlCompute.create(ws, name = aml_name, provisioning_configuration = aml_config)\n",
" aml_compute.wait_for_completion(show_output = True)\n",
"\n",
"cts = ws.compute_targets\n",
"compute_target = cts[aml_name]"
],
"outputs": [],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"## Dados\n",
"Certifique-se de que você carregou o conjunto de dados no Azure ML e que a chave tem o mesmo nome do conjunto de dados.\n"
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"key = 'heart-failure-records'\n",
"dataset = ws.datasets[key]\n",
"df = dataset.to_pandas_dataframe()\n",
"df.describe()"
],
"outputs": [],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"## Configuração AutoML\n"
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"automl_settings = {\n",
" \"experiment_timeout_minutes\": 20,\n",
" \"max_concurrent_iterations\": 3,\n",
" \"primary_metric\" : 'AUC_weighted'\n",
"}\n",
"\n",
"automl_config = AutoMLConfig(compute_target=compute_target,\n",
" task = \"classification\",\n",
" training_data=dataset,\n",
" label_column_name=\"DEATH_EVENT\",\n",
" enable_early_stopping= True,\n",
" featurization= 'auto',\n",
" debug_log = \"automl_errors.log\",\n",
" **automl_settings\n",
" )"
],
"outputs": [],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"## Execução AutoML\n"
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"remote_run = experiment.submit(automl_config)"
],
"outputs": [],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"RunDetails(remote_run).show()"
],
"outputs": [],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"best_run, fitted_model = remote_run.get_output()"
],
"outputs": [],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"best_run.get_properties()"
],
"outputs": [],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"model_name = best_run.properties['model_name']\n",
"script_file_name = 'inference/score.py'\n",
"best_run.download_file('outputs/scoring_file_v_1_0_0.py', 'inference/score.py')\n",
"description = \"aml heart failure project sdk\"\n",
"model = best_run.register_model(model_name = model_name,\n",
" description = description,\n",
" tags = None)"
],
"outputs": [],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"## Implantar o Melhor Modelo\n",
"\n",
"Execute o código a seguir para implantar o melhor modelo. Você pode verificar o estado da implantação no portal do Azure ML. Este processo pode levar alguns minutos.\n"
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"inference_config = InferenceConfig(entry_script=script_file_name, environment=best_run.get_environment())\n",
"\n",
"aciconfig = AciWebservice.deploy_configuration(cpu_cores = 1,\n",
" memory_gb = 1,\n",
" tags = {'type': \"automl-heart-failure-prediction\"},\n",
" description = 'Sample service for AutoML Heart Failure Prediction')\n",
"\n",
"aci_service_name = 'automl-hf-sdk'\n",
"aci_service = Model.deploy(ws, aci_service_name, [model], inference_config, aciconfig)\n",
"aci_service.wait_for_deployment(True)\n",
"print(aci_service.state)"
],
"outputs": [],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"## Consumir o Endpoint\n",
"Você pode adicionar entradas ao exemplo de entrada abaixo.\n"
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"data = {\n",
" \"data\":\n",
" [\n",
" {\n",
" 'age': \"60\",\n",
" 'anaemia': \"false\",\n",
" 'creatinine_phosphokinase': \"500\",\n",
" 'diabetes': \"false\",\n",
" 'ejection_fraction': \"38\",\n",
" 'high_blood_pressure': \"false\",\n",
" 'platelets': \"260000\",\n",
" 'serum_creatinine': \"1.40\",\n",
" 'serum_sodium': \"137\",\n",
" 'sex': \"false\",\n",
" 'smoking': \"false\",\n",
" 'time': \"130\",\n",
" },\n",
" ],\n",
"}\n",
"\n",
"test_sample = str.encode(json.dumps(data))"
],
"outputs": [],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"response = aci_service.run(input_data=test_sample)\n",
"response"
],
"outputs": [],
"metadata": {}
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n---\n\n**Aviso Legal**: \nEste documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.\n"
]
}
],
"metadata": {
"orig_nbformat": 4,
"language_info": {
"name": "python"
},
"coopTranslator": {
"original_hash": "af42669556d5dc19fc4cc3866f7d2597",
"translation_date": "2025-09-01T20:03:49+00:00",
"source_file": "5-Data-Science-In-Cloud/19-Azure/notebook.ipynb",
"language_code": "br"
}
},
"nbformat": 4,
"nbformat_minor": 2
}

@ -0,0 +1,26 @@
# Ciência de Dados na Nuvem
![cloud-picture](../../../translated_images/pt-BR/cloud-picture.f5526de3c6c6387b2d656ba94f019b3352e5e3854a78440e4fb00c93e2dea675.jpg)
> Foto de [Jelleke Vanooteghem](https://unsplash.com/@ilumire) no [Unsplash](https://unsplash.com/s/photos/cloud?orientation=landscape)
Quando se trata de fazer ciência de dados com big data, a nuvem pode ser um divisor de águas. Nas próximas três lições, vamos entender o que é a nuvem e por que ela pode ser tão útil. Também vamos explorar um conjunto de dados sobre insuficiência cardíaca e construir um modelo para ajudar a avaliar a probabilidade de alguém sofrer uma insuficiência cardíaca. Usaremos o poder da nuvem para treinar, implantar e consumir um modelo de duas maneiras diferentes. Uma delas utilizando apenas a interface do usuário em um formato de Baixo Código/Sem Código, e a outra utilizando o Azure Machine Learning Software Developer Kit (Azure ML SDK).
![project-schema](../../../translated_images/pt-BR/project-schema.420e56d495624541eaecf2b737f138c86fb7d8162bb1c0bf8783c350872ffc4d.png)
### Tópicos
1. [Por que usar a Nuvem para Ciência de Dados?](17-Introduction/README.md)
2. [Ciência de Dados na Nuvem: O jeito "Baixo Código/Sem Código"](18-Low-Code/README.md)
3. [Ciência de Dados na Nuvem: O jeito "Azure ML SDK"](19-Azure/README.md)
### Créditos
Estas lições foram escritas com ☁️ e 💕 por [Maud Levy](https://twitter.com/maudstweets) e [Tiffany Souterre](https://twitter.com/TiffanySouterre)
Os dados para o projeto de Previsão de Insuficiência Cardíaca foram obtidos de [
Larxel](https://www.kaggle.com/andrewmvd) no [Kaggle](https://www.kaggle.com/andrewmvd/heart-failure-clinical-data). Eles estão licenciados sob a [Attribution 4.0 International (CC BY 4.0)](https://creativecommons.org/licenses/by/4.0/).
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

@ -0,0 +1,147 @@
# Ciência de Dados no Mundo Real
| ![ Sketchnote por [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/20-DataScience-RealWorld.png) |
| :--------------------------------------------------------------------------------------------------------------: |
| Ciência de Dados no Mundo Real - _Sketchnote por [@nitya](https://twitter.com/nitya)_ |
Estamos quase no fim desta jornada de aprendizado!
Começamos com definições de ciência de dados e ética, exploramos várias ferramentas e técnicas para análise e visualização de dados, revisamos o ciclo de vida da ciência de dados e analisamos como escalar e automatizar fluxos de trabalho de ciência de dados com serviços de computação em nuvem. Então, você provavelmente está se perguntando: _"Como exatamente posso aplicar tudo isso em contextos do mundo real?"_
Nesta lição, vamos explorar aplicações reais da ciência de dados em diferentes indústrias e mergulhar em exemplos específicos nos contextos de pesquisa, humanidades digitais e sustentabilidade. Também veremos oportunidades de projetos para estudantes e concluiremos com recursos úteis para ajudar você a continuar sua jornada de aprendizado!
## Quiz Pré-Aula
## [Quiz pré-aula](https://ff-quizzes.netlify.app/en/ds/quiz/38)
## Ciência de Dados + Indústria
Graças à democratização da IA, os desenvolvedores estão encontrando mais facilidade para projetar e integrar tomadas de decisão baseadas em IA e insights orientados por dados em experiências de usuário e fluxos de trabalho de desenvolvimento. Aqui estão alguns exemplos de como a ciência de dados é "aplicada" em contextos reais na indústria:
* [Google Flu Trends](https://www.wired.com/2015/10/can-learn-epic-failure-google-flu-trends/) usou ciência de dados para correlacionar termos de busca com tendências de gripe. Embora a abordagem tenha falhas, ela trouxe à tona as possibilidades (e desafios) de previsões de saúde baseadas em dados.
* [Previsões de Rotas da UPS](https://www.technologyreview.com/2018/11/21/139000/how-ups-uses-ai-to-outsmart-bad-weather/) - explica como a UPS utiliza ciência de dados e aprendizado de máquina para prever rotas ideais de entrega, considerando condições climáticas, padrões de tráfego, prazos de entrega e mais.
* [Visualização de Rotas de Táxi em NYC](http://chriswhong.github.io/nyctaxi/) - dados obtidos por meio das [Leis de Liberdade de Informação](https://chriswhong.com/open-data/foil_nyc_taxi/) ajudaram a visualizar um dia na vida dos táxis de NYC, permitindo entender como eles navegam pela cidade movimentada, o dinheiro que ganham e a duração das viagens ao longo de um período de 24 horas.
* [Uber Data Science Workbench](https://eng.uber.com/dsw/) - utiliza dados (sobre locais de embarque e desembarque, duração das viagens, rotas preferidas etc.) coletados de milhões de viagens diárias para construir uma ferramenta de análise de dados que ajuda em decisões de preços, segurança, detecção de fraudes e navegação.
* [Análise Esportiva](https://towardsdatascience.com/scope-of-analytics-in-sports-world-37ed09c39860) - foca em _análise preditiva_ (análise de equipes e jogadores - pense em [Moneyball](https://datasciencedegree.wisconsin.edu/blog/moneyball-proves-importance-big-data-big-ideas/) - e gestão de fãs) e _visualização de dados_ (painéis de equipes e fãs, jogos etc.) com aplicações como recrutamento de talentos, apostas esportivas e gestão de inventário/locais.
* [Ciência de Dados no Setor Bancário](https://data-flair.training/blogs/data-science-in-banking/) - destaca o valor da ciência de dados na indústria financeira com aplicações que vão desde modelagem de risco e detecção de fraudes até segmentação de clientes, previsão em tempo real e sistemas de recomendação. A análise preditiva também impulsiona medidas críticas como [pontuação de crédito](https://dzone.com/articles/using-big-data-and-predictive-analytics-for-credit).
* [Ciência de Dados na Saúde](https://data-flair.training/blogs/data-science-in-healthcare/) - destaca aplicações como imagem médica (e.g., ressonância magnética, raio-X, tomografia), genômica (sequenciamento de DNA), desenvolvimento de medicamentos (avaliação de risco, previsão de sucesso), análise preditiva (cuidados com pacientes e logística de suprimentos), rastreamento e prevenção de doenças etc.
![Aplicações de Ciência de Dados no Mundo Real](../../../../translated_images/pt-BR/data-science-applications.4e5019cd8790ebac2277ff5f08af386f8727cac5d30f77727c7090677e6adb9c.png) Crédito da Imagem: [Data Flair: 6 Amazing Data Science Applications ](https://data-flair.training/blogs/data-science-applications/)
A figura mostra outros domínios e exemplos de aplicação de técnicas de ciência de dados. Quer explorar outras aplicações? Confira a seção [Revisão e Autoestudo](../../../../6-Data-Science-In-Wild/20-Real-World-Examples) abaixo.
## Ciência de Dados + Pesquisa
| ![ Sketchnote por [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/20-DataScience-Research.png) |
| :---------------------------------------------------------------------------------------------------------------: |
| Ciência de Dados & Pesquisa - _Sketchnote por [@nitya](https://twitter.com/nitya)_ |
Embora as aplicações do mundo real frequentemente se concentrem em casos de uso na indústria em larga escala, as aplicações e projetos de _pesquisa_ podem ser úteis sob duas perspectivas:
* _oportunidades de inovação_ - explorar prototipagem rápida de conceitos avançados e testar experiências de usuário para aplicações de próxima geração.
* _desafios de implementação_ - investigar possíveis danos ou consequências não intencionais das tecnologias de ciência de dados em contextos reais.
Para estudantes, esses projetos de pesquisa podem oferecer oportunidades de aprendizado e colaboração que melhoram sua compreensão do tema e ampliam sua conscientização e engajamento com pessoas ou equipes relevantes que trabalham em áreas de interesse. Então, como são os projetos de pesquisa e como eles podem causar impacto?
Vamos analisar um exemplo - o [MIT Gender Shades Study](http://gendershades.org/overview.html) de Joy Buolamwini (MIT Media Labs) com um [artigo de pesquisa de destaque](http://proceedings.mlr.press/v81/buolamwini18a/buolamwini18a.pdf) coautorado com Timnit Gebru (então na Microsoft Research) que focou em:
* **O quê:** O objetivo do projeto de pesquisa era _avaliar o viés presente em algoritmos e conjuntos de dados de análise facial automatizada_ com base em gênero e tipo de pele.
* **Por quê:** A análise facial é usada em áreas como aplicação da lei, segurança em aeroportos, sistemas de contratação e mais - contextos onde classificações imprecisas (e.g., devido ao viés) podem causar danos econômicos e sociais potenciais a indivíduos ou grupos afetados. Entender (e eliminar ou mitigar) esses vieses é essencial para a equidade no uso.
* **Como:** Os pesquisadores perceberam que os benchmarks existentes usavam predominantemente sujeitos de pele mais clara e criaram um novo conjunto de dados (mais de 1000 imagens) que era _mais equilibrado_ por gênero e tipo de pele. O conjunto de dados foi usado para avaliar a precisão de três produtos de classificação de gênero (da Microsoft, IBM e Face++).
Os resultados mostraram que, embora a precisão geral da classificação fosse boa, havia uma diferença perceptível nas taxas de erro entre vários subgrupos - com **erros de classificação de gênero** sendo mais altos para mulheres ou pessoas com pele mais escura, indicativo de viés.
**Principais Resultados:** Aumentou a conscientização de que a ciência de dados precisa de mais _conjuntos de dados representativos_ (subgrupos equilibrados) e mais _equipes inclusivas_ (diversidade de origens) para reconhecer e eliminar ou mitigar esses vieses mais cedo em soluções de IA. Esforços de pesquisa como este também são fundamentais para muitas organizações definirem princípios e práticas para _IA responsável_ visando melhorar a equidade em seus produtos e processos de IA.
**Quer saber mais sobre esforços de pesquisa relevantes na Microsoft?**
* Confira [Projetos de Pesquisa da Microsoft](https://www.microsoft.com/research/research-area/artificial-intelligence/?facet%5Btax%5D%5Bmsr-research-area%5D%5B%5D=13556&facet%5Btax%5D%5Bmsr-content-type%5D%5B%5D=msr-project) em Inteligência Artificial.
* Explore projetos de estudantes da [Microsoft Research Data Science Summer School](https://www.microsoft.com/en-us/research/academic-program/data-science-summer-school/).
* Confira o projeto [Fairlearn](https://fairlearn.org/) e as iniciativas de [IA Responsável](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1%3aprimaryr6).
## Ciência de Dados + Humanidades
| ![ Sketchnote por [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/20-DataScience-Humanities.png) |
| :---------------------------------------------------------------------------------------------------------------: |
| Ciência de Dados & Humanidades Digitais - _Sketchnote por [@nitya](https://twitter.com/nitya)_ |
Humanidades Digitais [são definidas](https://digitalhumanities.stanford.edu/about-dh-stanford) como "uma coleção de práticas e abordagens que combinam métodos computacionais com investigação humanística". Projetos [Stanford](https://digitalhumanities.stanford.edu/projects) como _"rebooting history"_ e _"poetic thinking"_ ilustram a ligação entre [Humanidades Digitais e Ciência de Dados](https://digitalhumanities.stanford.edu/digital-humanities-and-data-science) - enfatizando técnicas como análise de redes, visualização de informações, análise espacial e textual que podem nos ajudar a revisitar conjuntos de dados históricos e literários para obter novos insights e perspectivas.
*Quer explorar e expandir um projeto nesta área?*
Confira ["Emily Dickinson and the Meter of Mood"](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671) - um ótimo exemplo de [Jen Looper](https://twitter.com/jenlooper) que pergunta como podemos usar ciência de dados para revisitar poesias familiares e reavaliar seu significado e as contribuições de seu autor em novos contextos. Por exemplo, _podemos prever a estação do ano em que um poema foi escrito analisando seu tom ou sentimento_ - e o que isso nos diz sobre o estado de espírito do autor durante o período relevante?
Para responder a essa pergunta, seguimos os passos do ciclo de vida da ciência de dados:
* [`Aquisição de Dados`](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671#acquiring-the-dataset) - para coletar um conjunto de dados relevante para análise. As opções incluem usar uma API (e.g., [Poetry DB API](https://poetrydb.org/index.html)) ou fazer scraping de páginas web (e.g., [Project Gutenberg](https://www.gutenberg.org/files/12242/12242-h/12242-h.htm)) usando ferramentas como [Scrapy](https://scrapy.org/).
* [`Limpeza de Dados`](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671#clean-the-data) - explica como o texto pode ser formatado, sanitizado e simplificado usando ferramentas básicas como Visual Studio Code e Microsoft Excel.
* [`Análise de Dados`](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671#working-with-the-data-in-a-notebook) - explica como podemos importar o conjunto de dados para "Notebooks" para análise usando pacotes Python (como pandas, numpy e matplotlib) para organizar e visualizar os dados.
* [`Análise de Sentimento`](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671#sentiment-analysis-using-cognitive-services) - explica como podemos integrar serviços em nuvem como Text Analytics, usando ferramentas de baixo código como [Power Automate](https://flow.microsoft.com/en-us/) para fluxos de trabalho automatizados de processamento de dados.
Usando esse fluxo de trabalho, podemos explorar os impactos sazonais no sentimento dos poemas e nos ajudar a formar nossas próprias perspectivas sobre o autor. Experimente você mesmo - depois expanda o notebook para fazer outras perguntas ou visualizar os dados de novas maneiras!
> Você pode usar algumas das ferramentas no [Digital Humanities toolkit](https://github.com/Digital-Humanities-Toolkit) para seguir essas linhas de investigação.
## Ciência de Dados + Sustentabilidade
| ![ Sketchnote por [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/20-DataScience-Sustainability.png) |
| :---------------------------------------------------------------------------------------------------------------: |
| Ciência de Dados & Sustentabilidade - _Sketchnote por [@nitya](https://twitter.com/nitya)_ |
A [Agenda 2030 para o Desenvolvimento Sustentável](https://sdgs.un.org/2030agenda) - adotada por todos os membros das Nações Unidas em 2015 - identifica 17 objetivos, incluindo aqueles que focam em **Proteger o Planeta** contra a degradação e os impactos das mudanças climáticas. A iniciativa [Microsoft Sustainability](https://www.microsoft.com/en-us/sustainability) apoia esses objetivos explorando maneiras pelas quais soluções tecnológicas podem promover e construir futuros mais sustentáveis com um [foco em 4 metas](https://dev.to/azure/a-visual-guide-to-sustainable-software-engineering-53hh) - ser carbono negativo, positivo em água, zero desperdício e biodiverso até 2030.
Enfrentar esses desafios de forma escalável e oportuna exige pensamento em escala de nuvem - e grandes volumes de dados. A iniciativa [Planetary Computer](https://planetarycomputer.microsoft.com/) fornece 4 componentes para ajudar cientistas de dados e desenvolvedores nesse esforço:
* [Catálogo de Dados](https://planetarycomputer.microsoft.com/catalog) - com petabytes de dados de sistemas terrestres (gratuitos e hospedados no Azure).
* [API Planetária](https://planetarycomputer.microsoft.com/docs/reference/stac/) - para ajudar os usuários a buscar dados relevantes no espaço e no tempo.
* [Hub](https://planetarycomputer.microsoft.com/docs/overview/environment/) - ambiente gerenciado para cientistas processarem grandes conjuntos de dados geoespaciais.
* [Aplicações](https://planetarycomputer.microsoft.com/applications) - mostram casos de uso e ferramentas para insights sobre sustentabilidade.
**O Projeto Planetary Computer está atualmente em fase de pré-visualização (a partir de setembro de 2021)** - veja como você pode começar a contribuir para soluções de sustentabilidade usando ciência de dados.
* [Solicite acesso](https://planetarycomputer.microsoft.com/account/request) para iniciar a exploração e se conectar com outros profissionais.
* [Explore a documentação](https://planetarycomputer.microsoft.com/docs/overview/about) para entender os conjuntos de dados e APIs suportados.
* Explore aplicações como [Monitoramento de Ecossistemas](https://analytics-lab.org/ecosystemmonitoring/) para se inspirar em ideias de aplicações.
Pense em como você pode usar visualização de dados para expor ou amplificar insights relevantes em áreas como mudanças climáticas e desmatamento. Ou reflita sobre como esses insights podem ser usados para criar novas experiências de usuário que motivem mudanças comportamentais para uma vida mais sustentável.
## Ciência de Dados + Estudantes
Falamos sobre aplicações do mundo real na indústria e na pesquisa, e exploramos exemplos de aplicações de ciência de dados nas humanidades digitais e na sustentabilidade. Então, como você pode desenvolver suas habilidades e compartilhar sua expertise como iniciante em ciência de dados?
Aqui estão alguns exemplos de projetos de estudantes em ciência de dados para inspirar você.
* [Escola de Verão de Ciência de Dados da MSR](https://www.microsoft.com/en-us/research/academic-program/data-science-summer-school/#!projects) com [projetos](https://github.com/msr-ds3) no GitHub explorando tópicos como:
- [Viés Racial no Uso da Força pela Polícia](https://www.microsoft.com/en-us/research/video/data-science-summer-school-2019-replicating-an-empirical-analysis-of-racial-differences-in-police-use-of-force/) | [Github](https://github.com/msr-ds3/stop-question-frisk)
- [Confiabilidade do Sistema de Metrô de Nova York](https://www.microsoft.com/en-us/research/video/data-science-summer-school-2018-exploring-the-reliability-of-the-nyc-subway-system/) | [Github](https://github.com/msr-ds3/nyctransit)
* [Digitalizando a Cultura Material: Explorando distribuições socioeconômicas em Sirkap](https://claremont.maps.arcgis.com/apps/Cascade/index.html?appid=bdf2aef0f45a4674ba41cd373fa23afc) - de [Ornella Altunyan](https://twitter.com/ornelladotcom) e equipe em Claremont, usando [ArcGIS StoryMaps](https://storymaps.arcgis.com/).
## 🚀 Desafio
Pesquise artigos que recomendem projetos de ciência de dados para iniciantes - como [essas 50 áreas temáticas](https://www.upgrad.com/blog/data-science-project-ideas-topics-beginners/) ou [essas 21 ideias de projetos](https://www.intellspot.com/data-science-project-ideas) ou [esses 16 projetos com código-fonte](https://data-flair.training/blogs/data-science-project-ideas/) que você pode desconstruir e remixar. E não se esqueça de blogar sobre suas jornadas de aprendizado e compartilhar seus insights com todos nós.
## Questionário Pós-Aula
## [Questionário pós-aula](https://ff-quizzes.netlify.app/en/ds/quiz/39)
## Revisão e Autoestudo
Quer explorar mais casos de uso? Aqui estão alguns artigos relevantes:
* [17 Aplicações e Exemplos de Ciência de Dados](https://builtin.com/data-science/data-science-applications-examples) - Jul 2021
* [11 Aplicações Impressionantes de Ciência de Dados no Mundo Real](https://myblindbird.com/data-science-applications-real-world/) - Mai 2021
* [Ciência de Dados no Mundo Real](https://towardsdatascience.com/data-science-in-the-real-world/home) - Coleção de Artigos
* [12 Aplicações Reais de Ciência de Dados com Exemplos](https://www.scaler.com/blog/data-science-applications/) - Mai 2024
* Ciência de Dados em: [Educação](https://data-flair.training/blogs/data-science-in-education/), [Agricultura](https://data-flair.training/blogs/data-science-in-agriculture/), [Finanças](https://data-flair.training/blogs/data-science-in-finance/), [Filmes](https://data-flair.training/blogs/data-science-at-movies/), [Saúde](https://onlinedegrees.sandiego.edu/data-science-health-care/) e mais.
## Tarefa
[Explore um Conjunto de Dados do Planetary Computer](assignment.md)
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional feita por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

@ -0,0 +1,41 @@
# Explore um Conjunto de Dados do Planetary Computer
## Instruções
Nesta lição, discutimos vários domínios de aplicação da ciência de dados - com análises aprofundadas de exemplos relacionados à pesquisa, sustentabilidade e humanidades digitais. Nesta tarefa, você explorará um desses exemplos em mais detalhes e aplicará alguns dos seus aprendizados sobre visualizações e análises de dados para obter insights sobre dados de sustentabilidade.
O projeto [Planetary Computer](https://planetarycomputer.microsoft.com/) possui conjuntos de dados e APIs que podem ser acessados com uma conta - solicite uma para acessar se quiser tentar a etapa bônus da tarefa. O site também oferece um recurso chamado [Explorer](https://planetarycomputer.microsoft.com/explore), que pode ser usado sem criar uma conta.
`Passos:`
A interface do Explorer (mostrada na captura de tela abaixo) permite que você selecione um conjunto de dados (das opções fornecidas), uma consulta predefinida (para filtrar os dados) e uma opção de renderização (para criar uma visualização relevante). Nesta tarefa, sua missão é:
1. Ler a [documentação do Explorer](https://planetarycomputer.microsoft.com/docs/overview/explorer/) - entender as opções disponíveis.
2. Explorar o [Catálogo de conjuntos de dados](https://planetarycomputer.microsoft.com/catalog) - aprender o propósito de cada conjunto de dados.
3. Usar o Explorer - escolher um conjunto de dados de interesse, selecionar uma consulta relevante e uma opção de renderização.
![O Explorer do Planetary Computer](../../../../translated_images/pt-BR/planetary-computer-explorer.c1e95a9b053167d64e2e8e4347cfb689e47e2037c33103fc1bbea1a149d4f85b.png)
`Sua Tarefa:`
Agora, estude a visualização que foi gerada no navegador e responda às seguintes perguntas:
* Quais _características_ o conjunto de dados possui?
* Quais _insights_ ou resultados a visualização fornece?
* Quais são as _implicações_ desses insights para os objetivos de sustentabilidade do projeto?
* Quais são as _limitações_ da visualização (ou seja, quais insights você não conseguiu obter)?
* Se você pudesse acessar os dados brutos, quais _visualizações alternativas_ você criaria e por quê?
`Pontos Bônus:`
Solicite uma conta - e faça login quando for aceito.
* Use a opção _Launch Hub_ para abrir os dados brutos em um Notebook.
* Explore os dados de forma interativa e implemente as visualizações alternativas que você pensou.
* Agora analise suas visualizações personalizadas - você conseguiu obter os insights que faltaram anteriormente?
## Rubrica
Exemplar | Adequado | Precisa Melhorar
--- | --- | --- |
Todas as cinco perguntas principais foram respondidas. O aluno identificou claramente como as visualizações atuais e alternativas poderiam fornecer insights sobre os objetivos ou resultados de sustentabilidade. | O aluno respondeu pelo menos às 3 primeiras perguntas com grande detalhe, mostrando que teve experiência prática com o Explorer. | O aluno não respondeu a várias perguntas ou forneceu detalhes insuficientes - indicando que não houve uma tentativa significativa de realizar o projeto. |
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

@ -0,0 +1,16 @@
# Ciência de Dados na Prática
Aplicações reais de ciência de dados em diferentes indústrias.
### Tópicos
1. [Ciência de Dados no Mundo Real](20-Real-World-Examples/README.md)
### Créditos
Escrito com ❤️ por [Nitya Narasimhan](https://twitter.com/nitya)
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

@ -0,0 +1,366 @@
# AGENTS.md
## Visão Geral do Projeto
Data Science for Beginners é um currículo abrangente de 10 semanas e 20 lições criado pelos Advocates de Nuvem da Microsoft Azure. O repositório é um recurso de aprendizado que ensina conceitos fundamentais de ciência de dados por meio de lições baseadas em projetos, incluindo notebooks Jupyter, quizzes interativos e tarefas práticas.
**Principais Tecnologias:**
- **Jupyter Notebooks**: Meio principal de aprendizado usando Python 3
- **Bibliotecas Python**: pandas, numpy, matplotlib para análise e visualização de dados
- **Vue.js 2**: Aplicativo de quiz (pasta quiz-app)
- **Docsify**: Gerador de site de documentação para acesso offline
- **Node.js/npm**: Gerenciamento de pacotes para componentes JavaScript
- **Markdown**: Todo o conteúdo das lições e documentação
**Arquitetura:**
- Repositório educacional multilíngue com extensas traduções
- Estruturado em módulos de lições (1-Introdução até 6-Ciência-de-Dados-na-Prática)
- Cada lição inclui README, notebooks, tarefas e quizzes
- Aplicativo de quiz Vue.js independente para avaliações pré/pós-lição
- Suporte para GitHub Codespaces e contêineres de desenvolvimento do VS Code
## Comandos de Configuração
### Configuração do Repositório
```bash
# Clone the repository (if not already cloned)
git clone https://github.com/microsoft/Data-Science-For-Beginners.git
cd Data-Science-For-Beginners
```
### Configuração do Ambiente Python
```bash
# Create a virtual environment (recommended)
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install common data science libraries (no requirements.txt exists)
pip install jupyter pandas numpy matplotlib seaborn scikit-learn
```
### Configuração do Aplicativo de Quiz
```bash
# Navigate to quiz app
cd quiz-app
# Install dependencies
npm install
# Start development server
npm run serve
# Build for production
npm run build
# Lint and fix files
npm run lint
```
### Servidor de Documentação Docsify
```bash
# Install Docsify globally
npm install -g docsify-cli
# Serve documentation locally
docsify serve
# Documentation will be available at localhost:3000
```
### Configuração de Projetos de Visualização
Para projetos de visualização como meaningful-visualizations (lição 13):
```bash
# Navigate to starter or solution folder
cd 3-Data-Visualization/13-meaningful-visualizations/starter
# Install dependencies
npm install
# Start development server
npm run serve
# Build for production
npm run build
# Lint files
npm run lint
```
## Fluxo de Trabalho de Desenvolvimento
### Trabalhando com Jupyter Notebooks
1. Inicie o Jupyter na raiz do repositório: `jupyter notebook`
2. Navegue até a pasta da lição desejada
3. Abra os arquivos `.ipynb` para realizar os exercícios
4. Os notebooks são autossuficientes, com explicações e células de código
5. A maioria dos notebooks utiliza pandas, numpy e matplotlib - certifique-se de que estão instalados
### Estrutura das Lições
Cada lição geralmente contém:
- `README.md` - Conteúdo principal da lição com teoria e exemplos
- `notebook.ipynb` - Exercícios práticos no Jupyter Notebook
- `assignment.ipynb` ou `assignment.md` - Tarefas práticas
- Pasta `solution/` - Notebooks e códigos de solução
- Pasta `images/` - Materiais visuais de suporte
### Desenvolvimento do Aplicativo de Quiz
- Aplicativo Vue.js 2 com recarregamento automático durante o desenvolvimento
- Quizzes armazenados em `quiz-app/src/assets/translations/`
- Cada idioma tem sua própria pasta de tradução (en, fr, es, etc.)
- A numeração dos quizzes começa em 0 e vai até 39 (40 quizzes no total)
### Adicionando Traduções
- Traduções vão na pasta `translations/` na raiz do repositório
- Cada idioma tem a estrutura completa das lições espelhada do inglês
- Tradução automatizada via GitHub Actions (co-op-translator.yml)
## Instruções de Teste
### Teste do Aplicativo de Quiz
```bash
cd quiz-app
# Run lint checks
npm run lint
# Test build process
npm run build
# Manual testing: Start dev server and verify quiz functionality
npm run serve
```
### Teste de Notebooks
- Não existe um framework de teste automatizado para notebooks
- Validação manual: Execute todas as células em sequência para garantir que não há erros
- Verifique se os arquivos de dados estão acessíveis e os resultados são gerados corretamente
- Certifique-se de que as visualizações são renderizadas corretamente
### Teste de Documentação
```bash
# Verify Docsify renders correctly
docsify serve
# Check for broken links manually by navigating through content
# Verify all lesson links work in the rendered documentation
```
### Verificações de Qualidade de Código
```bash
# Vue.js projects (quiz-app and visualization projects)
cd quiz-app # or visualization project folder
npm run lint
# Python notebooks - manual verification recommended
# Ensure imports work and cells execute without errors
```
## Diretrizes de Estilo de Código
### Python (Jupyter Notebooks)
- Siga as diretrizes de estilo PEP 8 para código Python
- Use nomes de variáveis claros que expliquem os dados sendo analisados
- Inclua células markdown com explicações antes das células de código
- Mantenha as células de código focadas em conceitos ou operações únicas
- Use pandas para manipulação de dados, matplotlib para visualização
- Padrão comum de importação:
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
```
### JavaScript/Vue.js
- Siga o guia de estilo e as melhores práticas do Vue.js 2
- Configuração do ESLint em `quiz-app/package.json`
- Use componentes Vue de arquivo único (.vue files)
- Mantenha uma arquitetura baseada em componentes
- Execute `npm run lint` antes de enviar alterações
### Documentação Markdown
- Use uma hierarquia clara de cabeçalhos (# ## ### etc.)
- Inclua blocos de código com especificadores de linguagem
- Adicione texto alternativo para imagens
- Link para lições e recursos relacionados
- Mantenha os comprimentos das linhas razoáveis para facilitar a leitura
### Organização de Arquivos
- Conteúdo das lições em pastas numeradas (01-defining-data-science, etc.)
- Soluções em subpastas dedicadas `solution/`
- Traduções espelham a estrutura em inglês na pasta `translations/`
- Mantenha os arquivos de dados na pasta `data/` ou em pastas específicas de lições
## Construção e Implantação
### Implantação do Aplicativo de Quiz
```bash
cd quiz-app
# Build production version
npm run build
# Output is in dist/ folder
# Deploy dist/ folder to static hosting (Azure Static Web Apps, Netlify, etc.)
```
### Implantação em Azure Static Web Apps
O quiz-app pode ser implantado no Azure Static Web Apps:
1. Crie um recurso Azure Static Web App
2. Conecte ao repositório GitHub
3. Configure as configurações de build:
- Localização do aplicativo: `quiz-app`
- Localização de saída: `dist`
4. O workflow do GitHub Actions fará a implantação automática ao enviar alterações
### Site de Documentação
```bash
# Build PDF from Docsify (optional)
npm run convert
# Docsify documentation is served directly from markdown files
# No build step required for deployment
# Deploy repository to static hosting with Docsify
```
### GitHub Codespaces
- O repositório inclui configuração de contêiner de desenvolvimento
- Codespaces configura automaticamente o ambiente Python e Node.js
- Abra o repositório no Codespace via interface do GitHub
- Todas as dependências são instaladas automaticamente
## Diretrizes para Pull Requests
### Antes de Enviar
```bash
# For Vue.js changes in quiz-app
cd quiz-app
npm run lint
npm run build
# Test changes locally
npm run serve
```
### Formato do Título do PR
- Use títulos claros e descritivos
- Formato: `[Componente] Breve descrição`
- Exemplos:
- `[Lição 7] Corrigir erro de importação no notebook Python`
- `[Aplicativo de Quiz] Adicionar tradução em alemão`
- `[Docs] Atualizar README com novos pré-requisitos`
### Verificações Necessárias
- Certifique-se de que todo o código funciona sem erros
- Verifique se os notebooks executam completamente
- Confirme que os aplicativos Vue.js são construídos com sucesso
- Verifique se os links da documentação funcionam
- Teste o aplicativo de quiz se modificado
- Confirme que as traduções mantêm uma estrutura consistente
### Diretrizes de Contribuição
- Siga o estilo e os padrões de código existentes
- Adicione comentários explicativos para lógica complexa
- Atualize a documentação relevante
- Teste alterações em diferentes módulos de lições, se aplicável
- Revise o arquivo CONTRIBUTING.md
## Notas Adicionais
### Bibliotecas Comuns Utilizadas
- **pandas**: Manipulação e análise de dados
- **numpy**: Computação numérica
- **matplotlib**: Visualização e plotagem de dados
- **seaborn**: Visualização estatística de dados (algumas lições)
- **scikit-learn**: Aprendizado de máquina (lições avançadas)
### Trabalhando com Arquivos de Dados
- Arquivos de dados localizados na pasta `data/` ou em diretórios específicos de lições
- A maioria dos notebooks espera arquivos de dados em caminhos relativos
- Arquivos CSV são o formato de dados principal
- Algumas lições utilizam JSON para exemplos de dados não relacionais
### Suporte Multilíngue
- Mais de 40 traduções de idiomas via GitHub Actions automatizado
- Workflow de tradução em `.github/workflows/co-op-translator.yml`
- Traduções na pasta `translations/` com códigos de idioma
- Traduções de quizzes em `quiz-app/src/assets/translations/`
### Opções de Ambiente de Desenvolvimento
1. **Desenvolvimento Local**: Instale Python, Jupyter, Node.js localmente
2. **GitHub Codespaces**: Ambiente de desenvolvimento instantâneo baseado em nuvem
3. **Contêineres de Desenvolvimento do VS Code**: Desenvolvimento local baseado em contêiner
4. **Binder**: Inicie notebooks na nuvem (se configurado)
### Diretrizes de Conteúdo das Lições
- Cada lição é independente, mas constrói conceitos anteriores
- Quizzes pré-lição testam conhecimento prévio
- Quizzes pós-lição reforçam o aprendizado
- Tarefas fornecem prática prática
- Sketchnotes fornecem resumos visuais
### Solução de Problemas Comuns
**Problemas com Kernel do Jupyter:**
```bash
# Ensure correct kernel is installed
python -m ipykernel install --user --name=datascience
```
**Falhas na Instalação do npm:**
```bash
# Clear npm cache and retry
npm cache clean --force
rm -rf node_modules package-lock.json
npm install
```
**Erros de Importação em Notebooks:**
- Verifique se todas as bibliotecas necessárias estão instaladas
- Confira a compatibilidade da versão do Python (recomendado Python 3.7+)
- Certifique-se de que o ambiente virtual está ativado
**Docsify Não Carregando:**
- Verifique se você está servindo a partir da raiz do repositório
- Confira se o arquivo `index.html` existe
- Certifique-se de que há acesso adequado à rede (porta 3000)
### Considerações de Desempenho
- Conjuntos de dados grandes podem levar tempo para carregar nos notebooks
- A renderização de visualizações pode ser lenta para gráficos complexos
- O servidor de desenvolvimento Vue.js permite recarregamento rápido para iteração rápida
- Builds de produção são otimizados e minificados
### Notas de Segurança
- Nenhum dado sensível ou credenciais deve ser enviado
- Use variáveis de ambiente para quaisquer chaves de API em lições na nuvem
- Lições relacionadas ao Azure podem exigir credenciais de conta Azure
- Mantenha as dependências atualizadas para patches de segurança
## Contribuindo com Traduções
- Traduções automatizadas gerenciadas via GitHub Actions
- Correções manuais são bem-vindas para precisão das traduções
- Siga a estrutura de pastas de tradução existente
- Atualize os links dos quizzes para incluir o parâmetro de idioma: `?loc=fr`
- Teste as lições traduzidas para garantir a renderização adequada
## Recursos Relacionados
- Currículo principal: https://aka.ms/datascience-beginners
- Microsoft Learn: https://docs.microsoft.com/learn/
- Student Hub: https://docs.microsoft.com/learn/student-hub
- Fórum de Discussão: https://github.com/microsoft/Data-Science-For-Beginners/discussions
- Outros currículos da Microsoft: ML for Beginners, AI for Beginners, Web Dev for Beginners
## Manutenção do Projeto
- Atualizações regulares para manter o conteúdo atual
- Contribuições da comunidade são bem-vindas
- Problemas rastreados no GitHub
- PRs revisados pelos mantenedores do currículo
- Revisões e atualizações de conteúdo mensais
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

@ -0,0 +1,14 @@
# Código de Conduta de Código Aberto da Microsoft
Este projeto adotou o [Código de Conduta de Código Aberto da Microsoft](https://opensource.microsoft.com/codeofconduct/).
Recursos:
- [Código de Conduta de Código Aberto da Microsoft](https://opensource.microsoft.com/codeofconduct/)
- [Perguntas Frequentes sobre o Código de Conduta](https://opensource.microsoft.com/codeofconduct/faq/)
- Entre em contato com [opencode@microsoft.com](mailto:opencode@microsoft.com) para dúvidas ou preocupações
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

@ -0,0 +1,360 @@
# Contribuindo para Ciência de Dados para Iniciantes
Obrigado pelo seu interesse em contribuir para o currículo de Ciência de Dados para Iniciantes! Agradecemos contribuições da comunidade.
## Índice
- [Código de Conduta](../..)
- [Como Posso Contribuir?](../..)
- [Primeiros Passos](../..)
- [Diretrizes de Contribuição](../..)
- [Processo de Pull Request](../..)
- [Diretrizes de Estilo](../..)
- [Acordo de Licença de Contribuidor](../..)
## Código de Conduta
Este projeto adotou o [Código de Conduta de Código Aberto da Microsoft](https://opensource.microsoft.com/codeofconduct/).
Para mais informações, veja as [Perguntas Frequentes sobre o Código de Conduta](https://opensource.microsoft.com/codeofconduct/faq/)
ou entre em contato pelo e-mail [opencode@microsoft.com](mailto:opencode@microsoft.com) para quaisquer dúvidas ou comentários adicionais.
## Como Posso Contribuir?
### Relatar Bugs
Antes de criar relatórios de bugs, verifique os problemas existentes para evitar duplicatas. Ao criar um relatório de bug, inclua o máximo de detalhes possível:
- **Use um título claro e descritivo**
- **Descreva os passos exatos para reproduzir o problema**
- **Forneça exemplos específicos** (trechos de código, capturas de tela)
- **Descreva o comportamento observado e o esperado**
- **Inclua detalhes do seu ambiente** (SO, versão do Python, navegador)
### Sugerir Melhorias
Sugestões de melhorias são bem-vindas! Ao sugerir melhorias:
- **Use um título claro e descritivo**
- **Forneça uma descrição detalhada da melhoria sugerida**
- **Explique por que essa melhoria seria útil**
- **Liste quaisquer recursos semelhantes em outros projetos, se aplicável**
### Contribuir para a Documentação
Melhorias na documentação são sempre apreciadas:
- **Corrigir erros de digitação e gramática**
- **Melhorar a clareza das explicações**
- **Adicionar documentação ausente**
- **Atualizar informações desatualizadas**
- **Adicionar exemplos ou casos de uso**
### Contribuir com Código
Aceitamos contribuições de código, incluindo:
- **Novas lições ou exercícios**
- **Correções de bugs**
- **Melhorias em notebooks existentes**
- **Novos conjuntos de dados ou exemplos**
- **Aprimoramentos no aplicativo de quiz**
## Primeiros Passos
### Pré-requisitos
Antes de contribuir, certifique-se de ter:
1. Uma conta no GitHub
2. Git instalado no seu sistema
3. Python 3.7+ e Jupyter instalados
4. Node.js e npm (para contribuições no aplicativo de quiz)
5. Familiaridade com a estrutura do currículo
Veja [INSTALLATION.md](INSTALLATION.md) para instruções detalhadas de configuração.
### Fork e Clone
1. **Faça um fork do repositório** no GitHub
2. **Clone seu fork** localmente:
```bash
git clone https://github.com/YOUR-USERNAME/Data-Science-For-Beginners.git
cd Data-Science-For-Beginners
```
3. **Adicione o remoto upstream**:
```bash
git remote add upstream https://github.com/microsoft/Data-Science-For-Beginners.git
```
### Criar um Branch
Crie um novo branch para seu trabalho:
```bash
git checkout -b feature/your-feature-name
# or
git checkout -b fix/your-bug-fix
```
Convenções de nomenclatura de branch:
- `feature/` - Novos recursos ou lições
- `fix/` - Correções de bugs
- `docs/` - Alterações na documentação
- `refactor/` - Refatoração de código
## Diretrizes de Contribuição
### Para Conteúdo de Lições
Ao contribuir com lições ou modificar as existentes:
1. **Siga a estrutura existente**:
- README.md com o conteúdo da lição
- Notebook Jupyter com exercícios
- Tarefa (se aplicável)
- Link para quizzes pré e pós-lição
2. **Inclua os seguintes elementos**:
- Objetivos de aprendizado claros
- Explicações passo a passo
- Exemplos de código com comentários
- Exercícios para prática
- Links para recursos adicionais
3. **Garanta acessibilidade**:
- Use linguagem clara e simples
- Forneça texto alternativo para imagens
- Inclua comentários no código
- Considere diferentes estilos de aprendizado
### Para Notebooks Jupyter
1. **Limpe todas as saídas** antes de fazer o commit:
```bash
jupyter nbconvert --clear-output --inplace notebook.ipynb
```
2. **Inclua células de markdown** com explicações
3. **Use formatação consistente**:
```python
# Import libraries at the top
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# Use meaningful variable names
# Add comments for complex operations
# Follow PEP 8 style guidelines
```
4. **Teste completamente seu notebook** antes de enviar
### Para Código Python
Siga as diretrizes de estilo [PEP 8](https://www.python.org/dev/peps/pep-0008/):
```python
# Good practices
import pandas as pd
def calculate_mean(data):
"""Calculate the mean of a dataset.
Args:
data (list): List of numerical values
Returns:
float: Mean of the dataset
"""
return sum(data) / len(data)
```
### Para Contribuições no Aplicativo de Quiz
Ao modificar o aplicativo de quiz:
1. **Teste localmente**:
```bash
cd quiz-app
npm install
npm run serve
```
2. **Execute o linter**:
```bash
npm run lint
```
3. **Construa com sucesso**:
```bash
npm run build
```
4. **Siga o guia de estilo do Vue.js** e os padrões existentes
### Para Traduções
Ao adicionar ou atualizar traduções:
1. Siga a estrutura na pasta `translations/`
2. Use o código do idioma como nome da pasta (ex.: `pt` para Português)
3. Mantenha a mesma estrutura de arquivos da versão em inglês
4. Atualize os links dos quizzes para incluir o parâmetro de idioma: `?loc=pt`
5. Teste todos os links e a formatação
## Processo de Pull Request
### Antes de Enviar
1. **Atualize seu branch** com as alterações mais recentes:
```bash
git fetch upstream
git rebase upstream/main
```
2. **Teste suas alterações**:
- Execute todos os notebooks modificados
- Teste o aplicativo de quiz, se modificado
- Verifique se todos os links funcionam
- Confira erros de ortografia e gramática
3. **Faça commit das suas alterações**:
```bash
git add .
git commit -m "Brief description of changes"
```
Escreva mensagens de commit claras:
- Use tempo presente ("Adiciona recurso" em vez de "Adicionou recurso")
- Use modo imperativo ("Mover cursor para..." em vez de "Move cursor para...")
- Limite a primeira linha a 72 caracteres
- Referencie problemas e pull requests quando relevante
4. **Envie para seu fork**:
```bash
git push origin feature/your-feature-name
```
### Criando o Pull Request
1. Acesse o [repositório](https://github.com/microsoft/Data-Science-For-Beginners)
2. Clique em "Pull requests" → "New pull request"
3. Clique em "compare across forks"
4. Selecione seu fork e branch
5. Clique em "Create pull request"
### Formato do Título do PR
Use títulos claros e descritivos seguindo este formato:
```
[Component] Brief description
```
Exemplos:
- `[Lesson 7] Corrigir erro de importação no notebook Python`
- `[Quiz App] Adicionar tradução para alemão`
- `[Docs] Atualizar README com novos pré-requisitos`
- `[Fix] Corrigir caminho de dados na lição de visualização`
### Descrição do PR
Inclua na descrição do seu PR:
- **O que**: Quais alterações você fez?
- **Por que**: Por que essas alterações são necessárias?
- **Como**: Como você implementou as alterações?
- **Testes**: Como você testou as alterações?
- **Capturas de tela**: Inclua capturas de tela para alterações visuais
- **Problemas relacionados**: Link para problemas relacionados (ex.: "Fixes #123")
### Processo de Revisão
1. **Verificações automáticas** serão executadas no seu PR
2. **Os mantenedores revisarão** sua contribuição
3. **Aborde o feedback** fazendo commits adicionais
4. Uma vez aprovado, um **mantenedor fará o merge** do seu PR
### Após o Merge do Seu PR
1. Exclua seu branch:
```bash
git branch -d feature/your-feature-name
git push origin --delete feature/your-feature-name
```
2. Atualize seu fork:
```bash
git checkout main
git pull upstream main
git push origin main
```
## Diretrizes de Estilo
### Markdown
- Use níveis de cabeçalho consistentes
- Inclua linhas em branco entre seções
- Use blocos de código com especificadores de linguagem:
````markdown
```python
import pandas as pd
```
````
- Adicione texto alternativo às imagens: `![Texto alternativo](../../translated_images/pt-BR/image.4ee84a82b5e4c9e6651b13fd27dcf615e427ec584929f2cef7167aa99151a77a.png)`
- Mantenha os comprimentos das linhas razoáveis (cerca de 80-100 caracteres)
### Python
- Siga o guia de estilo PEP 8
- Use nomes de variáveis significativos
- Adicione docstrings às funções
- Inclua dicas de tipo quando apropriado:
```python
def process_data(df: pd.DataFrame) -> pd.DataFrame:
"""Process the input dataframe."""
return df
```
### JavaScript/Vue.js
- Siga o guia de estilo do Vue.js 2
- Use a configuração do ESLint fornecida
- Escreva componentes modulares e reutilizáveis
- Adicione comentários para lógica complexa
### Organização de Arquivos
- Mantenha arquivos relacionados juntos
- Use nomes de arquivos descritivos
- Siga a estrutura de diretórios existente
- Não faça commit de arquivos desnecessários (.DS_Store, .pyc, node_modules, etc.)
## Acordo de Licença de Contribuidor
Este projeto aceita contribuições e sugestões. A maioria das contribuições exige que você concorde com um Acordo de Licença de Contribuidor (CLA), declarando que você tem o direito de, e realmente concede a nós os direitos de usar sua contribuição. Para detalhes, visite
https://cla.microsoft.com.
Quando você enviar um pull request, um CLA-bot determinará automaticamente se você precisa fornecer um CLA e decorará o PR adequadamente (ex.: etiqueta, comentário). Basta seguir as instruções fornecidas pelo bot. Você só precisará fazer isso uma vez em todos os repositórios que usam nosso CLA.
## Dúvidas?
- Confira nosso [Canal Discord #data-science-for-beginners](https://aka.ms/ds4beginners/discord)
- Junte-se à nossa [comunidade no Discord](https://aka.ms/ds4beginners/discord)
- Revise os [problemas existentes](https://github.com/microsoft/Data-Science-For-Beginners/issues) e [pull requests](https://github.com/microsoft/Data-Science-For-Beginners/pulls)
## Obrigado!
Suas contribuições tornam este currículo melhor para todos. Obrigado por dedicar seu tempo para contribuir!
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

@ -0,0 +1,252 @@
# Guia de Instalação
Este guia ajudará você a configurar seu ambiente para trabalhar com o currículo de Ciência de Dados para Iniciantes.
## Índice
- [Pré-requisitos](../..)
- [Opções de Início Rápido](../..)
- [Instalação Local](../..)
- [Verificar sua Instalação](../..)
## Pré-requisitos
Antes de começar, você deve ter:
- Familiaridade básica com linha de comando/terminal
- Uma conta no GitHub (gratuita)
- Conexão estável com a internet para a configuração inicial
## Opções de Início Rápido
### Opção 1: GitHub Codespaces (Recomendado para Iniciantes)
A maneira mais fácil de começar é com o GitHub Codespaces, que fornece um ambiente de desenvolvimento completo no seu navegador.
1. Acesse o [repositório](https://github.com/microsoft/Data-Science-For-Beginners)
2. Clique no menu suspenso **Code**
3. Selecione a aba **Codespaces**
4. Clique em **Create codespace on main**
5. Aguarde a inicialização do ambiente (2-3 minutos)
Seu ambiente agora está pronto com todas as dependências pré-instaladas!
### Opção 2: Desenvolvimento Local
Para trabalhar no seu próprio computador, siga as instruções detalhadas abaixo.
## Instalação Local
### Passo 1: Instalar Git
O Git é necessário para clonar o repositório e rastrear suas alterações.
**Windows:**
- Baixe em [git-scm.com](https://git-scm.com/download/win)
- Execute o instalador com as configurações padrão
**macOS:**
- Instale via Homebrew: `brew install git`
- Ou baixe em [git-scm.com](https://git-scm.com/download/mac)
**Linux:**
```bash
# Debian/Ubuntu
sudo apt-get update
sudo apt-get install git
# Fedora
sudo dnf install git
# Arch
sudo pacman -S git
```
### Passo 2: Clonar o Repositório
```bash
# Clone the repository
git clone https://github.com/microsoft/Data-Science-For-Beginners.git
# Navigate to the directory
cd Data-Science-For-Beginners
```
### Passo 3: Instalar Python e Jupyter
Python 3.7 ou superior é necessário para as lições de ciência de dados.
**Windows:**
1. Baixe o Python em [python.org](https://www.python.org/downloads/)
2. Durante a instalação, marque "Add Python to PATH"
3. Verifique a instalação:
```bash
python --version
```
**macOS:**
```bash
# Using Homebrew
brew install python3
# Verify installation
python3 --version
```
**Linux:**
```bash
# Most Linux distributions come with Python pre-installed
python3 --version
# If not installed:
# Debian/Ubuntu
sudo apt-get install python3 python3-pip
# Fedora
sudo dnf install python3 python3-pip
```
### Passo 4: Configurar o Ambiente Python
Recomenda-se usar um ambiente virtual para manter as dependências isoladas.
```bash
# Create a virtual environment
python -m venv venv
# Activate the virtual environment
# On Windows:
venv\Scripts\activate
# On macOS/Linux:
source venv/bin/activate
```
### Passo 5: Instalar Pacotes Python
Instale as bibliotecas necessárias para ciência de dados:
```bash
pip install jupyter pandas numpy matplotlib seaborn scikit-learn
```
### Passo 6: Instalar Node.js e npm (Para o Aplicativo de Quiz)
O aplicativo de quiz requer Node.js e npm.
**Windows/macOS:**
- Baixe em [nodejs.org](https://nodejs.org/) (versão LTS recomendada)
- Execute o instalador
**Linux:**
```bash
# Debian/Ubuntu
# WARNING: Piping scripts from the internet directly into bash can be a security risk.
# It is recommended to review the script before running it:
# curl -fsSL https://deb.nodesource.com/setup_lts.x -o setup_lts.x
# less setup_lts.x
# Then run:
# sudo -E bash setup_lts.x
#
# Alternatively, you can use the one-liner below at your own risk:
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt-get install -y nodejs
# Fedora
sudo dnf install nodejs
# Verify installation
node --version
npm --version
```
### Passo 7: Instalar Dependências do Aplicativo de Quiz
```bash
# Navigate to quiz app directory
cd quiz-app
# Install dependencies
npm install
# Return to root directory
cd ..
```
### Passo 8: Instalar Docsify (Opcional)
Para acesso offline à documentação:
```bash
npm install -g docsify-cli
```
## Verificar sua Instalação
### Testar Python e Jupyter
```bash
# Activate your virtual environment if not already activated
# On Windows:
venv\Scripts\activate
# On macOS/Linux:
source venv/bin/activate
# Start Jupyter Notebook
jupyter notebook
```
Seu navegador deve abrir com a interface do Jupyter. Agora você pode navegar até o arquivo `.ipynb` de qualquer lição.
### Testar o Aplicativo de Quiz
```bash
# Navigate to quiz app
cd quiz-app
# Start development server
npm run serve
```
O aplicativo de quiz deve estar disponível em `http://localhost:8080` (ou outra porta, se 8080 estiver ocupada).
### Testar o Servidor de Documentação
```bash
# From the root directory of the repository
docsify serve
```
A documentação deve estar disponível em `http://localhost:3000`.
## Usando Contêineres Dev do VS Code
Se você tiver o Docker instalado, pode usar os Contêineres Dev do VS Code:
1. Instale o [Docker Desktop](https://www.docker.com/products/docker-desktop)
2. Instale o [Visual Studio Code](https://code.visualstudio.com/)
3. Instale a extensão [Remote - Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers)
4. Abra o repositório no VS Code
5. Pressione `F1` e selecione "Remote-Containers: Reopen in Container"
6. Aguarde a construção do contêiner (somente na primeira vez)
## Próximos Passos
- Explore o [README.md](README.md) para uma visão geral do currículo
- Leia o [USAGE.md](USAGE.md) para fluxos de trabalho e exemplos comuns
- Consulte o [TROUBLESHOOTING.md](TROUBLESHOOTING.md) se encontrar problemas
- Revise o [CONTRIBUTING.md](CONTRIBUTING.md) se quiser contribuir
## Obtendo Ajuda
Se você encontrar problemas:
1. Consulte o guia [TROUBLESHOOTING.md](TROUBLESHOOTING.md)
2. Pesquise problemas existentes no [GitHub Issues](https://github.com/microsoft/Data-Science-For-Beginners/issues)
3. Junte-se à nossa [comunidade no Discord](https://aka.ms/ds4beginners/discord)
4. Crie um novo problema com informações detalhadas sobre seu problema
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

@ -0,0 +1,253 @@
# Ciência de Dados para Iniciantes - Um Currículo
[![Abrir no GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://github.com/codespaces/new?hide_repo_select=true&ref=main&repo=344191198)
[![Licença do GitHub](https://img.shields.io/github/license/microsoft/Data-Science-For-Beginners.svg)](https://github.com/microsoft/Data-Science-For-Beginners/blob/master/LICENSE)
[![Colaboradores do GitHub](https://img.shields.io/github/contributors/microsoft/Data-Science-For-Beginners.svg)](https://GitHub.com/microsoft/Data-Science-For-Beginners/graphs/contributors/)
[![Issues do GitHub](https://img.shields.io/github/issues/microsoft/Data-Science-For-Beginners.svg)](https://GitHub.com/microsoft/Data-Science-For-Beginners/issues/)
[![Pull requests do GitHub](https://img.shields.io/github/issues-pr/microsoft/Data-Science-For-Beginners.svg)](https://GitHub.com/microsoft/Data-Science-For-Beginners/pulls/)
[![PRs bem-vindos](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)
[![Observadores do GitHub](https://img.shields.io/github/watchers/microsoft/Data-Science-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/Data-Science-For-Beginners/watchers/)
[![Forks do GitHub](https://img.shields.io/github/forks/microsoft/Data-Science-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/Data-Science-For-Beginners/network/)
[![Estrelas do GitHub](https://img.shields.io/github/stars/microsoft/Data-Science-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/Data-Science-For-Beginners/stargazers/)
[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG)
[![Fórum de Desenvolvedores Microsoft Foundry](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum)
Os Azure Cloud Advocates da Microsoft têm o prazer de oferecer um currículo de 10 semanas, com 20 aulas, inteiramente sobre Ciência de Dados. Cada aula inclui questionários antes e depois da aula, instruções escritas para completar a aula, uma solução e uma tarefa. Nossa pedagogia baseada em projetos permite que você aprenda enquanto constrói, uma forma comprovada para novas habilidades "ficarem".
**Agradecimentos especiais aos nossos autores:** [Jasmine Greenaway](https://www.twitter.com/paladique), [Dmitry Soshnikov](http://soshnikov.com), [Nitya Narasimhan](https://twitter.com/nitya), [Jalen McGee](https://twitter.com/JalenMcG), [Jen Looper](https://twitter.com/jenlooper), [Maud Levy](https://twitter.com/maudstweets), [Tiffany Souterre](https://twitter.com/TiffanySouterre), [Christopher Harrison](https://www.twitter.com/geektrainer).
**🙏 Agradecimentos especiais 🙏 aos nossos autores, revisores e colaboradores de conteúdo do [Microsoft Student Ambassador](https://studentambassadors.microsoft.com/),** notavelmente Aaryan Arora, [Aditya Garg](https://github.com/AdityaGarg00), [Alondra Sanchez](https://www.linkedin.com/in/alondra-sanchez-molina/), [Ankita Singh](https://www.linkedin.com/in/ankitasingh007), [Anupam Mishra](https://www.linkedin.com/in/anupam--mishra/), [Arpita Das](https://www.linkedin.com/in/arpitadas01/), ChhailBihari Dubey, [Dibri Nsofor](https://www.linkedin.com/in/dibrinsofor), [Dishita Bhasin](https://www.linkedin.com/in/dishita-bhasin-7065281bb), [Majd Safi](https://www.linkedin.com/in/majd-s/), [Max Blum](https://www.linkedin.com/in/max-blum-6036a1186/), [Miguel Correa](https://www.linkedin.com/in/miguelmque/), [Mohamma Iftekher (Iftu) Ebne Jalal](https://twitter.com/iftu119), [Nawrin Tabassum](https://www.linkedin.com/in/nawrin-tabassum), [Raymond Wangsa Putra](https://www.linkedin.com/in/raymond-wp/), [Rohit Yadav](https://www.linkedin.com/in/rty2423), Samridhi Sharma, [Sanya Sinha](https://www.linkedin.com/mwlite/in/sanya-sinha-13aab1200),
[Sheena Narula](https://www.linkedin.com/in/sheena-narua-n/), [Tauqeer Ahmad](https://www.linkedin.com/in/tauqeerahmad5201/), Yogendrasingh Pawar , [Vidushi Gupta](https://www.linkedin.com/in/vidushi-gupta07/), [Jasleen Sondhi](https://www.linkedin.com/in/jasleen-sondhi/)
|![Sketchnote by @sketchthedocs https://sketchthedocs.dev](../../translated_images/pt-BR/00-Title.8af36cd35da1ac55.webp)|
|:---:|
| Ciência de Dados para Iniciantes - _Sketchnote por [@nitya](https://twitter.com/nitya)_ |
### 🌐 Suporte Multilíngue
#### Suportado via GitHub Action (Automatizado e Sempre Atualizado)
<!-- CO-OP TRANSLATOR LANGUAGES TABLE START -->
[Árabe](../ar/README.md) | [Bengali](../bn/README.md) | [Búlgaro](../bg/README.md) | [Birmanês (Myanmar)](../my/README.md) | [Chinês (Simplificado)](../zh-CN/README.md) | [Chinês (Tradicional, Hong Kong)](../zh-HK/README.md) | [Chinês (Tradicional, Macau)](../zh-MO/README.md) | [Chinês (Tradicional, Taiwan)](../zh-TW/README.md) | [Croata](../hr/README.md) | [Tcheco](../cs/README.md) | [Dinamarquês](../da/README.md) | [Holandês](../nl/README.md) | [Estoniano](../et/README.md) | [Finlandês](../fi/README.md) | [Francês](../fr/README.md) | [Alemão](../de/README.md) | [Grego](../el/README.md) | [Hebraico](../he/README.md) | [Hindi](../hi/README.md) | [Húngaro](../hu/README.md) | [Indonésio](../id/README.md) | [Italiano](../it/README.md) | [Japonês](../ja/README.md) | [Kannada](../kn/README.md) | [Coreano](../ko/README.md) | [Lituano](../lt/README.md) | [Malaio](../ms/README.md) | [Malaiala](../ml/README.md) | [Marathi](../mr/README.md) | [Nepali](../ne/README.md) | [Pidgin Nigeriano](../pcm/README.md) | [Norueguês](../no/README.md) | [Persa (Farsi)](../fa/README.md) | [Polonês](../pl/README.md) | [Português (Brasil)](./README.md) | [Português (Portugal)](../pt-PT/README.md) | [Punjabi (Gurmukhi)](../pa/README.md) | [Romeno](../ro/README.md) | [Russo](../ru/README.md) | [Sérvio (Cirílico)](../sr/README.md) | [Eslovaco](../sk/README.md) | [Esloveno](../sl/README.md) | [Espanhol](../es/README.md) | [Suaíli](../sw/README.md) | [Sueco](../sv/README.md) | [Tagalog (Filipino)](../tl/README.md) | [Tâmil](../ta/README.md) | [Telugu](../te/README.md) | [Tailandês](../th/README.md) | [Turco](../tr/README.md) | [Ucraniano](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamita](../vi/README.md)
> **Prefere Clonar Localmente?**
> Este repositório inclui mais de 50 traduções de idiomas, o que aumenta significativamente o tamanho do download. Para clonar sem traduções, use checkout esparso:
> ```bash
> git clone --filter=blob:none --sparse https://github.com/microsoft/Data-Science-For-Beginners.git
> cd Data-Science-For-Beginners
> git sparse-checkout set --no-cone '/*' '!translations' '!translated_images'
> ```
> Isso fornece tudo o que você precisa para concluir o curso com um download muito mais rápido.
<!-- CO-OP TRANSLATOR LANGUAGES TABLE END -->
**Se desejar suportar idiomas adicionais, as línguas suportadas estão listadas [aqui](https://github.com/Azure/co-op-translator/blob/main/getting_started/supported-languages.md)**
#### Junte-se à Nossa Comunidade
[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG)
Estamos com uma série no Discord de aprender com IA, saiba mais e junte-se a nós em [Learn with AI Series](https://aka.ms/learnwithai/discord) de 18 a 30 de setembro de 2025. Você receberá dicas e truques de como usar o GitHub Copilot para Ciência de Dados.
![Série Learn with AI](../../translated_images/pt-BR/1.2b28cdc6205e26fe.webp)
# Você é um estudante?
Comece com os seguintes recursos:
- [Página do Hub do Estudante](https://docs.microsoft.com/en-gb/learn/student-hub?WT.mc_id=academic-77958-bethanycheum) Nesta página, você encontrará recursos para iniciantes, pacotes estudantis e até maneiras de conseguir um voucher de certificação gratuito. Esta é uma página que você vai querer adicionar aos favoritos e verificar de vez em quando, pois trocamos o conteúdo pelo menos mensalmente.
- [Microsoft Learn Student Ambassadors](https://studentambassadors.microsoft.com?WT.mc_id=academic-77958-bethanycheum) Junte-se a uma comunidade global de embaixadores estudantis, essa pode ser sua porta de entrada para a Microsoft.
# Começando
## 📚 Documentação
- **[Guia de Instalação](INSTALLATION.md)** - Instruções passo a passo para iniciantes
- **[Guia de Uso](USAGE.md)** - Exemplos e fluxos de trabalho comuns
- **[Solução de Problemas](TROUBLESHOOTING.md)** - Soluções para problemas comuns
- **[Guia de Contribuição](CONTRIBUTING.md)** - Como contribuir para este projeto
- **[Para Professores](for-teachers.md)** - Orientações de ensino e recursos para salas de aula
## 👨‍🎓 Para Estudantes
> **Iniciantes completos**: Novo em ciência de dados? Comece com nossos [exemplos amigáveis para iniciantes](examples/README.md)! Estes exemplos simples e bem comentados ajudarão você a entender o básico antes de mergulhar no currículo completo.
> **[Estudantes](https://aka.ms/student-page)**: para usar esse currículo por conta própria, faça um fork de todo o repositório e complete os exercícios sozinho, começando com um questionário antes da aula. Depois, leia a aula e complete o restante das atividades. Tente criar os projetos compreendendo as lições em vez de copiar o código da solução; no entanto, esse código está disponível nas pastas /solutions em cada aula orientada a projetos. Outra ideia seria formar um grupo de estudos com amigos e passar pelo conteúdo juntos. Para estudo adicional, recomendamos o [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/qprpajyoy3x0g7?WT.mc_id=academic-77958-bethanycheum).
**Início rápido:**
1. Verifique o [Guia de Instalação](INSTALLATION.md) para configurar seu ambiente
2. Revise o [Guia de Uso](USAGE.md) para aprender como trabalhar com o currículo
3. Comece pela Aula 1 e siga sequencialmente
4. Junte-se à nossa [comunidade no Discord](https://aka.ms/ds4beginners/discord) para suporte
## 👩‍🏫 Para Professores
> **Professores**: incluímos [algumas sugestões](for-teachers.md) sobre como usar este currículo. Adoraríamos seu feedback [em nosso fórum de discussão](https://github.com/microsoft/Data-Science-For-Beginners/discussions)!
## Conheça a Equipe
[![Vídeo promocional](../../ds-for-beginners.gif)](https://youtu.be/8mzavjQSMM4 "Vídeo promocional")
**Gif por** [Mohit Jaisal](https://www.linkedin.com/in/mohitjaisal)
> 🎥 Clique na imagem acima para um vídeo sobre o projeto e as pessoas que o criaram!
## Pedagogia
Escolhemos dois princípios pedagógicos ao construir este currículo: garantir que seja baseado em projetos e que inclua quizzes frequentes. Ao final desta série, os alunos terão aprendido princípios básicos de ciência de dados, incluindo conceitos éticos, preparação de dados, diferentes formas de trabalhar com dados, visualização de dados, análise de dados, casos de uso reais de ciência de dados e mais.
Além disso, um quiz de baixo risco antes da aula define a intenção do aluno em aprender um tópico, enquanto um segundo quiz após a aula garante uma maior retenção. Este currículo foi projetado para ser flexível e divertido e pode ser feito integralmente ou em partes. Os projetos começam pequenos e se tornam progressivamente mais complexos ao final do ciclo de 10 semanas.
> Encontre nosso [Código de Conduta](CODE_OF_CONDUCT.md), [Contribuição](CONTRIBUTING.md), diretrizes de [Tradução](TRANSLATIONS.md). Agradecemos seu feedback construtivo!
## Cada lição inclui:
- Esboço opcional (sketchnote)
- Vídeo suplementar opcional
- Quiz de aquecimento pré-aula
- Lição escrita
- Para lições baseadas em projetos, guias passo a passo sobre como construir o projeto
- Verificações de conhecimento
- Um desafio
- Leitura suplementar
- Tarefa
- [Quiz pós-aula](https://ff-quizzes.netlify.app/en/)
> **Uma nota sobre os quizzes**: Todos os quizzes estão contidos na pasta Quiz-App, totalizando 40 quizzes de três perguntas cada. Eles estão vinculados dentro das lições, mas o aplicativo de quizzes pode ser executado localmente ou implantado no Azure; siga as instruções na pasta `quiz-app`. Eles estão sendo gradualmente localizados.
## 🎓 Exemplos para Iniciantes
**Novo em Ciência de Dados?** Criamos um diretório especial de [exemplos](examples/README.md) com código simples e bem comentado para ajudar você a começar:
- 🌟 **Hello World** - Seu primeiro programa de ciência de dados
- 📂 **Carregando Dados** - Aprenda a ler e explorar conjuntos de dados
- 📊 **Análise Simples** - Calcule estatísticas e encontre padrões
- 📈 **Visualização Básica** - Crie gráficos e diagramas
- 🔬 **Projeto do Mundo Real** - Fluxo de trabalho completo do início ao fim
Cada exemplo inclui comentários detalhados explicando cada passo, tornando-o perfeito para iniciantes absolutos!
👉 **[Comece pelos exemplos](examples/README.md)** 👈
## Lições
|![ Esboço por @sketchthedocs https://sketchthedocs.dev](../../translated_images/pt-BR/00-Roadmap.4905d6567dff4753.webp)|
|:---:|
| Ciência de Dados para Iniciantes: Roteiro - _Esboço por [@nitya](https://twitter.com/nitya)_ |
| Número da Lição | Tópico | Grupo da Lição | Objetivos de Aprendizagem | Lição Vinculada | Autor |
| :-----------: | :----------------------------------------: | :--------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------: | :----: |
| 01 | Definindo Ciência de Dados | [Introdução](1-Introduction/README.md) | Aprenda os conceitos básicos por trás da ciência de dados e como ela está relacionada à inteligência artificial, aprendizado de máquina e big data. | [lesson](1-Introduction/01-defining-data-science/README.md) [vídeo](https://youtu.be/beZ7Mb_oz9I) | [Dmitry](http://soshnikov.com) |
| 02 | Ética em Ciência de Dados | [Introdução](1-Introduction/README.md) | Conceitos, desafios e estruturas da ética em dados. | [lesson](1-Introduction/02-ethics/README.md) | [Nitya](https://twitter.com/nitya) |
| 03 | Definindo Dados | [Introdução](1-Introduction/README.md) | Como os dados são classificados e suas fontes comuns. | [lesson](1-Introduction/03-defining-data/README.md) | [Jasmine](https://www.twitter.com/paladique) |
| 04 | Introdução a Estatística & Probabilidade | [Introdução](1-Introduction/README.md) | Técnicas matemáticas de probabilidade e estatística para entender dados. | [lesson](1-Introduction/04-stats-and-probability/README.md) [vídeo](https://youtu.be/Z5Zy85g4Yjw) | [Dmitry](http://soshnikov.com) |
| 05 | Trabalhando com Dados Relacionais | [Trabalhando com Dados](2-Working-With-Data/README.md) | Introdução aos dados relacionais e o básico sobre explorar e analisar dados relacionais com a Linguagem de Consulta Estruturada, também conhecida como SQL (pronuncia-se "see-quell"). | [lesson](2-Working-With-Data/05-relational-databases/README.md) | [Christopher](https://www.twitter.com/geektrainer) | | |
| 06 | Trabalhando com Dados NoSQL | [Trabalhando com Dados](2-Working-With-Data/README.md) | Introdução aos dados não relacionais, seus diversos tipos e o básico sobre explorar e analisar bancos de dados de documentos. | [lesson](2-Working-With-Data/06-non-relational/README.md) | [Jasmine](https://twitter.com/paladique) |
| 07 | Trabalhando com Python | [Trabalhando com Dados](2-Working-With-Data/README.md) | Noções básicas do uso de Python para exploração de dados com bibliotecas como Pandas. É recomendada uma compreensão fundamental da programação em Python. | [lesson](2-Working-With-Data/07-python/README.md) [vídeo](https://youtu.be/dZjWOGbsN4Y) | [Dmitry](http://soshnikov.com) |
| 08 | Preparação de Dados | [Trabalhando com Dados](2-Working-With-Data/README.md) | Tópicos sobre técnicas de dados para limpar e transformar dados para lidar com desafios de dados ausentes, imprecisos ou incompletos. | [lesson](2-Working-With-Data/08-data-preparation/README.md) | [Jasmine](https://www.twitter.com/paladique) |
| 09 | Visualizando Quantidades | [Visualização de Dados](3-Data-Visualization/README.md) | Aprenda a usar Matplotlib para visualizar dados de pássaros 🦆 | [lesson](3-Data-Visualization/09-visualization-quantities/README.md) | [Jen](https://twitter.com/jenlooper) |
| 10 | Visualizando Distribuições de Dados | [Visualização de Dados](3-Data-Visualization/README.md) | Visualizando observações e tendências dentro de um intervalo. | [lesson](3-Data-Visualization/10-visualization-distributions/README.md) | [Jen](https://twitter.com/jenlooper) |
| 11 | Visualizando Proporções | [Visualização de Dados](3-Data-Visualization/README.md) | Visualizando porcentagens discretas e agrupadas. | [lesson](3-Data-Visualization/11-visualization-proportions/README.md) | [Jen](https://twitter.com/jenlooper) |
| 12 | Visualizando Relações | [Visualização de Dados](3-Data-Visualization/README.md) | Visualizando conexões e correlações entre conjuntos de dados e suas variáveis. | [lesson](3-Data-Visualization/12-visualization-relationships/README.md) | [Jen](https://twitter.com/jenlooper) |
| 13 | Visualizações Significativas | [Visualização de Dados](3-Data-Visualization/README.md) | Técnicas e orientações para tornar suas visualizações valiosas para solução eficaz de problemas e insights. | [lesson](3-Data-Visualization/13-meaningful-visualizations/README.md) | [Jen](https://twitter.com/jenlooper) |
| 14 | Introdução ao ciclo de vida da Ciência de Dados | [Ciclo de Vida](4-Data-Science-Lifecycle/README.md) | Introdução ao ciclo de vida da ciência de dados e sua primeira etapa: adquirir e extrair dados. | [lesson](4-Data-Science-Lifecycle/14-Introduction/README.md) | [Jasmine](https://twitter.com/paladique) |
| 15 | Análise | [Ciclo de Vida](4-Data-Science-Lifecycle/README.md) | Esta fase do ciclo de vida da ciência de dados foca em técnicas para analisar dados. | [lesson](4-Data-Science-Lifecycle/15-analyzing/README.md) | [Jasmine](https://twitter.com/paladique) | | |
| 16 | Comunicação | [Ciclo de Vida](4-Data-Science-Lifecycle/README.md) | Esta fase do ciclo de vida da ciência de dados foca em apresentar os insights dos dados de forma que seja mais fácil para os tomadores de decisão entenderem. | [lesson](4-Data-Science-Lifecycle/16-communication/README.md) | [Jalen](https://twitter.com/JalenMcG) | | |
| 17 | Ciência de Dados na Nuvem | [Dados na Nuvem](5-Data-Science-In-Cloud/README.md) | Esta série de lições introduz ciência de dados na nuvem e seus benefícios. | [lesson](5-Data-Science-In-Cloud/17-Introduction/README.md) | [Tiffany](https://twitter.com/TiffanySouterre) e [Maud](https://twitter.com/maudstweets) |
| 18 | Ciência de Dados na Nuvem | [Dados na Nuvem](5-Data-Science-In-Cloud/README.md) | Treinamento de modelos usando ferramentas Low Code. |[lesson](5-Data-Science-In-Cloud/18-Low-Code/README.md) | [Tiffany](https://twitter.com/TiffanySouterre) e [Maud](https://twitter.com/maudstweets) |
| 19 | Ciência de Dados na Nuvem | [Dados na Nuvem](5-Data-Science-In-Cloud/README.md) | Implantação de modelos com Azure Machine Learning Studio. | [lesson](5-Data-Science-In-Cloud/19-Azure/README.md)| [Tiffany](https://twitter.com/TiffanySouterre) e [Maud](https://twitter.com/maudstweets) |
| 20 | Ciência de Dados na Prática | [Na Prática](6-Data-Science-In-Wild/README.md) | Projetos impulsionados por ciência de dados no mundo real. | [lesson](6-Data-Science-In-Wild/20-Real-World-Examples/README.md) | [Nitya](https://twitter.com/nitya) |
## GitHub Codespaces
Siga estes passos para abrir este exemplo em um Codespace:
1. Clique no menu suspenso Code e selecione a opção Abrir com Codespaces.
2. Selecione + Novo codespace na parte inferior do painel.
Para mais informações, confira a [documentação do GitHub](https://docs.github.com/en/codespaces/developing-in-codespaces/creating-a-codespace-for-a-repository#creating-a-codespace).
## VSCode Remote - Containers
Siga estes passos para abrir este repositório em um contêiner usando sua máquina local e VSCode usando a extensão VS Code Remote - Containers:
1. Se esta for sua primeira vez usando um contêiner de desenvolvimento, certifique-se de que seu sistema atende aos pré-requisitos (ou seja, ter o Docker instalado) na [documentação de introdução](https://code.visualstudio.com/docs/devcontainers/containers#_getting-started).
Para usar este repositório, você pode abrir o repositório em um volume Docker isolado:
**Nota**: Nos bastidores, isso usará o comando Remote-Containers: **Clone Repository in Container Volume...** para clonar o código-fonte em um volume Docker em vez do sistema de arquivos local. [Volumes](https://docs.docker.com/storage/volumes/) são o mecanismo preferido para persistência de dados em contêineres.
Ou abra uma versão clonada ou baixada localmente do repositório:
- Clone este repositório para seu sistema de arquivos local.
- Pressione F1 e selecione o comando **Remote-Containers: Open Folder in Container...**.
- Selecione a cópia clonada desta pasta, aguarde o contêiner iniciar e experimente.
## Acesso Offline
Você pode executar esta documentação offline usando [Docsify](https://docsify.js.org/#/). Faça um fork deste repositório, [instale o Docsify](https://docsify.js.org/#/quickstart) em sua máquina local, então no diretório raiz deste repositório, digite `docsify serve`. O site será servido na porta 3000 em seu localhost: `localhost:3000`.
> Nota, notebooks não serão renderizados via Docsify, então quando precisar rodar um notebook, faça isso separadamente no VS Code executando um kernel Python.
## Outros Currículos
Nossa equipe produz outros currículos! Confira:
<!-- CO-OP TRANSLATOR OTHER COURSES START -->
### LangChain
[![LangChain4j para Iniciantes](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners)
[![LangChain.js para Iniciantes](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin)
---
### Azure / Edge / MCP / Agentes
[![AZD para Iniciantes](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst)
[![Edge AI para Iniciantes](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst)
[![MCP para Iniciantes](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst)
[![Agentes de IA para Iniciantes](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst)
---
### Série de IA Generativa
[![IA Generativa para Iniciantes](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst)
[![IA Generativa (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst)
[![IA Generativa (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst)
[![IA Generativa (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst)
---
### Aprendizado Básico
[![ML para Iniciantes](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst)
[![Ciência de Dados para Iniciantes](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst)
[![IA para Iniciantes](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst)
[![Cibersegurança para Iniciantes](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung)
[![Desenvolvimento Web para Iniciantes](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst)
[![IoT para Iniciantes](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst)
[![Desenvolvimento XR para Iniciantes](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst)
---
### Série Copilot
[![Copilot para Programação Assistida por IA](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
[![Copilot para C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst)
[![Aventura Copilot](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst)
<!-- CO-OP TRANSLATOR OTHER COURSES END -->
## Obtendo Ajuda
**Encontrando problemas?** Consulte nosso [Guia de Solução de Problemas](TROUBLESHOOTING.md) para soluções de problemas comuns.
Se você ficar travado ou tiver alguma dúvida sobre como criar aplicativos de IA. Junte-se a outros aprendizes e desenvolvedores experientes em discussões sobre MCP. É uma comunidade de apoio onde perguntas são bem-vindas e o conhecimento é compartilhado livremente.
[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG)
Se você tiver feedback sobre o produto ou erros durante a construção, visite:
[![Fórum de Desenvolvedores Microsoft Foundry](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Aviso Legal**:
Este documento foi traduzido usando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos pela precisão, por favor, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original, em seu idioma nativo, deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se tradução profissional humana. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,42 @@
## Segurança
A Microsoft leva a segurança de seus produtos e serviços de software muito a sério, o que inclui todos os repositórios de código-fonte gerenciados por meio de nossas organizações no GitHub, que incluem [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin) e [nossas organizações no GitHub](https://opensource.microsoft.com/).
Se você acredita ter encontrado uma vulnerabilidade de segurança em qualquer repositório de propriedade da Microsoft que atenda à [definição de vulnerabilidade de segurança da Microsoft](https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc751383(v=technet.10)), por favor, relate-a conforme descrito abaixo.
## Relatando Problemas de Segurança
**Por favor, não relate vulnerabilidades de segurança por meio de issues públicas no GitHub.**
Em vez disso, relate-as ao Microsoft Security Response Center (MSRC) em [https://msrc.microsoft.com/create-report](https://msrc.microsoft.com/create-report).
Se preferir enviar sem fazer login, envie um e-mail para [secure@microsoft.com](mailto:secure@microsoft.com). Se possível, criptografe sua mensagem com nossa chave PGP; faça o download na [página da Chave PGP do Microsoft Security Response Center](https://www.microsoft.com/en-us/msrc/pgp-key-msrc).
Você deve receber uma resposta dentro de 24 horas. Se, por algum motivo, não receber, envie um e-mail de acompanhamento para garantir que recebemos sua mensagem original. Informações adicionais podem ser encontradas em [microsoft.com/msrc](https://www.microsoft.com/msrc).
Inclua as informações solicitadas abaixo (tanto quanto possível) para nos ajudar a entender melhor a natureza e o escopo do possível problema:
* Tipo de problema (por exemplo, buffer overflow, SQL injection, cross-site scripting, etc.)
* Caminhos completos dos arquivos de código-fonte relacionados à manifestação do problema
* A localização do código-fonte afetado (tag/branch/commit ou URL direto)
* Qualquer configuração especial necessária para reproduzir o problema
* Instruções passo a passo para reproduzir o problema
* Código de prova de conceito ou de exploração (se possível)
* Impacto do problema, incluindo como um invasor poderia explorar o problema
Essas informações nos ajudarão a priorizar seu relatório mais rapidamente.
Se você estiver relatando para um programa de recompensa por bugs, relatórios mais completos podem contribuir para uma recompensa maior. Visite a página do [Programa de Recompensas por Bugs da Microsoft](https://microsoft.com/msrc/bounty) para mais detalhes sobre nossos programas ativos.
## Idiomas Preferidos
Preferimos que todas as comunicações sejam feitas em inglês.
## Política
A Microsoft segue o princípio de [Divulgação Coordenada de Vulnerabilidades](https://www.microsoft.com/en-us/msrc/cvd).
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

@ -0,0 +1,15 @@
# Suporte
## Como registrar problemas e obter ajuda
Este projeto utiliza o GitHub Issues para rastrear bugs e solicitações de recursos. Por favor, pesquise os problemas existentes antes de registrar novos para evitar duplicações. Para novos problemas, registre seu bug ou solicitação de recurso como um novo Issue.
Para obter ajuda e esclarecer dúvidas sobre o uso deste projeto, registre um Issue.
## Política de Suporte da Microsoft
O suporte para este repositório é limitado aos recursos listados acima.
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

@ -0,0 +1,618 @@
# Guia de Solução de Problemas
Este guia fornece soluções para problemas comuns que você pode encontrar ao trabalhar com o currículo de Ciência de Dados para Iniciantes.
## Índice
- [Problemas com Python e Jupyter](../..)
- [Problemas com Pacotes e Dependências](../..)
- [Problemas com Jupyter Notebook](../..)
- [Problemas com o Aplicativo de Quiz](../..)
- [Problemas com Git e GitHub](../..)
- [Problemas com a Documentação Docsify](../..)
- [Problemas com Dados e Arquivos](../..)
- [Problemas de Desempenho](../..)
- [Obtendo Ajuda Adicional](../..)
## Problemas com Python e Jupyter
### Python Não Encontrado ou Versão Errada
**Problema:** `python: command not found` ou versão errada do Python
**Solução:**
```bash
# Check Python version
python --version
python3 --version
# If Python 3 is installed as 'python3', create an alias
# On macOS/Linux, add to ~/.bashrc or ~/.zshrc:
alias python=python3
alias pip=pip3
# Or use python3 explicitly
python3 -m pip install jupyter
```
**Solução para Windows:**
1. Reinstale o Python em [python.org](https://www.python.org/)
2. Durante a instalação, marque "Add Python to PATH"
3. Reinicie seu terminal/prompt de comando
### Problemas de Ativação do Ambiente Virtual
**Problema:** O ambiente virtual não ativa
**Solução:**
**Windows:**
```bash
# If you get execution policy error
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
# Then activate
venv\Scripts\activate
```
**macOS/Linux:**
```bash
# Ensure the activate script is executable
chmod +x venv/bin/activate
# Then activate
source venv/bin/activate
```
**Verifique a ativação:**
```bash
# Your prompt should show (venv)
# Check Python location
which python # Should point to venv
```
### Problemas com o Kernel do Jupyter
**Problema:** "Kernel não encontrado" ou "Kernel continua morrendo"
**Solução:**
```bash
# Reinstall kernel
python -m ipykernel install --user --name=datascience --display-name="Python (Data Science)"
# Or use the default kernel
python -m ipykernel install --user
# Restart Jupyter
jupyter notebook
```
**Problema:** Versão errada do Python no Jupyter
**Solução:**
```bash
# Install Jupyter in your virtual environment
source venv/bin/activate # Activate first
pip install jupyter ipykernel
# Register the kernel
python -m ipykernel install --user --name=venv --display-name="Python (venv)"
# In Jupyter, select Kernel -> Change kernel -> Python (venv)
```
## Problemas com Pacotes e Dependências
### Erros de Importação
**Problema:** `ModuleNotFoundError: No module named 'pandas'` (ou outros pacotes)
**Solução:**
```bash
# Ensure virtual environment is activated
source venv/bin/activate # macOS/Linux
venv\Scripts\activate # Windows
# Install missing package
pip install pandas
# Install all common packages
pip install jupyter pandas numpy matplotlib seaborn scikit-learn
# Verify installation
python -c "import pandas; print(pandas.__version__)"
```
### Falhas na Instalação com Pip
**Problema:** `pip install` falha com erros de permissão
**Solução:**
```bash
# Use --user flag
pip install --user package-name
# Or use virtual environment (recommended)
python -m venv venv
source venv/bin/activate
pip install package-name
```
**Problema:** `pip install` falha com erros de certificado SSL
**Solução:**
```bash
# Update pip first
python -m pip install --upgrade pip
# Try installing with trusted host (temporary workaround)
pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org package-name
```
### Conflitos de Versão de Pacotes
**Problema:** Versões incompatíveis de pacotes
**Solução:**
```bash
# Create fresh virtual environment
python -m venv venv-new
source venv-new/bin/activate # or venv-new\Scripts\activate on Windows
# Install packages with specific versions if needed
pip install pandas==1.3.0
pip install numpy==1.21.0
# Or let pip resolve dependencies
pip install jupyter pandas numpy matplotlib seaborn scikit-learn
```
## Problemas com Jupyter Notebook
### Jupyter Não Inicia
**Problema:** Comando `jupyter notebook` não encontrado
**Solução:**
```bash
# Install Jupyter
pip install jupyter
# Or use python -m
python -m jupyter notebook
# Add to PATH if needed (macOS/Linux)
export PATH="$HOME/.local/bin:$PATH"
```
### Notebook Não Carrega ou Não Salva
**Problema:** "Notebook falhou ao carregar" ou erros ao salvar
**Solução:**
1. Verifique as permissões do arquivo
```bash
# Make sure you have write permissions
ls -l notebook.ipynb
chmod 644 notebook.ipynb # If needed
```
2. Verifique se há corrupção no arquivo
```bash
# Try opening in text editor to check JSON structure
# Copy content to new notebook if corrupted
```
3. Limpe o cache do Jupyter
```bash
jupyter notebook --clear-cache
```
### Célula Não Executa
**Problema:** Célula travada em "In [*]" ou demora muito
**Solução:**
1. **Interrompa o kernel**: Clique no botão "Interrupt" ou pressione `I, I`
2. **Reinicie o kernel**: Menu Kernel → Restart
3. **Verifique loops infinitos** no seu código
4. **Limpe a saída**: Cell → All Output → Clear
### Gráficos Não Aparecem
**Problema:** Gráficos do `matplotlib` não aparecem no notebook
**Solução:**
```python
# Add magic command at the top of notebook
%matplotlib inline
import matplotlib.pyplot as plt
# Create plot
plt.plot([1, 2, 3, 4])
plt.show() # Make sure to call show()
```
**Alternativa para gráficos interativos:**
```python
%matplotlib notebook
# Or
%matplotlib widget
```
## Problemas com o Aplicativo de Quiz
### npm install Falha
**Problema:** Erros durante `npm install`
**Solução:**
```bash
# Clear npm cache
npm cache clean --force
# Remove node_modules and package-lock.json
rm -rf node_modules package-lock.json
# Reinstall
npm install
# If still failing, try with legacy peer deps
npm install --legacy-peer-deps
```
### Aplicativo de Quiz Não Inicia
**Problema:** `npm run serve` falha
**Solução:**
```bash
# Check Node.js version
node --version # Should be 12.x or higher
# Reinstall dependencies
cd quiz-app
rm -rf node_modules package-lock.json
npm install
# Try different port
npm run serve -- --port 8081
```
### Porta Já em Uso
**Problema:** "Porta 8080 já está em uso"
**Solução:**
```bash
# Find and kill process on port 8080
# macOS/Linux:
lsof -ti:8080 | xargs kill -9
# Windows:
netstat -ano | findstr :8080
taskkill /PID <PID> /F
# Or use a different port
npm run serve -- --port 8081
```
### Quiz Não Carrega ou Página em Branco
**Problema:** O aplicativo de quiz carrega, mas mostra uma página em branco
**Solução:**
1. Verifique erros no console do navegador (F12)
2. Limpe o cache e os cookies do navegador
3. Tente outro navegador
4. Certifique-se de que o JavaScript está habilitado
5. Verifique se bloqueadores de anúncios estão interferindo
```bash
# Rebuild the app
npm run build
npm run serve
```
## Problemas com Git e GitHub
### Git Não Reconhecido
**Problema:** `git: command not found`
**Solução:**
**Windows:**
- Instale o Git em [git-scm.com](https://git-scm.com/)
- Reinicie o terminal após a instalação
**macOS:**
> **Nota:** Se você não tiver o Homebrew instalado, siga as instruções em [https://brew.sh/](https://brew.sh/) para instalá-lo primeiro.
```bash
# Install via Homebrew
brew install git
# Or install Xcode Command Line Tools
xcode-select --install
```
**Linux:**
```bash
sudo apt-get install git # Debian/Ubuntu
sudo dnf install git # Fedora
```
### Falha ao Clonar
**Problema:** `git clone` falha com erros de autenticação
**Solução:**
```bash
# Use HTTPS URL
git clone https://github.com/microsoft/Data-Science-For-Beginners.git
# If you have 2FA enabled on GitHub, use Personal Access Token
# Create token at: https://github.com/settings/tokens
# Use token as password when prompted
```
### Permissão Negada (publickey)
**Problema:** Autenticação com chave SSH falha
**Solução:**
```bash
# Generate SSH key
ssh-keygen -t ed25519 -C "your_email@example.com"
# Add key to ssh-agent
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
# Add public key to GitHub
# Copy key: cat ~/.ssh/id_ed25519.pub
# Add at: https://github.com/settings/keys
```
## Problemas com a Documentação Docsify
### Comando Docsify Não Encontrado
**Problema:** `docsify: command not found`
**Solução:**
```bash
# Install globally
npm install -g docsify-cli
# If permission error on macOS/Linux
sudo npm install -g docsify-cli
# Verify installation
docsify --version
# If still not found, add npm global path
# Find npm global path
npm config get prefix
# Add to PATH (add to ~/.bashrc or ~/.zshrc)
export PATH="$PATH:/usr/local/bin"
```
### Documentação Não Carrega
**Problema:** Docsify serve, mas o conteúdo não carrega
**Solução:**
```bash
# Ensure you're in the repository root
cd Data-Science-For-Beginners
# Check for index.html
ls index.html
# Serve with specific port
docsify serve --port 3000
# Check browser console for errors (F12)
```
### Imagens Não Aparecem
**Problema:** Imagens mostram ícone de link quebrado
**Solução:**
1. Verifique se os caminhos das imagens são relativos
2. Certifique-se de que os arquivos de imagem existem no repositório
3. Limpe o cache do navegador
4. Verifique se as extensões dos arquivos correspondem (sensível a maiúsculas/minúsculas em alguns sistemas)
## Problemas com Dados e Arquivos
### Erros de Arquivo Não Encontrado
**Problema:** `FileNotFoundError` ao carregar dados
**Solução:**
```python
import os
# Check current working directory
print(os.getcwd())
# Use absolute path
data_path = os.path.join(os.getcwd(), 'data', 'filename.csv')
df = pd.read_csv(data_path)
# Or use relative path from notebook location
df = pd.read_csv('../data/filename.csv')
# Verify file exists
print(os.path.exists('data/filename.csv'))
```
### Erros ao Ler CSV
**Problema:** Erros ao ler arquivos CSV
**Solução:**
```python
import pandas as pd
# Try different encodings
df = pd.read_csv('file.csv', encoding='utf-8')
# or
df = pd.read_csv('file.csv', encoding='latin-1')
# or
df = pd.read_csv('file.csv', encoding='ISO-8859-1')
# Handle missing values
df = pd.read_csv('file.csv', na_values=['NA', 'N/A', ''])
# Specify delimiter if not comma
df = pd.read_csv('file.csv', delimiter=';')
```
### Erros de Memória com Grandes Conjuntos de Dados
**Problema:** `MemoryError` ao carregar arquivos grandes
**Solução:**
```python
# Read in chunks
chunk_size = 10000
chunks = []
for chunk in pd.read_csv('large_file.csv', chunksize=chunk_size):
# Process chunk
chunks.append(chunk)
df = pd.concat(chunks)
# Or read specific columns only
df = pd.read_csv('file.csv', usecols=['col1', 'col2'])
# Use more efficient data types
df = pd.read_csv('file.csv', dtype={'column_name': 'int32'})
```
## Problemas de Desempenho
### Desempenho Lento do Notebook
**Problema:** Notebooks executam muito lentamente
**Solução:**
1. **Reinicie o kernel e limpe a saída**
- Kernel → Restart & Clear Output
2. **Feche notebooks não utilizados**
3. **Otimize o código:**
```python
# Use vectorized operations instead of loops
# Bad:
result = []
for x in data:
result.append(x * 2)
# Good:
result = data * 2 # NumPy/Pandas vectorization
```
4. **Amostre grandes conjuntos de dados:**
```python
# Work with sample during development
df_sample = df.sample(n=1000) # or df.head(1000)
```
### Navegador Travando
**Problema:** Navegador trava ou fica sem resposta
**Solução:**
1. Feche abas não utilizadas
2. Limpe o cache do navegador
3. Aumente a memória do navegador (Chrome: `chrome://settings/system`)
4. Use o JupyterLab em vez disso:
```bash
pip install jupyterlab
jupyter lab
```
## Obtendo Ajuda Adicional
### Antes de Pedir Ajuda
1. Consulte este guia de solução de problemas
2. Pesquise [GitHub Issues](https://github.com/microsoft/Data-Science-For-Beginners/issues)
3. Revise [INSTALLATION.md](INSTALLATION.md) e [USAGE.md](USAGE.md)
4. Tente buscar a mensagem de erro online
### Como Pedir Ajuda
Ao criar um problema ou pedir ajuda, inclua:
1. **Sistema Operacional**: Windows, macOS ou Linux (qual distribuição)
2. **Versão do Python**: Execute `python --version`
3. **Mensagem de Erro**: Copie a mensagem de erro completa
4. **Passos para Reproduzir**: O que você fez antes de o erro ocorrer
5. **O que Você Já Tentou**: Soluções que você já tentou
**Exemplo:**
```
**Operating System:** macOS 12.0
**Python Version:** 3.9.7
**Error Message:** ModuleNotFoundError: No module named 'pandas'
**Steps to Reproduce:**
1. Activated virtual environment
2. Started Jupyter notebook
3. Tried to import pandas
**What I've Tried:**
- Ran pip install pandas
- Restarted Jupyter
```
### Recursos da Comunidade
- **GitHub Issues**: [Crie um problema](https://github.com/microsoft/Data-Science-For-Beginners/issues/new)
- **Discord**: [Participe da nossa comunidade](https://aka.ms/ds4beginners/discord)
- **Discussões**: [Discussões no GitHub](https://github.com/microsoft/Data-Science-For-Beginners/discussions)
- **Microsoft Learn**: [Fóruns de Q&A](https://docs.microsoft.com/answers/)
### Documentação Relacionada
- [INSTALLATION.md](INSTALLATION.md) - Instruções de configuração
- [USAGE.md](USAGE.md) - Como usar o currículo
- [CONTRIBUTING.md](CONTRIBUTING.md) - Como contribuir
- [README.md](README.md) - Visão geral do projeto
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

@ -0,0 +1,365 @@
# Guia de Uso
Este guia fornece exemplos e fluxos de trabalho comuns para usar o currículo de Ciência de Dados para Iniciantes.
## Índice
- [Como Usar Este Currículo](../..)
- [Trabalhando com as Lições](../..)
- [Trabalhando com Jupyter Notebooks](../..)
- [Usando o Aplicativo de Quiz](../..)
- [Fluxos de Trabalho Comuns](../..)
- [Dicas para Autodidatas](../..)
- [Dicas para Professores](../..)
## Como Usar Este Currículo
Este currículo foi projetado para ser flexível e pode ser usado de várias maneiras:
- **Aprendizado autônomo**: Trabalhe nas lições de forma independente, no seu próprio ritmo
- **Instrução em sala de aula**: Use como um curso estruturado com orientação
- **Grupos de estudo**: Aprenda colaborativamente com colegas
- **Formato de workshop**: Sessões intensivas de aprendizado de curto prazo
## Trabalhando com as Lições
Cada lição segue uma estrutura consistente para maximizar o aprendizado:
### Estrutura da Lição
1. **Quiz pré-lição**: Teste seus conhecimentos existentes
2. **Sketchnote** (Opcional): Resumo visual dos conceitos principais
3. **Vídeo** (Opcional): Conteúdo de vídeo complementar
4. **Lição escrita**: Conceitos principais e explicações
5. **Jupyter Notebook**: Exercícios práticos de codificação
6. **Tarefa**: Pratique o que aprendeu
7. **Quiz pós-lição**: Reforce sua compreensão
### Exemplo de Fluxo de Trabalho para uma Lição
```bash
# 1. Navigate to the lesson directory
cd 1-Introduction/01-defining-data-science
# 2. Read the README.md
# Open README.md in your browser or editor
# 3. Take the pre-lesson quiz
# Click the quiz link in the README
# 4. Open the Jupyter notebook (if available)
jupyter notebook
# 5. Complete the exercises in the notebook
# 6. Work on the assignment
# 7. Take the post-lesson quiz
```
## Trabalhando com Jupyter Notebooks
### Iniciando o Jupyter
```bash
# Activate your virtual environment
source venv/bin/activate # On macOS/Linux
# OR
venv\Scripts\activate # On Windows
# Start Jupyter from the repository root
jupyter notebook
```
### Executando Células do Notebook
1. **Executar uma célula**: Pressione `Shift + Enter` ou clique no botão "Run"
2. **Executar todas as células**: Selecione "Cell" → "Run All" no menu
3. **Reiniciar kernel**: Selecione "Kernel" → "Restart" se encontrar problemas
### Exemplo: Trabalhando com Dados em um Notebook
```python
# Import required libraries
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# Load a dataset
df = pd.read_csv('data/sample.csv')
# Explore the data
df.head()
df.info()
df.describe()
# Create a visualization
plt.figure(figsize=(10, 6))
plt.plot(df['column_name'])
plt.title('Sample Visualization')
plt.xlabel('X-axis Label')
plt.ylabel('Y-axis Label')
plt.show()
```
### Salvando Seu Trabalho
- O Jupyter salva automaticamente periodicamente
- Salve manualmente: Pressione `Ctrl + S` (ou `Cmd + S` no macOS)
- Seu progresso é salvo no arquivo `.ipynb`
## Usando o Aplicativo de Quiz
### Executando o Aplicativo de Quiz Localmente
```bash
# Navigate to quiz app directory
cd quiz-app
# Start the development server
npm run serve
# Access at http://localhost:8080
```
### Realizando os Quizzes
1. Os quizzes pré-lição estão vinculados no início de cada lição
2. Os quizzes pós-lição estão vinculados no final de cada lição
3. Cada quiz tem 3 perguntas
4. Os quizzes são projetados para reforçar o aprendizado, não para testar exaustivamente
### Numeração dos Quizzes
- Os quizzes são numerados de 0 a 39 (40 quizzes no total)
- Cada lição geralmente tem um quiz pré e pós
- Os URLs dos quizzes incluem o número do quiz: `https://ff-quizzes.netlify.app/en/ds/quiz/0`
## Fluxos de Trabalho Comuns
### Fluxo de Trabalho 1: Caminho para Iniciantes
```bash
# 1. Set up your environment (see INSTALLATION.md)
# 2. Start with Lesson 1
cd 1-Introduction/01-defining-data-science
# 3. For each lesson:
# - Take pre-lesson quiz
# - Read the lesson content
# - Work through the notebook
# - Complete the assignment
# - Take post-lesson quiz
# 4. Progress through all 20 lessons sequentially
```
### Fluxo de Trabalho 2: Aprendizado Específico por Tópico
Se você estiver interessado em um tópico específico:
```bash
# Example: Focus on Data Visualization
cd 3-Data-Visualization
# Explore lessons 9-13:
# - Lesson 9: Visualizing Quantities
# - Lesson 10: Visualizing Distributions
# - Lesson 11: Visualizing Proportions
# - Lesson 12: Visualizing Relationships
# - Lesson 13: Meaningful Visualizations
```
### Fluxo de Trabalho 3: Aprendizado Baseado em Projetos
```bash
# 1. Review the Data Science Lifecycle lessons (14-16)
cd 4-Data-Science-Lifecycle
# 2. Work through a real-world example (Lesson 20)
cd ../6-Data-Science-In-Wild/20-Real-World-Examples
# 3. Apply concepts to your own project
```
### Fluxo de Trabalho 4: Ciência de Dados na Nuvem
```bash
# Learn about cloud data science (Lessons 17-19)
cd 5-Data-Science-In-Cloud
# 17: Introduction to Cloud Data Science
# 18: Low-Code ML Tools
# 19: Azure Machine Learning Studio
```
## Dicas para Autodidatas
### Mantenha-se Organizado
```bash
# Create a learning journal
mkdir my-learning-journal
# For each lesson, create notes
echo "# Lesson 1 Notes" > my-learning-journal/lesson-01-notes.md
```
### Pratique Regularmente
- Reserve tempo dedicado diariamente ou semanalmente
- Complete pelo menos uma lição por semana
- Revise lições anteriores periodicamente
### Engaje-se com a Comunidade
- Junte-se à [comunidade no Discord](https://aka.ms/ds4beginners/discord)
- Participe do canal #Data-Science-for-Beginners no Discord [Discussões no Discord](https://aka.ms/ds4beginners/discord)
- Compartilhe seu progresso e faça perguntas
### Construa Seus Próprios Projetos
Após concluir as lições, aplique os conceitos em projetos pessoais:
```python
# Example: Analyze your own dataset
import pandas as pd
# Load your own data
my_data = pd.read_csv('my-project/data.csv')
# Apply techniques learned
# - Data cleaning (Lesson 8)
# - Exploratory data analysis (Lesson 7)
# - Visualization (Lessons 9-13)
# - Analysis (Lesson 15)
```
## Dicas para Professores
### Configuração da Sala de Aula
1. Revise [for-teachers.md](for-teachers.md) para orientações detalhadas
2. Configure um ambiente compartilhado (GitHub Classroom ou Codespaces)
3. Estabeleça um canal de comunicação (Discord, Slack ou Teams)
### Planejamento de Lições
**Cronograma sugerido de 10 semanas:**
- **Semana 1-2**: Introdução (Lições 1-4)
- **Semana 3-4**: Trabalhando com Dados (Lições 5-8)
- **Semana 5-6**: Visualização de Dados (Lições 9-13)
- **Semana 7-8**: Ciclo de Vida da Ciência de Dados (Lições 14-16)
- **Semana 9**: Ciência de Dados na Nuvem (Lições 17-19)
- **Semana 10**: Aplicações Reais & Projetos Finais (Lição 20)
### Executando Docsify para Acesso Offline
```bash
# Serve documentation locally for classroom use
docsify serve
# Students can access at localhost:3000
# No internet required after initial setup
```
### Avaliação de Tarefas
- Revise os notebooks dos alunos para exercícios concluídos
- Verifique a compreensão por meio das pontuações dos quizzes
- Avalie os projetos finais usando os princípios do ciclo de vida da ciência de dados
### Criando Tarefas
```python
# Example custom assignment template
"""
Assignment: [Topic]
Objective: [Learning goal]
Dataset: [Provide or have students find one]
Tasks:
1. Load and explore the dataset
2. Clean and prepare the data
3. Create at least 3 visualizations
4. Perform analysis
5. Communicate findings
Deliverables:
- Jupyter notebook with code and explanations
- Written summary of findings
"""
```
## Trabalhando Offline
### Baixar Recursos
```bash
# Clone the entire repository
git clone https://github.com/microsoft/Data-Science-For-Beginners.git
# Download datasets in advance
# Most datasets are included in the repository
```
### Executar Documentação Localmente
```bash
# Serve with Docsify
docsify serve
# Access at localhost:3000
```
### Executar Aplicativo de Quiz Localmente
```bash
cd quiz-app
npm run serve
```
## Acessando Conteúdo Traduzido
As traduções estão disponíveis em mais de 40 idiomas:
```bash
# Access translated lessons
cd translations/fr # French
cd translations/es # Spanish
cd translations/de # German
# ... and many more
```
Cada tradução mantém a mesma estrutura da versão em inglês.
## Recursos Adicionais
### Continue Aprendendo
- [Microsoft Learn](https://docs.microsoft.com/learn/) - Caminhos de aprendizado adicionais
- [Student Hub](https://docs.microsoft.com/learn/student-hub) - Recursos para estudantes
- [Azure AI Foundry](https://aka.ms/foundry/forum) - Fórum da comunidade
### Currículos Relacionados
- [AI para Iniciantes](https://aka.ms/ai-beginners)
- [ML para Iniciantes](https://aka.ms/ml-beginners)
- [Desenvolvimento Web para Iniciantes](https://aka.ms/webdev-beginners)
- [IA Generativa para Iniciantes](https://aka.ms/genai-beginners)
## Obtendo Ajuda
- Consulte [TROUBLESHOOTING.md](TROUBLESHOOTING.md) para problemas comuns
- Pesquise [GitHub Issues](https://github.com/microsoft/Data-Science-For-Beginners/issues)
- Junte-se ao nosso [Discord](https://aka.ms/ds4beginners/discord)
- Revise [CONTRIBUTING.md](CONTRIBUTING.md) para relatar problemas ou contribuir
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

@ -0,0 +1,31 @@
- Introdução
- [Definindo Ciência de Dados](../1-Introduction/01-defining-data-science/README.md)
- [Ética na Ciência de Dados](../1-Introduction/02-ethics/README.md)
- [Definindo Dados](../1-Introduction/03-defining-data/README.md)
- [Probabilidade e Estatística](../1-Introduction/04-stats-and-probability/README.md)
- Trabalhando com Dados
- [Bancos de Dados Relacionais](../2-Working-With-Data/05-relational-databases/README.md)
- [Bancos de Dados Não Relacionais](../2-Working-With-Data/06-non-relational/README.md)
- [Python](../2-Working-With-Data/07-python/README.md)
- [Preparação de Dados](../2-Working-With-Data/08-data-preparation/README.md)
- Visualização de Dados
- [Visualizando Quantidades](../3-Data-Visualization/09-visualization-quantities/README.md)
- [Visualizando Distribuições](../3-Data-Visualization/10-visualization-distributions/README.md)
- [Visualizando Proporções](../3-Data-Visualization/11-visualization-proportions/README.md)
- [Visualizando Relações](../3-Data-Visualization/12-visualization-relationships/README.md)
- [Visualizações Significativas](../3-Data-Visualization/13-meaningful-visualizations/README.md)
- Ciclo de Vida da Ciência de Dados
- [Introdução](../4-Data-Science-Lifecycle/14-Introduction/README.md)
- [Análise](../4-Data-Science-Lifecycle/15-analyzing/README.md)
- [Comunicação](../4-Data-Science-Lifecycle/16-communication/README.md)
- Ciência de Dados na Nuvem
- [Introdução](../5-Data-Science-In-Cloud/17-Introduction/README.md)
- [Low Code](../5-Data-Science-In-Cloud/18-Low-Code/README.md)
- [Azure](../5-Data-Science-In-Cloud/19-Azure/README.md)
- Ciência de Dados na Prática
- [Ciência de Dados na Prática](../6-Data-Science-In-Wild/README.md)
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

@ -0,0 +1,140 @@
# Exemplos de Ciência de Dados para Iniciantes
Bem-vindo ao diretório de exemplos! Esta coleção de exemplos simples e bem comentados foi criada para ajudar você a começar com ciência de dados, mesmo que seja um completo iniciante.
## 📚 O Que Você Vai Encontrar Aqui
Cada exemplo é independente e inclui:
- **Comentários claros** explicando cada etapa
- **Código simples e legível** que demonstra um conceito de cada vez
- **Contexto do mundo real** para ajudar você a entender quando e por que usar essas técnicas
- **Saída esperada** para que você saiba o que procurar
## 🚀 Começando
### Pré-requisitos
Antes de executar esses exemplos, certifique-se de ter:
- Python 3.7 ou superior instalado
- Entendimento básico de como executar scripts Python
### Instalando Bibliotecas Necessárias
```bash
pip install pandas numpy matplotlib
```
## 📖 Visão Geral dos Exemplos
### 1. Hello World - Estilo Ciência de Dados
**Arquivo:** `01_hello_world_data_science.py`
Seu primeiro programa de ciência de dados! Aprenda a:
- Carregar um conjunto de dados simples
- Exibir informações básicas sobre seus dados
- Imprimir sua primeira saída de ciência de dados
Perfeito para iniciantes absolutos que querem ver seu primeiro programa de ciência de dados em ação.
---
### 2. Carregando e Explorando Dados
**Arquivo:** `02_loading_data.py`
Aprenda os fundamentos de trabalhar com dados:
- Ler dados de arquivos CSV
- Visualizar as primeiras linhas do seu conjunto de dados
- Obter estatísticas básicas sobre seus dados
- Entender os tipos de dados
Este é frequentemente o primeiro passo em qualquer projeto de ciência de dados!
---
### 3. Análise Simples de Dados
**Arquivo:** `03_simple_analysis.py`
Realize sua primeira análise de dados:
- Calcular estatísticas básicas (média, mediana, moda)
- Encontrar valores máximos e mínimos
- Contar ocorrências de valores
- Filtrar dados com base em condições
Veja como responder a perguntas simples sobre seus dados.
---
### 4. Noções Básicas de Visualização de Dados
**Arquivo:** `04_basic_visualization.py`
Crie suas primeiras visualizações:
- Fazer um gráfico de barras simples
- Criar um gráfico de linha
- Gerar um gráfico de pizza
- Salvar suas visualizações como imagens
Aprenda a comunicar suas descobertas visualmente!
---
### 5. Trabalhando com Dados Reais
**Arquivo:** `05_real_world_example.py`
Coloque tudo em prática com um exemplo completo:
- Carregar dados reais do repositório
- Limpar e preparar os dados
- Realizar análise
- Criar visualizações significativas
- Tirar conclusões
Este exemplo mostra um fluxo de trabalho completo do início ao fim.
---
## 🎯 Como Usar Esses Exemplos
1. **Comece do início**: Os exemplos estão numerados em ordem de dificuldade. Comece com `01_hello_world_data_science.py` e avance.
2. **Leia os comentários**: Cada arquivo tem comentários detalhados explicando o que o código faz e por quê. Leia-os com atenção!
3. **Experimente**: Tente modificar o código. O que acontece se você mudar um valor? Quebre as coisas e conserte - é assim que você aprende!
4. **Execute o código**: Execute cada exemplo e observe a saída. Compare com o que você esperava.
5. **Construa sobre isso**: Depois de entender um exemplo, tente expandi-lo com suas próprias ideias.
## 💡 Dicas para Iniciantes
- **Não tenha pressa**: Dedique tempo para entender cada exemplo antes de passar para o próximo
- **Digite o código você mesmo**: Não apenas copie e cole. Digitar ajuda você a aprender e memorizar
- **Pesquise conceitos desconhecidos**: Se você vir algo que não entende, procure online ou nas lições principais
- **Faça perguntas**: Participe do [fórum de discussão](https://github.com/microsoft/Data-Science-For-Beginners/discussions) se precisar de ajuda
- **Pratique regularmente**: Tente codificar um pouco todos os dias, em vez de sessões longas uma vez por semana
## 🔗 Próximos Passos
Depois de completar esses exemplos, você estará pronto para:
- Trabalhar nas lições principais do currículo
- Tentar os exercícios em cada pasta de lição
- Explorar os notebooks Jupyter para um aprendizado mais aprofundado
- Criar seus próprios projetos de ciência de dados
## 📚 Recursos Adicionais
- [Currículo Principal](../README.md) - O curso completo de 20 lições
- [Para Professores](../for-teachers.md) - Usando este currículo em sala de aula
- [Microsoft Learn](https://docs.microsoft.com/learn/) - Recursos de aprendizado online gratuitos
- [Documentação do Python](https://docs.python.org/3/) - Referência oficial do Python
## 🤝 Contribuindo
Encontrou um erro ou tem uma ideia para um novo exemplo? Aceitamos contribuições! Consulte nosso [Guia de Contribuição](../CONTRIBUTING.md).
---
**Boa aprendizagem! 🎉**
Lembre-se: Todo especialista já foi iniciante. Dê um passo de cada vez e não tenha medo de cometer erros - eles fazem parte do processo de aprendizado!
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

@ -0,0 +1,67 @@
## Para Educadores
Gostaria de usar este currículo em sua sala de aula? Fique à vontade!
Na verdade, você pode utilizá-lo diretamente no GitHub, usando o GitHub Classroom.
Para isso, faça um fork deste repositório. Você precisará criar um repositório para cada aula, então será necessário extrair cada pasta para um repositório separado. Dessa forma, o [GitHub Classroom](https://classroom.github.com/classrooms) poderá identificar cada aula individualmente.
Estas [instruções completas](https://github.blog/2020-03-18-set-up-your-digital-classroom-with-github-classroom/) darão uma ideia de como configurar sua sala de aula.
## Usando o repositório como está
Se você preferir usar este repositório no formato atual, sem utilizar o GitHub Classroom, isso também é possível. Você precisará comunicar aos seus alunos qual aula trabalhar juntos.
Em um formato online (Zoom, Teams ou outro), você pode criar salas de grupo para os questionários e orientar os alunos para ajudá-los a se prepararem para aprender. Depois, convide os alunos para os questionários e peça que enviem suas respostas como 'issues' em um horário determinado. Você pode fazer o mesmo com as tarefas, caso queira que os alunos trabalhem colaborativamente de forma aberta.
Se preferir um formato mais privado, peça aos seus alunos que façam o fork do currículo, aula por aula, para seus próprios repositórios privados no GitHub, e concedam acesso a você. Assim, eles podem completar os questionários e tarefas de forma privada e enviá-los para você por meio de issues no repositório da sua sala de aula.
Existem muitas maneiras de fazer isso funcionar em um formato de sala de aula online. Por favor, nos informe o que funciona melhor para você!
## Incluído neste currículo:
20 aulas, 40 questionários e 20 tarefas. Sketchnotes acompanham as aulas para alunos que aprendem melhor visualmente. Muitas aulas estão disponíveis tanto em Python quanto em R e podem ser realizadas usando Jupyter notebooks no VS Code. Saiba mais sobre como configurar sua sala de aula para usar essa tecnologia: https://code.visualstudio.com/docs/datascience/jupyter-notebooks.
Todos os sketchnotes, incluindo um pôster em formato grande, estão nesta [pasta](../../sketchnotes).
Você também pode executar este currículo como um site independente e amigável para uso offline usando o [Docsify](https://docsify.js.org/#/). [Instale o Docsify](https://docsify.js.org/#/quickstart) em sua máquina local, depois, na pasta raiz da cópia local deste repositório, digite `docsify serve`. O site será servido na porta 3000 do seu localhost: `localhost:3000`.
Uma versão amigável para uso offline do currículo será aberta como uma página da web independente: https://localhost:3000
As aulas estão agrupadas em 6 partes:
- 1: Introdução
- 1: Definindo Ciência de Dados
- 2: Ética
- 3: Definindo Dados
- 4: Visão Geral de Probabilidade e Estatística
- 2: Trabalhando com Dados
- 5: Bancos de Dados Relacionais
- 6: Bancos de Dados Não Relacionais
- 7: Python
- 8: Preparação de Dados
- 3: Visualização de Dados
- 9: Visualização de Quantidades
- 10: Visualização de Distribuições
- 11: Visualização de Proporções
- 12: Visualização de Relações
- 13: Visualizações Significativas
- 4: Ciclo de Vida da Ciência de Dados
- 14: Introdução
- 15: Análise
- 16: Comunicação
- 5: Ciência de Dados na Nuvem
- 17: Introdução
- 18: Opções de Baixo Código
- 19: Azure
- 6: Ciência de Dados no Mundo Real
- 20: Visão Geral
## Por favor, compartilhe suas opiniões!
Queremos que este currículo funcione para você e seus alunos. Por favor, envie-nos seu feedback nos fóruns de discussão! Sinta-se à vontade para criar uma área de sala de aula nos fóruns de discussão para seus alunos.
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional feita por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

@ -0,0 +1,130 @@
# Questionários
Esses questionários são os questionários pré e pós-aula para o currículo de ciência de dados em https://aka.ms/datascience-beginners
## Adicionando um conjunto de questionários traduzidos
Adicione uma tradução de questionário criando estruturas de questionários correspondentes nas pastas `assets/translations`. Os questionários originais estão em `assets/translations/en`. Os questionários estão divididos em vários agrupamentos. Certifique-se de alinhar a numeração com a seção correta do questionário. Há um total de 40 questionários neste currículo, começando a contagem em 0.
Após editar as traduções, edite o arquivo index.js na pasta de tradução para importar todos os arquivos seguindo as convenções em `en`.
Edite o arquivo `index.js` em `assets/translations` para importar os novos arquivos traduzidos.
Depois, edite o menu suspenso em `App.vue` neste aplicativo para adicionar seu idioma. Combine a abreviação localizada com o nome da pasta do seu idioma.
Por fim, edite todos os links dos questionários nas lições traduzidas, se existirem, para incluir essa localização como um parâmetro de consulta: `?loc=fr`, por exemplo.
## Configuração do projeto
```
npm install
```
### Compila e recarrega automaticamente para desenvolvimento
```
npm run serve
```
### Compila e minimiza para produção
```
npm run build
```
### Verifica e corrige arquivos
```
npm run lint
```
### Personalizar configuração
Veja [Referência de Configuração](https://cli.vuejs.org/config/).
Créditos: Agradecimentos à versão original deste aplicativo de questionário: https://github.com/arpan45/simple-quiz-vue
## Implantando no Azure
Aqui está um guia passo a passo para ajudá-lo a começar:
1. Faça um fork do repositório GitHub
Certifique-se de que o código do seu aplicativo web estático esteja no seu repositório GitHub. Faça um fork deste repositório.
2. Crie um aplicativo web estático no Azure
- Crie uma [conta no Azure](http://azure.microsoft.com)
- Acesse o [portal do Azure](https://portal.azure.com)
- Clique em “Criar um recurso” e procure por “Aplicativo Web Estático”.
- Clique em “Criar”.
3. Configure o aplicativo web estático
- Básico:
- Assinatura: Selecione sua assinatura do Azure.
- Grupo de Recursos: Crie um novo grupo de recursos ou use um existente.
- Nome: Forneça um nome para seu aplicativo web estático.
- Região: Escolha a região mais próxima dos seus usuários.
- #### Detalhes de Implantação:
- Fonte: Selecione “GitHub”.
- Conta do GitHub: Autorize o Azure a acessar sua conta do GitHub.
- Organização: Selecione sua organização no GitHub.
- Repositório: Escolha o repositório que contém seu aplicativo web estático.
- Branch: Selecione o branch do qual deseja implantar.
- #### Detalhes de Build:
- Presets de Build: Escolha o framework com o qual seu aplicativo foi construído (por exemplo, React, Angular, Vue, etc.).
- Localização do Aplicativo: Especifique a pasta que contém o código do seu aplicativo (por exemplo, / se estiver na raiz).
- Localização da API: Se você tiver uma API, especifique sua localização (opcional).
- Localização de Saída: Especifique a pasta onde a saída do build é gerada (por exemplo, build ou dist).
4. Revisar e Criar
Revise suas configurações e clique em “Criar”. O Azure configurará os recursos necessários e criará um arquivo de workflow do GitHub Actions no seu repositório.
5. Workflow do GitHub Actions
O Azure criará automaticamente um arquivo de workflow do GitHub Actions no seu repositório (.github/workflows/azure-static-web-apps-<nome>.yml). Este workflow lidará com o processo de build e implantação.
6. Monitorar a Implantação
Acesse a aba “Actions” no seu repositório GitHub.
Você deverá ver um workflow em execução. Este workflow irá construir e implantar seu aplicativo web estático no Azure.
Assim que o workflow for concluído, seu aplicativo estará ativo no URL fornecido pelo Azure.
### Exemplo de Arquivo de Workflow
Aqui está um exemplo de como o arquivo de workflow do GitHub Actions pode ser:
name: Azure Static Web Apps CI/CD
```
on:
push:
branches:
- main
pull_request:
types: [opened, synchronize, reopened, closed]
branches:
- main
jobs:
build_and_deploy_job:
runs-on: ubuntu-latest
name: Build and Deploy Job
steps:
- uses: actions/checkout@v2
- name: Build And Deploy
id: builddeploy
uses: Azure/static-web-apps-deploy@v1
with:
azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }}
repo_token: ${{ secrets.GITHUB_TOKEN }}
action: "upload"
app_location: "quiz-app" # App source code path
api_location: ""API source code path optional
output_location: "dist" #Built app content directory - optional
```
### Recursos Adicionais
- [Documentação de Aplicativos Web Estáticos no Azure](https://learn.microsoft.com/azure/static-web-apps/getting-started)
- [Documentação do GitHub Actions](https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app)
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

@ -0,0 +1,12 @@
Encontre todos os sketchnotes aqui!
## Créditos
Nitya Narasimhan, artista
![sketchnote do roadmap](../../../translated_images/pt-BR/00-Roadmap.4905d6567dff47532b9bfb8e0b8980fc6b0b1292eebb24181c1a9753b33bc0f5.png)
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.

@ -0,0 +1,422 @@
{
"1-Introduction/01-defining-data-science/README.md": {
"original_hash": "43212cc1ac137b7bb1dcfb37ca06b0f4",
"translation_date": "2025-10-25T18:48:59+00:00",
"source_file": "1-Introduction/01-defining-data-science/README.md",
"language_code": "pt-PT"
},
"1-Introduction/01-defining-data-science/assignment.md": {
"original_hash": "4e0f1773b9bee1be3b28f9fe2c71b3de",
"translation_date": "2025-08-24T21:30:44+00:00",
"source_file": "1-Introduction/01-defining-data-science/assignment.md",
"language_code": "pt-PT"
},
"1-Introduction/01-defining-data-science/solution/assignment.md": {
"original_hash": "a8f79b9c0484c35b4f26e8aec7fc4d56",
"translation_date": "2025-08-24T21:31:37+00:00",
"source_file": "1-Introduction/01-defining-data-science/solution/assignment.md",
"language_code": "pt-PT"
},
"1-Introduction/02-ethics/README.md": {
"original_hash": "58860ce9a4b8a564003d2752f7c72851",
"translation_date": "2025-10-03T16:24:25+00:00",
"source_file": "1-Introduction/02-ethics/README.md",
"language_code": "pt-PT"
},
"1-Introduction/02-ethics/assignment.md": {
"original_hash": "b588c0fc73014f52520c666efc3e0cc3",
"translation_date": "2025-08-24T21:24:48+00:00",
"source_file": "1-Introduction/02-ethics/assignment.md",
"language_code": "pt-PT"
},
"1-Introduction/03-defining-data/README.md": {
"original_hash": "12339119c0165da569a93ddba05f9339",
"translation_date": "2025-09-05T13:28:26+00:00",
"source_file": "1-Introduction/03-defining-data/README.md",
"language_code": "pt-PT"
},
"1-Introduction/03-defining-data/assignment.md": {
"original_hash": "2e5cacb967c1e9dfd07809bfc441a0b4",
"translation_date": "2025-08-24T21:35:18+00:00",
"source_file": "1-Introduction/03-defining-data/assignment.md",
"language_code": "pt-PT"
},
"1-Introduction/04-stats-and-probability/README.md": {
"original_hash": "ce95884566a74db72572cd51f0cb25ad",
"translation_date": "2025-09-06T13:24:01+00:00",
"source_file": "1-Introduction/04-stats-and-probability/README.md",
"language_code": "pt-PT"
},
"1-Introduction/04-stats-and-probability/assignment.md": {
"original_hash": "01d1b493e8b51a6ebb42524f6b1bcfff",
"translation_date": "2025-08-24T21:43:58+00:00",
"source_file": "1-Introduction/04-stats-and-probability/assignment.md",
"language_code": "pt-PT"
},
"1-Introduction/README.md": {
"original_hash": "696a8474a01054281704cbfb09148949",
"translation_date": "2025-08-24T21:14:50+00:00",
"source_file": "1-Introduction/README.md",
"language_code": "pt-PT"
},
"2-Working-With-Data/05-relational-databases/README.md": {
"original_hash": "11739c7b40e7c6b16ad29e3df4e65862",
"translation_date": "2025-12-19T11:12:33+00:00",
"source_file": "2-Working-With-Data/05-relational-databases/README.md",
"language_code": "pt-PT"
},
"2-Working-With-Data/05-relational-databases/assignment.md": {
"original_hash": "25b37acdfb2452917c1aa2e2ca44317a",
"translation_date": "2025-10-24T09:54:50+00:00",
"source_file": "2-Working-With-Data/05-relational-databases/assignment.md",
"language_code": "pt-PT"
},
"2-Working-With-Data/06-non-relational/README.md": {
"original_hash": "c182e87f9f80be7e7cdffc7b40bbfccf",
"translation_date": "2025-09-05T13:15:48+00:00",
"source_file": "2-Working-With-Data/06-non-relational/README.md",
"language_code": "pt-PT"
},
"2-Working-With-Data/06-non-relational/assignment.md": {
"original_hash": "f824bfdb8b12d33293913f76f5c787c5",
"translation_date": "2025-08-24T21:13:13+00:00",
"source_file": "2-Working-With-Data/06-non-relational/assignment.md",
"language_code": "pt-PT"
},
"2-Working-With-Data/07-python/README.md": {
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T15:38:59+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "pt-PT"
},
"2-Working-With-Data/07-python/assignment.md": {
"original_hash": "dc8f035ce92e4eaa078ab19caa68267a",
"translation_date": "2025-08-24T21:08:50+00:00",
"source_file": "2-Working-With-Data/07-python/assignment.md",
"language_code": "pt-PT"
},
"2-Working-With-Data/08-data-preparation/README.md": {
"original_hash": "1b560955ff39a2bcf2a049fce474a951",
"translation_date": "2025-09-05T13:18:39+00:00",
"source_file": "2-Working-With-Data/08-data-preparation/README.md",
"language_code": "pt-PT"
},
"2-Working-With-Data/08-data-preparation/assignment.md": {
"original_hash": "f9d5a7275e046223fa6474477674b810",
"translation_date": "2025-08-24T21:01:53+00:00",
"source_file": "2-Working-With-Data/08-data-preparation/assignment.md",
"language_code": "pt-PT"
},
"2-Working-With-Data/README.md": {
"original_hash": "abc3309ab41bc5a7846f70ee1a055838",
"translation_date": "2025-08-24T20:52:00+00:00",
"source_file": "2-Working-With-Data/README.md",
"language_code": "pt-PT"
},
"3-Data-Visualization/09-visualization-quantities/README.md": {
"original_hash": "a49d78e32e280c410f04e5f2a2068e77",
"translation_date": "2025-09-05T13:22:08+00:00",
"source_file": "3-Data-Visualization/09-visualization-quantities/README.md",
"language_code": "pt-PT"
},
"3-Data-Visualization/09-visualization-quantities/assignment.md": {
"original_hash": "ad163c4fda72c8278280b61cad317ff4",
"translation_date": "2025-08-24T23:03:32+00:00",
"source_file": "3-Data-Visualization/09-visualization-quantities/assignment.md",
"language_code": "pt-PT"
},
"3-Data-Visualization/10-visualization-distributions/README.md": {
"original_hash": "80a20467e046d312809d008395051fc7",
"translation_date": "2025-09-05T13:23:37+00:00",
"source_file": "3-Data-Visualization/10-visualization-distributions/README.md",
"language_code": "pt-PT"
},
"3-Data-Visualization/10-visualization-distributions/assignment.md": {
"original_hash": "40eeb9b9f94009c537c7811f9f27f037",
"translation_date": "2025-08-24T22:37:51+00:00",
"source_file": "3-Data-Visualization/10-visualization-distributions/assignment.md",
"language_code": "pt-PT"
},
"3-Data-Visualization/11-visualization-proportions/README.md": {
"original_hash": "42119bcc97bee88254e381156d770f3c",
"translation_date": "2025-09-05T13:21:41+00:00",
"source_file": "3-Data-Visualization/11-visualization-proportions/README.md",
"language_code": "pt-PT"
},
"3-Data-Visualization/11-visualization-proportions/assignment.md": {
"original_hash": "1e00fe6a244c2f8f9a794c862661dd4f",
"translation_date": "2025-08-24T23:07:06+00:00",
"source_file": "3-Data-Visualization/11-visualization-proportions/assignment.md",
"language_code": "pt-PT"
},
"3-Data-Visualization/12-visualization-relationships/README.md": {
"original_hash": "0764fd4077f3f04a1d968ec371227744",
"translation_date": "2025-09-06T11:35:11+00:00",
"source_file": "3-Data-Visualization/12-visualization-relationships/README.md",
"language_code": "pt-PT"
},
"3-Data-Visualization/12-visualization-relationships/assignment.md": {
"original_hash": "680419753c086eef51be86607c623945",
"translation_date": "2025-08-24T22:41:51+00:00",
"source_file": "3-Data-Visualization/12-visualization-relationships/assignment.md",
"language_code": "pt-PT"
},
"3-Data-Visualization/13-meaningful-visualizations/README.md": {
"original_hash": "cfb068050337a36e348debaa502a24fa",
"translation_date": "2025-09-05T13:22:36+00:00",
"source_file": "3-Data-Visualization/13-meaningful-visualizations/README.md",
"language_code": "pt-PT"
},
"3-Data-Visualization/13-meaningful-visualizations/assignment.md": {
"original_hash": "e56df4c0f49357e30ac8fc77aa439dd4",
"translation_date": "2025-08-24T22:33:17+00:00",
"source_file": "3-Data-Visualization/13-meaningful-visualizations/assignment.md",
"language_code": "pt-PT"
},
"3-Data-Visualization/13-meaningful-visualizations/solution/README.md": {
"original_hash": "5c51a54dd89075a7a362890117b7ed9e",
"translation_date": "2025-08-24T22:34:24+00:00",
"source_file": "3-Data-Visualization/13-meaningful-visualizations/solution/README.md",
"language_code": "pt-PT"
},
"3-Data-Visualization/13-meaningful-visualizations/starter/README.md": {
"original_hash": "5c51a54dd89075a7a362890117b7ed9e",
"translation_date": "2025-08-24T22:33:52+00:00",
"source_file": "3-Data-Visualization/13-meaningful-visualizations/starter/README.md",
"language_code": "pt-PT"
},
"3-Data-Visualization/R/09-visualization-quantities/README.md": {
"original_hash": "22acf28f518a4769ea14fa42f4734b9f",
"translation_date": "2025-08-24T22:48:55+00:00",
"source_file": "3-Data-Visualization/R/09-visualization-quantities/README.md",
"language_code": "pt-PT"
},
"3-Data-Visualization/R/09-visualization-quantities/assignment.md": {
"original_hash": "0ea21b6513df5ade7419c6b7d65f10b1",
"translation_date": "2025-08-24T22:53:31+00:00",
"source_file": "3-Data-Visualization/R/09-visualization-quantities/assignment.md",
"language_code": "pt-PT"
},
"3-Data-Visualization/R/10-visualization-distributions/README.md": {
"original_hash": "ea67c0c40808fd723594de6896c37ccf",
"translation_date": "2025-08-24T22:42:28+00:00",
"source_file": "3-Data-Visualization/R/10-visualization-distributions/README.md",
"language_code": "pt-PT"
},
"3-Data-Visualization/R/10-visualization-distributions/assignment.md": {
"original_hash": "a233d542512136c4dd29aad38ca0175f",
"translation_date": "2025-08-24T22:45:09+00:00",
"source_file": "3-Data-Visualization/R/10-visualization-distributions/assignment.md",
"language_code": "pt-PT"
},
"3-Data-Visualization/R/11-visualization-proportions/README.md": {
"original_hash": "47028abaaafa2bcb1079702d20569066",
"translation_date": "2025-08-24T22:57:22+00:00",
"source_file": "3-Data-Visualization/R/11-visualization-proportions/README.md",
"language_code": "pt-PT"
},
"3-Data-Visualization/R/12-visualization-relationships/README.md": {
"original_hash": "a33c5d4b4156a2b41788d8720b6f724c",
"translation_date": "2025-08-24T22:45:47+00:00",
"source_file": "3-Data-Visualization/R/12-visualization-relationships/README.md",
"language_code": "pt-PT"
},
"3-Data-Visualization/R/13-meaningful-vizualizations/README.md": {
"original_hash": "b4039f1c76548d144a0aee0bf28304ec",
"translation_date": "2025-08-24T22:54:08+00:00",
"source_file": "3-Data-Visualization/R/13-meaningful-vizualizations/README.md",
"language_code": "pt-PT"
},
"3-Data-Visualization/README.md": {
"original_hash": "1441550a0d789796b2821e04f7f4cc94",
"translation_date": "2025-08-24T22:28:29+00:00",
"source_file": "3-Data-Visualization/README.md",
"language_code": "pt-PT"
},
"4-Data-Science-Lifecycle/14-Introduction/README.md": {
"original_hash": "07e12a25d20b8f191e3cb651c27fdb2b",
"translation_date": "2025-09-06T20:49:16+00:00",
"source_file": "4-Data-Science-Lifecycle/14-Introduction/README.md",
"language_code": "pt-PT"
},
"4-Data-Science-Lifecycle/14-Introduction/assignment.md": {
"original_hash": "564445c39ad29a491abcb9356fc4d47d",
"translation_date": "2025-08-24T22:17:01+00:00",
"source_file": "4-Data-Science-Lifecycle/14-Introduction/assignment.md",
"language_code": "pt-PT"
},
"4-Data-Science-Lifecycle/15-analyzing/README.md": {
"original_hash": "661dad02c3ac239644d34c1eb51e76f8",
"translation_date": "2025-09-06T20:48:39+00:00",
"source_file": "4-Data-Science-Lifecycle/15-analyzing/README.md",
"language_code": "pt-PT"
},
"4-Data-Science-Lifecycle/15-analyzing/assignment.md": {
"original_hash": "fcc7547171f4530f159676dd73ed772e",
"translation_date": "2025-08-24T22:19:44+00:00",
"source_file": "4-Data-Science-Lifecycle/15-analyzing/assignment.md",
"language_code": "pt-PT"
},
"4-Data-Science-Lifecycle/16-communication/README.md": {
"original_hash": "215a3254ba5a222a57c5bb0192cea8e3",
"translation_date": "2025-09-06T20:49:37+00:00",
"source_file": "4-Data-Science-Lifecycle/16-communication/README.md",
"language_code": "pt-PT"
},
"4-Data-Science-Lifecycle/16-communication/assignment.md": {
"original_hash": "8980d7efd101c82d6d6ffc3458214120",
"translation_date": "2025-08-24T22:27:53+00:00",
"source_file": "4-Data-Science-Lifecycle/16-communication/assignment.md",
"language_code": "pt-PT"
},
"4-Data-Science-Lifecycle/README.md": {
"original_hash": "dd173fd30fc039a7a299898920680723",
"translation_date": "2025-08-24T22:13:38+00:00",
"source_file": "4-Data-Science-Lifecycle/README.md",
"language_code": "pt-PT"
},
"5-Data-Science-In-Cloud/17-Introduction/README.md": {
"original_hash": "5f8e7cdefa096664ae86f795be571580",
"translation_date": "2025-09-05T13:13:56+00:00",
"source_file": "5-Data-Science-In-Cloud/17-Introduction/README.md",
"language_code": "pt-PT"
},
"5-Data-Science-In-Cloud/17-Introduction/assignment.md": {
"original_hash": "96f3696153d9ed54b19a1bb65438c104",
"translation_date": "2025-08-24T22:04:45+00:00",
"source_file": "5-Data-Science-In-Cloud/17-Introduction/assignment.md",
"language_code": "pt-PT"
},
"5-Data-Science-In-Cloud/18-Low-Code/README.md": {
"original_hash": "bd4da10766c64fce4294a98f6479dfb0",
"translation_date": "2025-09-05T13:12:51+00:00",
"source_file": "5-Data-Science-In-Cloud/18-Low-Code/README.md",
"language_code": "pt-PT"
},
"5-Data-Science-In-Cloud/18-Low-Code/assignment.md": {
"original_hash": "8fdc4a5fd9bc27a8d2ebef995dfbf73f",
"translation_date": "2025-08-24T22:01:20+00:00",
"source_file": "5-Data-Science-In-Cloud/18-Low-Code/assignment.md",
"language_code": "pt-PT"
},
"5-Data-Science-In-Cloud/19-Azure/README.md": {
"original_hash": "472d3fab1c5be50f387336e7a686dbe1",
"translation_date": "2025-09-05T13:15:05+00:00",
"source_file": "5-Data-Science-In-Cloud/19-Azure/README.md",
"language_code": "pt-PT"
},
"5-Data-Science-In-Cloud/19-Azure/assignment.md": {
"original_hash": "386efdbc19786951341f6956247ee990",
"translation_date": "2025-08-24T22:11:16+00:00",
"source_file": "5-Data-Science-In-Cloud/19-Azure/assignment.md",
"language_code": "pt-PT"
},
"5-Data-Science-In-Cloud/README.md": {
"original_hash": "8dfe141a0f46f7d253e07f74913c7f44",
"translation_date": "2025-08-24T21:52:21+00:00",
"source_file": "5-Data-Science-In-Cloud/README.md",
"language_code": "pt-PT"
},
"6-Data-Science-In-Wild/20-Real-World-Examples/README.md": {
"original_hash": "0f67a4139454816631526779a456b734",
"translation_date": "2025-09-06T18:26:19+00:00",
"source_file": "6-Data-Science-In-Wild/20-Real-World-Examples/README.md",
"language_code": "pt-PT"
},
"6-Data-Science-In-Wild/20-Real-World-Examples/assignment.md": {
"original_hash": "d1e05715f9d97de6c4f1fb0c5a4702c0",
"translation_date": "2025-08-24T21:51:21+00:00",
"source_file": "6-Data-Science-In-Wild/20-Real-World-Examples/assignment.md",
"language_code": "pt-PT"
},
"6-Data-Science-In-Wild/README.md": {
"original_hash": "07faf02ff163e609edf0b0308dc5d4e6",
"translation_date": "2025-08-24T21:45:23+00:00",
"source_file": "6-Data-Science-In-Wild/README.md",
"language_code": "pt-PT"
},
"AGENTS.md": {
"original_hash": "cc2e18ab65df63e75d3619c4752e9b22",
"translation_date": "2025-10-03T11:15:58+00:00",
"source_file": "AGENTS.md",
"language_code": "pt-PT"
},
"CODE_OF_CONDUCT.md": {
"original_hash": "c06b12caf3c901eb3156e3dd5b0aea56",
"translation_date": "2025-08-24T20:49:27+00:00",
"source_file": "CODE_OF_CONDUCT.md",
"language_code": "pt-PT"
},
"CONTRIBUTING.md": {
"original_hash": "10f86fb29b5407088445ac803b3d0ed1",
"translation_date": "2025-10-03T13:52:25+00:00",
"source_file": "CONTRIBUTING.md",
"language_code": "pt-PT"
},
"INSTALLATION.md": {
"original_hash": "a64d8afa22ffcc2016bb239188d6acb1",
"translation_date": "2025-10-03T15:19:15+00:00",
"source_file": "INSTALLATION.md",
"language_code": "pt-PT"
},
"README.md": {
"original_hash": "8ec92ecfeb14923af733851239552146",
"translation_date": "2026-01-30T01:38:26+00:00",
"source_file": "README.md",
"language_code": "pt-PT"
},
"SECURITY.md": {
"original_hash": "0d575483100c332b2dbaefef915bb3c4",
"translation_date": "2025-08-24T20:50:01+00:00",
"source_file": "SECURITY.md",
"language_code": "pt-PT"
},
"SUPPORT.md": {
"original_hash": "872be8bc1b93ef1dd9ac3d6e8f99f6ab",
"translation_date": "2025-08-24T20:47:20+00:00",
"source_file": "SUPPORT.md",
"language_code": "pt-PT"
},
"TROUBLESHOOTING.md": {
"original_hash": "93a6a8a8a209128cbfedcbc076ee21b0",
"translation_date": "2025-10-03T15:37:19+00:00",
"source_file": "TROUBLESHOOTING.md",
"language_code": "pt-PT"
},
"USAGE.md": {
"original_hash": "f546349678757508d69ce9e1d2688446",
"translation_date": "2025-10-03T15:00:52+00:00",
"source_file": "USAGE.md",
"language_code": "pt-PT"
},
"docs/_sidebar.md": {
"original_hash": "3767555b3cc28a2865c79202f4374204",
"translation_date": "2025-08-24T21:13:53+00:00",
"source_file": "docs/_sidebar.md",
"language_code": "pt-PT"
},
"examples/README.md": {
"original_hash": "9bef7fd96c8f262339933117d9b3e342",
"translation_date": "2025-10-03T13:00:51+00:00",
"source_file": "examples/README.md",
"language_code": "pt-PT"
},
"for-teachers.md": {
"original_hash": "f7440be10c17a8a9262713af3d2818a9",
"translation_date": "2025-09-06T19:55:49+00:00",
"source_file": "for-teachers.md",
"language_code": "pt-PT"
},
"quiz-app/README.md": {
"original_hash": "e92c33ea498915a13c9aec162616db18",
"translation_date": "2025-08-24T22:12:01+00:00",
"source_file": "quiz-app/README.md",
"language_code": "pt-PT"
},
"sketchnotes/README.md": {
"original_hash": "3a848466cb63aff1a93411affb152c2a",
"translation_date": "2025-08-24T21:44:55+00:00",
"source_file": "sketchnotes/README.md",
"language_code": "pt-PT"
}
}

@ -0,0 +1,167 @@
# Definindo Ciência de Dados
| ![Sketchnote por [(@sketchthedocs)](https://sketchthedocs.dev)](../../sketchnotes/01-Definitions.png) |
| :----------------------------------------------------------------------------------------------------: |
| Definindo Ciência de Dados - _Sketchnote por [@nitya](https://twitter.com/nitya)_ |
---
[![Vídeo Definindo Ciência de Dados](../../../../translated_images/pt-PT/video-def-ds.6623ee2392ef1abf6d7faf3fad10a4163642811749da75f44e35a5bb121de15c.png)](https://youtu.be/beZ7Mb_oz9I)
## [Questionário pré-aula](https://ff-quizzes.netlify.app/en/ds/quiz/0)
## O que é Dados?
No nosso dia a dia, estamos constantemente rodeados por dados. O texto que está a ler agora é um dado. A lista de números de telefone dos seus amigos no seu smartphone é um dado, assim como a hora atual exibida no seu relógio. Como seres humanos, operamos naturalmente com dados ao contar o dinheiro que temos ou ao escrever cartas para os nossos amigos.
No entanto, os dados tornaram-se muito mais críticos com a criação dos computadores. A principal função dos computadores é realizar cálculos, mas eles precisam de dados para operar. Assim, precisamos entender como os computadores armazenam e processam dados.
Com o surgimento da Internet, o papel dos computadores como dispositivos de manipulação de dados aumentou. Se pensar bem, agora usamos os computadores cada vez mais para processamento e comunicação de dados, em vez de cálculos propriamente ditos. Quando escrevemos um e-mail para um amigo ou pesquisamos alguma informação na Internet - estamos essencialmente a criar, armazenar, transmitir e manipular dados.
> Consegue lembrar-se da última vez que usou um computador para realmente calcular algo?
## O que é Ciência de Dados?
Na [Wikipedia](https://en.wikipedia.org/wiki/Data_science), **Ciência de Dados** é definida como *um campo científico que utiliza métodos científicos para extrair conhecimento e insights de dados estruturados e não estruturados, e aplicar conhecimento e insights acionáveis a partir de dados em uma ampla gama de domínios de aplicação*.
Esta definição destaca os seguintes aspetos importantes da ciência de dados:
* O principal objetivo da ciência de dados é **extrair conhecimento** dos dados, ou seja, **compreender** os dados, encontrar algumas relações ocultas e construir um **modelo**.
* A ciência de dados utiliza **métodos científicos**, como probabilidade e estatística. Na verdade, quando o termo *ciência de dados* foi introduzido pela primeira vez, algumas pessoas argumentaram que ciência de dados era apenas um novo nome sofisticado para estatística. Hoje em dia, tornou-se evidente que o campo é muito mais amplo.
* O conhecimento obtido deve ser aplicado para produzir **insights acionáveis**, ou seja, insights práticos que podem ser aplicados a situações reais de negócios.
* Devemos ser capazes de operar tanto com dados **estruturados** quanto **não estruturados**. Voltaremos a discutir os diferentes tipos de dados mais tarde no curso.
* **Domínio de aplicação** é um conceito importante, e os cientistas de dados frequentemente precisam de algum grau de especialização no domínio do problema, por exemplo: finanças, medicina, marketing, etc.
> Outro aspeto importante da Ciência de Dados é que ela estuda como os dados podem ser recolhidos, armazenados e manipulados usando computadores. Enquanto a estatística nos fornece fundamentos matemáticos, a ciência de dados aplica conceitos matemáticos para realmente extrair insights dos dados.
Uma das formas (atribuída a [Jim Gray](https://en.wikipedia.org/wiki/Jim_Gray_(computer_scientist))) de olhar para a ciência de dados é considerá-la como um paradigma separado da ciência:
* **Empírico**, no qual confiamos principalmente em observações e resultados de experiências
* **Teórico**, onde novos conceitos emergem do conhecimento científico existente
* **Computacional**, onde descobrimos novos princípios com base em algumas experiências computacionais
* **Baseado em Dados**, baseado na descoberta de relações e padrões nos dados
## Outros Campos Relacionados
Como os dados são omnipresentes, a ciência de dados também é um campo amplo, tocando muitas outras disciplinas.
<dl>
<dt>Bases de Dados</dt>
<dd>
Uma consideração crítica é <b>como armazenar</b> os dados, ou seja, como estruturá-los de forma a permitir um processamento mais rápido. Existem diferentes tipos de bases de dados que armazenam dados estruturados e não estruturados, que <a href="../../2-Working-With-Data/README.md">consideraremos no nosso curso</a>.
</dd>
<dt>Big Data</dt>
<dd>
Frequentemente precisamos armazenar e processar grandes quantidades de dados com uma estrutura relativamente simples. Existem abordagens e ferramentas especiais para armazenar esses dados de forma distribuída em um cluster de computadores e processá-los de forma eficiente.
</dd>
<dt>Aprendizagem Automática</dt>
<dd>
Uma maneira de entender os dados é <b>construir um modelo</b> que seja capaz de prever um resultado desejado. Desenvolver modelos a partir de dados é chamado de <b>aprendizagem automática</b>. Pode querer dar uma olhada no nosso <a href="https://aka.ms/ml-beginners">Currículo de Aprendizagem Automática para Iniciantes</a> para aprender mais sobre isso.
</dd>
<dt>Inteligência Artificial</dt>
<dd>
Uma área da aprendizagem automática conhecida como inteligência artificial (IA) também depende de dados, e envolve a construção de modelos de alta complexidade que imitam processos de pensamento humano. Métodos de IA frequentemente permitem transformar dados não estruturados (por exemplo, linguagem natural) em insights estruturados.
</dd>
<dt>Visualização</dt>
<dd>
Grandes quantidades de dados são incompreensíveis para um ser humano, mas, uma vez que criamos visualizações úteis usando esses dados, podemos entender melhor os dados e tirar algumas conclusões. Assim, é importante conhecer muitas maneiras de visualizar informações - algo que abordaremos na <a href="../../3-Data-Visualization/README.md">Seção 3</a> do nosso curso. Campos relacionados também incluem <b>Infográficos</b> e <b>Interação Humano-Computador</b> em geral.
</dd>
</dl>
## Tipos de Dados
Como já mencionámos, os dados estão em todo lugar. Só precisamos capturá-los da maneira certa! É útil distinguir entre dados **estruturados** e **não estruturados**. Os primeiros são geralmente representados de forma bem estruturada, muitas vezes como uma tabela ou várias tabelas, enquanto os últimos são apenas uma coleção de arquivos. Às vezes também podemos falar de dados **semi-estruturados**, que têm algum tipo de estrutura que pode variar bastante.
| Estruturados | Semi-estruturados | Não estruturados |
| ---------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------- |
| Lista de pessoas com os seus números de telefone | Páginas da Wikipedia com links | Texto da Enciclopédia Britânica |
| Temperatura em todas as salas de um edifício a cada minuto nos últimos 20 anos | Coleção de artigos científicos em formato JSON com autores, data de publicação e resumo | Arquivo de vídeos de câmaras de segurança |
| Dados sobre idade e género de todas as pessoas que entram no edifício | Páginas da Internet | Vídeo bruto de câmaras de vigilância |
## Onde obter Dados
Existem muitas fontes possíveis de dados, e seria impossível listar todas elas! No entanto, vamos mencionar alguns dos lugares típicos onde pode obter dados:
* **Estruturados**
- **Internet das Coisas** (IoT), incluindo dados de diferentes sensores, como sensores de temperatura ou pressão, fornece muitos dados úteis. Por exemplo, se um edifício de escritórios estiver equipado com sensores IoT, podemos controlar automaticamente o aquecimento e a iluminação para minimizar os custos.
- **Inquéritos** que pedimos aos utilizadores para preencherem após uma compra ou após visitar um site.
- **Análise de comportamento** pode, por exemplo, ajudar-nos a entender até que ponto um utilizador navega num site e qual é o motivo típico para sair do site.
* **Não estruturados**
- **Textos** podem ser uma rica fonte de insights, como um **índice de sentimento geral**, ou extração de palavras-chave e significado semântico.
- **Imagens** ou **Vídeos**. Um vídeo de uma câmara de vigilância pode ser usado para estimar o tráfego na estrada e informar as pessoas sobre possíveis engarrafamentos.
- **Registos de servidores web** podem ser usados para entender quais páginas do nosso site são mais frequentemente visitadas e por quanto tempo.
* Semi-estruturados
- **Grafos de Redes Sociais** podem ser ótimas fontes de dados sobre personalidades dos utilizadores e eficácia potencial na disseminação de informações.
- Quando temos um monte de fotografias de uma festa, podemos tentar extrair dados de **Dinâmica de Grupo** construindo um grafo de pessoas que tiraram fotos umas com as outras.
Ao conhecer diferentes fontes possíveis de dados, pode tentar pensar em diferentes cenários onde as técnicas de ciência de dados podem ser aplicadas para entender melhor a situação e melhorar os processos de negócios.
## O que pode fazer com Dados
Na Ciência de Dados, focamo-nos nos seguintes passos da jornada dos dados:
<dl>
<dt>1) Aquisição de Dados</dt>
<dd>
O primeiro passo é recolher os dados. Embora em muitos casos isso possa ser um processo direto, como dados que chegam a uma base de dados a partir de uma aplicação web, às vezes precisamos usar técnicas especiais. Por exemplo, dados de sensores IoT podem ser avassaladores, e é uma boa prática usar pontos de buffer como o IoT Hub para recolher todos os dados antes de os processar.
</dd>
<dt>2) Armazenamento de Dados</dt>
<dd>
Armazenar dados pode ser desafiador, especialmente se estivermos a falar de big data. Ao decidir como armazenar dados, faz sentido antecipar a forma como gostaria de consultar os dados no futuro. Existem várias maneiras de armazenar dados:
<ul>
<li>Uma base de dados relacional armazena uma coleção de tabelas e usa uma linguagem especial chamada SQL para consultá-las. Normalmente, as tabelas são organizadas em diferentes grupos chamados esquemas. Em muitos casos, precisamos converter os dados da forma original para se ajustarem ao esquema.</li>
<li><a href="https://en.wikipedia.org/wiki/NoSQL">Uma base de dados NoSQL</a>, como <a href="https://azure.microsoft.com/services/cosmos-db/?WT.mc_id=academic-77958-bethanycheum">CosmosDB</a>, não impõe esquemas aos dados e permite armazenar dados mais complexos, por exemplo, documentos JSON hierárquicos ou grafos. No entanto, bases de dados NoSQL não têm as capacidades de consulta ricas do SQL e não podem impor integridade referencial, ou seja, regras sobre como os dados são estruturados em tabelas e governam as relações entre tabelas.</li>
<li><a href="https://en.wikipedia.org/wiki/Data_lake">Armazenamento em Data Lake</a> é usado para grandes coleções de dados em forma bruta e não estruturada. Os data lakes são frequentemente usados com big data, onde todos os dados não podem caber em uma única máquina e precisam ser armazenados e processados por um cluster de servidores. <a href="https://en.wikipedia.org/wiki/Apache_Parquet">Parquet</a> é o formato de dados frequentemente usado em conjunto com big data.</li>
</ul>
</dd>
<dt>3) Processamento de Dados</dt>
<dd>
Esta é a parte mais emocionante da jornada dos dados, que envolve converter os dados da sua forma original para uma forma que possa ser usada para visualização/treino de modelos. Ao lidar com dados não estruturados, como texto ou imagens, podemos precisar usar algumas técnicas de IA para extrair <b>características</b> dos dados, convertendo-os assim para uma forma estruturada.
</dd>
<dt>4) Visualização / Insights Humanos</dt>
<dd>
Muitas vezes, para entender os dados, precisamos visualizá-los. Tendo muitas técnicas diferentes de visualização na nossa caixa de ferramentas, podemos encontrar a visão certa para obter um insight. Frequentemente, um cientista de dados precisa "brincar com os dados", visualizando-os várias vezes e procurando algumas relações. Além disso, podemos usar técnicas estatísticas para testar hipóteses ou provar uma correlação entre diferentes partes dos dados.
</dd>
<dt>5) Treino de um modelo preditivo</dt>
<dd>
Como o objetivo final da ciência de dados é ser capaz de tomar decisões com base nos dados, podemos querer usar as técnicas de <a href="http://github.com/microsoft/ml-for-beginners">Aprendizagem Automática</a> para construir um modelo preditivo. Podemos então usá-lo para fazer previsões usando novos conjuntos de dados com estruturas semelhantes.
</dd>
</dl>
Claro, dependendo dos dados reais, alguns passos podem estar ausentes (por exemplo, quando já temos os dados na base de dados ou quando não precisamos de treino de modelo), ou alguns passos podem ser repetidos várias vezes (como o processamento de dados).
## Digitalização e Transformação Digital
Na última década, muitas empresas começaram a entender a importância dos dados na tomada de decisões empresariais. Para aplicar os princípios da ciência de dados na gestão de um negócio, primeiro é necessário recolher alguns dados, ou seja, traduzir os processos empresariais para uma forma digital. Isso é conhecido como **digitalização**. Aplicar técnicas de ciência de dados a esses dados para orientar decisões pode levar a aumentos significativos na produtividade (ou até mesmo a uma mudança de rumo nos negócios), chamado de **transformação digital**.
Vamos considerar um exemplo. Suponha que temos um curso de ciência de dados (como este) que oferecemos online aos alunos e queremos usar a ciência de dados para melhorá-lo. Como podemos fazer isso?
Podemos começar por perguntar "O que pode ser digitalizado?" A maneira mais simples seria medir o tempo que cada aluno leva para concluir cada módulo e medir o conhecimento adquirido dando um teste de múltipla escolha no final de cada módulo. Ao calcular a média do tempo de conclusão entre todos os alunos, podemos descobrir quais módulos causam mais dificuldades e trabalhar para simplificá-los.
> Pode argumentar que esta abordagem não é ideal, porque os módulos podem ter comprimentos diferentes. Provavelmente é mais justo dividir o tempo pelo comprimento do módulo (em número de caracteres) e comparar esses valores em vez disso.
Quando começamos a analisar os resultados de testes de escolha múltipla, podemos tentar determinar quais conceitos os alunos têm dificuldade em compreender e usar essa informação para melhorar o conteúdo. Para isso, precisamos projetar os testes de forma que cada pergunta esteja associada a um determinado conceito ou bloco de conhecimento.
Se quisermos ser ainda mais detalhados, podemos traçar o tempo gasto em cada módulo em relação à faixa etária dos alunos. Podemos descobrir que, para algumas faixas etárias, leva um tempo excessivamente longo para concluir o módulo ou que os alunos desistem antes de o terminar. Isso pode ajudar-nos a fornecer recomendações de idade para o módulo e minimizar a insatisfação das pessoas devido a expectativas erradas.
## 🚀 Desafio
Neste desafio, vamos tentar encontrar conceitos relevantes para o campo da Ciência de Dados analisando textos. Vamos pegar um artigo da Wikipédia sobre Ciência de Dados, descarregar e processar o texto e, em seguida, criar uma nuvem de palavras como esta:
![Nuvem de Palavras para Ciência de Dados](../../../../translated_images/pt-PT/ds_wordcloud.664a7c07dca57de017c22bf0498cb40f898d48aa85b3c36a80620fea12fadd42.png)
Visite [`notebook.ipynb`](../../../../1-Introduction/01-defining-data-science/notebook.ipynb ':ignore') para ler o código. Também pode executar o código e ver como ele realiza todas as transformações de dados em tempo real.
> Se não souber como executar código num Jupyter Notebook, veja [este artigo](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
## [Questionário pós-aula](https://ff-quizzes.netlify.app/en/ds/quiz/1)
## Tarefas
* **Tarefa 1**: Modifique o código acima para descobrir conceitos relacionados aos campos de **Big Data** e **Machine Learning**
* **Tarefa 2**: [Pense em Cenários de Ciência de Dados](assignment.md)
## Créditos
Esta lição foi criada com ♥️ por [Dmitry Soshnikov](http://soshnikov.com)
---
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos pela precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se uma tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução.

@ -0,0 +1,35 @@
# Tarefa: Cenários de Ciência de Dados
Nesta primeira tarefa, pedimos que pense em algum processo ou problema da vida real em diferentes domínios de problemas, e como pode melhorá-lo utilizando o processo de Ciência de Dados. Pense no seguinte:
1. Que dados pode recolher?
1. Como os recolheria?
1. Como armazenaria os dados? Qual seria o provável volume dos dados?
1. Que insights poderia obter a partir desses dados? Que decisões poderíamos tomar com base nos dados?
Tente pensar em 3 problemas/processos diferentes e descreva cada um dos pontos acima para cada domínio de problema.
Aqui estão alguns domínios de problemas e questões que podem ajudá-lo a começar a pensar:
1. Como pode usar dados para melhorar o processo educativo das crianças nas escolas?
1. Como pode usar dados para controlar a vacinação durante a pandemia?
1. Como pode usar dados para garantir que está a ser produtivo no trabalho?
## Instruções
Preencha a tabela seguinte (substitua os domínios de problemas sugeridos pelos seus próprios, se necessário):
| Domínio do Problema | Problema | Que dados recolher | Como armazenar os dados | Que insights/decisões podemos tomar |
|----------------------|----------|--------------------|--------------------------|-------------------------------------|
| Educação | | | | |
| Vacinação | | | | |
| Produtividade | | | | |
## Rubrica
Exemplar | Adequado | Precisa de Melhorias
--- | --- | --- |
Foi capaz de identificar fontes de dados razoáveis, formas de armazenar os dados e possíveis decisões/insights para todos os domínios de problemas | Alguns aspetos da solução não estão detalhados, o armazenamento de dados não é discutido, pelo menos 2 domínios de problemas são descritos | Apenas partes da solução de dados são descritas, apenas um domínio de problema é considerado.
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, é importante notar que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes da utilização desta tradução.

File diff suppressed because one or more lines are too long

@ -0,0 +1,37 @@
# Tarefa: Cenários de Ciência de Dados
Nesta primeira tarefa, pedimos que pense em algum processo ou problema da vida real em diferentes domínios de problemas, e como pode melhorá-lo utilizando o processo de Ciência de Dados. Pense no seguinte:
1. Que dados pode recolher?
1. Como os recolheria?
1. Como armazenaria os dados? Qual seria o provável volume dos dados?
1. Que insights poderia obter a partir desses dados? Que decisões poderíamos tomar com base nos dados?
Tente pensar em 3 problemas/processos diferentes e descreva cada um dos pontos acima para cada domínio de problema.
Aqui estão alguns domínios de problemas e questões que podem ajudá-lo a começar a pensar:
1. Como pode usar dados para melhorar o processo educativo das crianças nas escolas?
1. Como pode usar dados para controlar a vacinação durante a pandemia?
1. Como pode usar dados para garantir que está a ser produtivo no trabalho?
## Instruções
Preencha a tabela seguinte (substitua os domínios de problemas sugeridos pelos seus próprios, se necessário):
| Domínio do Problema | Problema | Que dados recolher | Como armazenar os dados | Que insights/decisões podemos tomar |
|----------------------|----------|--------------------|--------------------------|-------------------------------------|
| Educação | Na universidade, temos tipicamente baixa frequência às aulas, e temos a hipótese de que os estudantes que assistem às aulas, em média, têm melhor desempenho nos exames. Queremos estimular a frequência e testar a hipótese. | Podemos monitorizar a frequência através de fotografias tiradas pela câmara de segurança na sala de aula, ou rastreando os endereços bluetooth/wifi dos telemóveis dos estudantes na sala. Os dados dos exames já estão disponíveis na base de dados da universidade. | Caso monitorizemos imagens da câmara de segurança - precisamos armazenar algumas (5-10) fotografias durante a aula (dados não estruturados), e depois usar IA para identificar os rostos dos estudantes (converter os dados para formato estruturado). | Podemos calcular a frequência média de cada estudante e verificar se há alguma correlação com as notas dos exames. Falaremos mais sobre correlação na secção de [probabilidade e estatística](../../04-stats-and-probability/README.md). Para estimular a frequência dos estudantes, podemos publicar a classificação semanal de frequência no portal da escola e sortear prémios entre os que tiverem maior frequência. |
| Vacinação | | | | |
| Produtividade | | | | |
> *Fornecemos apenas uma resposta como exemplo, para que possa ter uma ideia do que é esperado nesta tarefa.*
## Rubrica
Exemplar | Adequado | Precisa de Melhorias
--- | --- | --- |
Foi capaz de identificar fontes de dados razoáveis, formas de armazenar os dados e possíveis decisões/insights para todos os domínios de problemas | Alguns aspetos da solução não estão detalhados, o armazenamento de dados não é discutido, pelo menos 2 domínios de problemas são descritos | Apenas partes da solução de dados são descritas, apenas um domínio de problema é considerado.
**Aviso Legal**:
Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, é importante notar que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução.
Loading…
Cancel
Save