pandas - 列变量

时间:2018-04-12 14:36:15

标签: python pandas visualization

我正在试图想象一些数据,但我对这个主题并不是很有经验,而且我很难找到最好的海湾来获得我正在寻找的东西。我四处寻找并发现了类似的问题,但没有任何东西可以回答我想要的东西,所以希望我不会重复一个常见的问题。

无论如何,我有一个DataFrame,其中包含patient_id的列(以及其他列,但这是相关的。例如:

   patient_id  other_stuff
0      000001          ...
1      000001          ...
2      000001          ...
3      000002          ...
4      000003          ...
5      000003          ...
6      000004          ...
etc

每行代表患者所具有的特定情节。我想绘制一个分布,其中x轴是患者的发作次数,y轴是具有所述发作次数的患者数。例如,基于以上所述,有一个患者具有三个发作,一个患者具有两个发作,两个患者具有一个发作,即x = [1, 2, 3], y = [2, 1, 1]。目前,我执行以下操作:

episode_count_distribution = (
    patients.patient_id
    .value_counts() # the number of rows for each patient_id (i.e. episodes per patient)
    .value_counts() # the number of patients for each possible row count above (i.e. distribution of episodes per patient)
    .sort_index()
)
episode_count_distribution.plot()

这种方法做到了我想要的,但让我觉得有点不透明,难以理解,所以我想知道是否有更好的方法。

1 个答案:

答案 0 :(得分:2)

您可能正在寻找类似

的内容
df.procedure_id.groupby(df.patient_id).nunique().hist();

说明:

  • df.procedure_id.groupby(df.patient_id).nunique()查找每位患者的独特程序数。

  • hist()绘制直方图。

示例

df = pd.DataFrame({'procedure_id': [3, 2, 3, 2, 4, 1, 2, 3], 'patient_id': [1, 2, 3, 2, 1, 2, 3, 2]})
df.procedure_id.groupby(df.patient_id).nunique().hist();
xlabel('num patients');
ylabel('num treatments');

beginDraggingSessionWithItems