我正在尝试解决有关餐厅顾客偏好的问题。我有两种不同的CSV,一种具有客户信息:
因此,我想尝试根据客户的喜好进行有监督的培训,以确定餐厅的等级。为了做到这一点,我认为我必须为每个评级附加客户信息(因此我将需要分析变量)。
我正在尝试使用python和pandas。
我已经尝试过了:
import pandas as pd
from pandas.plotting import scatter_matrix
import matplotlib.pyplot as plt
from sklearn import model_selection
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix
from sklearn.metrics import accuracy_score
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.naive_bayes import GaussianNB
from sklearn.svm import SVC
from pandas.plotting import scatter_matrix
import numpy as np
df1 = pd.read_csv('/2_user_profile.csv', index_col = [0])
df2 = pd.read_csv('/3_Ratings.csv')
#Create empty dataframe with named columns
df = pd.DataFrame(columns=(np.concatenate((df2.columns.values, df1.columns.values), axis=0)))
#Joining the tables
for index, row in df2.iterrows():
userID= row['userID']
frame=[row, df1.loc[userID]]
print(frame)
df = pd.concat([df, pd.DataFrame(frame)], axis=0)
print(df)
打印(框架)会给我这个结果:
这很有意义,但是当我打印df时,它给了我这个:
这意味着我创建的每个帧都会在数据帧上进行两次记录,其中一个包含来自df1的信息,并且与df2上的数据相对应的所有值均为空,而另一个寄存器则存储df2上的所有值以及与df1相对应的空值
这是我第一次学习python +机器学习,因此,如果您对我的方法也有意见,请告诉我。
答案 0 :(得分:1)
看起来您想同时加入两个数据帧中的userID
,对吗?
您可以使用merge进行此操作。这是一个简短的示例:
import pandas as pd
data_1 = pd.DataFrame({'id': ['A', 'B'] * 5, 'value_1': [0, 1] * 5})
data_2 = pd.DataFrame({'id': ['A', 'B'], 'value_2': [3, 4]})
data_1.merge(data_2, how = 'inner', left_on = 'id', right_on = 'id')
礼物: