首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将异构pandas.DataFrame转换为同构

将异构pandas.DataFrame转换为同构
EN

Stack Overflow用户
提问于 2018-09-08 11:49:31
回答 1查看 934关注 0票数 0

我希望分析异构数据的形式:pandas.DataFrame中包含的观察/变量如下:

代码语言:javascript
复制
   Age   Name     Ok  Result
0   25    Bob   True     1.2
1   41   John  False     0.5
2   30  Alice   True     0.3

为此,我通常使用Numpy将其转换为它的pandas.DataFrame.values表示,从而获得:

代码语言:javascript
复制
[[25 'Bob'   True  1.2]
 [41 'John'  False 0.5]
 [30 'Alice' True  0.3]]

如果我正确理解文档,它只包括object类型:

具有混合类型列的DataFrame (例如str/object、int64、float32)会产生一个最宽类型的ndarray,该类型可以容纳这些混合类型(例如,对象)。

问题:如何将异构类型的pandas.DataFrame (或numpy.ndarray)转换为同构数值类型的pandas.DataFrame(或numpy.ndarray),如下所示:

代码语言:javascript
复制
[[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 . True1.0之间有对应的.

我这样问是因为我想对所有数据执行一个sklearn.decomposition.PCA,这会在处理字符串值时产生错误。

下面是一个最小的(非)工作示例:

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

发布于 2018-09-08 12:27:09

首先,如果它是一个样本的原始数据,然后从PCA的概念,是不可能得到良好的结果从PCA。主成分分析的主要用例是高维的多元数据。因此,将Bob、Jhon、Alice的值插入为1、2、3,就会得到任何好的results.As,它们是唯一的,不是来自同一个类的重复观察。但是,如果只是为了学习目的,您可以转换数据如下:

代码语言:javascript
复制
import pandas as pd

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)

# change the true false to int
df['Ok'] = df.Ok.astype(int)

# put all unique name in the list
name_list = list(df.Name.unique())
# create a name map to replace the value
name_map = {name:id for  id, name in enumerate(name_list)}

# apply the map
df['Name'] = df['Name'].replace(name_map)

# put in to the array
data = df.values
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52235024

复制
相关文章

相似问题

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