『Python思考』数据检查和校验的函数_不断更新_不断改进

原创 2016年06月01日 09:50:20

        注:如有疑问或好的建议,可以在评论区评论


        最近的工作经常跟数据打交道,在工作的过程中也渐渐明白到数据是非常容易出错的,其中一些方面是因为从别人那里接收到的数据本身就有问题,要么是数据出错、要么是格式不符合我们的要求,后者只需要把我们要求的格式跟对方说明白就可以了,但是说起来容易做起来却很难,所以实际上往往还是要自己来进行数据预处理,而且我们进行数据预处理后也要对数据进行检查和校验,以免在这一步就出错了;而前者则要复杂得多,数据出错的原因是多方面的,也许只是对方在录入数据的时候多写了几个空格、或者把英文大写写成小写亦或其它种种原因,在此不赘述。

        另一方面则是我们写代码对数据进行各种处理的时候出现问题,要么是不小心写错了代码,如把要处理的数据的变量名写错成另一数据,要么是使用的函数得到的结果跟我们想要的并不一样,要么是对数据处理的思路出了问题,凡此种种均都会对数据的正确性造成破坏。

        因此数据检查和校验是非常重要的事。

        在网上找了找,发现 python 中好像并没有相关的库,但是由于使用 python 来进行数据分析和数据挖掘的需求越来越大,因此对于数据检查和校验的需求也越来越大,所以准备写一个用于数据检查和校验的简单的函数,如果以后随着功能越来越强大则会再改成类、甚至是到时有足够能力的话,则把它变为一个开源的库。

        参考资料或参考资料备用:

        一组python用于验证数据的函数

        python使用schema库进行数据校验



        思考区:

        # 本函数目前主要针对 pandas 的 DataFrame 对象,在后期将会陆续完善其它数据类型

# 考虑到本函数的输出信息量会比较大,因此应当设定输出信息量的级别。级别按重要性从大到小排列,级别越低输出的信息越少,但输出的信息越重要、关键,而且每个级别的输出信息都是向下兼容的。如级别二的输出信息会包括级别一的全部输出信息。

        本函数主要分为两大部分:数据检查和数据验证

        1、数据检查:

        1.1、数据的类型

        如果数据类型跟我们想要的不一样,那么毫无疑问是数据有问题,所以应该最优先检验

        1.2、数据元素的类型

        有的时候数据元素的类型也非常重要,如 DataFrame 对象中的每一列中的每个数据类型是不是我们想要的也是需要验证的,如果发现类型不对,那毫无疑问也是数据出了问题

        1.3、验证读取到的中文数据是不是乱码

由于 python2.X 对中文的支持并不好,因为读取中文数据往往会出现乱码,也往往很让人头痛,所以这一步的检查是必需的


        2、数据校验:

        2.1、统计数据中的空行数量

        空行:指该行上所有列的值均为 NaN ,而至少有一列的值不为 NaN 则称为 数据缺失行(暂定)

一般来说,我们的数据集是不应该有空行的,空行对我们的意义并不大(至少目前还没遇到过这种情况)也就意味着如果出现了空行,极有可能是数据出问题了。

        2.2、数据缺失行的数量

        一般来说,数据集出现缺失值是很正常的事,但是为什么还是要统计其数量呢?一是为了避免在写代码的时候由于手抖,将本来是将 NaN 赋值给某个数的,但却变成了赋值为某一整列了;二是为了对整个数据集有个大概的概念,便于自己对整个数据集的了解(当然,如果将其可视化的话,效果会更好,所以在后期将会加上这个功能)


        代码区:

def check_data(data):
    """
    检查和校验数据
    """
    try:
        print "数据:", data

        print "数据类型为:", type(data)

        # 求数据长度
        if isinstance(data, int) or isinstance(data, float):
            print "这是整数或浮点数, 没有长度"
        else:
            print "数据长度为:", len(data)
    except:
        print "遇到未知错误!"

    if isinstance(data, pd.DataFrame):
        print data.describe()
        for i in data:
            print "这是%s列" % i, data[i]
            print data[i].sum()

    print "数据检查函数运行结束"
    print "-" * 70







            

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Python正态性检验

正态性检验

利用Python进行数据导入、变化、统计和假设检验等基本数据分析

(1)导入csv数据 >>>d =pandas.read_table(r"c:\csv\test.csv",sep=",") >>>d =pandas.read_csv(r"c:\csv\test.c...

一组python用于验证数据的函数

这是一组python用于验证数据是否合法的函数,包括检测类型是否为整数、浮点数、字符串、字典、元组、数组、bool类型等,还可以检测是否为货币、是否为空、是否是合法的日期格式,是否是邮件地址(Emai...

java 类动态加载 / static 语句块加载一次

jaav 类动态加载,static 语句块加载一次 package test.java; /** * * @author lj * @printout * [Loaded te...
  • nx188
  • nx188
  • 2016年01月04日 19:57
  • 806

python 计算校验和

校验和是经常使用的,这里简单的列了一个针对按字节计算累加和。其实,这种累加和,使用将字节翻译为无符号整数和带符号整数,结果是一样的。 使用python计算校验和时记住做截断就可以了。 这里仅仅是作为一...

js常用功能检查函数-不断更新

/** * 功能: javascript常用功能检测函数 * ------------- * date : 2012-2-8 16:41:10 * author: zhaoxuejie */ //...

【不断更新】python脚本常用的函数!

python 脚本常用函数 文件操作 字符串操作 列表操作python 脚本常用函数这里记录一些脚本常用的函数文件操作 路径相关 os.chdir(dst_dir) #改变...

Linux常用资源(不断改进中)

Linux常用命令全集:  http://linux.chinaitlab.com/special/linuxcom/Index.html ubuntu 12.04 配置指南: http://www....
  • dipolar
  • dipolar
  • 2011年09月24日 14:11
  • 694
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:『Python思考』数据检查和校验的函数_不断更新_不断改进
举报原因:
原因补充:

(最多只允许输入30个字)