专栏首页SAMshare这份数据清洗checklist,让开发过程更加高效

这份数据清洗checklist,让开发过程更加高效

今日锦囊

特征锦囊:这份数据清洗Checklist,让开发过程更加高效

当我们拿到一批原始数据的时候,有一些我们是必须要执行的套路,也就是一些典型的数据初步分析工作流程,如果有这么一份Checklist,就好像飞机员要起飞前的各项设备检查一样,按照每个关键环节来设计这个备忘录?,让我们在开发过程中更加得心应手!

后台回复“数据清洗”获取高清PDF

01-启动阶段

import os
import pandas as pd
import numpy as np

# 显示当前工作路径
os.getcwd()

# 罗列当前路径下的所有文件
os.listdir()

# 改变工作目录
os.chdir("/PATH/TO/SAMSHARE")

# 初始化基础目录
data_path = './02_data/'
save_path = './03_model/'
output_path = './04_output/'

02-导入数据

# 读取CSV文件
data = pd.read_csv(data_path+'data.csv’, encoding='utf8') #有时候用gbk

# 读取TXT文件
data = pd.read_csv(data_path+'data.txt’, seq='\t', encoding='utf8') #有时候用gbk

# 读取excel文件
data = pd.read_excel(data_path+'data.xlsx')

03-数据结构初探

# 查看DataFrame每个字段的空值情况,数据类型
df.info()

# 查看DataFrame的形状
df.shape

# 查看DataFrame的列名
df.columns

# 查看字段的枚举值数量
df["type"].nunique()

# 查看字段的枚举值
df["type"].unique()

# 查看字段的枚举值统计
df["species"].value_counts()

04-数据空值处理

# 查看空值占比
df.isnull().sum()*100/len(df)

## 丢弃与空值相关的数据 ##
#######################
# 删除所有包含空值的行
df.dropna()

# 删除所有包含空值的列
df.dropna(axis=1)

# 删除全部为空值的列
df.dropna(axis=1, how='all')


## 特殊值替代空值 ##
##################
# 空值全部填充为0
df.fillna(0)

# 修改指定位置的值
df.at[1, "sepal_length"]= 9999

# 用字符串替代空值
df.fillna("data missing")

# 用均值填充
df.fillna(df.mean())

# 用指定列的均值来填充指定列
df["sepal_length"].fillna(df["sepal_length"].mean())

05-基础列操作

# 通过列名选择指定“单列”
df["sepal_length"]

# 通过列名选择指定“多列”
df[["sepal_length", "sepal_width", "petal_length", "spp"]]

# 通过数字选择指定列(需要连续)
df.iloc[:, 2:4]

# 通过数字选择指定列(不需要连续)
df.iloc[:, [1,3,4]]

# 丢弃某列
df.drop("sepal_length", axis=1)

# 添加新列
df['new'] = df["sepal_length"]*2

# 条件判断生成新列
df['newcol'] = ["short" if i<3 else "long" for i in df["sepal_width"]] 

# 枚举值映射转换
df.replace({"Species":{"setosa":1, "versicolor":2, "virginica":3}})

# 计算指定两列的均值
df[["sepal_length", "sepal_width"]].mean()

# 同时计算指定两列的加总和均值
df[["sepal_length", "sepal_width"]].agg([np.sum, np.mean])

# 转置DataFrame
df.T

# 把列名转成List
df.columns.tolist()

# 排序
df.sort_values(by = "sepal_width", ascending = True)

# 改列名
df.rename(columns={"old_name": "new_name"})

06-基础行操作

# 选取指定行的数据
df.iloc[3:10,]

# 通过索引选取指定行的数据
df.loc["index1", "index2"]

# 检索包含 "关键字" 的行
df[df["species"].isin(["setosa"])]

# 根据条件筛选行
df.query('sepal_length>=5') # 方法1
df[df.sepal_length>= 5] # 方法2

# 根据指定内容筛选出符合要求的行
df[df["petal_length"].isin([0.2, 0.3])]

# 多条件筛选符合要求的行
df[(df.sepal_length>1) & (df.species=="setosa") | (df.sepal_width<3)]

# 丢弃某行
df.drop(df.index[1]) 

07-分组操作

# 返回根据字段"species"分组的对象
df.groupby("species")

# 根据"species"分组,返回"sepal_length"的均值
df["sepal_length"].groupby(df["species"]).mean()

# 所有列根据字段"species"分组, 返回sum、mean和std的值 
df.groupby("species").agg([np.sum, np.mean, np.std])

08-关联操作

## merge ##
###########
data = pd.merge(df1,df2,on='key',how='left') # right outer

## concat ##
############
# 上下合并
data = pd.concat([df1,df2])
# 左右合并
data = pd.concat([df1,df2],axis=1)

## join ##
##########
data = df1.join(df2, how='left', lsuffix='_1', rsuffix='_2')

如果你想要获得高清版的PDF,可以通过在公众号《SAMshare》后台回复 数据清洗,即可下载《数据清洗checklist_v1.0.pdf》。

本文分享自微信公众号 - SAMshare(gh_8528ce7b7e80),作者:flora

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-11-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 测试人员正在逐步被自动化取代

    最近这半年,我觉察到,在一线的互联网大圈里,产品研发的工程模式,已在悄悄的发生转变。

    MavenTalker
  • 所有机器学习项目都适用的检查清单

    我正在创建一系列[有价值的项目](https://towardsdatascience.com/howto -build-an- effective-dat-s...

    石晓文
  • 2017 我想要骑着光轮2000去追金色飞贼

    2017 我想要骑着 光轮2000 去 追金色飞贼 一转眼就到了年底,大家都在忙着做盘点,做总结,做计划。 我也来回顾一下,先来复习一下超级个体的成长工具...

    杨熹
  • 干货!TAPD编辑器完整使用攻略

    ? 说到产品经理的基本技能,很多人第一时间都会想到【需求文档】。好的需求文档可以最大限度降低开发人员/设计人员对产品需求的理解难度,保证各部门沟通有序进展。同...

    TAPD敏捷研发
  • 陪你度过漫长岁月:WiFi管家测试一纸芳华诉流年

    就在两小时前,WiFi管家刚刚发布了3.0版本。做完最后一个专项汇报,坐在屏幕前揉了揉肩膀松了口气。一种特别的情绪突然蔓延开来。

    腾讯移动品质中心TMQ
  • 从GITLAB误删除数据库想到的

    昨天,Gitlab.com发生了一个大事,某同学误删了数据库,这个事看似是个低级错误,不过,因为Gitlab把整个过程的细节都全部暴露出来了,所以,可以看到很...

    顶级程序员
  • 从GITLAB误删除数据库想到的

    酷 壳 – CoolShell http://coolshell.cn/articles/17680.html

    用户1908973
  • 从GITLAB误删除数据库想到的

    酷 壳 – CoolShell http://coolshell.cn/articles/17680.html

    用户1908973
  • Foxmail新建文件夹后,邮件连同文件夹都找不到了

    发现这篇文章的阅读量巨高,所以就分享一下:https://kunnan.blog.csdn.net/article/details/43523741

    公众号iOS逆向
  • code review

    也不知code review是从哪年开始流行的,我的职场经历从刚开始完全没有到1对1,再到团队式review

    码农戏码
  • 从微盟“删库”事件来谈谈企业的信息安全伪壁垒

    背景:2月23日19点,我们收到系统监控报警,服务出现故障,随后我们立刻召集相关技术人员进行定位,发现大面积服务集群无法响应,生产环境及数据遭受严重破坏。我们立...

    顾黄亮
  • 思维导图-功能测试应用

      思维导图由英国著名的心理学家东尼?博赞(Tony Buzan)创建,其在上世纪八十年代传入中国。思维导图是一种表达发散思维的图文工具,利用图文并重的形式,提...

    小老鼠
  • Beyond Accuracy:Behavioral Testing of NLP Models with Checklist 论文阅读

    本文主要介绍以及翻译一篇 ACL2020 Best Paper Beyond Accuracy:Behavioral Testing of NLP Models...

    mathor
  • 百度 2021 Lic 机器阅读理解比赛有感

    百度21年语言与智能技术竞赛落下帷幕,本人利用空余时间参加了机器阅读理解的赛道,虽然分数不高,但还是有很多想法想跟大家分享。主要的想法就是围绕「如果造更鲁棒的数...

    NewBeeNLP
  • 「网安新春训练营」限时开放,这个春节一起云充电!

    等保经历了什么样的发展过程?如何理解等保的标准、定级和具体施行过程?在等级保护主题课程中,腾讯安全专家将从理论到实践全景分享等保的知识点,同时还将详细解读网络运...

    腾讯安全
  • DBUA升级至19C NON-CDB

    由于11G已经被Oracle淘汰,不再更新补丁,官方建议升级到最新稳定版 19C,因此了解下升级方式。

    Lucifer三思而后行
  • 大数据ETL实践探索(8)---- 数据清洗的目的,方法

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-NC-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    流川疯
  • 华人学生斩获最佳论文、最佳Demo论文,ACL 2020获奖论文全部揭晓!

    刚刚,ACL 2020颁布了论文方面的奖项,共有1篇最佳论文,2篇最佳论文提名,1篇最佳主题论文,1篇最佳主题论文提名,1篇最佳demo论文,2篇最佳demo论...

    新智元
  • 超越准确性:使用清单对 NLP 模型进行行为测试(cs CL)

    尽管测量保持精度是评估泛化程度的主要方法,但它通常高估了 NLP 模型的性能,而评估模型的替代方法要么侧重于单个任务或特定行为。受软件工程行为测试原理的启发,我...

    Donuts_choco

扫码关注云+社区

领取腾讯云代金券