различение типов клиентов в sns countplot - PullRequest
0 голосов
/ 10 марта 2020

У меня есть следующий график:

enter image description here

Я создал этот график, используя следующий код:

temp.gender.value_counts()/len(temp)*100).sort_index().plot(kind="bar", rot=0)
for p in ax.patches:
    ax.annotate('{:.2f}%'.format(p.get_height()), (p.get_x()+0.15, p.get_height()+1))
plt.show()

Вот это образец моих данных:

 customer_id| gender |date_joined
     8540   | Female |2018-08-12
     8544   | Female |
     8540   | Male   |2016-07-14

Я хочу видеть, как мужчины и женщины, сколько клиентов участвуют в программе вознаграждений. Если у них есть значение date_joined, то они являются частью программы поощрений клиентов, если у них нет значения для этого столбца, то они не являются частью программы.

Цель: чтобы представить 56% женщин и 41% мужчин, сколько из них входит в программу вознаграждений или имеет значение в date_joined?

1 Ответ

0 голосов
/ 11 марта 2020

Фрейм данных может быть отфильтрован через столбец data_joined и использован для создания желаемого графика:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# generate some dymmy test data; as the exact date isn't important just use two dates
N = 5000
gender = np.random.choice(['Male', 'Female'], N)
data_joined = np.random.choice(['2018-01-01', '2016-01-01', ''], N)

temp = pd.DataFrame({'gender': gender, 'data_joined': data_joined})

ax = (temp.gender.value_counts()/len(temp)*100).sort_index().plot(kind="bar", rot=0, color='lightblue', label='customer')
ax = (temp[temp['data_joined'] != ''].gender.value_counts()/len(temp)*100).sort_index().plot(kind="bar", rot=0, color='crimson', label='reward program', ax=ax)
for p in ax.patches:
    ax.annotate('{:.2f}%'.format(p.get_height()), (p.get_x()+p.get_width()/2, p.get_height()+0.5), ha='center', va='bottom')
ylims = plt.ylim()
plt.ylim(0, ylims[1] + 3) # make room for the labels
plt.legend()
plt.show()

resulting plot

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...