用pandas数据帧进行数据验证的包

dfval的Python项目详细描述


dfval公司

dfval可用于比较两个数据帧并确定数据帧之间的差异。它还具有验证属性或更新数据帧的方法。在

下面的示例创建了两个小的数据帧,并使用dfval进行了比较,并详细介绍了如何使用dfval。在

compare()示例

1。导入dfval和熊猫

import dfval as dv
import pandas as pd

2。创建两个数据帧(x和y)

^{pr2}$

3。定义用于比较的键和数量字段

k = ['loc_id', 'greg_d']

qty_f = ['qty_sum', 'qty_ct']

4。呼叫compare()

# call compare passing the x dataframe, y dataframe, key, the quantity field name, and optionally the keep_comparison (True or False), decimal rounding, and threshold for quantity comparison
c = dv.compare(dfx, dfy, k, qty_f, keep_comparison = True, decimal_round = 4, threshold = 0.01)

{1$字符串^。c.results

rec_chk_passrec_count_xrec_count_yrec_count_zrec_count_samerec_count_diffrec_count_notinxrec_count_notinyrec_count_ex
True44521113

6。c.exceptions

^{tb2}$

7。c.comparison

loc_idgreg_dqty_sum_xqty_ct_xqty_sum_yqty_ct_ydiff_qty_sumdiff_qty_ctexception_type
50002019-12-15100.02.0100.02.00.00.0match
50002019-12-22200.03.0190.03.010.00.0diff_qty
50002019-12-29500.04.0500.04.00.00.0match
50002019-12-0875.03.0NaNNaNNaNNaNnot_in_y
50002019-12-01NaNNaN75.03.0NaNNaN

compare()细节

compare()可用于比较两个数据帧中的维度或维度和数量值。要只比较维度,请省去下面列出的qty_ndecimal_roundthreshold参数。在

输入

compare()有三个必需参数和四个可选参数:

  • 必需参数
    • x:使用比较的两个数据帧之一(顺序无关紧要)
    • y:用于比较的两个数据帧中的第二个(顺序无关紧要)
    • k:用于比较的数据帧中的公共键的列表
  • 可选参数
    • qty_n:要比较的数量字段的列表
      • 注意:如果qty_n未通过,compare()将只对维度(k)进行比较
    • keep_comparison:在结果比较数据帧中保留比较的所有记录
    • decimal_round:比较中数量字段四舍五入的位数(列在qty_n中的字段)
    • threshold:在数量比较中应该被视为异常的阈值

输出

compare()返回一个对象,其中包含两个数据帧,用于描述比较结果和异常。在

  • exceptions:每个差异对应一个记录
    • 异常类型(exception_type):
      • not_u in_x:键存在于y数据帧中,但不存在于x中
      • not_u in_y:键存在于x数据帧中,但不存在于y中
      • diff_qty:key同时存在于x和y数据帧中,但一个或多个quantity列中的差异大于threshold
  • result:一条记录显示用于比较的计数
    • 回收通道:
      • x和y的外部联接中的记录计数是否等于以下记录计数的总和:匹配的记录、数量差的记录、x中不y的记录和y中但不x的记录
      • 只要x或y数据集中的键中没有重复项,它就应该始终是True
  • comparison:比较结果中的所有记录(仅在keep_comparison = True时保留)
    • 异常类型与exceptions数据帧相同,而且它有match的记录

备注:

  • compare()首先检查x和y数据帧,确保它们都在传入的key和quantity字段中定义了所有列。如果两个数据帧中缺少一个或多个列,则会打印一条消息(“列名检查失败”),并且不会运行比较。exceptions和{}将是{}。在
  • NaNx和y数据集中数量字段中的值被转换为零。如果发生这种情况,将打印一条消息
  • compare()检查是否存在重复密钥,如果发现重复密钥,则打印一条消息。比较将继续运行并创建结果。然而,结果可能是预期的。最好在使用compare()之前处理密钥中的重复项。在
  • 记录的结果如果结果是FALSE,则计数检查打印:
    • 一个但不是另一个中的相同、差异和记录计数不匹配

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java JNI和取消异步任务   java整数n作为List<String>的第二个参数传递。子列表(fromIndex,toIndex),但是stacktrace说toIndex在Kotlin中是n+2   如何在Java中正确嵌套多个ArrayList/Maps?   在嵌套条件语句中比较数组中的值时,java List没有打印正确的值   从CRON作业运行java代码   JRE使用jvisualvm检测到java致命错误   java将字符添加到BufferedReader中   带有枚举的java单例与带有双重检查锁定的单例   Java中的编译器构造基类的更改会影响子类的字节码吗?   Java作为Windows服务用户数据路径   java clone():ArrayList。克隆人()我认为它是一个肤浅的复制品   在jfilechooser多文件选择器启用中打开对话框后,java文件将显示所选文件   java在常用的操作方法中使用反射可以吗?   java ReloadableResourceBundleMessageSource。getMessage()不使用我给它的参数