Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 列中所有可能的绝对成对偏差之和_Python_Dataset_Analysis - Fatal编程技术网

Python 列中所有可能的绝对成对偏差之和

Python 列中所有可能的绝对成对偏差之和,python,dataset,analysis,Python,Dataset,Analysis,所以我有一个数据集,有两列,一列是带有产品名称的字符串变量,另一列是区间值 Affiliate_ID Average "A" Level store X 7.0 store Y 4.3 store Z 5.6 我很好奇,在python中是否可以计算和求出所有可能的两两差异,而不重复 Sum = |7.0 - 4.3| + |4.3 - 5.6| + |

所以我有一个数据集,有两列,一列是带有产品名称的字符串变量,另一列是区间值

Affiliate_ID          Average "A" Level
store X                      7.0
store Y                      4.3
store Z                      5.6
我很好奇,在python中是否可以计算和求出所有可能的两两差异,而不重复

Sum = |7.0 - 4.3| + |4.3 - 5.6| + |7.0 - 5.6|
我不知道python执行此类操作的最佳格式是什么,但我将数据保存在csv文件和excel文件中。我使用pandas将数据获取到数据帧中。我尝试过的一件事是从数据帧中获取一个特定的列

df = pd.DataFrame.from_csv(infile_path + "mp_viewed_item_AGG_affiliate_item_TOP_10.csv", sep=',')
i = 0
for i in df:
    x = df[i]
但这感觉不正确-好像它哪儿也去不了(我不知道!)

有人建议我使用一种叫做itertools的东西,并提供了一个样本

sum([args[i] - args[j] for i,j in itertools.permutations(range(len(args)
但我真的不知道该怎么做

如果有人能给我提供一些关于我的问题的见解,我将非常感激。我是python的新手;我懂基础知识,写过几个非常简单的程序,但我根本不是开发人员

import itertools
column = [3, 1, 7, 2, 9, 4]
你可以这样做一对

# You can use set() instead of list() if you want to remove duplicates
list(itertools.combinations(column,2))
输出

[(3, 1), (3, 7), (3, 2), (3, 9), (3, 4),
 (1, 7), (1, 2), (1, 9), (1, 4),
 (7, 2), (7, 9), (7, 4),
 (2, 9), (2, 4),
 (9, 4)]
然后,您可以使用列表获得差异的总和

sum([abs(pair[1] - pair[0]) for pair in itertools.combinations(column,2)])
输出

[(3, 1), (3, 7), (3, 2), (3, 9), (3, 4),
 (1, 7), (1, 2), (1, 9), (1, 4),
 (7, 2), (7, 9), (7, 4),
 (2, 9), (2, 4),
 (9, 4)]
56


像这样使用
itertools.compositions

import pandas as pd
import itertools

d = {'Affiliate_ID': pd.Series(['store X', 'store Y', 'store Z']), 'Average "A" Level': pd.Series([7.0, 4.3, 5.6])}
df = pd.DataFrame(d)

print sum(abs(x - y) for x, y in itertools.combinations(df['Average "A" Level'], 2))

几行示例数据有帮助,并且您希望输出看起来像@dawg,data addedCyber,谢谢,但是如果第一列数据是string,这会起作用吗?所以,因为我没有第二列数据,所以我所做的是:对于itertools.product(column,column))中的pair,AbsDev=sum(abs(pair[1]-pair[0])/2这合乎情理吗?@trichman22请查看上面的编辑。如果您是从同一列表中进行配对,则不希望执行
产品(列,列)
,否则您将得到该配对的差异为
0
的重复。你可以使用
itertools.combinations
来进行配对。用户我也不知道如何“检查”你的字典,但它看起来非常健壮,我担心这本字典对我来说只是有点技术性,但我还是会认真研究它,试着理解它!再次感谢!