pab*_*ade 7 normalization python-3.x pandas spyder
我正在使用 python3 (spyder),并且我有一个对象类型为“pandas.core.frame.DataFrame”的表。我想对该表中的值进行 z 分数标准化(每个值减去其行的平均值并除以其行的 sd),因此每行的平均值 = 0 和 sd = 1。我尝试了两种方法。
\n\n第一种方法
\n\nfrom scipy.stats import zscore\nzetascore_table=zscore(table,axis=1)\n
Run Code Online (Sandbox Code Playgroud)\n\n第二种方法
\n\nrows=table.index.values\ncolumns=table.columns\nimport numpy as np\nfor i in range(len(rows)):\n for j in range(len(columns)):\n table.loc[rows[i],columns[j]]=(table.loc[rows[i],columns[j]] - np.mean(table.loc[rows[i],]))/np.std(table.loc[rows[i],])\ntable\n
Run Code Online (Sandbox Code Playgroud)\n\n两种方法似乎都有效,但是当我检查每行的平均值和标准差时,它不是想象中的 0 和 1,而是其他浮点值。我不知道\xc2\xb4t 可能是哪个问题。
\n\n在此先感谢您的帮助!
\n小智 12
下面的代码计算 pandas df 列中每个值的 z 分数。然后,它将 z 分数保存在新列中(此处称为“num_1_zscore”)。很容易做到。
from scipy.stats import zscore
import pandas as pd
# Create a sample df
df = pd.DataFrame({'num_1': [1,2,3,4,5,6,7,8,9,3,4,6,5,7,3,2,9]})
# Calculate the zscores and drop zscores into new column
df['num_1_zscore'] = zscore(df['num_1'])
display(df)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
28506 次 |
最近记录: |