【发布时间】:2014-09-05 20:56:38
【问题描述】:
我有一个包含单列 ID 的数据框,所有其他列都是我想要计算 z 分数的数值。这是它的一个小节:
ID Age BMI Risk Factor
PT 6 48 19.3 4
PT 8 43 20.9 NaN
PT 2 39 18.1 3
PT 9 41 19.5 NaN
我的某些列包含 NaN 值,我不想将其包含在 z 分数计算中,因此我打算使用针对此问题提供的解决方案:how to zscore normalize pandas column with nans?
df['zscore'] = (df.a - df.a.mean())/df.a.std(ddof=0)
我有兴趣将此解决方案应用于除 ID 列之外的所有列,以生成一个新数据框,我可以使用该数据框将其保存为 Excel 文件
df2.to_excel("Z-Scores.xlsx")
基本上是这样;如何计算每列的 z 分数(忽略 NaN 值)并将所有内容推送到新数据框中?
旁注:pandas 中有一个叫做“索引”的概念让我感到害怕,因为我不太了解它。如果索引是解决此问题的关键部分,请简化您对索引的解释。
【问题讨论】:
-
您对索引有什么不了解?
-
我认为它类似于 SQL 数据库中主键的概念,您可以在其中设置一个标识符,让您可以引用一行中的值;但我什至不确定。我也不明白什么时候要设置索引。
-
索引的概念与 SQL 表没有什么不同,但与聚集索引不同的是,多索引会有不同的级别,例如按性别、年龄、体重进行分组。另一个概念是标签索引,您的索引可以是任何东西,字符串,日期,整数等。您可以使用标签索引或整数值进行索引:pandas.pydata.org/pandas-docs/stable/…
-
有趣;一旦我掌握了它,这听起来可能真的很有用。我仍然对文档中所有不熟悉的行话感到害怕,但现在肯定感觉更容易理解了。再次感谢。
-
(可能为时已晚,无法为您提供帮助。)
df.set_index(['ID'])的一大优势是您现在无需单独处理该列的所有麻烦。
标签: python pandas indexing statistics