当前位置: 首页 > 面试题库 >

如何使用Nans将zscore归一化pandas列?

尉迟鸿熙
2023-03-14
问题内容

我有一个熊pandas据框,其中有一列我想zscore归一化的实数值:

>> a
array([    nan,  0.0767,  0.4383,  0.7866,  0.8091,  0.1954,  0.6307,
        0.6599,  0.1065,  0.0508])
>> df = pandas.DataFrame({"a": a})

问题在于,单个nan值将构成所有数组nan

>> from scipy.stats import zscore
>> zscore(df["a"])
array([ nan,  nan,  nan,  nan,  nan,  nan,  nan,  nan,  nan,  nan])

zscore(或不是scipy的等效功能)应用于pandas数据框的列并使其忽略nan值的正确方法是什么?我希望它与原始列具有相同的尺寸np.nan,并且具有无法归一化的值

编辑
:也许最好的解决方案是使用scipy.stats.nanmeanscipy.stats.nanstd?我不明白为什么std为此需要更改自由度:

zscore = lambda x: (x - scipy.stats.nanmean(x)) / scipy.stats.nanstd(x)

问题答案:

pandas'的版本meanstd将到手的Nan,所以你可以只计算这样(得到相同SciPy的zscore我认为你需要使用ddof =
0上std):

df['zscore'] = (df.a - df.a.mean())/df.a.std(ddof=0)
print df

        a    zscore
0     NaN       NaN
1  0.0767 -1.148329
2  0.4383  0.071478
3  0.7866  1.246419
4  0.8091  1.322320
5  0.1954 -0.747912
6  0.6307  0.720512
7  0.6599  0.819014
8  0.1065 -1.047803
9  0.0508 -1.235699


 类似资料:
  • ZSCORE key member 返回有序集 key 中,成员 member 的 score 值。 如果 member 元素不是有序集 key 的成员,或 key 不存在,返回 nil 。 可用版本: >= 1.2.0 时间复杂度: O(1) 返回值: member 成员的 score 值,以字符串形式表示。 redis> ZRANGE salary 0 -1 WITHSCORES # 测

  • 我有一个字典,看起来像这样: 我想将其应用于数据帧的“col1”列,类似于: 得到: 我怎样才能做到最好?出于某种原因,谷歌搜索与此相关的术语只会向我显示有关如何从dicts生成列的链接,反之亦然:-/

  • ZSCORE key member 返回有序集 key 中,成员 member 的 score 值。 如果 member 元素不是有序集 key 的成员,或 key 不存在,返回 nil 。 可用版本: >= 1.2.0 时间复杂度: O(1) 返回值: member 成员的 score 值,以字符串形式表示。 redis> ZRANGE salary 0 -1 WITHSCORES # 测

  • 问题内容: 这是代码段: 输出: 我很惊讶0不在(0,30]中,我应该怎么做才能将0归类为(0,30]? 问题答案: test[‘range’] = pd.cut(test.days, [0,30,60], include_lowest=True) print (test) days range 0 0 (-0.001, 30.0] 1 31 (30.0, 60.0] 2 45 (30.0, 60

  • 问题内容: 在对某些功能进行单元测试的上下文中,我试图使用python pandas建立2个DataFrames的相等性: 鉴于我正在尝试针对的完整测试(包括职位),我在做什么错? 比较包含s的Series / DataFrames相等性的最简单方法是什么? 问题答案: 您可以将assert_frame_equals与check_names = False一起使用(以免检查索引/列名称),如果它们

  • 大家好,我有一个数据集,看起来像下面的df1,我想让它看起来像使用熊猫的df2。我曾经尝试过使用枢轴和转置,但我不知道该怎么做。谢谢你的帮助!