阅读 352

python数据去重和缺失值处理(python删除缺失值)

当我们有从网上爬下来的新鲜数据QQ图片20211119153946.png标题 name, 作者 author, 评分 grade, 统计有多少人看过 stats

读取数据

使用pandas的 read_csv 方法读取数据, usecols可以选择某些指定的列进行读取,默认是所有列

import pandas as pd
df = pd.read_csv("foodInfo.csv", usecols=['name', 'author', 'grade', 'stats'])复制代码

可以输出前五条看看效果 print(df.head())

去重

print(df.duplicated().value_counts())复制代码

屏幕截图 2021-11-19 155901.png

通过输出的数据我们可以看到一共有103条数据,其中有一条重复的,我们也可以通过df.duplicated()查看是哪一条是重复的数据

df.drop_duplicates(keep='first', inplace=True)复制代码

drop_duplicates 去重根据不同的情况有3个参数

subset : 列名数组,默认是全选,也就是如果指定的那几列的数据都重复了才进行删除

keep :默认是first, first是只保留第一次出现的重复行, last是只保留最后一次出现的重复行, False是删除所有的重复行

inplace : 为True就是在原数据上直接更改, 为False就是需要变量接收的

缺失值处理

# 查看哪一列有缺失值
print(df.isnull().any())

# 定位到有缺失值的那一列
data = df[df.isnull().values==True]复制代码

屏幕截图 2021-11-19 161310.png

删除缺失值 dropna

df.dropna(how='any', inplace=True)复制代码

axis :0是行,1是列,默认是行

subset :对特定的列进行缺失值删除处理

how : any只要出现1个缺失值就删除整行,all所有列都是缺失值才删除

thresh : 缺失值的数量标准,达到这个阈值才会删除

inplace : 为True就是在原数据上直接更改, 为False就是需要变量接收的

填充缺失值 fillna

我是指定一个值去替换缺失值,将数据里面这个作者有评分的平均分填在缺失值上

def fillByAuthor(author):
    count = 0
    sum = 0.0
    for i in range(len(df)):
        if math.isnan(df.grade[i]):
            continue
        if df.author[i] == author:
            count = count + 1
            sum = sum + df.grade[i]
    return round(sum / count, 2)复制代码
a = fillByAuthor('王光光光光')
df.fillna(a, inplace=True)复制代码

inplace : 为True就是在原数据上直接更改, 为False就是需要变量接收的

method : pad/ffill:用前一个非缺失值去填充该缺失值; backfill/bfill:用下一个非缺失值填充该缺失值

None:指定一个值去替换缺失值(缺省默认这种方式)

limit :限制填充个数

axis:修改填充方向

另存为

df.to_csv("clean_data.csv")


作者:d粥
链接:https://juejin.cn/post/7032197455957458981


文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐