0

我在一列中的每一行都有一个 Excel 中许多句子的列表。我喜欢 3 列或更多列有这样的句子。其中有一些常见的句子。是否可以创建一个脚本来创建维恩图并获得所有人之间的共同点。

示例:这些是列中的句子。同样有不同的列。

来自癌症的血液淋巴细胞

患者血淋巴细胞

卵巢肿瘤_Ⅲ级

腹膜肿瘤_IV级

抗激素 PCA

是否可以用python编写脚本?

4

2 回答 2

2

这是我对这个问题的解释......

提供数据文件 z.csv(将数据从 excel 导出为 csv 文件)

"Blood lymphocytes from cancer","Blood lymphocytes from sausages","Ovarian tumor_Grade III"
"Blood lymphocytes from patients","Ovarian tumor_Grade III","Peritoneum tumor_Grade IV"
"Ovarian tumor_Grade III","Peritoneum tumor_Grade IV","Hormone resistant PCA"
"Peritoneum tumor_Grade XV","Hormone resistant PCA","Blood lymphocytes from cancer"
"Hormone resistant PCA",,"Blood lymphocytes from patients"

这个程序找到所有列共有的句子

import csv

# Open the csv file
rows = csv.reader(open("z.csv"))

# A list of 3 sets of sentences
results = [set(), set(), set()]

# Read the csv file into the 3 sets
for row in rows:
    for i, data in enumerate(row):
        results[i].add(data)

# Work out the sentences common to all rows
intersection = results[0]
for result in results[1:]:
    intersection = intersection.intersection(result)

print "Common to all rows :-"
for data in intersection:
    print data

它打印出这个答案

Common to all rows :-
Hormone resistant PCA
Ovarian tumor_Grade III

不是 100% 确定这就是您正在寻找的东西,但希望它能让您开始!

它可以很容易地推广到任意多的列,但我不想让它变得更复杂

于 2009-10-02T18:43:34.570 回答
0

你的问题并不完全清楚,所以我可能会误解你在找什么。

维恩图只是几个简单的集合操作。Python 在Set数据类型中内置了这些东西。基本上,拿你的两组项目并使用集合操作(​​例如用于intersection查找公共项目)。

要读取数据,最好的办法可能是将文件保存为 CSV 格式,然后使用字符串split方法对其进行解析。

于 2009-10-02T18:02:58.190 回答