精华内容
下载资源
问答
  • 2020-04-10 23:39:03

    清洗数据是指对数据进行重新审查和校验的过程,目的在于删除重复信息,纠正存在的错误,并提供数据一致性。


    处理缺失值

    R提供了一些函数,用于缺失值检测缺失值处理

    函数描述
    is.na(x)返回一个与x等长的逻辑向量,并且由相应位置的元素是否是NA来决定这个逻辑向量相应位置的元素是TRUE还是FALSE。TRUE表示该位置的元素是缺失值
    anyNA(x,recursive = FALSE)判断数据中是否存在缺失值,返回TRUE或FALSE值。若存在缺失值则返回FALSE
    na.omit(x)删除含有缺失值的观测
    complete.cases(x)返回一个逻辑向量,不存在缺失值的行的值为TRUE,存在缺失值的行的值为FALSE

    示例:

    score <- data.frame(student = c("A","B","C","D"),
                         gender = c("M","M","F","F"),
                           math = c(90,70,80,60),
                            Eng = c(88,78,69,98),
                             p1 = c(66,59,NA,88))         #  创建数据框
    anyNA(score)   #  判断score中是否存在缺失值,返回TRUE或FALSE值。若存在缺失值则返回FALSE
    #  运行结果:
    #  [1] TRUE
    is.na(score)
    #  运行结果:
    #       student gender  math   Eng    p1
    #  [1,]   FALSE  FALSE FALSE FALSE FALSE
    #  [2,]   FALSE  FALSE FALSE FALSE FALSE
    #  [3,]   FALSE  FALSE FALSE FALSE  TRUE
    #  [4,]   FALSE  FALSE FALSE FALSE FALSE
    complete.cases(x)
    #  运行结果:
    #  [1]  TRUE  TRUE FALSE  TRUE
    score[complete.cases(score),]
    #  运行结果:
    #    student gender math Eng p1
    #  1       A      M   90  88 66
    #  2       B      M   70  78 59
    #  4       D      F   60  98 88
    na.omit(score)
    #  运行结果:
    #    student gender math Eng p1
    #  1       A      M   90  88 66
    #  2       B      M   70  78 59
    #  4       D      F   60  98 88
    
    


    处理日期变量

    示例:

    Sys.Date()
    #  运行结果:
    #  [1] “2020-04-09”
    Sys.time()
    #  运行结果:
    #  [1] “2020-04-09 09:29:32 CST”
    date()
    #  运行结果:
    #  [1] “Wed Mar 25 09:30:01 2020”
    
    

    读入日期的格式

    符号含义示例
    %d数字表示的日期(00~31)01~31
    %a缩写的星期名Mon
    %A非缩写的星期名Monday
    %w数字表示的星期天数0-6,周日为0
    %m数字表示的月份(00~12)00~12
    %b缩写的月份Jan
    %B非缩写的月份January
    %y二位数的年份20
    %Y四位数的年份2020
    %H24小时制00-23
    %I12小时制01-12
    %pAM/PM指示AM/PM
    %M十进制的分数00-60
    %S十进制的秒00-60

    as.Date函数

    as.Date函数可以将字符串形式的日期值转换为日期变量

    参数描述
    x要转换的对象,为字符型数据
    format用于读入日期的适当格式

    as.Date函数只能转换包含年月日星期的字符串,无法转换具体到时间的字符串

    as.POSIXIt函数   as.POSIXIt(x,tz="",format)

    参数描述
    x想要转换的字符串型日期时间值
    tz指定转换后的时区
    format指定要转换的日期值的格式

    strptime函数   strptime(x,format,tz="")

    参数描述
    x字符型数据
    format指定要转换的日期值的格式
    tz指定时区

    strftime函数   strftime(x,format="")

    #  转化日期时间变量为字符串
    #  使用上例的结果
    x
    #  运行结果:
    #  [1] "2020-02-28 10:07:52 CST" "2020-08-07 19:33:02 CST"
    #  输出的格式转换为format指定的格式
    strftime(x,format = "%Y/%m/%d")
    #  运行结果:
    #  [1] "2020/02/28" "2020/08/07"
    
    

    注意:strftime函数的与strptime函数相对应,strftime函数用于将时间变量按指定的格式转换为字符型日期值

    format函数   format(x,…)

    #  使用format()函数转换为字符串
    #  使用和上例的同样的数据
    x
    #  运行结果:
    #  [1] "2020-02-28 10:07:52 CST" "2020-08-07 19:33:02 CST"
    #  输出的格式转换为format定义的格式
    format(x,"%d/%m/%Y")
    #  运行结果:
    #  [1] ”28/02/2020“ ”07/08/2020“
    
    

    注意:format函数不仅限于将日期变量按格式转化为字符串,也可以将其他类型的变量转化为字符串



    数据排序

    R中涉及排序的基本函数有sort、rank和order函数。其基本用法为:

    • sort(x,na.last = NA, decreasing = FALSE, …)
    • order(…, na.last = TRUE, decreasing = FALSE)
    • rank(x, na.last = TRUE, ties.method = c(“average”,“first”,“random”,“max”,“min”))

    x表示需要排序的数据,decreasing表示是否按降序排序数据,method表示所使用的排序算法,na.last用来说明如何处理NA值,如果为FALSE,则会删除这些值,如果为TRUE,就会把这些值放到最后

    sort函数:对向量进行排序,返回的结果是经过排序后的向量

    参数描述
    x表示需要排序的数据集
    na.last设定对数据集中缺失值的处理,na.last=NA(默认)表示在排序结果中缺失值将被删除。na.last=TRUE表示将数据缺失值放在最后,na.last=FALSE表示j将数据缺失值放在前面
    decreasingdecreasing = FALSE表示按从小到大的顺序进行排序,
    decreasing = TRUE表示按从大到小的顺序排序

    rank函数:对向量进行排序,返回的结果是经过排序后的秩次
    rank(x,na.last=TRUE,ties.method=c(“average”,“first”,“random”,“max”,“min”))

    参数描述
    x表示需要排序的数据集
    na.last设定对数据集中缺失值的处理,na.last=NA(默认)表示在排序结果中缺失值将被删除。na.last=TRUE表示将数据缺失值放在最后,na.last=FALSE表示j将数据缺失值放在前面
    ties.methodties.method用于设定对数据集中重复数据的秩的处理方式,
    ties.method = "average"表示对重复数据的秩取平均值作为这几个数据共同的秩,
    ties.method = "first"表示重复数据中的位于前面的数据的秩取小,位于后面的依次递增,
    ties.method = "random"表示随机定义重复数据的秩,
    ties.method = "max"表示以重复数据可能对应的最大秩作为这几个数据共同的秩,
    ties.method = "min"表示以重复数据可能对应的最小秩作为这几个数据共同的秩

    order函数

    • order函数的功能为对数据进行排序,返回值为最小(大)值、次小(大)值…次大(小)值、最大(小)值所在的位置
    • order(x,na.last=TRUE,decreasing=FALSE)
    • x和na.last参数含义同sort函数
    • 与前面两个排序函数不同的是,order函数可以对数据框进行排序
    • 其中对数据集data.frame按变量v1,v2进行排序的实现形式为:
      data.frame[order(data.frame $ v1, data.frame $ v2)]
    • 若v1一样,则按v2升序排序,如果要将升序改为降序,只需在变量前添加符号或decreasing = TRUE


    合并数据集

    数据框的编辑可以通过rbind和cbind函数。需要注意的是,使用rbind和cbind函数对于数据框而言,分别为增加新的样本数据和增加新属性变量。
    rbind的自变量的宽度(列数)应该与原数据框的宽度相等,cbind的自变量的高度(行数)应该与原数据框的高度相等。

    更多相关内容
  • 这个是Kettle一个转换的脚本,可以通过这个demo结合java代码来进行数据清洗
  • 数据清洗数据源.zip

    2019-07-03 14:43:00
    数据清洗/大数据应用人才培养系列教材,数据来源文件。
  • 基本概念 数据清洗从名字上也看的出就是把脏的洗掉指发现并纠正数据文件中可识别的错误的最后一道程序包括检查数据一致性处理无效值和缺失值等因为中的数据是面向某一主题的数据的集合这些数据从多个业务系统数据...
  • 如何用Mysql清洗数据

    千次阅读 2021-01-18 19:14:07
    在数据分析中从获取数据到最后的完成数据分析报告,你要是问一个从事数据分析的人哪里最麻烦最费时间,十个里面有九个会回答你:清洗数据。在清洗数据流程中,绝大多数分析师都会使用Python和R来处理,那如果还没有...

    在数据分析中从获取数据到最后的完成数据分析报告,你要是问一个从事数据分析的人哪里最麻烦最费时间,十个里面有九个会回答你:清洗数据。

    在清洗数据流程中,绝大多数分析师都会使用Python和R来处理,那如果还没有掌握Python和R的人呢?

    事实上Excel和Mysql之类的工具也是可以的,Excel对于大一点的文件处理的较为吃力。其实我们日常用来处理统计数据的Mysql也可以进行数据清洗的工作,接下来我就用完之前做的关于什么值得买跑鞋板块的数据分析为例来简单介绍一下怎么用Mysql进行数据清洗。

    一、首先爬取网页上的数据

    这方面我推荐一下我的朋友 @陈大欣零基础如何学爬虫技术?​www.zhihu.comcde228e43490a0b1e60a1248c31ef8c7.png

    介绍的Web Scraper工具,可以轻松让没有编程基础的小白爬取95%以上的网页上的内容。

    首先分析一下页面,我们需要爬取哪些内容:跑鞋的品牌、型号

    爆料分类

    价格

    值、不值、收藏和评论数

    爆料时间

    卖家

    爆料人

    具体爬取过程不表

    二、预览分析数据

    看起来好像很正常,点开仔细看一下。

    标题部分被整个抓下来了,其中我们需要的分类、品牌和价格都在一个单元格里面,需要把它们分开来。

    上传时间和商家在同一个单元格里面,需要分开来。

    三、在Mysql进行数据清洗、提取

    把数据导入NavicatNavicat for MySQL如何导入数据表​www.formysql.com173ed21fdb95405e903660b1da1858f4.png

    参考网上的教程把爬下来的csv文件导入Navicat

    统计男鞋和女鞋的爆料数量

    Alter table `runningshoe (1)` add woman int;

    update `runningshoe (1)` set woman=1

    where name like "%女%"

    加入一列命名为Woman,描述中出现一次"女"就记一次女鞋爆料,男鞋同理。

    抽取出跑鞋品牌信息

    首先我分析了一下数据,和众多爆料数字不成正比的是,绝大多数爆料都是集中在少数几个品牌上。95%的爆料,来自于20个大品牌。

    我做了一个叫做"品牌"的连接表格来进行品牌信息的归类

    左边是它有可能出现的名字,右边是我定义的名字。

    update `runningshoe (1)`, `品牌`

    set brand=品牌.`实际名字`

    where `name` like CONCAT('%',品牌.`查询名字`,'%')

    以上品牌涵盖了97%以上的爆料剩余的被归入"Others"了抽取价格信息

    事实上这个步骤比我想象中的复杂

    关于价格的爆料信息有三种一种是国内的爆料,单位是人民币,第二种是美国海淘的爆料有美金有人民币,第三种是日本海淘的爆料,有日元有人民币。

    首先我们把最后一个空格后所有有关价格的信息都提取出来再处理。

    Alter table `runningshoe (1)` add `price` varchar(255) ;

    Update `runningshoe (1)` SET `price`=SUBSTRING_INDEX(name,' ',-1)

    结果如下

    再对price列下的字符进行清理

    Update `runningshoe (1)` SET price=(SUBSTRING_INDEX(`price`,'X',1))

    如选取元前的字符,选取'¥'字符后的字符,去掉')'

    最后得到价格信息

    展开全文
  • kettle数据抽取、数据清洗数据装换, 作业根据时间戳更新插入数据完整demo 1、先获取时间戳 2、删除目标库大于时间戳的 3、数据同步,获取源表跟目标表大于时间戳的,比较, 目标表多的删除, 少的插入更新 4...
  • kettle数据清洗

    2018-09-18 16:48:30
    利用kettle工具进行数据清洗,按照条件去除不需要的内容
  • 数据治理中数据清洗步骤及最佳实践
  • 用pandas清洗数据具体步骤(基础篇一)

    万次阅读 多人点赞 2018-01-15 18:30:38
    但在实际的工作中一个分析项目70%左右的时间花在清洗数据上面。数据清洗的目的有两个,第一是通过清洗让数据可用。第二是让数据变的更适合进行后续的分析工作。换句话说就是有”脏”数据要洗,干净的数据也要洗。本...

    引言

         数据清洗是一项复杂且繁琐(kubi)的工作,同时也是整个数据分析过程中最为重要的环节。但在实际的工作中一个分析项目70%左右的时间花在清洗数据上面。数据清洗的目的有两个,第一是通过清洗让数据可用。第二是让数据变的更适合进行后续的分析工作。换句话说就是有”脏”数据要洗,干净的数据也要洗。本篇文章将用一个简单的范例来介绍使用pandas进行数据清洗的流程。

    读取数据

          pandas模块中有专门针对xlsx和xls这类excel文件的读取方法read_excel。当然用的最多的还是read_csv文件。因为excel文件最多只能存储100多万行,但是csv文件可以存储上亿行数据。既然是简单范例,我就只使用execl来读取了。

    tt=pd.read_excel(r'd:\\000030.xlsx',sheet_name='Sheet1')
    #直接读取硬盘中的excel文件,变成Dataframe格式 
    
    表格格式如下图所示:


    从表格中可以看出,第一存在很多空值;第二还有很多亿元,万元等字符串影响了进行算术运算。第一步我们首先要处理空值:

    处理空值

    这里涉及到对空值的处理:1删除2替换3填充

    删除又分为是每行有一个空格就删除该行还是有三个空值就删除该行;

    替换可以用上下行的值替换或者是用平均值替换

    print (tt.isnull().any())   # 这是按照列统计的空值
    print (tt[tt.isnull().values==True]) #查看哪些值是空值
    
    # 这里涉及到对空值的处理:删除还是替换然后还有填充(这里删除分为有一个空值删除还是有两个空值删除一行。替换可以用特定值替换或者是用平均值替换)
    tt.fillna(0,inplace=True)  # 根据本例的特点,空值可以填充0

    对行索引和列索引进行处理

    具体项目中有截取一部分行索引和截取一部分列索引的操作。

    # 这里我要替换列名'2017-03-31'为'2017/03/31'格式。有两种方法一是Dataframe重建表格二是用rename替换行索引或者列索引
    print(tt.shape)  # 看表格有多少行多少列
    a_list=list(tt.columns)
    for_col=[ x.replace('-','/') for x in a_list]
    
    # 按照情况只选择前20列
    tt.columns=for_col
    tt=tt.ix[:,0:20]
    
    # 替换行索引
    b_list=list(tt.index)
    for_index=['20181213{0:0>4}'.format(x) for x in b_list]   #使用列表推导和format函数改变索引
    tt.index=for_index
    
    
    
    


    查看重复值

    然后对表格的数据进行校验。看是否存在重复值:

    tt.drop_duplicates(keep=False,inplace=True)
    # 重复的是科目\时间  2017-09-30  2017-06-30  2017-03-31  2016-12-31 把重复的值全部删除
    print(tt[tt.duplicated(keep=False)])
    # 检验。现在没有重复值
    

    寻找异常值

          异常值分为两种:一种是非法数据,比如本来应该是数字列的中间夹杂着一些汉字或者是符号;第二种是异常数据,异乎寻常的大数值或者是小数值。

          我故意在两个数字列的空值中插入两个非法值,一个是“E”一个是“-”。然后通过程序找出异常值并修改成0

    def turning(x):
        if type(x)==str:
            if x[-2:]=='亿元' or x[-2:]=='亿股':
                x=float(x[:-2])*100000000
            elif x[-2:]=='万元':
                x=float(x[:-2])*10000
            elif x[-1:]=='元':
                x=float(x[:-1])
        return x
    tt=tt.applymap(turning)
    
    # 数字列中有无字符。可以看到表格从第一列开始才有数字。判断某一列数据是否全部是int或者float。如不是打印出来
    for i in range(1,len(tt.columns)):
        if ~tt.ix[:,i].apply(lambda x:isinstance(x,(int,float))).all():
            print(tt[~tt.ix[:,i].apply(lambda x:isinstance(x,(int,float)))])
            print(i)
    
    # 找到两个非法值。需要及时处理
    tt.ix['201812130091':'201812130096',:]=tt.ix['201812130091':'201812130096',:].replace('E',0).replace('-',0)
    print (tt.ix['201812130091':'201812130096',:])

    去除空格

    注意只有对字符串类别的列才可以进行去除空格的操作。

    tt.ix[:,0]=tt.ix[:,0].str.strip()
    

    最后清洗的结果如下:







    
    





    展开全文
  • mapreduce项目 数据清洗

    2018-10-10 17:00:19
    mapreduce基本数据读取,通俗易懂。 此项目情景为,遗传关系族谱。 (爷爷 、父母 、孩子) 经典案例
  • apache日志hadoop大数据分析项目:清洗数据核心功能解说及代码实现
  • 一、数据清洗的目的  简单的来说不干净的数据会导致分析过程中的错误以及结果的错误。举个简单的例子,以前我们上学时做柱形图这种类型的图时,如果大部分数据集中在某个区间而一两个数据离得很远,如果不去除这一...

    一、数据清洗的目的

             简单的来说不干净的数据会导致分析过程中的错误以及结果的错误。举个简单的例子,以前我们上学时做柱形图这种类型的图时,如果大部分数据集中在某个区间而一两个数据离得很远,如果不去除这一两个有问题的数据,那整体的图画出来就会有问题,不能反映数据的情况。

    二、数据科学的过程

    1. 问题陈述

          清楚的了解你要解决的问题是什么。

    2. 数据的收集与存储

          从哪里收集数据?收集来的数据在哪里存放?格式又是什么?

    3. 数据清洗

          简单的查看一下数据,有哪些地方需要处理?有没有需要删除的?有没有需要转换的?怎样调整数据才能适应接下来的分析和挖掘?

    4. 数据分析和机器学习

         数据需要进一步进行怎样的处理?使用什么样的算法?运用什么公式?怎样的顺序?

    5. 数据展现和可视化

         数据的处理结果该怎样呈现出来?采用什么样的图或表能更加直观的达到说明问题的效果?有没有更好的可视化方案?有没有替代方案?

    6 问题决议

        第一步中问题的答案究竟是什么?数据处理的结果还有哪些方面的不足?这个方法能彻底解决问题么?还有没有别的办法?接下来要做的又是什么?

           其实在处理这些问题时步骤大概按照这六步走,但是划分也不那么绝对。比如你在数据收集的时候就可以进行清洗,处理之后还要继续清洗,等等;步骤有时会有交叉,但最终的目的都是一样的。

    三、记录数据处理的过程

            认真记录下曾经按什么样的顺序处理过什么样的事情很有必要,因为哪怕再小的项目,如果你不记录,几个月之后你可能就不知道当时对数据干了啥,也说不清其中的原由,更谈不上重新做一次。

           解决这个问题最好的办法就是留一份工作日志。这个日志应该包含链接、屏幕截图、复制粘贴关键的命令、解释这样处理原因的关键性文字等等。如果你对版本控制系统比较熟的话,可以使用Git或SVN来记录处理的过程。

    四、基础知识——格式、类型与编码

    1. 文件格式

          在网上收集数据的时候可能会遇到以下几种情况:

    • 数据可以以文件的形式下载
    • 数据可以通过交互界面访问,比如利用查询接口来访问数据库系统
    • 数据通过持续不断的流的形式进行访问
    • 通过应用程序接口(API)来访问

          在计算机中广义存在的两种文件类型是文本文件和二进制文件;简单来说,平时我们能看懂的记事本、表格等都是文本文件,计算机能读懂但由非人类可读字符组成的文件是二进制文件。

    1.1 常见的文本文件格式

          最常见的文本文件类型主要有三种:

    • 分隔格式(结构化数据)
    • JSON格式(半结构化数据)
    • HTML格式(非结构化数据)

    1.2 分隔格式

          分隔文件就是文本格式文件,这种文件行和列由统一的符号分隔;分隔的字符就叫做分隔符。最常见的分隔符就是制表符和逗号,这两种方案分别出现在制表符分隔值(TSV)和逗号分隔值(CSV)中。

          1.2.1  查看不可见的分隔字符

                    分隔文件中的换行符、回车符等都是不可见的,如何让他们可见呢?比如用notepad++打开的文件,要显示分隔符可以这么操作:视图 --> 显示符号 -->  在 显示所有字符 处打勾就可以了;其它的软件文本行都可以找到各自的方式查看。

          1.2.2  封闭错误数据

                   举个例子:在一个以 “ , ” 为分隔符的分隔文件中,如果有一个工资数据的格式是这样 “ 76,888 ” ,这个逗号是工资中的千位分隔符,但在此分隔文件中,逗号又是分隔符,因此引起错误;处理方案主要有以下两种:

    • 创建分隔文件时检查确保没有引起歧义的逗号(也就是说删掉上面工资中的逗号,不使用那种格式的工资)
    • 使用额外的符号来对数据进行封闭处理(比如上面的工资数据用引号包含,将里面的逗号封闭起来)

          1.2.3  字符转义

                  如果字符本身就含有引号,那么此时再用引号进行封闭显然不合适;也许你会说可以用单引号、双引号进行区别,但是单引号在英文中又与名词所有格冲突,因此也不算是最好的办法,遇到这种问题最好的解决办法就是使用转义字符:

                   比如“ light \”red blue\“ ”,这样,通过  \ 反斜杠对双引号进行转义就不会与外面的双引号又冲突了。

          1.2.4  JSON格式

                   JSON格式的数据是当前较为流行的数据格式,它是一个半结构化的数据,使用键值对的字典类型格式,数据的顺序无关紧要,还可以缺失某些值,它还支持多层级结构和多值属性

           1.2.5  HTML格式

                   HTML文件是一种网页文件,非格式化的;里面包含很多冗余的数据,针对这种数据目前也有很对提取办法,网络信息爬虫就是专门针对这种网页数据爬取的,各式各样的提取规则以后会涉及到。

    2. 归档文件

          归档文件就是内部包含(文本文件或二进制文件)等许多文件的独立文件。

    磁带归档(TAR)文件:

          通常以.tar为后缀名,这种文件一般只归档并不会压缩;通常windows系统下直接使用相应的软件就可以归档了,而linux系统下则需要相应命令:tar cvf name.tar name1.csv name2.csv (创建归档文件) tar xvf name.tar(打开归档文件)    

    3. 压缩、解压文件

           压缩文件其实与归档文件类似,只是后缀名不同,一般ZIP、RAR文件既归档又压缩。windows下压缩、解压都很方便,最主要的是利用程序来压缩解压,这个以后再探讨。Linux下的压缩解压命令可以查看我之前的博客LINUX常用命令

           压缩、解压的格式有非常多的选择,影响我们选择压缩、解压方式的主要有以下三个关键因素:

    • 压缩和解压缩的速度
    • 压缩比率(文件到底能缩减多少)
    • 压缩方案的互操作性(文件容易解压吗?)

            对于上面的因素考虑,一般没有定论,只有一些经验参考:gzip压缩和解压缩都比较快,但一般windows上没有;bzip2压缩的文件比gzip和zip都要小,但花费的时间稍微长一点,windows上同样也很少有这个;zip在各系统上都存在,压缩和解压速度也不赖,只是压缩比率不怎么高;rar是windows上独有的归档解决方案,归档速度不是特别理想。

    4. 数据类型、空值与编码

    4.1 数据类型

          数据类型基本上其它地方介绍的非常多而且详细,这里就不多做介绍,基本上在数据处理上接触到的最多数据类型为:数字、日期、字符串。

    4.2 数据类型间的相互转换

          数据转换在数据清洗过程中必不可少,但是在介绍具体的转换之前我们先介绍一下转换过程中数据损耗的问题。

          数据损耗

           数据损耗有时会发生有时不会发生,有时的数据损耗是允许的,有时却不被允许,这就要看具体的情况来对待;一般损耗的风险因素有以下两个:

    • 同种类型间不同范围的转换:比如200长的字符串转换到100长的字符串上,超过长度的都会被截取掉;最容易忽略的就是数字类型上,比如长整型转换为整型,等等;
    • 不同精度间的转换:比如原本四位精度的数字转为两位精度,那么多余的精度信息将会被舍弃,造成数据的丢失。

    4.3 数据类型间相互转换的策略

          SQL级别的类型转换

           例子一:将MySQL数据格式化为字符串

           比如数据库中查到一条日期数据 2000-01-21 04:51:00,我们希望得到4:51am,Friday,January 21,2000,我们可以这样操作:

    select concat( 
                  concat(hour(date),':',minute(date)),
                  if (hour(date) < 12, 'am', 'pm'),
                  concat(', ', dayname(date), ', ', monthname(date), ' ', day(date), ', ', year(date))
                  )
    from table_name where mid=21;

    或者使用date_format()函数:

    select date_format(date, '%1:%i%p, %W, %M %e, %Y') from tbl_name where mid=21;
    用这个语句查出的唯一不同是AM是大写的,只需要将am那一部分拆开转化为小写再用concat函数链接即可。

          例子二:从字符串类型转换到MySQL日期类型

          比如有一段字符串“ ....>....>.....>sent:Thursday, August 17, 2000 6:29 PM>...."是这样子的,我们要提取里面的日期并转化为MySQL的datetime类型:

    select str_to_date(
                       substring_index(
                                       substring_index(reference, '>', 3),
                                       'sent:',
                                       -1),
                       '%W, %M,%e, %Y, %h:%i %p')
    from referenceinfo where mid =22;
    substring_index()函数按指定字符对字符串进行分割,并得到指定位置的字符串;
    str_to_date()函数就是将字符串格式的日期转化为datetime类型。

           例子三:将字符串类型转换数据转化为小数

           比如有某个字符串 ” .......$18.47/bbl....“ ,现在需要提取字符串里面的数字并转化为小数:

    select convert(substring_index(
                                   substring(body,locate('$', body) + 1),
                                   '/bbl',
                                   1),
                  decimal(4,2)
                  ) 
    as price from tbl_name where body like '%$%' and body like '%/bbl%' ;
    substring()函数定位,substring_index()函数分割,convert()函数将字符转换为数字

          文件级别的类型转换

           例子一:excel中的类型转换

           一般这种表格中可以直接设置单元格格式,修改数据的类型;使用函数判断,例如=istext(A2)就可以判断A2中的内容是不是文本,是返回TRUE,不是则返回FALSE;同样isnumber()函数也是如此。

           另外,还有这样的转换方式 =TEXT(A4, "yyyy-mm-dd"),这样就可以直接将数字类型的日期转换为字符串类型的。

    4.4 隐藏在数据森林中的空值

           在数据处理时有一些是我们不需要的数据,比如0值、空值和null值,这三种值不进行处理往往会导致一些错误,并且这三种值是不同的,在具体的情景下处理方式不一。

           

           0值是最容易处理的空值,因为它具有一定的意义;可以拿他进行排序、比较、数学运算(不能当除数);有了这些基础,0值处理起来就很容易了。

           

           与0值相比,空值的处理要难一些,因为它在不同的情况下产生的含义不同。比如”“两个引号紧挨着,这时可以说他为空值,” “两个引号之间有个空格,这时可以说它是空格;需要注意这些问题。

           null

          null不等于任何值,甚至是它本身。只有在不希望出现任何数据的情况下才应该使用NULL。一般对于null值的处理通常都是用指定的值去替换掉(一般用0),不过这种替换应该做好规划,使它有利于接下来的数据处理,并做好记录一面以后遗忘。

    4.5 字符编码

          不管是数据库里数据还是文本文件内中的数据,在存储时都采用了一定的编码解码格式,当使用不同的编码格式来对文件或数据库内容进行读取时就会产生编码冲突,因此要通过调整编码使之一致,或使用向下兼容的编码类型。

    展开全文
  • ​点击关注 异步图书,置顶公众号每天与你分享 IT好书 技术干货 ...在对数据进行分析之前,数据科学家首先要做的是从这些数据源获取各种格式的数据,并对这些数据进行清洗,去除其中的噪声。今天推荐的图书是《J...
  • 我们可以根据IF+COUNTIF函数清洗数据,然后在用求和函数求和; 思路: 大概分2步走,第一步把数据清洗一下, 第二步再根据清洗之后的数据统计; 首先我们构建辅助列,在C2单元格中输入: =IF(COUNTIF(A2,“衬衫”)...
  • 数据清洗

    千次阅读 2020-08-18 16:32:04
    我如何清洗数据 我怎样发掘数据的根本规律 第二讲 数据管理前的必备工作 所需数据的大概样貌(教育回报) 1.时间:跨期,尽可能新 2.地点:有全国代表性 3.群体:至少包含劳动年龄人口 4.变量:劳动收入、教育程度、...
  • 数据清洗数据集成

    千次阅读 2021-01-02 21:20:58
    文章目录数据清洗与数据集成(随笔)一、数据清洗数据清洗的意义数据清洗的目的数据异常的不同类型1.语法类异常2.语义类异常3.覆盖类异常数据质量的评价标准1.正确性2.唯一性数据清洗的任务和过程数据清洗的操作数据...
  • 数据清洗数据筛选

    2020-12-21 12:10:11
    'D:\\Jupyter\\notebook\\Python数据清洗实战\\数据清洗数据表处理' os.chdir('D:\\Jupyter\\notebook\\Python数据清洗实战\\数据') df = pd.read_csv('baby_trade_history.csv', encoding=
  • 过拟合的解决方案:1、重新清洗数据2、增加训练数据量3、损失函数加正则化项(详细可看正则化惩罚项文章链接) 不同惩罚系数下的拟合结果对比如图,惩罚系数λ=0.001伸出的爪子本质就是过拟合了,λ=0.1泛...
  • 用MapReduce清洗数据

    万次阅读 2017-03-26 20:06:00
    用MapReduce清洗数据 接触Hadoop平台大半年了,还从来没写过一次MapReduce的业务代码,刚好赶上清洗数据的业务需求,写了一个简单的MapReduce类,用来清洗数据,顺手把一个简单的MapReduce工作流的代码框架记录...
  • 一个spark清洗数据的demo

    千次阅读 2018-07-30 10:52:39
    import sys reload(sys) sys.setdefaultencoding('utf8') import re import json from pyspark.sql import SparkSession from pyspark.sql import Row from pyspark.sql....from pyspark.sql.t...
  • 无论是做机器学习还是做数据分析,都离不开获取数据后的第一步-数据清洗工作。据统计,数据清洗工作占据整个工作时间百分之50左右,有的甚至能达到百分之70。下面我将介绍我进行数据清洗得思路流程。 数据清洗整体...
  • 数据清洗ppt-181119.zip

    2020-12-04 11:18:02
    而狭义上的数据清洗特指在构建数据仓库和实现数据挖掘前对数据源进行处理,使数据实现准确性、完整性、一致性、唯一性和有效性以适应后续操作的过程。一般而言,凡是有助于提高信息系统数据质量的处理过程,都可认为...
  • csv文件读写 pandas内置了10多种数据源读取函数,常见的就是CSV和EXCEL 使用read_csv方式读取。结果为dataframe格式 ...'D:\\Jupyter\\notebook\\Python数据清洗实战\\数据清洗之文件读写' os.chdir('D
  • 在使用python进行数据分析时,如果数据集中出现缺失值、空值、异常值,那么数据清洗就是尤为重要的一步,本文将重点讲解如何利用python处理缺失值创建数据为了方便理解,我们先创建一组带有缺失值的简单数据用于讲解...
  • 数据清洗与准备 (数据分析)

    千次阅读 2022-03-16 14:22:36
    第7章 数据清洗与准备 7.1处理缺失值 对于数值型数据,pandas使用浮点值NaN(Not a Number来表示...当清洗数据用于分析时,对缺失数据本身进行分析以确定数据收集问题或数据丢失导致的数据偏差通常很重要。 Python.
  • 清华大学出品的大数据-数据清洗课程学习课件,非常适合大学生和职场认识学习,也适合老鸟复习回顾,完全可用于自学入门,很经典好用的PPT课件哦~
  • 3、数据清洗: ① comment,price两个字段清洗成数字 ② 清除字段缺失的数据 ③ commentlist拆分成三个字段,并且清洗成数字 4、结果存为.pkl文件 第二条和3.2(清除字段缺失的数据)的完成建立在3.1和3.3的基础之上,...
  • 1、新建job 2、插入shell脚本 需要设置环境变量,E:\Anaconda3;E:\Anaconda3\Scripts;E:\Anaconda3\Library\bin 需要添加.py文件默认打开方式为python.exe 3、新建转换 首先设置变量以便于动态读取时间戳和动态...
  • python数据清洗

    2018-07-22 19:22:13
    本资源部分参考《干净的数据 ——数据清洗入门与实践》,但更多的都是个人撰写。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 113,405
精华内容 45,362
关键字:

清洗数据