Визуализируйте график как линейный график python - PullRequest
0 голосов
/ 20 февраля 2020

У меня есть фрейм данных для транзакций клиентов:

     customer_id|tier |transaction_type|year|no_of_purchases
       1353455  |1    |online          |2012|5
       1353455  |1    |retail          |2012|8
       1353455  |1    |retail          |2014|10
       1543798  |2    |retail          |2012|1

Уровень - это уровень программы лояльности. Я хочу посмотреть, есть ли разница в типе транзакции и нет_покупки между каждым уровнем.

Я сделал подсчет для этого:

sns.countplot(x="transaction_type", y="no_of_purchase", hue"tier")

Цель : я хочу показать для каждого года (ось х), каково количество no_purchases для каждого типа транзакции и как это отличается для каждого уровня. Вот пример того, как я хочу, чтобы это выглядело. В идеале у нас должно быть 4 графика, по одному для каждого типа транзакции. Было бы здорово, если бы мы могли показать счетчик в каждой точке.

enter image description here

1 Ответ

1 голос
/ 20 февраля 2020

Вы можете использовать seaborn catplot .

Сначала вы можете агрегировать свои данные, а затем выполнять визуализацию с использованием seaborn.

data_viz = df.groupby(['year','transaction_type','tier'], as_index=False)['no_of_purchases'].sum()

sns.catplot(data=data_viz, x='year', y='no_of_purchases', hue='tier', col='transaction_type', kind='bar')

Но, к сожалению, на основе документация, вы не можете нанести данные с помощью линейного графика.


Хотя есть обходной путь, вы можете сделать что-то вроде этого.

import matplotlib.pyplot as plt

data_viz = df.groupby(['year','transaction_type','tier'], as_index=False)['no_of_purchases'].sum()

for i in list(data_viz['transaction_type'].unique()):
    viz = sns.lineplot(data=data_viz[data_viz['transaction_type'] == i], x='year', y='no_of_purchases', hue='tier')
    plt.title(i)
    plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...