Python 我如何在熊猫群体中找到共同的价值观?

Python 我如何在熊猫群体中找到共同的价值观?,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

我的“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    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。没问题:)您可以编辑问题并添加示例输入和示例输出。请参见上文,我添加了一些额外信息