Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Exercicio18 concluído #19

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open

Exercicio18 concluído #19

wants to merge 1 commit into from

Conversation

larissagabriela
Copy link
Owner

Exercício Online Ratail concluído.

@igormq
Copy link

igormq commented Jul 31, 2020

Olá Larissa, tudo bem? Você e o João estão arrasando nos exercícios, meus parabéns! Vou parar de enrolar e começar a correção!

Step 6. Create a scatterplot with the Quantity per UnitPrice by CustomerID for the top 3 Countries (except UK)

Aqui o que ele pede é um pouco diferente do que foi feito! Ele pede a Quantidade por Preço Unitário aglutinado pelo CustomerID. No entanto, não sabemos se o CostumerID é único por país (seria bom checar). Em todo caso, o certo seria realizar um groupby em cima de CostumerID e Country.

# groupby CustomerID
customers = online_rt.groupby(['CustomerID','Country']).sum()

E em cima disso trabalhamos nos dados. Como, por exemplo, remover os preços negativos:

customers = customers[customers.UnitPrice > 0]

Aqui eu voltei com a coluna country para ficar mais fácil o plot!

customers['Country'] = customers.index.get_level_values(1)
top3 = online_rt.query('Country in @top3').Country.values

Com isso, podemos filtrar os consumidores pelo top country

# filter the dataframe to just select ones in the top_countries
customers = customers[customers['Country'].isin(top_countries)]

E finalmente podemos plotar

g = sns.FacetGrid(customers, col="Country")
g.map(plt.scatter, "Quantity", "UnitPrice", alpha=1)
g.add_legend()

Step 7.1.1 Display the first few rows of that DataFrame

Seguindo o passo anterior, aqui você deveria trabalhar com o groupby

online_rt.groupby(['CustomerID','Country']).sum().head()

Step 7.1.2 Think about what that piece of code does and display the dtype of UnitPrice

Como pode ver o UnitPrice é float64. Somar UnitPrice pode nos levar a muitos erros, pois não diz muito o quê o consumidor está fazendo de verdade. Suponha que um consumidor faça 1 pedido de 1000 itens de R$1 cada enquanto um outro faz 1000 pedidos de 1 item de R$1 cada. Com isso, não há muita diferença o que o primeiro e o último fizeram, pois no final das contas ambos gastaram a mesma quantidade de dinheiro.

Step 7.1.3 Pull data from online_rtfor CustomerIDs 12346.0 and 12347.0.

A ideia aqui é ver eles separadamente para ficar claro um ponto de vista

display(online_rt[online_rt.CustomerID == 12347.0].
        sort_values(by='UnitPrice', ascending = False).head())
display(online_rt[online_rt.CustomerID == 12346.0].
        sort_values(by='UnitPrice', ascending = False).head())

O consumidor 12346.0 fez um pedido gigante, enquanto o 12347 fez muitos pedidos pequenos. Então a gente consegue identificar um potencial problema do porquê o plot da seção 6 está estranho.

8.1 Group UnitPrice by intervals of 1 for prices [0,50), and sum Quantity and Revenue.

Você fez o exercício super certo, mas há uma outra forma de fazer ele que eu também acho que vale a pena saber!

buckets = np.arange(0,50,1)
revenue_per_price = online_rt.groupby(pd.cut(online_rt.UnitPrice, buckets)).Revenue.sum()
revenue_per_price.head()
revenue_per_price.plot()
plt.xlabel('Unit Price (in intervals of '+str(price_interval)+')')
plt.ylabel('Revenue')
plt.show()

8.4

Aqui você também poderia ter ajustado o eixo x, além de ter colocado nome nos eixos :)

plt.xlabel('Unit Price (in buckets of 1)') 
plt.ylabel('Revenue')
plt.xticks(np.arange(0,50,3),
           np.arange(0,50,3))

BONUS: Create your own question and answer it.

Muito legal sua ideia, Larissa! No entanto, não fica claro qual país é qual em cada bolinha. Minha dica seria ter uma bolinha diferente para cada país e uma legenda, ou até mesmo oclocar uma label dentro do plot em cada bolinha para que a gente saiba qual é o pais! Esse que tá la no extremo é quem?

Meus parabéns, você arrasou 🥇

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
2 participants