[数据清洗]- Pandas 清洗“脏”数据(三)
预览数据
这次我们使用 Artworks.csv ,我们选取 100 行数据来完成本次内容。具体步骤:
- 导入 Pandas
- 读取 csv 数据到 DataFrame(要确保数据已经下载到指定路径)
DataFrame 是 Pandas 内置的数据展示的结构,展示速度很快,通过 DataFrame 我们就可以快速的预览和分析数据。代码如下:
import pandas as pddf = 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 pddf = 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 清洗“脏”数据(三)相关推荐
- 数据清洗- Pandas 清洗“脏”数据(一)
概要 准备工作 检查数据 处理缺失数据 添加默认值 删除不完整的行 删除不完整的列 规范化数据类型 必要的转换 重命名列名 保存结果 更多资源 Pandas 是 Python 中很流行的类库,使用它可 ...
- 如何使用 Pandas 清洗二手房数据并存储文件
目录 一.实战场景 二.知识点 python 基础语法 python 文件读写 pandas 数据清洗 三.菜鸟实战 清洗前的文件 读取源文件 对二手房数据进行清洗 清洗完成后保存到文件 运行结果 运 ...
- pandas清洗Kobe数据
清洗Kobe数据 import pandas as pd import matplotlib.pyplot as plt import matplotlib.cm as cm import numpy ...
- Pandas 常用函数 数据整理与清洗
当有一定数据积累时,可以对数据进行较为详细的分析,数据处理一般分为三个阶段:数据整理与清洗.数据分析与建模.数据可视化与制表,其中Pandas 是处理数据最常用的工具. 文章目录 0.数据结构 1.读 ...
- 使用pandas清洗携程旅游数据
1.导入模块 from pandas import DataFrame,Series import pandas as pd import numpy as np from fuzzywuzzy im ...
- pandas预处理案例——数据分析师招聘数据清洗实战
数据分析师招聘数据清洗实战 数据导入并查看 重复数据处理 异常值处理 缺失值处理 数据是数据分析师的招聘薪资,主要内容是进行数据读取,数据概述,数据清洗和整理 数据获取:链接:https://pan. ...
- pandas 索引_Pandas学习笔记03数据清洗(通过索引选择数据)
点击上方"可以叫我才哥"关注我们 今天我们就在jupyterlab里进行操作演示,本次推文内容主要以截图为主了. 有兴趣的可以公众号回复 "索引" 获取 演示原 ...
- juypter 不省略_常用pandas清洗数据命令
pandas清洗数据常用命令 安装jupyter notebook 启动 jupyter 可以在里面编写python代码 1. 加载数据df = pd.DataFrame(pd.read_excel( ...
- 数据清洗基础—Kettle 数据转换与清洗、数据抽取操作
实验一:数据清洗基础-Kettle 数据转换与清洗.数据抽取操作 1 实验题目:Kettle 数据转换与清洗.数据抽取操作 2实验目和要求 2.1熟悉 Kettle 的开发环境,并掌握 Kettle ...
- Hive项目之谷粒影音:ETL清洗原数据、Hive统计视频观看数top10、视频类别top、视频观看数top其所属类别、类别流量top、类别热度top、上传视频用户数量top、类别视频观看top
Hive实战之谷粒影音 项目数据下载地址: guiliVideo.zip谷粒影音项目视频表.用户表 包含内容: 两个文件夹 User表中的74702条数据 video表中5张表,每张表中都有多条数据 ...
最新文章
- 禁止Win7系统自动安装驱动程序
- mysql读书笔记---mysql safe update mode
- mysql返回前2行_取得前一次MySQL操作所影响的记录行数
- 自己设计的一个打字平台
- 创建数据库、表以及索引
- 我的Go+语言初体验——Go+语言构建神经网络实战手写数字识别
- “卖键盘的被键盘侠喷了” | 社交网络的戾气怎么这么重
- dubbo入门级梳理
- Java使用FTP上传文件被损坏的问题
- 公众号网页能调用银联支付么_支付宝新一代刷脸支付硬件发布,自带“轮子”,三天就能开发小程序...
- 线性(欧拉)筛法筛素数表
- ONVIF网络摄像头(IPC)客户端开发—最简RTSP客户端实现
- Python中的numpy库介绍!
- 苹果手机各种尺寸详细表以及iPhoneX、iPhone 11、iPhone 12、iPhone 13 屏幕适配,状态栏高度问题
- 逻辑电路是计算机学的吗,下列属于组合逻辑电路的是( )。
- 表格的属性、表格的合并及表单
- github Your account has been flagged.提示情况的解决办法
- leetcode简单之1677.发票中的产品金额*
- 使用Scrum进行敏捷项目管理的10个简单步骤
- Vue.extend构造器
热门文章
- c#绝对值函数图像_图像处理评价指标之模糊度、清晰度(待更新)
- 修改服务器后账套不存在,金蝶KIS专业版环境配置常见问题
- 区块链 xuperchain 同步模式 纯异步模式 异步阻塞模式 怎么启动
- 区块链 什么是RLP编码
- Hyperledger Fabric教程(7)--启动fabric区块链网络 如何查看节点日志
- apache2: unrecognized service
- thinkphp去重,distinct、group
- jenkins linux虚拟机,Linux虚拟机安装Jenkins并实现部署
- (一)UML语言概述
- 【mysql】扩展-常用函数