GroupBy和与熊猫一起密谋

时间:2020-10-10 10:13:11

标签: python pandas matplotlib

我有数据。 有一些人参加会议。会议分为演讲。每个会议和演讲的组合都有许多参与者。一次会议的参加人数不变。换句话说,参加者的人数只因会议而异。

data = [
 ['group_1', 1, 1, 68],
 ['group_2', 1, 1, 35],
 ['group_1', 1, 2, 68],
 ['group_2', 1, 2, 35],
 ['group_1', 2, 1, 78],
 ['group_2', 2, 1, 25],
 ['group_1', 2, 2, 78], 
 ['group_2', 2, 2, 25],
 ['group_1', 3, 1, 73], 
 ['group_2', 3, 1, 30],
 ['group_1', 3, 2, 73], 
 ['group_2', 3, 2, 30]]
df = pd.DataFrame(data, columns=['group_name', 'meeting', 'present', 'members'])

X正在开会,y是与会人数。我想画这样的东西。

df.groupby(['group_name']).plot(
         x='meeting', y='members',
         color='#4b0082', linewidth=3,
         marker='h', markerfacecolor='lightgreen', markeredgewidth=1, markersize=9, markevery=1);

enter image description here

但是,我想添加标题作为组名并在y轴上签名。当我对所有数据运行此代码时,我也遇到了问题,由于某种原因,我在图上有加分。 enter image description here

在第一个图表上,计数应从会议27开始,并且会议区域40中存在异常。在第二个图表上,在27会议区域中存在异常。

1 个答案:

答案 0 :(得分:1)

pandas >= 1.1.0起,我们在DataFrame.plot中使用了ylabel自变量。另外,我们将稍微重写您的组,以便我们可以访问组名:

for grp, d in df.groupby('group_name'):
    d.plot(
        x='meeting',
        y='members',
        color='#4b0082',
        ylabel='members',
        title=grp,
        linewidth=3,
        marker='h',
        markerfacecolor='lightgreen',
        markeredgewidth=1,
        markersize=9,
        markevery=1
    )

plots