我正在尝试获取pandas数据帧中列的唯一值的唯一计数。
示例数据如下:
In [3]: df = pd.DataFrame([[1, 1], [2, 1], [3, 2], [4, 3], [5, 1]], columns=['AppointmentId', 'PatientId'])
In [4]: df
Out[4]:
AppointmentId PatientId
0 1 1
1 2 1
2 3 2
3 4 3
4 5 1
实际数据集具有超过50000个PatientId
的唯一值。我希望可视化每位患者的预约计数,但只需按PatientId
进行分组并获取组的大小对于绘图效果不佳,因为那将是50000巴。
出于这个原因,我试图绘制有多少患者绘制了特定数量的约会,而不是根据PatientId
绘制约会数量。
基于上面的示例数据,我希望得到类似的结果:
AppointmentCount PatientCount
0 1 2
1 3 3
我通过首先对PatientId
进行分组并获取组大小,删除PatientId
和组大小来解决此问题,但在分组后无法找到提取方法。
In [24]: appointment_counts = df.groupby('PatientId').size()
In [25]: appointment_counts
Out[25]:
PatientId
1 3
2 1
3 1
dtype: int64
In [26]: type(appointment_counts)
Out[26]: pandas.core.series.Series
答案 0 :(得分:1)
在groupby
添加value_counts
df.groupby('PatientId').size().value_counts()
Out[877]:
1 2
3 1
dtype: int64
然后您可以添加rename
df.groupby('PatientId').size().value_counts().reset_index().rename(columns={'index':'Aid',0:'Pid'})
Out[883]:
Aid Pid
0 1 2
1 3 1