获取pandas数据帧中唯一值的计数

时间:2018-01-21 23:15:11

标签: python pandas dataframe

我正在尝试获取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

1 个答案:

答案 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