### Espaço de Tecnologias e Artes - Sesc Avenida Paulista
## Grupo de estudos em Python
### `hackmd.io/@sesc-av-paulista/estudos-em-python-16-setembro`
---
#### Conversas paralelas
Dicas de livros
- https://penseallen.github.io/PensePython2e/
- https://automatetheboringstuff.com
Documentário do Python
- https://www.youtube.com/watch?v=GfH4QL4VqJ0
---
#### Algumas ferramentas de visualizações de dados e tipos diferentes de diagramas
- Galerias de exemplos de dataviz
- https://python-graph-gallery.com/ (Python)
- https://datavizcatalogue.com/ (geral)
- Alguns tipos que olhamos
- **Treemap**
- **Sankey**
- **Wordcloud** (nuvem de palavras)
- Grafos/di-grafos "rede"/"network"
**QuadTree** é outra coisa (não é *treemap*) é uma estrutura de dados para otimização de relações espaciais entre partículas, por exemplo.
- https://www.carlosfranco.co/posts/QuadTree
### Explorações
- Treemap https://datavizcatalogue.com/methods/treemap.html
Patiamos muito nos tutoriais :(
- https://medium.com/wome
nintechnology/a-visual-feast-creating-stunning-treemaps-in-python-using-squarify-631e999660ec
O que chegou mais perto foi este com a bibliteca **plotly**
- Treemap com plotly https://plotly.com/python/treemaps/
Não deu tempo de mostrar nada de grafos e **networkx**
- networkx - Biblioteca para manipular grafos
### Vocabulario matplotlib fig(figura) e ax(eixo)
Exemplo histograma simples
```python=
import matplotlib.pyplot as plt
plt.rcParams['figure.dpi'] = 300 # opcional
# inventando uns dados
import numpy as np
alturas = np.random.normal(170, 10, 250)
plt.hist(alturas)
plt.show
```
```python=
# https://python-graph-gallery.com/basic-histogram-in-matplotlib/
import matplotlib.pyplot as plt
plt.rcParams['figure.dpi'] = 300 # opcional
# inventando uns dados
import numpy as np
alturas = np.random.normal(170, 10, 250)
# Initialize layout
fig, ax = plt.subplots(figsize = (4, 4))
#plot
ax.hist(alturas, bins=10, edgecolor="black")
plt.show()
```
### Wordcloud
- https://python-graph-gallery.com/wordcloud/

Usando a lib `WordCloud`, e `nltk` para remover as palavras sem grande conteúdo semântico (*stopwords*)
Pegamos o texto do romance Iracema. No Projeto Gutemberg.
```python=
"""
Generating a square wordcloud from the US constitution using default arguments.
"""
from pathlib import Path
from wordcloud import WordCloud
import matplotlib.pyplot as plt
import nltk
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize
nltk.download('stopwords')
nltk.download('punkt')
# Get English stopwords and tokenize
stop_words = set(stopwords.words('portuguese'))
text = Path('iracema.txt').read_text(encoding='UTF-8')
# Generate a word cloud image
wordcloud = WordCloud(stopwords=stop_words).generate(text)
# Display the generated image:
# the matplotlib way:
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.show()
```