预览数据

这次我们使用 Artworks.csv ,我们选取 100 行数据来完成本次内容。具体步骤:

  1. 导入 Pandas
  2. 读取 csv 数据到 DataFrame(要确保数据已经下载到指定路径)

DataFrame 是 Pandas 内置的数据展示的结构,展示速度很快,通过 DataFrame 我们就可以快速的预览和分析数据。代码如下:

import pandas as pd​df = pd.read_csv('../data/Artworks.csv').head(100)df.head(10)

统计日期数据

我们仔细观察一下 Date 列的数据,有一些数据是年的范围(1976-1977),而不是单独的一个年份。在我们使用年份数据画图时,就不能像单独的年份那样轻易的画出来。我们现在就使用 Pandas 的 value_counts() 来统计一下每种数据的数量。

首先,选择要统计的列,并调用 value_counts():

df['Date'].value_counts()

日期数据问题

Date 列数据,除了年份是范围外,还有三种非正常格式。下面我们将这几种列出来:

  • 问题一,时间范围(1976-77)
  • 问题二,估计(c. 1917,1917 年前后)
  • 问题三,缺失数据(Unknown)
  • 问题四,无意义数据(n.d.)

接下来我们会处理上面的每一个问题,使用 Pandas 将这些不规则的数据转换为统一格式的数据。

问题一和二是有数据的只是格式上欠妥当,问题三和四实际上不是有效数据。针对前两个问题,我们可以通过代码将据格式化来达到清洗的目的,然而,后两个问题,代码上只能将其作为缺失值来处理。简单起见,我们将问题三和四的数据处理为0。

处理问题一

问题一的数据都是两个年时间范围,我们选择其中的一个年份作为清洗之后的数据。为了简单起见,我们就使用开始的时间来替换这样问题的数据,因为这个时间是一个四位数的数字,如果要使用结束的年份,我们还要补齐前两位的数字。

首先,我们需要找到问题一的数据,这样我们才能将其更新。要保证其他的数据不被更新,因为其他的数据有可能是已经格式化好的,也有可能是我们下面要处理的。

我们要处理的时间范围的数据,其中包含有“-”,这样我们就可以通过这个特殊的字符串来过滤我们要处理的数据,然后,通过 split() 利用“-”将数据分割,将结果的第一部分作为处理的最终结果。

代码如下

row_with_dashes = df['Date'].str.contains('-').fillna(False)for i, dash in df[row_with_dashes].iterrows():df.at[i,'Date'] = dash['Date'][0:4]df['Date'].value_counts()

 

处理问题二

问题二的数据体现了数据本身的不准确性,是一个估计的年份时间,我们将其转换为年份,那么,就只要保留最后四位数字即可,该数据的特点就是数据包含“c”,这样我们就可以通过这一特征将需要转换的数据过滤出来。

row_with_cs = df['Date'].str.contains('c').fillna(False)for i,row in df[row_with_cs].iterrows():df.at[i,'Date'] = row['Date'][-4:]df[row_with_cs]

 

处理问题三四

将这问题三四的数据赋值成初始值 0。

df['Date'] = df['Date'].replace('Unknown','0',regex=True)df['Date'] = df['Date'].replace('n.d.','0',regex=True)df['Date']

代码整合

mport pandas as pd​df = pd.read_csv('../data/Artworks.csv').head(100)df.head(10)​df['Date'].value_counts()​row_with_dashes = df['Date'].str.contains('-').fillna(False)for i, dash in df[row_with_dashes].iterrows():df.at[i,'Date'] = dash['Date'][0:4]df['Date'].value_counts()​row_with_cs = df['Date'].str.contains('c').fillna(False)for i,row in df[row_with_cs].iterrows():df.at[i,'Date'] = row['Date'][-4:]df['Date'].value_counts()​df['Date'] = df['Date'].replace('Unknown','0',regex=True)df['Date'] = df['Date'].replace('n.d.','0',regex=True)df['Date'].value_counts()

更多关于数据清洗的内容可以关注知乎上的专栏“数据清洗”

知乎 数据清洗- Pandas 清洗“脏”数据(三)

转载于:https://www.cnblogs.com/BoyceYang/p/8202366.html

[数据清洗]- Pandas 清洗“脏”数据(三)相关推荐

  1. 数据清洗- Pandas 清洗“脏”数据(一)

    概要 准备工作 检查数据 处理缺失数据 添加默认值 删除不完整的行 删除不完整的列 规范化数据类型 必要的转换 重命名列名 保存结果 更多资源 Pandas 是 Python 中很流行的类库,使用它可 ...

  2. 如何使用 Pandas 清洗二手房数据并存储文件

    目录 一.实战场景 二.知识点 python 基础语法 python 文件读写 pandas 数据清洗 三.菜鸟实战 清洗前的文件 读取源文件 对二手房数据进行清洗 清洗完成后保存到文件 运行结果 运 ...

  3. pandas清洗Kobe数据

    清洗Kobe数据 import pandas as pd import matplotlib.pyplot as plt import matplotlib.cm as cm import numpy ...

  4. Pandas 常用函数 数据整理与清洗

    当有一定数据积累时,可以对数据进行较为详细的分析,数据处理一般分为三个阶段:数据整理与清洗.数据分析与建模.数据可视化与制表,其中Pandas 是处理数据最常用的工具. 文章目录 0.数据结构 1.读 ...

  5. 使用pandas清洗携程旅游数据

    1.导入模块 from pandas import DataFrame,Series import pandas as pd import numpy as np from fuzzywuzzy im ...

  6. pandas预处理案例——数据分析师招聘数据清洗实战

    数据分析师招聘数据清洗实战 数据导入并查看 重复数据处理 异常值处理 缺失值处理 数据是数据分析师的招聘薪资,主要内容是进行数据读取,数据概述,数据清洗和整理 数据获取:链接:https://pan. ...

  7. pandas 索引_Pandas学习笔记03数据清洗(通过索引选择数据)

    点击上方"可以叫我才哥"关注我们 今天我们就在jupyterlab里进行操作演示,本次推文内容主要以截图为主了. 有兴趣的可以公众号回复 "索引" 获取 演示原 ...

  8. juypter 不省略_常用pandas清洗数据命令

    pandas清洗数据常用命令 安装jupyter notebook 启动 jupyter 可以在里面编写python代码 1. 加载数据df = pd.DataFrame(pd.read_excel( ...

  9. 数据清洗基础—Kettle 数据转换与清洗、数据抽取操作

    实验一:数据清洗基础-Kettle 数据转换与清洗.数据抽取操作 1 实验题目:Kettle 数据转换与清洗.数据抽取操作 2实验目和要求 2.1熟悉 Kettle 的开发环境,并掌握 Kettle ...

  10. Hive项目之谷粒影音:ETL清洗原数据、Hive统计视频观看数top10、视频类别top、视频观看数top其所属类别、类别流量top、类别热度top、上传视频用户数量top、类别视频观看top

    Hive实战之谷粒影音 项目数据下载地址: guiliVideo.zip谷粒影音项目视频表.用户表 包含内容: 两个文件夹 User表中的74702条数据 video表中5张表,每张表中都有多条数据 ...

最新文章

  1. 禁止Win7系统自动安装驱动程序
  2. mysql读书笔记---mysql safe update mode
  3. mysql返回前2行_取得前一次MySQL操作所影响的记录行数
  4. 自己设计的一个打字平台
  5. 创建数据库、表以及索引
  6. 我的Go+语言初体验——Go+语言构建神经网络实战手写数字识别
  7. “卖键盘的被键盘侠喷了” | 社交网络的戾气怎么这么重
  8. dubbo入门级梳理
  9. Java使用FTP上传文件被损坏的问题
  10. 公众号网页能调用银联支付么_支付宝新一代刷脸支付硬件发布,自带“轮子”,三天就能开发小程序...
  11. 线性(欧拉)筛法筛素数表
  12. ONVIF网络摄像头(IPC)客户端开发—最简RTSP客户端实现
  13. Python中的numpy库介绍!
  14. 苹果手机各种尺寸详细表以及iPhoneX、iPhone 11、iPhone 12、iPhone 13 屏幕适配,状态栏高度问题
  15. 逻辑电路是计算机学的吗,下列属于组合逻辑电路的是( )。
  16. 表格的属性、表格的合并及表单
  17. github Your account has been flagged.提示情况的解决办法
  18. leetcode简单之1677.发票中的产品金额*
  19. 使用Scrum进行敏捷项目管理的10个简单步骤
  20. Vue.extend构造器

热门文章

  1. c#绝对值函数图像_图像处理评价指标之模糊度、清晰度(待更新)
  2. 修改服务器后账套不存在,金蝶KIS专业版环境配置常见问题
  3. 区块链 xuperchain 同步模式 纯异步模式 异步阻塞模式 怎么启动
  4. 区块链 什么是RLP编码
  5. Hyperledger Fabric教程(7)--启动fabric区块链网络 如何查看节点日志
  6. apache2: unrecognized service
  7. thinkphp去重,distinct、group
  8. jenkins linux虚拟机,Linux虚拟机安装Jenkins并实现部署
  9. (一)UML语言概述
  10. 【mysql】扩展-常用函数