【发布时间】:2019-02-13 13:03:50
【问题描述】:
我想分析 observations/variables 形式的异构数据,这些数据包含在 pandas.DataFrame 中,如下所示:
Age Name Ok Result
0 25 Bob True 1.2
1 41 John False 0.5
2 30 Alice True 0.3
为此,我通常使用pandas.DataFrame.values 将其转换为Numpy 表示,从而获得:
[[25 'Bob' True 1.2]
[41 'John' False 0.5]
[30 'Alice' True 0.3]]
如果我正确理解文档,则仅包含 object 类型:
具有混合类型列(例如,str/object、int64、float32)的 DataFrame 会生成容纳这些混合类型(例如,object)的最广泛类型的 ndarray。
问题:如何将异构类型的pandas.DataFrame(或numpy.ndarray)转换为具有同类数字类型的类型,如下所示:
[[25.0 1.0 1.0 1.2]
[41.0 2.0 0.0 0.5]
[30.0 3.0 1.0 0.3]]
'Bob' 和 1.0、'John' 和 2.0 之间存在对应关系 ...True 和 1.0 ...
我问这个是因为我想对所有数据执行sklearn.decomposition.PCA,这在处理字符串值时会产生错误。
这是一个最小的(不是)工作示例:
import numpy as np
import pandas as pd
from sklearn.decomposition import PCA
d = {'Name': ['Bob', 'John', 'Alice'], 'Age': [25, 41, 30], 'Result' : [1.2, 0.5, 0.3], 'Ok' : [True, False, True]}
df = pd.DataFrame(data=d)
df.info()
print(df)
data = df.values
print(data)
pca = PCA(n_components=all)
pca.fit(data)
【问题讨论】:
标签: python pandas numpy dataframe scikit-learn