Módulo 4: Transformações e Information Retrieval


Tutorial

Imports para a Aula


In [ ]:
import numpy as np
import os
import pandas as pd

Propagação de Funções

Series

Variável de Teste


In [ ]:
""" Série a ser transformada"""
s = pd.Series(
    name="Compras",
    index=["Leite", "Ovos", "Carne", "Arroz", "Feijão"],  
    data=[2, 12, 1, 5, 2]
)
s

Elemento a elemento


In [ ]:
""" Função de Transformação """
def fn(x):
    return x ** 2 + x - 100

In [ ]:
""" Transformação elemento a elemento """
s.map(fn)

DataFrame

Variável de Teste


In [ ]:
""" DataFrame a ser transformado"""
df = pd.DataFrame(
    index=pd.Index(data=["Leite", "Ovos", "Carne", "Arroz", "Feijão"], name="Itens"),
    columns=["Quantidade",  "Preço Unitário"],
    data=np.array([
        [4, 3, 1, 5, 2],
        [3.00, 6.50, 25.90, 5.00, 3.80]
    ]).T,
)
df

Elemento a elemento


In [ ]:
""" Função de Transformação """
def fn(x):
    return x ** 3 / 100

In [ ]:
""" Transformação elemento a elemento """
df.applymap(fn)

Linhas e Colunas


In [ ]:
""" Função de Transformação """
def fn(x):
    return x.product()

In [ ]:
""" Transformação elemento a elemento """
df.apply(fn)

In [ ]:
""" Transformação elemento a elemento """
df.apply(fn, axis=1)

Transformações

Variável de Teste


In [ ]:
df1 = pd.DataFrame(
    columns=["user_id", "store_id", "product_id"],
    data=[
        [1, 1, 1],
        [1, 2, 6],
        [3, 2, 7],
        [2, 2, 3],
        [3, 2, 3],
        [4, 3, 2],
        [2, 3, 1],
        [1, 1, 3],
        [1, 3, 3],
        [5, 1, 4],
        [5, 1, 1],
        [3, 2, 1],
        [1, 2, 1],
        [2, 2, 2],
        [3, 2, 2],
        [4, 2, 3],
        [4, 1, 5],
        [5, 1, 6],
        [3, 1, 6],
        [2, 3, 7],
    ]
)
df2 = pd.DataFrame(
    columns=["store_id", "store_name"],
    data=[
        [1, "Pão de Açúcar"],
        [2, "Dia"],
        [3, "Extra"],
    ]
)
df3 = pd.DataFrame(
    columns=["product_id", "product_name"],
    data=[
        [1, "Leite"],
        [2, "Ovos"],
        [3, "Arroz"],
        [4, "Feijão"],
        [5, "Carne"],
        [6, "Frango"],
        [7, "Peixe"]
    ]
)

df = pd.merge(pd.merge(df1, df2, on="store_id"), df3, on="product_id")[["user_id", "store_name", "product_name"]]
df

Manipulações

pivot & pivot_table


In [ ]:
df.pivot?

In [ ]:
df.pivot_table?

In [ ]:
df.pivot(columns="store_name", values="product_name")

In [ ]:
df.pivot_table(columns="store_name", values="product_name", aggfunc="count")

crosstab


In [ ]:
pd.crosstab?

In [ ]:
pd.crosstab(df.store_name, df.product_name)

Agrupamento e Agregação


In [ ]:
pd.DataFrame.groupby?

In [ ]:
pd.core.groupby.DataFrameGroupBy.aggregate?

In [ ]:
g = df.groupby("product_name")
g

In [ ]:
g.describe()

In [ ]:
g.aggregate(["min", "mean", "median", "max", "sum"])

In [ ]:
g.max()

Desafio

Objetivo:

Analisar o dataset gerado no Módulo 3 e responder às questões em cada item.

Dataset


In [ ]:
file_name = os.path.join("data", "desafio", "dataset.csv")

In [ ]:
dataset = pd.read_csv(filename, sep=",", index_col=0, encoding="utf-8")
dataset.head()

Itens

[ Item A ]

Quantos usuários únicos fizeram pedidos?


In [ ]:
""" Entre com o Código aqui """

[ Item B ]

Qual a média e o desvio padrão da quantidade de produtos presentes em um pedido um usuário?


In [ ]:
""" Entre com o Código aqui """

[ Item C ]

Qual a média, o mínimo e o máximo da quantidade de corredores (aisles) por departmento (department)?


In [ ]:
""" Entre com o Código aqui """

[ Item D ]

Qual o dia da semana em que ocorrem mais pedidos de produtos para cada departmento (department)?


In [ ]:
""" Entre com o Código aqui """