No dia 22/10/22, a comunidade participou do evento do Baixada Nerd na ETEC Itanhaém palestrando sobre manipulação de dados com Python.
Altair Ribeiro falou sobre a ingestão de dados, manipulação e visualização de grandes volumes de dados e a versatilidade ao utilizar python para big data.
Arquivos para Download
- Arquivo do notebook para o Jupyter Notebook.
Arquivo do Notebook – Baixe aqui: ETEC 22/10/22 - Manipulação de Dados - Notebook (629 downloads )
Arquivo de Dados – Baixe Aqui: ETEC - 22/10/22 - ifood.csv - Arquivo de dados compactado (554 downloads )
Imagens do Evento da Baixada Nerd
Notebook
1. Importando as bibiliotecas¶
In [456]:
# Importa das bibliotecas necessárias para manipular os dataframes (dados)
import numpy as np
import pandas as pd
import seaborn as sea
from pandas import Grouper
import matplotlib.pyplot as plt
%matplotlib inline
2. Carregando os arquivos de dados utilizando o Pandas¶
In [457]:
# lê o arquivo de dados "network.csv" em um diretório padrão. Nomeie o arquivo de log para "network.csv"
# municipio = pd.read_csv('Base_MUNIC_2020.csv')
ifood = pd.read_csv('ifood.csv', sep=";")
3. Examinando os tipos de dados¶
In [458]:
# Tipos dos dados
ifood.dtypes
Out[458]:
4. Alterando o tipo de CodMun de “int64” para “object”, porque não será necessário realizar cálculo com ele¶
In [459]:
ifood = ifood.astype({'CodMun':object})
5. Examinando novamente os dados¶
In [460]:
# Tipos dos dados
ifood.dtypes
Out[460]:
6. Quantidade de registros (linha) e variáveis (colunas)¶
In [461]:
# Formato dos dados
ifood.shape
Out[461]:
7. Uma amostragem dos dados do início e do fim do arquivo¶
In [464]:
#ifood.head(30)
ifood.tail()
Out[464]:
8. Alterando a forma de visualização¶
In [465]:
# Inversão da forma de visualização dos dados
ifood.T
Out[465]:
9. Agrupando os dados¶
In [466]:
ifood.groupby(['CodMun', 'categoria', 'nome_restaurante', 'faixa_preco']).sum()
Out[466]:
10. Copiando o dataframe original¶
In [467]:
cp_ifood = ifood.copy()
11. Vendo uma amostra do dataframe copiado¶
In [468]:
cp_ifood.head()
Out[468]:
12. Eliminando algumas colunas e atribuindo a outro dataframe¶
In [469]:
# df_cp = cp_ifood.drop(['CodMun', 'preco_minimo_pedido', 'nome_restaurante', 'faixa_preco','url'], axis=1)
In [470]:
df_cp = cp_ifood.drop(['tempo_entrega','preco_minimo_pedido', 'nome_restaurante', 'faixa_preco','url'], axis=1)
13. Verificando novamente a amostra do novo dataframe sem as colunas excluídas¶
In [471]:
df_cp.head()
Out[471]:
14. Agrupando as categorias de restaurantes (limitado a n tipos)¶
In [473]:
df_grupos = df_cp.groupby(['categoria'],sort=True).count().head(20)
# df_grupos = df_cp.groupby(['categoria'],sort=False).count().head(20)
15. Verificando os agrupamentos¶
In [474]:
df_grupos
Out[474]:
16. Plotando os dados dos grupos¶
In [475]:
df_grupos.plot(kind='barh', figsize=(8,8))
Out[475]:
17. Contando as categorias de restaurantes¶
In [476]:
cp_ifood['categoria'].value_counts()
Out[476]:
Exemplo de gráfico utilizando a biblioteca Seaborn¶
1. Mapa Termal¶
In [477]:
### 1. Gráfico de Barras
import matplotlib.pyplot as plt
import seaborn as sns
# sns.set_theme()
# Load the example flights dataset and convert to long-form
flights_long = sns.load_dataset("flights")
flights = flights_long.pivot("month", "year", "passengers")
# Draw a heatmap with the numeric values in each cell
f, ax = plt.subplots(figsize=(9, 6))
sns.heatmap(flights, annot=True, fmt="d", linewidths=.5, ax=ax)
Out[477]:
2. Gráfico de Dispersão¶
In [478]:
import seaborn as sns
import matplotlib.pyplot as plt
# sns.set_theme(style="whitegrid")
# Load the example diamonds dataset
diamonds = sns.load_dataset("diamonds")
# Draw a scatter plot while assigning point colors and sizes to different
# variables in the dataset
f, ax = plt.subplots(figsize=(6.5, 6.5))
sns.despine(f, left=True, bottom=True)
clarity_ranking = ["I1", "SI2", "SI1", "VS2", "VS1", "VVS2", "VVS1", "IF"]
sns.scatterplot(x="carat", y="price",
hue="clarity", size="depth",
palette="ch:r=-.2,d=.3_r",
hue_order=clarity_ranking,
sizes=(1, 8), linewidth=0,
data=diamonds, ax=ax)
Out[478]:
3. Gráfico de barras Verticais¶
In [479]:
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
# sns.set_theme(style="white", context="talk")
rs = np.random.RandomState(8)
# Set up the matplotlib figure
f, (ax1, ax2, ax3) = plt.subplots(3, 1, figsize=(7, 5), sharex=True)
# Generate some sequential data
x = np.array(list("ABCDEFGHIJ"))
y1 = np.arange(1, 11)
sns.barplot(x=x, y=y1, palette="rocket", ax=ax1)
ax1.axhline(0, color="k", clip_on=False)
ax1.set_ylabel("Sequencial")
# Center the data to make it diverging
y2 = y1 - 5.5
sns.barplot(x=x, y=y2, palette="vlag", ax=ax2)
ax2.axhline(0, color="k", clip_on=False)
ax2.set_ylabel("Divergente")
# Randomly reorder the data to make it qualitative
y3 = rs.choice(y1, len(y1), replace=False)
sns.barplot(x=x, y=y3, palette="deep", ax=ax3)
ax3.axhline(0, color="k", clip_on=False)
ax3.set_ylabel("Qualitativo")
# Finalize the plot
sns.despine(bottom=True)
plt.setp(f.axes, yticks=[])
plt.tight_layout(h_pad=2)
3. Gráfico de Barras Horizontais¶
In [480]:
import seaborn as sns
import matplotlib.pyplot as plt
# sns.set_theme(style="whitegrid")
# Initialize the matplotlib figure
f, ax = plt.subplots(figsize=(6, 15))
# Load the example car crash dataset
crashes = sns.load_dataset("car_crashes").sort_values("total", ascending=False)
# Plot the total crashes
sns.set_color_codes("pastel")
sns.barplot(x="total", y="abbrev", data=crashes,
label="Total", color="b")
# Plot the crashes where alcohol was involved
sns.set_color_codes("muted")
sns.barplot(x="alcohol", y="abbrev", data=crashes,
label="Alcoolizados", color="b")
# Add a legend and informative axis label
ax.legend(ncol=2, loc="lower right", frameon=True)
ax.set(xlim=(0, 24), ylabel="Estados Americanos",
xlabel="Colisões de automóveis por bilhão de milhas")
sns.despine(left=True, bottom=True)