N175_标记异常值_自动汇聚某单位的住房公积金 有补发有增减 如何批量找出来

本文主要是介绍N175_标记异常值_自动汇聚某单位的住房公积金 有补发有增减 如何批量找出来,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']    #定义使其正常显示中文字体黑体
plt.rcParams['axes.unicode_minus'] = False      #用来正常显示表示负号 
data = pd.read_excel(r'.\N175_标记异常值_数据源.xlsx')
import seaborn as sns
# 使用seaborn获取颜色
cm = sns.light_palette("green", as_cmap=True)
# 色阶实现
data.head(100).style.background_gradient(cmap=cm,subset=["发生额"])
# data
 laiyuan日期交易流水号单位代码公积金账号交易号客户编号客户姓名发生额余额摘要代码摘要凭证种类凭证号
0./数据源/2012\201208.xls201282012-08-01 00:00:00流水号0000001326727234556缴存210102198901101814#0姓名001934039720.4100001072.000000单位补缴201208nannan
1./数据源/2012\201208.xls201282012-08-01 00:00:00流水号0000002326727234557缴存43282819810118001X#0姓名00299047718.6100001072.000000单位补缴201208nannan
2./数据源/2012\201208.xls201282012-08-01 00:00:00流水号0000003326727234558缴存432801198108011031#0姓名003110642583.6600001072.000000单位补缴201208nannan
3./数据源/2012\201208.xls201282012-08-01 00:00:00流水号0000004326727234559缴存432801198710011099#0姓名00474832592.6500001072.000000单位补缴201208nannan
4./数据源/2012\201208.xls201282012-08-01 00:00:00流水号0000005326727234560

limit_output extension: Maximum message size of 10000 exceeded with 132577 characters

df = data[["laiyuan","日期","客户姓名","发生额"]]
df.head(100).style.background_gradient(cmap=cm,subset=["发生额"])  #主要是靠这些列
 laiyuan日期客户姓名发生额
0./数据源/2012\201208.xls2012-08-01 00:00:00姓名0019340
1./数据源/2012\201208.xls2012-08-01 00:00:00姓名002990
2./数据源/2012\201208.xls2012-08-01 00:00:00姓名0031106
3./数据源/2012\201208.xls2012-08-01 00:00:00姓名004748
4./数据源/2012\201208.xls2012-08-01 00:00:00姓名0051070
5./数据源/2012\201208.xls2012-08-01 00:00:00姓名0061196
6./数据源/2012\201208.xls2012-08-01 00:00:00姓名007826
7./数据源/2012\201208.xls2012-08-01 00:00:00姓名008854
8./数据源/2012\201208.xls2012-08-01 00:00:00姓名009832
9./数据源/2012\201208.xls2012-08-01 00:00:00姓名0101060
10./数据源/2012\201208.xls2012-08-01 00:00:00姓名011798
11./数据源/2012\201208.xls2012-08-01 00:00:00姓名012808
12./数据源/2012\201208.xls2012-08-01 00:00:00姓名013840
13./数据源/2012\201208.xls2012-08-01 00:00:00姓名014790
14./数据源/2012\201208.xls2012-08-01 00:00:00姓名015760
15./数据源/2012\201208.xls2012-08-01 00:00:00姓名016940
16./数据源/2012\201208.xls2012-08-01 00:00:00

limit_output extension: Maximum message size of 10000 exceeded with 43779 characters

# 透视表 交叉统计
tongji01=pd.pivot_table(data, index=['laiyuan','日期'], columns='客户姓名', values='发生额',margins=False, aggfunc=[np.sum])
# 最后,要扁平化MultiIndex列,我们可以只连接元组中的值:
tongji01.columns = ['_'.join(col).replace("sum_","") for col in tongji01.columns.values]
tongji01 = tongji01.reset_index()
tongji01.head(10)
laiyuan日期姓名001姓名002姓名003姓名004姓名005姓名006姓名007姓名008...姓名073姓名074姓名075姓名076姓名077姓名078姓名079姓名080姓名081姓名082
0./数据源/2012\201208.xls2012-08-019340.0990.01106.0748.01070.01196.0826.0854.0...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
1./数据源/2012\201209.xls2012-09-01954.0990.01106.0748.01070.01196.0826.0854.0...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
2./数据源/2012\201210.xls2012-10-01934.0990.01106.0748.01070.01196.0826.0854.0...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
3./数据源/2012\201211.xls2012-11-01934.0990.01106.0748.01070.01196.0826.0854.0...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
4./数据源/2012\201212.xls2012-12-01NaNNaN1106.0748.01070.01196.0826.0854.0...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
5./数据源/2013\201301.xls2013-01-01NaNNaN1106.0748.01070.01196.0826.0854.0...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
6./数据源/2013\201302.xls2013-02-01NaNNaN1106.0748.01070.01196.0826.0854.0...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
7./数据源/2013\201303.xls2013-03-01NaNNaN1106.0748.01070.01196.0826.0854.0...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
8./数据源/2013\201304.xls2013-04-01NaNNaN1106.0748.01070.01196.0826.0854.0...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
9./数据源/2013\201305.xls2013-05-01NaNNaN1106.0748.01070.01196.0826.0854.0...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN

10 rows × 84 columns

# 按列找异常值,并用语言描述出来
import pandas as pd
cun = tongji01.copy()  #将数据块复制,后面发现的异常值进行覆盖
hangzuobiao = tongji01.laiyuan.to_list() # 将来源列转列表
suo = tongji01   #.iloc[:,1:4] #   为了缩小范围,提高实验速度
print(suo.shape)
lieming = suo.columns.to_list() #将列标题转列表
for index,col in enumerate(lieming): # 遍历列名,lie_max = suo[col].value_counts().index[:1].values # 关键点,找到该列频率最高的值gailie_max = lie_max[0] # 取当前值,上面计算出来的是列表for hang in range(suo.shape[0]): # 按行总数遍历 ,if suo[col].dtype in ["int64", "float64"]: #判断是否都是数字danqian = suo.loc[hang,col] # 取出当前值if pd.isnull(danqian) == True or danqian == gailie_max: # 为空跳过,相等跳过continue
#             print("当前值:"+str(danqian))
#             print("当列出现次数最多的:"+str(gailie_max))yichang = (gailie_max-danqian)/gailie_max
#             print(yichang)if abs(yichang)>0.6: # 差额相除取绝对值,看是否超过6成zhi = "异常"+str(hangzuobiao[hang])[:10]+"_"+str(col)+"_:"+str(suo.loc[hang,col])cun.iloc[hang,index] = zhi
cun.to_excel("N175_标记异常值_结果.xlsx")
(107, 84)
from styleframe import StyleFrame
import openpyxl
#可以自我覆盖,但是这样有风险,为了列宽自适应,筛选,冻结窗口
file_path = "N175_标记异常值_结果.xlsx"
df=pd.read_excel(file_path)
col = df.columns.values.tolist()
excel_writer = StyleFrame.ExcelWriter(file_path)
sf = StyleFrame(df)
sf.to_excel(excel_writer=excel_writer, best_fit=col,columns_and_rows_to_freeze='a2', row_to_add_filters=0,
)
excel_writer.save()
# 将句柄关闭,否则是只读格式,打不开
excel_writer.handles = None  #这句代码有用,很久才找到
print("well done")
well done

原始数据
在这里插入图片描述
处理后的数据
在这里插入图片描述


这篇关于N175_标记异常值_自动汇聚某单位的住房公积金 有补发有增减 如何批量找出来的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/qq_41577262/article/details/127608306
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/427439

相关文章

Python批量替换多个Word文档的多个关键字的方法

《Python批量替换多个Word文档的多个关键字的方法》有时,我们手头上有多个Excel或者Word文件,但是领导突然要求对某几个术语进行批量的修改,你是不是有要崩溃的感觉,所以本文给大家介绍了Py... 目录工具准备先梳理一下思路神奇代码来啦!代码详解激动人心的测试结语嘿,各位小伙伴们,大家好!有没有想

Java异常捕获及处理方式详解

《Java异常捕获及处理方式详解》异常处理是Java编程中非常重要的一部分,它允许我们在程序运行时捕获并处理错误或不预期的行为,而不是让程序直接崩溃,本文将介绍Java中如何捕获异常,以及常用的异常处... 目录前言什么是异常?Java异常的基本语法解释:1. 捕获异常并处理示例1:捕获并处理单个异常解释:

基于Python实现温度单位转换器(新手版)

《基于Python实现温度单位转换器(新手版)》这篇文章主要为大家详细介绍了如何基于Python实现温度单位转换器,主要是将摄氏温度(C)和华氏温度(F)相互转换,下面小编就来和大家简单介绍一下吧... 目录为什么选择温度转换器作为第一个项目项目概述所需基础知识实现步骤详解1. 温度转换公式2. 用户输入处

Python自定义异常的全面指南(入门到实践)

《Python自定义异常的全面指南(入门到实践)》想象你正在开发一个银行系统,用户转账时余额不足,如果直接抛出ValueError,调用方很难区分是金额格式错误还是余额不足,这正是Python自定义异... 目录引言:为什么需要自定义异常一、异常基础:先搞懂python的异常体系1.1 异常是什么?1.2

SpringBoot实现RSA+AES自动接口解密的实战指南

《SpringBoot实现RSA+AES自动接口解密的实战指南》在当今数据泄露频发的网络环境中,接口安全已成为开发者不可忽视的核心议题,RSA+AES混合加密方案因其安全性高、性能优越而被广泛采用,本... 目录一、项目依赖与环境准备1.1 Maven依赖配置1.2 密钥生成与配置二、加密工具类实现2.1

shell脚本批量导出redis key-value方式

《shell脚本批量导出rediskey-value方式》为避免keys全量扫描导致Redis卡顿,可先通过dump.rdb备份文件在本地恢复,再使用scan命令渐进导出key-value,通过CN... 目录1 背景2 详细步骤2.1 本地docker启动Redis2.2 shell批量导出脚本3 附录总

批量导入txt数据到的redis过程

《批量导入txt数据到的redis过程》用户通过将Redis命令逐行写入txt文件,利用管道模式运行客户端,成功执行批量删除以Product*匹配的Key操作,提高了数据清理效率... 目录批量导入txt数据到Redisjs把redis命令按一条 一行写到txt中管道命令运行redis客户端成功了批量删除k

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

SQL Server跟踪自动统计信息更新实战指南

《SQLServer跟踪自动统计信息更新实战指南》本文详解SQLServer自动统计信息更新的跟踪方法,推荐使用扩展事件实时捕获更新操作及详细信息,同时结合系统视图快速检查统计信息状态,重点强调修... 目录SQL Server 如何跟踪自动统计信息更新:深入解析与实战指南 核心跟踪方法1️⃣ 利用系统目录

Java.lang.InterruptedException被中止异常的原因及解决方案

《Java.lang.InterruptedException被中止异常的原因及解决方案》Java.lang.InterruptedException是线程被中断时抛出的异常,用于协作停止执行,常见于... 目录报错问题报错原因解决方法Java.lang.InterruptedException 是 Jav