栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

缺失数据处理,常见数据清洗之空值替换【Python习题】(保姆级图文+实现代码)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

缺失数据处理,常见数据清洗之空值替换【Python习题】(保姆级图文+实现代码)

目录
    • 题目
      • 描述‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬
      • 输入格式‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬
      • 输出格式‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬
      • 数据集
      • 示例 1‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬
    • 思路
      • 朴实无华的实现空值替换(只有这种可以过测试点,下面两种答案对的,但是过不了判题系统)
      • np实现实现空值替换
      • pandas实现空值替换
    • 代码
      • 朴实无华的实现空值替换
      • np实现实现空值替换
      • pandas实现空值替换
    • 实现效果
    • 总结


主要内容是校设课程的习题和课外学习的一些习题。

欢迎关注 『Python习题』 系列,持续更新中
欢迎关注 『Python习题』 系列,持续更新中

题目 描述‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

附件文件中存在一些缺失数据,请找出这些缺失值并用输入的字符串 s 来替换。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

输入格式‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

输入一个字符串s‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

输出格式‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

处理结果以二维列表形式输出,元素为原文件的每一行切分成的列表‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

数据集

filldata.csv

,,20.76249006,0.000168044,,,18.9104994,0.08860522
,,20.77301274,0.000149807,,,18.92102208,0.086064377
,,20.78353541,0.00013318,,,18.93154475,0.083365648
,,20.79405809,0.000118071,,,18.94206743,0.080528602
,,20.80458076,0.000104387,,,18.9525901,0.077573307
,,20.81510343,9.20E-05,,,18.96311277,0.07452009
,,22.33036852,0,,,18.97363545,0.071389313
,,,,,,18.98415812,0.068201145
,,,,,,18.9946808,0.064975352
,,,,,,19.00520347,0.061731102
,,,,,,19.01572615,0.058486784
,,,,,,19.02624882,0.055259852
,,,,,,19.03677149,0.052066246
示例 1‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

输入:

a	

输出:

[['a', 'a', '20.76249006', '0.000168044', 'a', 'a', '18.9104994', '0.08860522'], ...... ['a', 'a', 'a', 'a', 'a', 'a', '19.03677149', '0.052066246']]

(此处仅给出第一行和最后一行数据,供参考格式)
下面是我通过测试点的完整输出

[['a', 'a', '20.76249006', '0.000168044', 'a', 'a', '18.9104994', '0.08860522'], ['a', 'a', '20.77301274', '0.000149807', 'a', 'a', '18.92102208', '0.086064377'], ['a', 'a', '20.78353541', '0.00013318', 'a', 'a', '18.93154475', '0.083365648'], ['a', 'a', '20.79405809', '0.000118071', 'a', 'a', '18.94206743', '0.080528602'], ['a', 'a', '20.80458076', '0.000104387', 'a', 'a', '18.9525901', '0.077573307'], ['a', 'a', '20.81510343', '9.20E-05', 'a', 'a', '18.96311277', '0.07452009'], ['a', 'a', '22.33036852', '0', 'a', 'a', '18.97363545', '0.071389313'], ['a', 'a', 'a', 'a', 'a', 'a', '18.98415812', '0.068201145'], ['a', 'a', 'a', 'a', 'a', 'a', '18.9946808', '0.064975352'], ['a', 'a', 'a', 'a', 'a', 'a', '19.00520347', '0.061731102'], ['a', 'a', 'a', 'a', 'a', 'a', '19.01572615', '0.058486784'], ['a', 'a', 'a', 'a', 'a', 'a', '19.02624882', '0.055259852'], ['a', 'a', 'a', 'a', 'a', 'a', '19.03677149', '0.052066246']]

思路

先说,这oj属实是有问题,因为一旦使用了np和pd就会报错运行错误(也就是说题目限制不能用这两个库,但是题目里面还没有说,确实是恶心人,给大家排雷了,别想用上面两个库了。忍不住吐槽,这模块写出来不给人用,那写模块的意义是什么?)

朴实无华的实现空值替换(只有这种可以过测试点,下面两种答案对的,但是过不了判题系统)

使用循环遍历的方式实现

for i in range(len(lines)):
    lines[i]=lines[i].split(",")

    for j in range(len(lines[i])):
        if lines[i][j]=="":
            lines[i][j]=s
np实现实现空值替换

np.where把空值一次性都找出来并进行替换

data[np.where(data=='')] = s 
pandas实现空值替换

替换得到的df数据,一步到位,简简单单

data=pandas.read_csv("filldata.csv").fillna(value=s).values

代码 朴实无华的实现空值替换
(只有这种可以过测试点,下面两种答案对的,但是过不了判题系统)
s=input()
with open('filldata.csv', 'r', encoding='utf-8') as f:
    lines=f.read().split("n")
for i in range(len(lines)):
    lines[i]=lines[i].split(",")

    for j in range(len(lines[i])):
        if lines[i][j]=="":
            lines[i][j]=s
print(lines)
np实现实现空值替换
import numpy as np
s=input()
with open("filldata.csv",encoding = 'utf-8') as f:
    data = np.loadtxt(f,str,delimiter = ",")#str类型,不写str的话默认是float
    data[np.where(data=='')] = s
mylist=[]
for i in data:
    mylist.append(list(i))
print(mylist)
pandas实现空值替换
import pandas
s=input()
data=pandas.read_csv("filldata.csv").fillna(value=s).values
mylist=[]
for i in data:
    mylist.append(list(i))
print(mylist)


实现效果


总结

大家喜欢的话,给个,点个关注!给大家分享更多有趣好玩的Python习题!

版权声明:

发现你走远了@mzh原创作品,转载必须标注原文链接

Copyright 2022 mzh

Crated:2022-3-1

欢迎关注 『Python习题』 系列,持续更新中
欢迎关注 『Python习题』 系列,持续更新中

【更多内容敬请期待】


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/844684.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号