单表表格内数据相似度查询代码
时间: 2023-09-15 11:20:42 浏览: 42
以下是使用Python编写的一个简单的单表表格内数据相似度查询代码示例:
```python
import pandas as pd
from sklearn.metrics.pairwise import cosine_similarity
# 读取数据
data = pd.read_csv('data.csv')
# 计算相似度矩阵
similarity_matrix = cosine_similarity(data)
# 获取与指定数据最相似的数据
row_index = 0 # 指定数据的行索引
top_similarities = sorted(list(enumerate(similarity_matrix[row_index])), key=lambda x: x[1], reverse=True)
most_similar_index = top_similarities[1][0] # 最相似的数据的行索引
# 输出结果
print('原始数据:', data.iloc[row_index])
print('最相似的数据:', data.iloc[most_similar_index])
```
其中,`data.csv`文件中存储了需要进行相似度查询的表格数据,示例代码中使用了余弦相似度计算方法进行相似度计算。通过指定需要查询相似度的数据的行索引,可以获取与其最相似的数据的行索引。
相关问题
对桌面的1000.xlsx表格进行处理,如果author相同的同时,org的相似度也大于0.8,将数据保存为same.xlsx表格,其他的保存为unsame表格
要对桌面上的1000.xlsx表格进行处理,如果"author"相同且"org"的相似度大于0.8,则将这些数据保存为same.xlsx表格,否则保存为unsame.xlsx表格。可以使用以下代码实现:
```python
import pandas as pd
from difflib import SequenceMatcher
# 读取Excel文件
df = pd.read_excel(r'C:\Users\Admin\Desktop\1000.xlsx')
# 比较相似度函数
def similarity(a, b):
return SequenceMatcher(None, str(a), str(b)).ratio()
# 创建同名和不同名的DataFrame
same_df = pd.DataFrame(columns=df.columns)
unsame_df = pd.DataFrame(columns=df.columns)
# 遍历每一行数据
for i, row in df.iterrows():
is_same = False
for j, same_row in same_df.iterrows():
if row['author'] == same_row['author'] and similarity(row['org'], same_row['org']) > 0.8:
is_same = True
same_df.loc[j] = same_row.append(row)
break
if not is_same:
unsame_df = unsame_df.append(row)
# 保存同名和不同名的数据为Excel文件
same_df.to_excel(r'C:\Users\Admin\Desktop\same.xlsx', index=False)
unsame_df.to_excel(r'C:\Users\Admin\Desktop\unsame.xlsx', index=False)
print("同名的数据已保存为same.xlsx")
print("不同名的数据已保存为unsame.xlsx")
```
在上述代码中,首先使用`pd.read_excel()`函数读取桌面上的1000.xlsx表格,并将其存储在名为df的DataFrame对象中。
然后,定义了一个`similarity()`函数,用于计算两个字符串的相似度。
接下来,创建了两个空的DataFrame对象,用于保存同名和不同名的数据。
接着,遍历原始数据的每一行,检查是否存在相同的"author"且"org"相似度大于0.8的数据。如果存在,则将这些数据添加到same_df中;如果不存在,则将该行数据添加到unsame_df中。
最后,使用`to_excel()`函数将同名和不同名的数据保存为same.xlsx和unsame.xlsx文件。
请确保将文件的保存路径修改为你想要保存的位置。
1.xlsx中有author列和org列,有的数据author相同,但他们的org可能相同 也可能不相同,如何对author相同的数据进行筛选,并计算他们对应的机构org之间的相似度,比如说某个有3给author相同,分别对应org1、org2、org3,如何计算org2与org1之间的相似度,org3与org1之间的相似度,并将org对应的相似度列成一列,最后将author、org、相似度保存为2.xlsx表
要对 `1.xlsx` 中相同 `author` 的数据进行筛选,并计算它们对应的机构 `org` 之间的相似度,可以使用 Python 的 Pandas 和 difflib 库进行处理。以下是一个示例代码:
```python
import pandas as pd
from difflib import SequenceMatcher
# 读取原始数据
df = pd.read_excel("1.xlsx")
# 创建空的相似度列表
similarity_list = []
# 根据 author 列进行分组
grouped = df.groupby("author")
# 遍历每个分组
for author, group in grouped:
# 获取当前分组的 org 列数据
org_values = group["org"].tolist()
# 计算当前分组内的 org 列数据两两之间的相似度
for i in range(len(org_values)):
for j in range(i+1, len(org_values)):
org1 = org_values[i]
org2 = org_values[j]
# 计算相似度
similarity = SequenceMatcher(None, org1, org2).ratio()
# 将相似度添加到列表中
similarity_list.append(similarity)
# 添加相似度列表为新的一列
df["similarity"] = similarity_list
# 保存包含 author、org 和相似度数据的表格为 2.xlsx
df.to_excel("2.xlsx", index=False)
```
上述代码首先读取了名为 `1.xlsx` 的原始数据,并创建一个空的相似度列表。然后,根据 `author` 列对数据进行分组。接下来,遍历每个分组,依次获取当前分组的 `org` 列数据,并计算当前分组内的 `org` 列数据两两之间的相似度。相似度的计算通过嵌套的循环实现,对每一对 `org` 值计算相似度,并将相似度值添加到相似度列表中。最后,将相似度列表作为新的一列添加到原始数据中,并将包含 `author`、`org` 和相似度数据的表格保存为 `2.xlsx`。
请确保在运行代码之前已经安装了 Pandas 和 difflib 库,并将 `1.xlsx` 文件准确放置在当前工作目录下。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)