Постройте отдельные точки данных в каждой группе после pandas groupby - PullRequest
0 голосов
/ 28 мая 2020

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

import pandas as pd
import seaborn as sns

df_tips = sns.load_dataset('tips')
df_tips.groupby(['sex', 'day', 'smoker'])['tip']    # How could I scatter plot individual tip in each group?

В идеале хотелось бы, чтобы было что-то вроде этого: enter image description here

Ответы [ 2 ]

1 голос
/ 29 мая 2020

Я бы сделал:

df_tips = sns.load_dataset('tips')
groups = df_tips.groupby(['sex', 'day', 'smoker'])['tip']

fig,ax = plt.subplots()
for  i,(k,v) in enumerate(groups):
    ax.scatter([i]*len(v), v)

ax.set_xticks(np.arange(len(groups)))
ax.set_xticklabels([k for k,v in groups],rotation=90);

Вывод:

enter image description here

0 голосов
/ 30 мая 2020

Я нашел более простой способ сделать это, и сюжет более красивый (я думаю).

import pandas as pd
import seaborn as sns

df_tips = sns.load_dataset('tips')
df_tips['Groups'] = df_tips[['sex', 'day', 'smoker']].astype(str).agg('.'.join, axis=1)
sns.swarmplot(x='Groups', y='tip', data=df_tips)
plt.xticks(
    rotation=90, 
    fontweight='light',
    fontsize='x-large'  
)

Вот результат: enter image description here

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