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')