Python 我如何在熊猫群体中找到共同的价值观?
我的“dataframe”包含两列,第一列是SKU编号,第二列是每个SKU编号的零件号。某些SKU共享相同的零件号,如何找到这些共享零件号的SKUPython 我如何在熊猫群体中找到共同的价值观?,python,pandas,statistics,Python,Pandas,Statistics,我的“dataframe”包含两列,第一列是SKU编号,第二列是每个SKU编号的零件号。某些SKU共享相同的零件号,如何找到这些共享零件号的SKU import pandas as pd table_teste = pd.read_csv("table.csv") print(table_teste)[see in the picture attached here the screenshot of the input vales][1] Output: SKU
import pandas as pd
table_teste = pd.read_csv("table.csv")
print(table_teste)[see in the picture attached here the screenshot of the input vales][1]
Output:
SKU Part Number
0 4679343 126420
1 4679343 489136
2 4679343 490202
3 4679343 490282
4 4679343 491971
5 4679343 492963
6 4679343 626681
7 4679343 627996
8 4679343 628361
9 4679343 628379
10 4679343 628379
11 4679343 628408
12 4679343 628531
13 4679343 1105601
14 4679343 1140073
15 4679343 2169104
16 4679343 2169104
17 4679343 2169142
18 4679343 2185762
19 4679343 2194712
20 4679343 2195058
21 4679343 2256086
22 4679343 2315522
23 4679343 2315522
24 4679343 2319835
25 4679343 8314101
26 4679343 8314102
27 4679343 8314229
28 4679343 8314231
29 4679343 8314232
... ... ...
73953 WRO80CKDWA W11234774
73954 WRO80CKDWA W11239503
73955 WRO80CKDWA W11240332
73956 WRO80CKDWA W11240358
73957 WRO80CKDWA W11240361
73958 WRO80CKDWA W11240362
73959 WRO80CKDWA W11240363
73960 WRO80CKDWA W11282632
73961 WRO80CKDWA W11282632
73962 WRO80CKDWA W11293453
73963 WRO80CKDWA W11294381
73964 WRO80CKDWA W11294503
73965 WRO80CKDWA W11298984
73966 WRO80CKDWA W11308860
73967 WRO80CKDWA W11308879
73968 WRO80CKDWA W11314128
73969 WRO80CKDWA W11317776
73970 WRO80CKDWA W11323281
73971 WRO80CKDWA W11323282
73972 WRO80CKDWA W11323283
73973 WRO80CKDWA W11323284
73974 WRO80CKDWA W11366199
73975 WRO80CKDWA W11366205
73976 WRO80CKDWA W11366209
73977 WRO80CKDWA W11366214
73978 WRO80CKDWA W11366215
73979 WRO80CKDWA W11370412
73980 WRO80CKDWA W11370419
73981 WRO80CKDWA W11370494
73982 WRO80CKDWA ZCOMP_FREIGHT
现在,我需要生成一个矩阵,该矩阵在行中包含SKU编号,在列中包含相同的SKU编号,并且在矩阵中包含SKU编号1和SKU编号2组合共享的相同零件编号的计数。2号SKU和3号SKU的情况也一样,依此类推。总共有182个SKU编号
谢谢您可以在零件号上使用groupby(),它将相应地对数据帧进行分组
如果您对SKU编号执行groupby,那么它将显示一个数据框,其中SKU编号共享一个公共零件编号
反之亦然查找超过1个SKU的所有零件号:
partNumber_w_dupSKU = data %>%
group_by(partNumber) %>%
summarize(n_SKU = n_distinct(SKU)) %>%
ungroup() %>%
filter(n_SKU > 1)
查找与这些零件号关联的所有SKU:
data %>%
arrange(SKU) %>%
filter(partNumber %in% partNumber_w_dupSKU$partNumber)
您可以尝试使用groupby,将组转换为列表并重置索引
#sku编号作为键和值作为零件号的字典
#我想这就是df的样子
d={1:2,2:3,3:2,4:2,5:3,6:2,7:3}
#用dict制作一个数据帧,使其与que中的df相似
df=pd.DataFrame(d.items(),列=['SKU编号','零件编号')
df
输出:
SKU编号零件号
0 1 2
1 2 3
2 3 2
3 4 2
4 5 3
5 6 2
6 7 3
#第一组按零件号
g=df.groupby(‘零件号’)
#将组转换为两个SKU组合的列表,然后重置索引以创建新数据
x=g['SKU编号]。应用(itertools.compositions(x,2))。重置索引(name='SKU编号〕)
x
输出:
零件号SKU编号
0 2 [(1, 3), (1, 4), (1, 6), (3, 4), (3, 6), (4, 6)]
1 3 [(2, 5), (2, 7), (5, 7)]
^现在,每个零件号都有两个成员SKU组合。让我们在SKU编号列中分解列表
x=x.explode('SKU编号')
x
输出:
零件号SKU编号
0 2 (1, 3)
0 2 (1, 4)
0 2 (1, 6)
0 2 (3, 4)
0 2 (3, 6)
0 2 (4, 6)
1 3 (2, 5)
1 3 (2, 7)
1 3 (5, 7)
现在我们需要对SKU编号对进行分组,并计算与之相关的零件编号
x=x.groupby('SKU编号').count().reset_index()
x
输出:
SKU编号零件号
0 (1, 3) 1
1 (1, 4) 1
2 (1, 6) 1
3 (2, 5) 1
4 (2, 7) 1
5 (3, 4) 1
6 (3, 6) 1
7 (4, 6) 1
8 (5, 7) 1
^现在我们有了每个SKU对的零件号计数。让我们构造这个矩阵
将numpy导入为np
索引=x[“SKU编号”]。值
零件号计数=x[“零件号”]。数值
#在我的小案例中,我们有7个独特的SKU
唯一库存单位=7
#创建零矩阵,以便填充零件数量计数
#对于每个SKU对
a=np.零((唯一库存单位,唯一库存单位))
A.
输出:
数组([[0,0,0,0,0,0,0,0,0.]),
[0., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0.]])
#将[(x1,y1),(x2,y2)…]拆分为行->[x1,x2…]
#列->[y1,y2….]
行,列=映射(np.array,zip(*索引))
#行-1、列-1用于使索引基于0
a[行-1,列-1]=零件编号
A.
输出:
数组([[0,0,1,1,0,1,0.],
[0., 0., 0., 0., 1., 0., 1.],
[0., 0., 0., 1., 0., 1., 0.],
[0., 0., 0., 0., 0., 1., 0.],
[0., 0., 0., 0., 0., 0., 1.],
[0., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0.]])
对于最后一部分,我将使用我的索引(SKU对),将它们转换为基于0的索引,并将其相应的part_number_计数更新为零矩阵,以获得结果矩阵
结果矩阵的形状为(唯一SKU编号,唯一SKU编号),值i,j将对应零件编号计数请共享样本数据和代码SKU零件编号1 a 1 B 2 a 2 C 3 a 3 D这只是一个示例。现在,我需要找到哪些SKU共享相同的零件号,其中一些可能共享70%的零件号,其他的更少或更多,对于我来说,我需要共享至少50%的零件号欢迎使用stack overflow。请将您的问题包括完整的示例输入数据、基于该输入的预期输出,以及基于您自己的研究到目前为止所尝试的代码,以便我们了解如何帮助您。请注意:在评论中发布未格式化的数据无助于我们复制您的问题这是在熊猫上吗?因为我找不到你option@PriscillaSopok这是R。你以前有R标签,所以…对不起,我错了。你知道这些命令对Python的等效性吗?谢谢你,Gowtham,我需要的是一个矩阵,显示每个SKU组合有多少零件号是相同的?如果你能添加一个输入和预期输出的小示例,我可以更好地帮助你(:。因为您在问题中提出了问题,您想知道共享零件号的SKU,我已经编写了上述代码。很抱歉,这是我第一次使用StackOverflow。没问题:)您可以编辑问题并添加示例输入和示例输出。请参见上文,我添加了一些额外信息