数据清洗指南完整分享
Datawhale
共 1585字,需浏览 4分钟
· 2020-12-07
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')
评论
展讯平台手机重启问题分析指南
和你一起终身学习,这里是程序员Android经典好文推荐,通过阅读本文,您将收获以下知识点:一、 User 版本 默认开启 sysdump 方法二、插入SD卡 抓取Sysdump log三、 sysdump log 分析四、展讯平台抓取重启 串口log的方案五、展讯平台判断重启类型六、展讯平台关闭
程序员Android
0
21.3K star!推荐一款可视化自动化测试/爬虫/数据采集神器!功能免费且强大!
【温馨提示】由于公众号更改了推送规则,不再按照时间顺序排列,如果不想错过测试开发技术精心准备的的干货文章,请将测试开发技术设为“星标☆”,看完文章在文尾处点亮“在看”!大家好,我是狂师!在大数据时代,信息的获取与分析变得尤为重要。对于开发者、数据分析师乃至非技术人员来说,能够高效地采集网络数据并进行
测试开发技术
4
2024跨屏营销指南
下载报告去公众号:硬核刘大 后台回复“ 跨屏营销”,即可下载完整PDF文件。更多报告内容,可加微信:chanpin628 领取。(ps:加过微信:yw5201a1 的不要再加,分享的内容一样,有一个号就行。)申明:报告版权 勾正科技&MMA
产品刘
0
小美播报|3月IPTV数据排行榜发布!
小美播报3月IPTV数据排行榜:《与凤行》登顶连续剧榜榜首拥有4.05亿家庭用户的中国IPTV平台已经成为国内主流视听平台,IPTV平台数据对视听产业各环节都具有重要意义。截至2024年4月,全国已有29个省级IPTV加入“看中国”,覆盖全国超2.25亿户家庭、辐射近7亿人。点击查看详情湖南广电与马
流媒体网
0
分享几个前端中好玩且有用的开源工具,总有一个适合你!
点击上方 前端Q,关注公众号回复加群,加入前端Q技术交流群正所谓差生文具多,作为前端的我们,拥有几个合适的工具和网站可以很有效的提高我们的工具效率,还会有一些很有趣的网站可以在我们敲 bug 累了的时候供我们娱乐,接下来我就和大嘎分析一下我在用的一些工具和网站。聚合API该网站提供了大量的
前端Q
0
分享一份抓取某东商品名称、价格和评论数的代码
点击上方“Python共享之家”,进行关注回复“资源”即可获赠Python学习资料今日鸡汤芳草已云暮,故人殊未来。大家好,我是皮皮。一、前言前几天在Python白银交流群【邮递员】问了一个Python网络爬虫的问题,提问截图如下:代码如下:import requestsfrom
IT共享之家
0
python读取一个文件里面几百个csv数据集然后按照列名合并一个数据集
点击上方“Python爬虫与数据挖掘”,进行关注回复“书籍”即可获赠Python从入门到进阶共10本电子书今日鸡汤但使龙城飞将在,不教胡马度阴山。大家好,我是Python进阶者。一、前言前几天在Python最强王者交流群【FiNε_】问了一个Python自动化办公,问题如下:python 读取一个文
Python爬虫与数据挖掘
3