首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用列表理解实现数据标准化

使用列表理解实现数据标准化
EN

Stack Overflow用户
提问于 2021-12-20 13:55:50
回答 2查看 53关注 0票数 1

我试图标准化对我所拥有的dataframe中的一组列的观察,而不使用任何在构建的函数中。

我有一个要标准化的列的索引列表,它保存在一个称为连续的对象中,我正在尝试使用列表理解来应用标准化。

我很难想出一种方法,允许我迭代我的dataframe中的行。

到目前为止,我得到的是:

代码语言:javascript
复制
continuous = [1, 2, 3, 5, 6, 7, 8, 9, 10]

data_z = [(data[col][i] for i in data.index)-data.mean(col)/data.std(col) for col in continuous]

这是一个类型错误-它不会让我迭代生成器对象,所以我想知道是否有人知道正确的方法来迭代我想要标准化的行和列?

提前感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-12-20 14:10:28

DataFrame.subDataFrame.div一起使用df1中的过滤列

代码语言:javascript
复制
np.random.seed(2021)    
data = pd.DataFrame(np.random.randint(10, size=(13, 13)))

continuous = [1, 2, 3, 5, 6, 7, 8, 9, 10]

df1 = data[continuous]
data_z = df1.sub(df1.mean()).div(df1.std())

代码语言:javascript
复制
print (data_z)
          1         2         3         5         6         7         8   \
0   0.361158  1.309808 -1.365801  0.092504  0.739880  0.553102  0.549700   
1  -1.083473 -1.038813  0.309238 -1.410680 -0.977698 -0.944883 -1.314501   
2  -1.083473  0.429075  0.979254  0.393140  1.083396  0.253505  0.549700   
3  -0.722315  1.016230  0.309238 -1.110043 -1.664730  1.451893 -0.693101   
4   1.805788 -0.158080  1.649269  1.295050  0.396364  0.852699 -0.071700   
5  -0.722315 -1.332391 -0.025770 -0.508770 -1.664730  1.451893 -0.071700   
6  -1.083473  0.135497  0.979254  1.295050 -0.290667 -1.244480 -1.314501   
7   1.083473 -1.332391 -0.360778  0.393140  1.083396 -0.345689  1.481801   
8   1.444630  1.309808 -1.365801 -1.410680  0.396364 -1.244480 -1.003801   
9   0.000000 -1.038813  0.979254 -0.208133  1.083396  0.553102  0.549700   
10 -0.361158 -0.745236 -1.365801  0.693777 -0.634183  0.553102 -1.003801   
11 -0.361158  0.722653 -0.695785  1.295050 -0.290667 -0.645286  0.860401   
12  0.722315  0.722653 -0.025770 -0.809406  0.739880 -1.244480  1.481801   

          9         10  
0   0.369274  0.301124  
1  -1.107823  0.301124  
2   1.477098 -1.264720  
3   0.738549 -0.090337  
4  -0.738549 -1.264720  
5  -1.107823 -0.873259  
6  -0.369274  1.475507  
7  -1.477098 -0.873259  
8  -0.738549  0.301124  
9   0.738549 -0.481798  
10  0.738549 -0.481798  
11  1.477098  1.475507  
12  0.000000  1.475507  
票数 1
EN

Stack Overflow用户

发布于 2021-12-20 14:03:50

你就不能很容易

代码语言:javascript
复制
mean = data[continuous].mean(axis='rows')
std = data[continuous].std(axis='rows')

data_z = (data[continuous] - mean ) / std
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70422916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档