gpt4 book ai didi

python - 使用Python制作矩阵(特征矩阵?)

转载 作者:太空宇宙 更新时间:2023-11-03 13:57:51 24 4
gpt4 key购买 nike

假设我有一个 Excel 文件,其中包含以下列:

Name      Day of Shopping     Food bought      
Bob March 14, 2015 Apple
Bob March 14, 2015 Pear
Joe April 15, 2013 Apple
Bob June 28, 2017 Pomegranite
Jake January 4, 2008 Orange
Jake April 9, 2010 Peach
Joe December 6, 2016 Banana

另一个 Excel 文件内容如下:

Name      Day of Shopping     Drink bought       
Bob March 14, 2015 Water
Joe April 15, 2013 Juice
Bob June 28, 2017 Soda
Jake January 4, 2008 Water
Jake April 9, 2010 Tea
Joe December 6, 2016 Soda

我想做的是将其制作成一个新的 Excel 工作表或只是一个矩阵,其内容如下:

Name   Apple  Pear  Pomegranite Orange Peach Banana Water Juice Soda Tea
Bob 1 1 0 0 0 0 1 0 0 0
Joe 1 0 0 0 0 0 0 1 0 0
Jake 0 0 0 1 0 0 1 0 0 0

所以最后我得到了一个包含名称的矩阵,下面的列列出了食物选项以及名称分配的值(1 或 0),用于确定该元素是否是为此购买的天。请注意,在我上面描述的矩阵中,即使每个人都有不同的初始日期,也仅找到第一个日期的值。更多列将描述其他日期。

请帮忙。

最佳答案

您可以使用pd.crosstab去做这个。我假设您将数据加载到 pandas 中并将数据框命名为 df1df2。首先将 Food buyDrink buy 两列重命名为相似的名称(我选择 Item),以便轻松连接值

df1.rename(columns={'Food bought':'Item'},inplace=True)
df2.rename(columns={'Drink bought':'Item'},inplace=True)
df = pd.concat([df1,df2])

然后计算交叉表

pd.crosstab(df.Name,df.Item)

将输出

Item  Apple  Banana  Juice  Orange  Peach  Pear  Pomegranite  Soda  Tea  Water
Name
Bob 1 0 0 0 0 1 1 1 0 1
Jake 0 0 0 1 1 0 0 0 1 1
Joe 1 1 1 0 0 0 0 1 0 0
<小时/>

更进一步,您可以计算按日期分组的交叉表。要在 pandas 中执行此操作,我们需要将 Day of Shopping 转换为日期时间对象

df['Day of Shopping'] = pd.to_datetime(df['Day of Shopping'])

现在只需将此信息添加到 pd.crosstab

pd.crosstab([df['Day of Shopping'],df.Name],df.Item)

Item Apple Banana Juice Orange Peach Pear Pomegranite \
Day of Shopping Name
2008-01-04 Jake 0 0 0 1 0 0 0
2010-04-09 Jake 0 0 0 0 1 0 0
2013-04-15 Joe 1 0 1 0 0 0 0
2015-03-14 Bob 1 0 0 0 0 1 0
2016-12-06 Joe 0 1 0 0 0 0 0
2017-06-28 Bob 0 0 0 0 0 0 1
Item Soda Tea Water
Day of Shopping Name
2008-01-04 Jake 0 0 1
2010-04-09 Jake 0 1 0
2013-04-15 Joe 0 0 0
2015-03-14 Bob 0 0 1
2016-12-06 Joe 1 0 0
2017-06-28 Bob 1 0 0

关于python - 使用Python制作矩阵(特征矩阵?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49470965/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com