问题:已有数据集涉及属性为**[姓名,商品名]**,查看一次记一行记录,也就是同一用户可能有多次查看同一商品的记录,用Python编程,求解答
求:
1、输出:姓名,商品名,查看次数
2、输出:每个用户查看商品的合集,如 [ [用户1查看商品] , [用户2查看的商品] , [用户3查看商品] ,... [用户n-1查看的商品] , [用户n查看的商品] ]
弄个字典去保存查看商品的记录呗
{
"用户1":{
“商品名1”:次数,
“商品名2”:次数
},
"用户2":{
“商品名2”:次数,
“商品名3”:次数
}
}
当用户查看了一个商品,去看这个字典里用户的字典里有没有这个商品的key,没有加添加,并将value设置1,有就value加1
差不多是这个效果吧?
[['姓名A', '商品名A', 2], ['姓名A', '商品名B', 2], ['姓名B', '商品名B', 3], ['姓名B', '商品名A', 2]]
[['姓名A', '商品名A', '商品名B'], ['姓名B', '商品名B', '商品名A']]
data = [
['姓名A','商品名A'],
['姓名A','商品名A'],
['姓名B','商品名B'],
['姓名B','商品名B'],
['姓名B','商品名B'],
['姓名A','商品名B'],
['姓名A','商品名B'],
['姓名B','商品名A'],
['姓名B','商品名A'],
]
s = {}
for i,j in data:
s.setdefault(i,list()).append(j)
for i,j in s.items():
s[i]={k:j.count(k) for k in j}
lst1 = [[i,k,l] for i,j in s.items() for k,l in j.items()]
lst2 = [[i]+list(j.keys()) for i,j in s.items()]
print(lst1)
print(lst2)
补充:属性 [姓名,商品名] 为DataFrame格式类型。
<class 'pandas.core.frame.DataFrame'>
Int64Index: 1675661 entries, 0 to 1675804
Data columns (total 2 columns):
name 1675661 non-null object
product_name 1675661 non-null object
dtypes: object(2)