Я не уверен, что именно вы хотите визуализировать. Что насчет:
df['gender'] = df.apply(lambda x: 1 if x.male == 1 else 0, axis=1)
result = df.groupby(['gender','offer_successful'])['offer_id'].count().reset_index(name='count')
Это дает следующий результат (пример):
gender offer_successful count
0 0 2
1 1
1 0 1