我有一个熊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.nanmean
和scipy.stats.nanstd
?我不明白为什么std
为此需要更改自由度:
zscore = lambda x: (x - scipy.stats.nanmean(x)) / scipy.stats.nanstd(x)
井pandas'
的版本mean
和std
将到手的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。我曾经尝试过使用枢轴和转置,但我不知道该怎么做。谢谢你的帮助!