尝试 pd.concat 时出现意外的 NaN 值。如何处理? PCA 与 T-SNE
I am getting unexpected NaN value when trying pd.concat. How to deal with this? PCA vs T-SNE
我正在尝试使用 PCA 减少数据的维度,但是,当我使用 concat 时,它会自动生成一个 NaN 值。此外,客户年龄在 int 时也变成了 float。有人可以告诉我如何解决这个问题吗?
如果您告诉我是否应该使用 PCA 或 tSNE 来可视化具有 14 个变量的数据(其中有一列仅包含 12000 个中的 4 个不同变量(1、2、3、4)),我们将不胜感激值,有两列带有布尔值)。
x and y
# Separating out the Demographic Data.
x = Demo_Data.values
# Separating out the Target as regions.
y = df2.loc[:,['Customer_Age']].values
# Standardizing the features
scaler = StandardScaler()
x = scaler.fit_transform(x)
from sklearn.decomposition import PCA
pca = PCA(n_components=2)
Demography_Data = pca.fit_transform(x)
principalDf = pd.DataFrame(data = Demography_Data
, columns = ['Demography_Data 1', 'Demography_Data 2'])
finalDf = pd.concat([principalDf, df2[['Customer_Age']]], axis = 1)
您的 DataFrame
中的 index
不匹配:
>>> import pandas as pd
>>> df1 = pd.DataFrame([11,22,33])
>>> df2 = pd.DataFrame([111,222,333], index=[1,2,3])
>>> pd.concat((df1,df2),axis=1)
0 0
0 11.0 NaN
1 22.0 111.0
2 33.0 222.0
3 NaN 333.0
但是:
>>> df2.index=df1.index
>>> pd.concat((df1,df2),axis=1)
0 0
0 11 111
1 22 222
2 33 333
我正在尝试使用 PCA 减少数据的维度,但是,当我使用 concat 时,它会自动生成一个 NaN 值。此外,客户年龄在 int 时也变成了 float。有人可以告诉我如何解决这个问题吗? 如果您告诉我是否应该使用 PCA 或 tSNE 来可视化具有 14 个变量的数据(其中有一列仅包含 12000 个中的 4 个不同变量(1、2、3、4)),我们将不胜感激值,有两列带有布尔值)。
x and y
# Separating out the Demographic Data.
x = Demo_Data.values
# Separating out the Target as regions.
y = df2.loc[:,['Customer_Age']].values
# Standardizing the features
scaler = StandardScaler()
x = scaler.fit_transform(x)
from sklearn.decomposition import PCA
pca = PCA(n_components=2)
Demography_Data = pca.fit_transform(x)
principalDf = pd.DataFrame(data = Demography_Data
, columns = ['Demography_Data 1', 'Demography_Data 2'])
finalDf = pd.concat([principalDf, df2[['Customer_Age']]], axis = 1)
您的 DataFrame
中的 index
不匹配:
>>> import pandas as pd
>>> df1 = pd.DataFrame([11,22,33])
>>> df2 = pd.DataFrame([111,222,333], index=[1,2,3])
>>> pd.concat((df1,df2),axis=1)
0 0
0 11.0 NaN
1 22.0 111.0
2 33.0 222.0
3 NaN 333.0
但是:
>>> df2.index=df1.index
>>> pd.concat((df1,df2),axis=1)
0 0
0 11 111
1 22 222
2 33 333