为了账号安全,请及时绑定邮箱和手机立即绑定

数据帧转换后保留标题

数据帧转换后保留标题

猛跑小猪 2021-11-09 16:15:04
我正在使用带有一些微阵列的 sklearn 和 Pandas,并且我有一个 Pandas DataFrame,其中每一列都已命名。所以我正在对数据框做一些转换,本质上是特征选择。data = pd.read_csv("data.txt")print(data)导致    1007_s_at  1053_at       ...         AFFX-TrpnX-5_at  AFFX-TrpnX-M_at0     3.96932  2.52634       ...                 2.09691          1.991231     4.10452  2.43457       ...                 2.28103          2.064462     3.95308  2.36736       ...                 2.11059          1.806183     3.99712  2.55388       ...                 2.13354          1.919084     3.95279  2.21484       ...                 2.22531          2.03342..        ...      ...       ...                     ...              ...96    3.79560  2.74194       ...                 2.01703          2.0374397    3.79817  2.47422       ...                 2.12385          2.0718898    3.84186  2.59329       ...                 2.16435          1.69897[99 rows x 22283 columns]正如我们所见,每一列都有一个名称。然后我用 VarianceThreshold 方法删除了一些列data = VarianceThreshold(0.04).fit_transform(data)print(data)print("After Variance Threshold data shape: ", data.shape)所以新数据看起来像[[4.1835  2.20952 2.41664 ... 2.21748 2.69197 2.41996] [3.82478 2.2878  1.69897 ... 1.87506 2.09691 2.35411] [4.1503  2.32015 2.35793 ... 2.01284 2.2833  2.15534] ... [3.85576 3.26694 2.71684 ... 2.68305 3.18298 2.83378] [3.25912 2.04922 2.58092 ... 2.0607  2.66932 2.42325] [3.34044 2.24551 2.60097 ... 2.03743 2.31806 2.35984]]After Variance Threshold data shape:  (99, 5002)现在,数据是一个 numpy 数组,我丢失了原始数据帧中保留的每一列的标题。有没有办法让它们与熊猫/numpy?
查看完整描述

1 回答

?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

您可以使用get_support获取掩码而不是结果:


In [11]: df = pd.DataFrame([[0, 2, 0, 3], [0, 1, 4, 3], [0, 1, 1, 3]], columns=list("ABCD"))


In [12]: df

Out[12]:

   A  B  C  D

0  0  2  0  3

1  0  1  4  3

2  0  1  1  3


In [13]: VarianceThreshold().fit(df).get_support()

Out[13]: array([False,  True,  True, False])


In [14]: df.loc[:, VarianceThreshold().fit(df).get_support()]

Out[14]:

   B  C

0  2  0

1  1  4

2  1  1

在你的例子中:


df.loc[:, VarianceThreshold(0.04).fit(data).get_support()]


查看完整回答
反对 回复 2021-11-09
  • 1 回答
  • 0 关注
  • 167 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号