Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么熊猫得到的假人功能不也执行';枢轴';?_Python_Pandas_Machine Learning - Fatal编程技术网

Python 为什么熊猫得到的假人功能不也执行';枢轴';?

Python 为什么熊猫得到的假人功能不也执行';枢轴';?,python,pandas,machine-learning,Python,Pandas,Machine Learning,我有一个熊猫数据框,看起来像这样: Customer Product A Table A Chair A Desk 当我在产品上运行Pandas get_dummies函数时,我得到以下结果: Customer Product_Table Product_Chair Product_Desk A 1 0

我有一个熊猫数据框,看起来像这样:

Customer      Product
   A           Table
   A           Chair
   A           Desk
当我在产品上运行Pandas get_dummies函数时,我得到以下结果:

Customer   Product_Table    Product_Chair    Product_Desk
   A             1                 0                0 
   A             0                 1                0
   A             0                 0                1
就预建模而言,这是否正确?看起来我给它的客户提供了3次不同的信息。我第一次说它只有桌子,没有椅子和书桌,但事实上它们三个都有

这对模型有何影响?我的直觉告诉我,当我做这种类型的转换时,我应该只得到一行?是这样吗?如果是这样,为了消除“重复”行,我做错了什么,或者需要添加什么

下面是我使用的语法:

# Create a list of features to dummy
todummy_list = []
for col_name in sdf.columns:
    if sdf[col_name].dtypes == 'object' and (col_name != 'Customer' ):
        todummy_list.append(col_name)
print(todummy_list)


# Function to dummy all the categorical variables used for modeling
def dummy_df(df, todummy_list):
    for x in todummy_list:
        dummies = pd.get_dummies(sdf[x], prefix=x, dummy_na=False)
        df = df.drop(x, 1)
        df = pd.concat([df, dummies], axis=1)
    return df

sdf = dummy_df(sdf, todummy_list)

print(sdf.head(5))
要消除“重复行”,只需使用:


您创建的列表为空。您需要将其填满,例如:

todummy_list = ['age','sex','working-class']

你想用get_假人实现什么?该功能的目的是将列绑定到列,而不是将列绑定到单个客户。您是否正在尝试执行
groupby('customer').count()
?我正在尝试将分类数据转换为数字以用作功能。当我刚刚尝试这个(我是ML新手)时,我希望模型只使用一行新的二进制列,而不是3行。所以我想我不确定我是否需要分组,或者模型是否适合3行?简单地说,你不应该像现在这样对数据进行热编码。根据我对您的数据的理解(无可否认,这并不多),在进入这一步之前,您需要做更多的特性工程。如果所有类型的家具都绑定到一个记录,那么您的列应该更像
customer | ordered | u table?| ordered | u chair?| ordered | u desk?| | | | | | | | | | | | | | | | | | | | | | | | | |!不知道我为什么这么难,但是如果我不断地向它提供关于同一个客户的矛盾信息,那么no模型将非常有效。我还意识到,我可以聚合虚拟数据帧,为每个客户提供一行数据。一个枢轴将包括一个聚合,不是吗?此外,真正的pivot将聚合值,而getdummies只提供二进制表示。在特定示例中,getdummies+aggregate的输出可能与pivot相同,但它们做的事情不同,不能互换。
todummy_list = ['age','sex','working-class']