Python 如何按pandas groupby绘制条形图,然后循环所有唯一值

Python 如何按pandas groupby绘制条形图,然后循环所有唯一值,python,pandas,seaborn,Python,Pandas,Seaborn,我有以下数据,其中包含人员姓名、分数和尝试次数: # Import pandas library import pandas as pd import numpy as np # Data data = [['tom', 10,1], ['nick', 15,1], ['dom', 14,1], ['tom', 15,2], ['nick', 18,2], ['dom', 15,2], ['tom', 17,3] , ['nick', 14,3], ['tom',16 ,4],

我有以下数据,其中包含人员姓名、分数和尝试次数:

# Import pandas library 
import pandas as pd
import numpy as np
# Data
data = [['tom', 10,1], ['nick', 15,1], ['dom', 14,1], ['tom', 15,2], ['nick', 18,2], ['dom', 15,2], ['tom', 17,3]
       , ['nick', 14,3], ['tom',16 ,4], ['dom', 22,3]] 
  
# Create the pandas DataFrame 
df = pd.DataFrame(data, columns = ['Name', 'Score','Attempt']) 

# print dataframe. 
df 

    Name    Score   Attempt
0   tom     10  1
1   nick    15  1
2   dom     14  1
3   tom     15  2
4   nick    18  2
5   dom     15  2
6   tom     17  3
7   nick    14  3
8   tom     16  4
9   dom     22  3
我希望为每个唯一的
Name
绘制一个
seaborn水平条形图,其中
Score
作为值,轴作为
trunt
编号(类别),然后创建一个循环,以便为每个人生成一个3页的PDF。我不太明白的是如何:

a) 按groupby绘图-我需要制作多个切片数据帧吗

b) 使其成为一个循环,为PDF生成多个页面


任何帮助都将不胜感激!谢谢

这里有一个循环,用于将每个名称的数据绘制为单独的图形:

plt.style.use('seaborn')

for name in df['Name'].unique():
    fig, ax = plt.subplots()
    sub = df[df.Name == name]
    sns.barplot(y='Attempt',x='Score',data=sub, orient='h', ax=ax)
    ax.set_title(name.capitalize())
三个情节之一:

我想把你问题的PDF部分转移到一个新的帖子上,因为它有点模糊你的要求(3页的内容是什么?),而且这似乎是一个与制作情节无关的问题

但请注意,您可以将图形直接保存到(1页)PDF中:


非常感谢汤姆!我将提出一个新问题。我基本上只想要第1页的图1(
Tom
),第2页的图2(
Nick
)等等。。
#in the loop
    fig.savefig(name+'.pdf')