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



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

相关文章

Java进程异常故障定位及排查过程

《Java进程异常故障定位及排查过程》:本文主要介绍Java进程异常故障定位及排查过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、故障发现与初步判断1. 监控系统告警2. 日志初步分析二、核心排查工具与步骤1. 进程状态检查2. CPU 飙升问题3. 内存

浏览器插件cursor实现自动注册、续杯的详细过程

《浏览器插件cursor实现自动注册、续杯的详细过程》Cursor简易注册助手脚本通过自动化邮箱填写和验证码获取流程,大大简化了Cursor的注册过程,它不仅提高了注册效率,还通过友好的用户界面和详细... 目录前言功能概述使用方法安装脚本使用流程邮箱输入页面验证码页面实战演示技术实现核心功能实现1. 随机

利用Python脚本实现批量将图片转换为WebP格式

《利用Python脚本实现批量将图片转换为WebP格式》Python语言的简洁语法和库支持使其成为图像处理的理想选择,本文将介绍如何利用Python实现批量将图片转换为WebP格式的脚本,WebP作为... 目录简介1. python在图像处理中的应用2. WebP格式的原理和优势2.1 WebP格式与传统

HTML5实现的移动端购物车自动结算功能示例代码

《HTML5实现的移动端购物车自动结算功能示例代码》本文介绍HTML5实现移动端购物车自动结算,通过WebStorage、事件监听、DOM操作等技术,确保实时更新与数据同步,优化性能及无障碍性,提升用... 目录1. 移动端购物车自动结算概述2. 数据存储与状态保存机制2.1 浏览器端的数据存储方式2.1.

javax.net.ssl.SSLHandshakeException:异常原因及解决方案

《javax.net.ssl.SSLHandshakeException:异常原因及解决方案》javax.net.ssl.SSLHandshakeException是一个SSL握手异常,通常在建立SS... 目录报错原因在程序中绕过服务器的安全验证注意点最后多说一句报错原因一般出现这种问题是因为目标服务器

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

Java对异常的认识与异常的处理小结

《Java对异常的认识与异常的处理小结》Java程序在运行时可能出现的错误或非正常情况称为异常,下面给大家介绍Java对异常的认识与异常的处理,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参... 目录一、认识异常与异常类型。二、异常的处理三、总结 一、认识异常与异常类型。(1)简单定义-什么是

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

《MyBatisPlus中update_time字段自动填充失效的原因分析及解决方案(最新整理)》在使用MyBatisPlus时,通常我们会在数据库表中设置create_time和update... 目录前言一、问题现象二、原因分析三、总结:常见原因与解决方法对照表四、推荐写法前言在使用 MyBATis

Python主动抛出异常的各种用法和场景分析

《Python主动抛出异常的各种用法和场景分析》在Python中,我们不仅可以捕获和处理异常,还可以主动抛出异常,也就是以类的方式自定义错误的类型和提示信息,这在编程中非常有用,下面我将详细解释主动抛... 目录一、为什么要主动抛出异常?二、基本语法:raise关键字基本示例三、raise的多种用法1. 抛

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件