gpt4 book ai didi

python - 在 Python 中查找未知值

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

我有一个包含 500 个餐厅订单及其总数的数据集。我想识别数据集中的异常值。然后确定它们是有效数据点还是错误值。然后删除无效的。

问题是我只有订单的总价、商品名称和订购数量。我想知道是否有可能获得每件商品的价格。

字典中的每一项都代表一个顺序。 Key是总价,value是一个元组列表,每个元组代表商品名称和订购数量。

我的字典格式的数据集示例(我在数据框中也有两列):

{1215.5: [('Shrimp', 10), ('Fish&Chips', 6), ('Salmon', 8), ('Pasta', 5)],
1230.0: [('Shrimp', 10), ('Salmon', 10), ('Fish&Chips', 8)],
1234.0: [('Salmon', 9), ('Fish&Chips', 3), ('Pasta', 8), ('Shrimp', 10)],
1292.5: [('Pasta', 7), ('Salmon', 9), ('Fish&Chips', 7), ('Shrimp', 9)],
1301.5: [('Pasta', 5), ('Shrimp', 9), ('Salmon', 8), ('Fish&Chips', 10)],
1314.5: [('Shrimp', 10), ('Pasta', 5), ('Fish&Chips', 10), ('Salmon', 7)],
1343.5: [('Shrimp', 8), ('Fish&Chips', 10), ('Salmon', 9), ('Pasta', 7)]}

我想要的输出是获取每件商品的价格。通过这样做,我希望能够确定总数是有效数据点还是异常值。

我尝试使用第三行并将值存储在列表中A

[('Salmon', 9), ('Fish&Chips', 3), ('Pasta', 8), ('Shrimp', 10)]

以及这些元素的总价 B

[1234.0]

然后我尝试将我的第一个列表转换为数组

    A=np.array(lst)

输出

array([['Salmon', '9'],
['Fish&Chips', '3'],
['Pasta', '8'],
['Shrimp', '10']], dtype='<U10')

形状

A.shape
(4,2)
B.shape
(1,)

然后应用函数

X, _, _, _ = np.linalg.lstsq(A, B)

但输出返回错误信息

LinAlgError: Incompatible dimensions

我知道 m 必须相等才能使函数正常工作。但我不确定如何更改 A 的形状。

欢迎任何意见。谢谢,

最佳答案

一个可能的解决方案是使用构造一个[可能超定]的线性方程组并求解它。例如,第一个列表变为 1215.5=10*Shrimp+6*Fish+8*Salmon+5*Pasta

假设你的字典名称是d,系统的矩阵A由下式给出:

A = pd.concat([pd.DataFrame(d[x]).set_index(0) for x in d], axis=1)\
.fillna(0).T

(而且我强烈建议你不要使用dict作为存储容器。)向量B是键的列表:

B = list(d.keys())

答案是:

X, _, _, _ = numpy.linalg.lstsq(A, B)
#array([35. , 27.5, 41. , 54. ])

您只需要返回元组的第一部分。

关于python - 在 Python 中查找未知值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58152952/

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