Python 提取唯一性和循环
我有一个如下所示的数据帧:Python 提取唯一性和循环,python,pandas,group-by,unique,Python,Pandas,Group By,Unique,我有一个如下所示的数据帧: A B C 0 1 2 PRODUCT_1 1 3 2 PRODUCT_2 2 3 2 PRODUCT_4 3 3 2 PRODUCT_5 4 5 2 PRODUCT_1 5 3 2 PRODUCT_3 我想,对于每个独特的产品,使用a和B列执行模型预测,并存储相应的精度 unique = ["PRODUCT_1", ...] # unique products accuracy for i in uni
A B C
0 1 2 PRODUCT_1
1 3 2 PRODUCT_2
2 3 2 PRODUCT_4
3 3 2 PRODUCT_5
4 5 2 PRODUCT_1
5 3 2 PRODUCT_3
我想,对于每个独特的产品,使用a和B列执行模型预测,并存储相应的精度
unique = ["PRODUCT_1", ...] # unique products
accuracy
for i in unique:
first_subset = ??? # all rows for product `i` - how do I implement this correctly?
X = first_subset[:, 0]
Y = first_subset[:, 1]
prediction_product_1 = model.predict(X)
accuracy_product_1 = np.sum( (prediction_product_1)/np.sum(Y) )
accuracy.append([accuracy_product_1, PRODUCT_1])
如何在Python中实现第二点 以-
df = pd.DataFrame(...) # your data
df
A B C
0 1 2 PRODUCT_1
1 3 2 PRODUCT_2
2 3 2 PRODUCT_4
3 3 2 PRODUCT_5
4 5 2 PRODUCT_1
5 3 2 PRODUCT_3
首先使用
uniques = df.C.unique()
uniques
array(['PRODUCT_1', 'PRODUCT_2', 'PRODUCT_4', 'PRODUCT_5', 'PRODUCT_3'], dtype=object)
要从特定产品中获取所有行,我将使用groupby
(因此,这里实际上不需要uniques
)
基本上,对于每个组,调用
model.predict
并将键值对附加到acc
dict.您正在处理的代码在哪里?请仔细查看df.groupby
。这会为每个唯一的键生成组或更小的数据帧
。我无法正确初始化循环并为最后一点创建帧,因为我不是高级编码器@cᴏʟᴅsᴘᴇᴇᴅ好的,你不能至少提供一个样本数据和输出吗?你在和熊猫一起工作,是吗?你如何期望在不提供任何信息的情况下得到答案?关于一个明确的问题,还有一些提示吗?如何用numpy来解决这个问题呢?@AlessandroCeccarelli如果你想要一个numpy的答案,不要给这个问题贴上标签。此外,numpy解决方案可能没有那么高效或容易实现。好吧,但每当我尝试运行代码时,它都会在最后一行acc[I]=…“列表分配索引超出范围”报告一个错误;可能是因为我还没有调用“append”命令吗?@AlessandroCeccarelli No你看到循环的顶部了吗?我将acc
定义为{}
,而不是[]
。
acc = {}
for i, g in df.groupby('C'):
X, y = g['A'], g['B']
p = model.predict(X, y)
acc[i] = (p == y).sum() / len(y)