excel比较两列差异性和一致性,统计之后降序排列

2024-09-03 11:52

本文主要是介绍excel比较两列差异性和一致性,统计之后降序排列,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

import pandas as pd
import numpy as np# 读取Excel文件
file_path = 'last-all.xlsx'
df = pd.read_excel(file_path)# 指定要比较的列名
column1 = '标注'
column2 = '不含72b'# 将两列内容尝试转换为数字,无法转换的标记为 NaN
df[column1 + '_num'] = pd.to_numeric(df[column1], errors='coerce')
df[column2 + '_num'] = pd.to_numeric(df[column2], errors='coerce')# 比较数字列的内容是否一致,非数字内容标记为 NaN
differences = df[column1 + '_num'] != df[column2 + '_num']# 找出不一致的部分及其行号
diff_df = df[differences].copy()
diff_df['差异'] = df[column1].astype(str) + ' → ' + df[column2].astype(str)# 统计每类不一致的部分及其比例
diff_counts = diff_df['差异'].value_counts()
diff_percentages = (diff_counts / len(diff_df)) * 100
# 打印一共有多少条不一样的结果
total_differences = len(diff_df)
total_rows = len(df)
percentage_differences = (total_differences / total_rows) * 100
#打印一致性
print(f"一致性为 {(1 - percentage_differences / 100):.2f}")
print(f"\n一共有 {total_differences} 条不一样的结果,占总数的比例为 {percentage_differences:.2f}%。")# 打印统计结果
print("每类不一致的部分占比 (从高到低排序):")
for diff, percentage in zip(diff_counts.index, diff_percentages):print(f"{diff}: {percentage:.2f}%")# 打印不一致部分及行号
# print("\n不一致部分的详细信息 (行号: 标注列 → 不含列):")
# for index, row in diff_df.iterrows():
#     print(f"行号 {index}: {row['差异']}")# 输出nan出现的行号
nan_rows = diff_df[(diff_df[column1 + '_num'].isna()) | (diff_df[column2 + '_num'].isna())]
if not nan_rows.empty:print("\n含有nan的行号:")for index in nan_rows.index:print(f"行号 {index}")
else:print("\n没有含有nan的行。")

一致性

在这个代码基础上追加功能:比较column2那一列和column1相比一致性最高的类别,并打印类别和一致比例

import pandas as pd
import numpy as np# 读取Excel文件
file_path = 'last-all.xlsx'
df = pd.read_excel(file_path)# 指定要比较的列名
column1 = '标注'
column2 = '不含72b'# 将两列内容尝试转换为数字,无法转换的标记为 NaN
df[column1 + '_num'] = pd.to_numeric(df[column1], errors='coerce')
df[column2 + '_num'] = pd.to_numeric(df[column2], errors='coerce')# 比较数字列的内容是否一致,非数字内容标记为 NaN
differences = df[column1 + '_num'] != df[column2 + '_num']# 找出不一致的部分及其行号
diff_df = df[differences].copy()
diff_df['差异'] = df[column1].astype(str) + ' → ' + df[column2].astype(str)# 统计每类不一致的部分及其比例
diff_counts = diff_df['差异'].value_counts()
diff_percentages = (diff_counts / len(diff_df)) * 100# 计算总体一致性
total_differences = len(diff_df)
total_rows = len(df)
percentage_differences = (total_differences / total_rows) * 100
consistency = (1 - percentage_differences / 100)
print(f"一致性为 {consistency:.2f}")
print(f"\n一共有 {total_differences} 条不一样的结果,占总数的比例为 {percentage_differences:.2f}%。")# 打印统计结果
print("每类不一致的部分占比 (从高到低排序):")
for diff, percentage in zip(diff_counts.index, diff_percentages):print(f"{diff}: {percentage:.2f}%")# 找出column2中与column1相比一致性最高的类别
df['一致'] = df[column1 + '_num'] == df[column2 + '_num']
consistency_by_category = df[df['一致']].groupby(column2).size()# 计算每个类别的总体比例(占column2中的比例)
total_by_category = df.groupby(column2).size()
highest_consistency_category = (consistency_by_category / total_by_category).idxmax()
highest_consistency_percentage = (consistency_by_category / total_by_category).max() * 100# 打印一致性最高的类别及其比例
print(f"\n在 {column2} 列中,与 {column1} 列相比一致性最高的类别是 '{highest_consistency_category}',一致比例为 {highest_consistency_percentage:.2f}%。")

这篇关于excel比较两列差异性和一致性,统计之后降序排列的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1132898

相关文章

C# 比较两个list 之间元素差异的常用方法

《C#比较两个list之间元素差异的常用方法》:本文主要介绍C#比较两个list之间元素差异,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. 使用Except方法2. 使用Except的逆操作3. 使用LINQ的Join,GroupJoin

Java easyExcel实现导入多sheet的Excel

《JavaeasyExcel实现导入多sheet的Excel》这篇文章主要为大家详细介绍了如何使用JavaeasyExcel实现导入多sheet的Excel,文中的示例代码讲解详细,感兴趣的小伙伴可... 目录1.官网2.Excel样式3.代码1.官网easyExcel官网2.Excel样式3.代码

在Linux终端中统计非二进制文件行数的实现方法

《在Linux终端中统计非二进制文件行数的实现方法》在Linux系统中,有时需要统计非二进制文件(如CSV、TXT文件)的行数,而不希望手动打开文件进行查看,例如,在处理大型日志文件、数据文件时,了解... 目录在linux终端中统计非二进制文件的行数技术背景实现步骤1. 使用wc命令2. 使用grep命令

Java Web实现类似Excel表格锁定功能实战教程

《JavaWeb实现类似Excel表格锁定功能实战教程》本文将详细介绍通过创建特定div元素并利用CSS布局和JavaScript事件监听来实现类似Excel的锁定行和列效果的方法,感兴趣的朋友跟随... 目录1. 模拟Excel表格锁定功能2. 创建3个div元素实现表格锁定2.1 div元素布局设计2.

浅析如何保证MySQL与Redis数据一致性

《浅析如何保证MySQL与Redis数据一致性》在互联网应用中,MySQL作为持久化存储引擎,Redis作为高性能缓存层,两者的组合能有效提升系统性能,下面我们来看看如何保证两者的数据一致性吧... 目录一、数据不一致性的根源1.1 典型不一致场景1.2 关键矛盾点二、一致性保障策略2.1 基础策略:更新数

Oracle修改端口号之后无法启动的解决方案

《Oracle修改端口号之后无法启动的解决方案》Oracle数据库更改端口后出现监听器无法启动的问题确实较为常见,但并非必然发生,这一问题通常源于​​配置错误或环境冲突​​,而非端口修改本身,以下是系... 目录一、问题根源分析​​​二、保姆级解决方案​​​​步骤1:修正监听器配置文件 (listener.

C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式

《C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式》Markdown凭借简洁的语法、优良的可读性,以及对版本控制系统的高度兼容性,逐渐成为最受欢迎的文档格式... 目录为什么要将文档转换为 Markdown 格式使用工具将 Word 文档转换为 Markdown(.

VS配置好Qt环境之后但无法打开ui界面的问题解决

《VS配置好Qt环境之后但无法打开ui界面的问题解决》本文主要介绍了VS配置好Qt环境之后但无法打开ui界面的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目UKeLvb录找到Qt安装目录中designer.UKeLvBexe的路径找到vs中的解决方案资源

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可

使用C#删除Excel表格中的重复行数据的代码详解

《使用C#删除Excel表格中的重复行数据的代码详解》重复行是指在Excel表格中完全相同的多行数据,删除这些重复行至关重要,因为它们不仅会干扰数据分析,还可能导致错误的决策和结论,所以本文给大家介绍... 目录简介使用工具C# 删除Excel工作表中的重复行语法工作原理实现代码C# 删除指定Excel单元