我正在使用一些微阵列处理sklearn和pandas,并且每个列都有一个pandas DataFrame。因此,我正在对数据框进行一些转换,本质上是功能选择。
data = pd.read_csv("data.txt")
print(data)
导致
1007_s_at 1053_at ... AFFX-TrpnX-5_at AFFX-TrpnX-M_at
0 3.96932 2.52634 ... 2.09691 1.99123
1 4.10452 2.43457 ... 2.28103 2.06446
2 3.95308 2.36736 ... 2.11059 1.80618
3 3.99712 2.55388 ... 2.13354 1.91908
4 3.95279 2.21484 ... 2.22531 2.03342
.. ... ... ... ... ...
96 3.79560 2.74194 ... 2.01703 2.03743
97 3.79817 2.47422 ... 2.12385 2.07188
98 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数组,我丢失了原始数据帧中剩余的每一列的标题。
有什么办法让它们与pandas / numpy保持在一起吗?
参考方案
您可以使用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()]
Python sqlite3数据库已锁定 - python我在Windows上使用Python 3和sqlite3。我正在开发一个使用数据库存储联系人的小型应用程序。我注意到,如果应用程序被强制关闭(通过错误或通过任务管理器结束),则会收到sqlite3错误(sqlite3.OperationalError:数据库已锁定)。我想这是因为在应用程序关闭之前,我没有正确关闭数据库连接。我已经试过了: connectio…
Python-Excel导出 - python我有以下代码:import pandas as pd import requests from bs4 import BeautifulSoup res = requests.get("https://www.bankier.pl/gielda/notowania/akcje") soup = BeautifulSoup(res.cont…
Python:如何根据另一列元素明智地查找一列中的空单元格计数? - pythondf = pd.DataFrame({'user': ['Bob', 'Jane', 'Alice','Jane', 'Alice','Bob', 'Alice'], 'income…
numpy loadtxt单行/行作为列表 - python我只有一个数据文件,例如: 1.2 2.1 3.2 我使用numpy版本1.3.0 loadtxt加载它 a,b,c = loadtxt("data.dat", usecols(0,1,2), unpack=True) 输出是浮点数而不是数组 a = 1.2 我希望它将是: a = array([1.2]) 如果我读取了多行文件,则该文件…
Python:传递记录器是个好主意吗? - python我的Web服务器的API日志如下:started started succeeded failed 那是同时收到的两个请求。很难说哪一个成功或失败。为了彼此分离请求,我为每个请求创建了一个随机数,并将其用作记录器的名称logger = logging.getLogger(random_number) 日志变成[111] started [222] start…