【问题标题】:Statistics and Pandas: What normalization means in value_counts() in Pandas统计数据和 Pandas:标准化在 Pandas 中的 value_counts() 中意味着什么
【发布时间】:2021-09-20 09:18:17
【问题描述】:

问题不在于编码,而在于了解归一化在统计数据和数据相关性方面的含义 这是我正在做的一个例子。 没有标准化:

plt.subplot(111)
plt.plot(df['alcoholism'].value_counts(), marker='o')
plt.plot(df.query('no_show =="Yes"')['alcoholism'].value_counts(), color='black')
plt.show();

标准化:

plt.subplot(111)
plt.plot(df['alcoholism'].value_counts(normalize=True), marker='o')
plt.plot(df.query('no_show =="Yes"')['alcoholism'].value_counts(normalize=True), color='black')
plt.show();

哪个更好地关联具有或不具有标准化的值?或者这是一个完全错误的想法? 我是数据和熊猫的新手,所以请原谅我糟糕的代码、链接、评论、风格:)

【问题讨论】:

    标签: pandas statistics data-science normalization


    【解决方案1】:

    正如您在标准化(第二个图)时看到的那样,对于绘制的每条线,两个点的总和都等于 1。规范化是为您提供每个值出现的rate,而不是出现的number

    the doc 是这么说的:

    normalize : bool,默认为 False
    返回比例而不是频率。

    • value_counts() 可能返回如下内容:

      0    110000
      1      1000
      dtype: int64
      
    • value_counts(normalize=True) 可能会返回如下内容:

      0    0.990991
      1    0.009009
      dtype: float64
      

    换句话说,归一化和非归一化之间的关系可以检查为:

    >>> counts = df['alcoholism'].value_counts()
    >>> rate = df['alcoholism'].value_counts(normalize=True)
    >>> np.allclose(rate, counts / counts.sum())
    True
    

    np.allclose 允许正确比较两个浮点数系列。

    【讨论】:

    • 所以我有不同的数字掩盖了真实的变化率,通过使用归一化,我得到了速率的近似值,看看这两个因素是否以相同的速率变化。我的解释现在正确吗?
    • 确实是@GauntletZoom。但是您的第一个数字也有更多信息,因为它可以比较不同的组大小no_show=Yes 与所有患者。如果这回答了您的问题,请参阅what to do when someone answers
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-05
    • 1970-01-01
    • 2016-09-02
    • 2015-03-12
    • 2021-07-10
    • 1970-01-01
    • 2021-09-23
    相关资源
    最近更新 更多