我如何才能使目标来自独特的价值?

时间:2019-08-12 17:55:45

标签: python pandas

所以我有多个列和行的大型csv文件。在我的PCA图中,我选择“城市”列作为我的目标值。如何编写一个程序,可以从列中选择唯一的城市作为目标。

import pandas as pd

X = pd.read_csv('ANNCitydata.csv')
# load dataset into Pandas DataFrame
X1 = X.drop(['ID','City'], axis=1)
y = pd.read_csv('ANNCitydata.csv', usecols=["City"])

from sklearn.decomposition import PCA
pca = PCA(n_components=2)
principalComponents = pca.fit_transform(X1)
principalDf = pd.DataFrame(data = principalComponents
             , columns = ['principal component 1', 'principal component 2'])

finalDf = pd.concat([principalDf, y[['City']]], axis = 1)

import matplotlib.pyplot as plt
fig = plt.figure(figsize = (10,10))
ax = fig.add_subplot(1,1,1) 
ax.set_xlabel('Principal Component 1', fontsize = 15)
ax.set_ylabel('Principal Component 2', fontsize = 15)
ax.set_title('2 component PCA', fontsize = 20)
targets = ['Houston', 'St. Louis', 'Waterloo', 'Columbia', 'Rosario']
colors = ['r', 'g', 'b', 'c', 'm']
for target, color in zip(targets,colors):
    indicesToKeep = finalDf['City'] == target
    ax.scatter(finalDf.loc[indicesToKeep, 'principal component 1']
               , finalDf.loc[indicesToKeep, 'principal component 2']
               , c = color
               , s = 100)
ax.legend(targets)
ax.grid()

如您所见,当前我正在选择目标城市。但我希望程序自己执行此操作。

2 个答案:

答案 0 :(得分:0)

这将创建一系列唯一值。

targets = y.drop_duplicates()

答案 1 :(得分:0)

始终尝试提供示例数据。

import pandas as pd
c1 = ['Houston','Houston','St. Louis','Waterloo','Columbia','Rosario','St. Louis','St. Louis','Waterloo','Houston','Rosario']
c2 = [34,32,34,32,34,54,12,893,34,85,12]
df =  pd.DataFrame(zip(c1,c2),columns=['c1','c2'])

#as you asked choose the unique cities from the column as a target.
targets = df.c1.unique()  #gives you a list that you made
相关问题