value_counts() 中的标准化意味着什么

问题描述 投票:0回答:1

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

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();

without normalization

归一化:

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();

with normalization

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

python pandas statistics normalization
1个回答
2
投票

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

这是医生说的:

normalize : bool, default 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
允许正确比较两个系列的浮点数。

© www.soinside.com 2019 - 2024. All rights reserved.