- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个 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 相同,我认为你需要在 std
上使用 ddof=0):
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
关于python - 如何使用 nans 对 pandas 列进行 zscore 标准化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23451244/
考虑以下数据框 df np.random.seed([3,1415]) df = pd.DataFrame(dict( S=np.random.rand(20), W=
我有一个数据框,其中有一列“组”可以有 50 个不同的值,而一列“值”是数字。 一个例子可以是: pd.DataFrame({'group':['a','b','c','a','a','b','a',
我正在尝试查找各组中值的 z 分数,例如在以下数据中 df: GROUP VALUE 1 5 2 2 1 10 2 20 1 7 在第 1 组中,值是
如何根据成员的 ID 从排序集中获取成员列表而不是仅获取一个成员? 我想用实际排序集中的一组 ID 构建一个子集。 我正在为 Redis 使用 Ruby 客户端,不想一一迭代。因为我想查找的成员可能超
我正在尝试将名为 [Z Score] 的列更新到 SQL 中的表中。我编写了在 SELECT 查询中创建新列的代码,如下所示: SELECT cd.* FROM ( SELECT [Ca
我正在尝试将名为 [Z Score] 的列更新到 SQL 中的表中。我编写了在 SELECT 查询中创建新列的代码,如下所示: SELECT cd.* FROM ( SELECT [Ca
使用以下代码: import pandas as pd from sklearn.preprocessing import scale df = pd.DataFrame({"Probe":["143
我目前正在将组分配给一个特殊的 url,并将他们的 groupId 作为分数。 创建群组网址: $this->cache->redis->zadd("group_route",$groupI
这个问题在这里已经有了答案: Is Redis list or set pop method thread safe? (1 个回答) 关闭 6 年前。 如果两个 Redis 客户端同时发出 ZAD
使用 Elasticsearch/Elastic,我想合并 n 个文档集合并按 zScore(或任何标准化分数)对它们进行排序。 详细信息: 合并 2..n 个文档集合,每个文档都有一个不同范围的分数
我可以将一列插入到一个数据框中,该数据框对另一列进行 z 评分,如下所示: [1] df.insert(, column='ZofA', value=(df['A']-df['A'].mean())/
我有一个 pandas groupby 对象,它返回每种基因类型的计数,大致如下所示(为清楚起见,手动格式化列标题): counts = df.groupby(["ID", "Gene"]).size
我有一个 pandas 数据框,其中包含一列我想要 zscore 归一化的实数值: >> a array([ nan, 0.0767, 0.4383, 0.7866, 0.8091,
为什么 Python 中的 sklearn.preprocessing.StandardScaler 标准化与 Matlab 中的 zscore 不同? Python 中的 sklearn.prepr
我是一名优秀的程序员,十分优秀!