Python实现数据清洗的示例详解

目录
  • 前言
  • 去掉信息不全的用户
    • 描述
    • 答案
  • 修补缺失的用户数据
    • 描述
    • 答案
  • 解决牛客网用户重复的数据
    • 描述
    • 答案
  • 统一最后刷题日期的格式
    • 描述
    • 答案
  • 将用户的json文件转换为表格形式
    • 描述
    • 答案

前言

Python实际针对数据分析的学习是库,用库来解决一系列的数据分析问题

去掉信息不全的用户

描述

现有一个Nowcoder.csv文件,它记录了牛客网的部分用户数据,包含如下字段(字段与字段之间以逗号间隔):

  • Nowcoder_ID:用户ID
  • Level:等级
  • Achievement_value:成就值
  • Num_of_exercise:刷题量
  • Graduate_year:毕业年份
  • Language:常用语言
  • Continuous_check_in_days:最近连续签到天数
  • Number_of_submissions:提交代码次数
  • Last_submission_time:最后一次提交题目日期

运营同学正在做用户调研,为了保证调研的可靠性,想要去掉那些信息不全的用户,即去掉有缺失数据的行,请你帮助他去掉后输出全部数据。

输入描述

数据集直接从当前目录下的Nowcoder.csv文件中读取。

输出描述:

直接输出清洗后的全部数据。

答案

import pandas as pd

Nowcoder = pd.read_csv('Nowcoder.csv', sep=',', dtype=object)
pd.set_option('display.width', 300)  # 设置字符显示宽度
pd.set_option('display.max_rows', None)  # 设置显示最大行
pd.set_option('display.max_columns', None)
print(Nowcoder[Nowcoder.isna() == False])

修补缺失的用户数据

描述

现有一个Nowcoder.csv文件,它记录了牛客网的部分用户数据,包含如下字段(字段与字段之间以逗号间隔):

  • Nowcoder_ID:用户ID
  • Level:等级
  • Achievement_value:成就值
  • Num_of_exercise:刷题量
  • Graduate_year:毕业年份
  • Language:常用语言
  • Continuous_check_in_days:最近连续签到天数
  • Number_of_submissions:提交代码次数
  • Last_submission_time:最后一次提交题目日期

运营同学拿到了这份用户文件,但是由于系统BUG,出现了部分缺失的值,请你使用当前的最大年份填充缺失的毕业年份(“Graduate_year”),用Python填充缺失的常用语言(“Language”),用成就值的均值(四舍五入保留整数)填充缺失的成就值(“Achievement_value”)。

输入描述

数据集直接从当前目录下的Nowcoder.csv文件中读取。

输出描述:

输出修改后的全部数据,不用处理输出时年份与成就值的小数点问题。

答案

import pandas as pd

Nowcoder = pd.read_csv('Nowcoder.csv', sep=',')
pd.set_option('display.width', 300)  # 设置字符显示宽度
pd.set_option('display.max_rows', None)  # 设置显示最大行
pd.set_option('display.max_columns', None)
Nowcoder["Graduate_year"].fillna(Nowcoder["Graduate_year"].max())
Nowcoder["Language"].fillna("Python")
Nowcoder["Achievement_value"].fillna(Nowcoder["Achievement_value"].mean().round(0))
print(Nowcoder)

解决牛客网用户重复的数据

描述

现有一个Nowcoder.csv文件,它记录了牛客网的部分用户数据,包含如下字段(字段与字段之间以逗号间隔):

  • Nowcoder_ID:用户ID
  • Level:等级
  • Achievement_value:成就值
  • Num_of_exercise:刷题量
  • Graduate_year:毕业年份
  • Language:常用语言
  • Continuous_check_in_days:最近连续签到天数
  • Number_of_submissions:提交代码次数
  • Last_submission_time:最后一次提交题目日期

牛牛拿到这份文件的时候一脸懵逼,因为系统错误将很多相同用户的数据输出了多条,导致文件中有很多重复的行,请先检查每一行是否重复,然后输出删除重复行后的全部数据。

输入描述

数据集直接从当前目录下的Nowcoder.csv文件中读取。

输出描述

先输出每一行是否重复,再输出去重后的文件全部数据

答案

import pandas as pd

Nowcoder = pd.read_csv('Nowcoder.csv', sep=',', dtype=object)
pd.set_option('display.width', 1000)
pd.set_option('display.max_rows', None)
print(Nowcoder.duplicated())
print(Nowcoder.drop_duplicates(0))

统一最后刷题日期的格式

描述

现有一个Nowcoder.csv文件,它记录了牛客网的部分用户数据,包含如下字段(字段与字段之间以逗号间隔):

  • Nowcoder_ID:用户ID
  • Level:等级
  • Achievement_value:成就值
  • Num_of_exercise:刷题量
  • Graduate_year:毕业年份
  • Language:常用语言
  • Continuous_check_in_days:最近连续签到天数
  • Number_of_submissions:提交代码次数
  • Last_submission_time:最后一次提交题目日期

运营同学发现最后一次提交题目日期这一列有各种各样的日期格式,这对于他分析用户十分不友好,你能够帮他输出用户ID、等级以及统一后的日期吗?(日期格式统一为yyyy-mm-dd)

输入描述

数据集直接从当前目录下的Nowcoder.csv文件中读取。

输出描述

输出用户ID、等级与最后提交日期三列,包括行号。

答案

import pandas as pd
Nowcoder = pd.read_csv('Nowcoder.csv',sep=',',dtype=object)
Nowcoder['Last_submission_time'] = pd.to_datetime(Nowcoder["Last_submission_time"],format="%Y-%m-%d")
print(Nowcoder[['Nowcoder_ID','Level','Last_submission_time']])

将用户的json文件转换为表格形式

描述

现有一个Nowcoder.json文件,它记录了牛客网的部分用户数据,包含如下字段(字段与字段之间以逗号间隔):

  • Nowcoder_ID:用户ID
  • Level:等级
  • Achievement_value:成就值
  • Graduate_year:毕业年份
  • Language:常用语言

如果你读入了这个json文件,能将其转换为pandas的DataFrame格式吗?

输入描述:

数据集直接从当前目录下的Nowcoder.json文件中读取。

输出描述:

输出转换为DataFrame的全部数据,包括行号。

答案

import pandas as pd
import json

pd.set_option('display.width', 300)  # 设置字符显示宽度
pd.set_option('display.max_rows', None)  # 设置显示最大行
pd.set_option('display.max_columns', None)
with open('Nowcoder.json', 'r') as f:
    data = json.loads(f.read())

    df = pd.DataFrame.from_dict(data)
    print(df)

以上就是Python实现数据清洗的示例详解的详细内容,更多关于Python数据清洗的资料请关注我们其它相关文章!

时间: 2022-08-08

如何用python清洗文件中的数据

目录 使用filter 清洗数据同时记录订单号并排序 简单版 直接打开日志文件,往另外一个文件中按照要过滤的要求进行过滤 import io; with open('a.txt', 'w') as f: for line in open('c:/201509.txt'): if line.find('更改项目')>0 and line.find('500')>0: f.write(line+"\n"); print("输出完成"); 注意.find返回的

利用Python进行数据清洗的操作指南

目录 缺失值 异常值 数据不一致 无效数据 重复数据 数据泄漏问题 你一定听说过这句著名的数据科学名言: 在数据科学项目中, 80% 的时间是在做数据处理. 如果你没有听过,那么请记住:数据清洗是数据科学工作流程的基础. 机器学习模型会根据你提供的数据执行,混乱的数据会导致性能下降甚至错误的结果,而干净的数据是良好模型性能的先决条件. 当然干净的数据并不意味着一直都有好的性能,模型的正确选择(剩余 20%)也很重要,但是没有干净的数据,即使是再强大的模型也无法达到预期的水平. 在本文中将列出数据

8段用于数据清洗Python代码(小结)

最近,大数据工程师Kin Lim Lee在Medium上发表了一篇文章,介绍了8个用于数据清洗的Python代码. 数据清洗,是进行数据分析和使用数据训练模型的必经之路,也是最耗费数据科学家/程序员精力的地方. 这些用于数据清洗的代码有两个优点:一是由函数编写而成,不用改参数就可以直接使用.二是非常简单,加上注释最长的也不过11行.在介绍每一段代码时,Lee都给出了用途,也在代码中也给出注释.大家可以把这篇文章收藏起来,当做工具箱使用. 涵盖8大场景的数据清洗代码 这些数据清洗代码,一共涵盖8个

python3常用的数据清洗方法(小结)

首先载入各种包: import pandas as pd import numpy as np from collections import Counter from sklearn import preprocessing from matplotlib import pyplot as plt %matplotlib inline import seaborn as sns plt.rcParams['font.sans-serif'] = ['SimHei'] # 中文字体设置-黑体 p

详解Python如何利用Pandas与NumPy进行数据清洗

目录 准备工作 DataFrame 列的删除 DataFrame 索引更改 DataFrame 数据字段整理 str 方法与 NumPy 结合清理列 apply 函数清理整个数据集 DataFrame 跳过行 DataFrame 重命名列 许多数据科学家认为获取和清理数据的初始步骤占工作的 80%,花费大量时间来清理数据集并将它们归结为可以使用的形式. 因此如果你是刚刚踏入这个领域或计划踏入这个领域,重要的是能够处理杂乱的数据,无论数据是否包含缺失值.不一致的格式.格式错误的记录还是无意义的异常

python数据清洗中的时间格式化实现

目录 1.字符串转时间 2.时间转字符串 3.时间戳相互转换 4.python中时间日期格式化符号: 1.字符串转时间 from datetime import datetime t = '2020年11月11日15:04:41' time = datetime.strptime(t,'%Y年%m月%d日%H:%M:%S') print(time) # 结果:2020-11-11 15:04:41 t1 = '2020-11-11 15:04:41' time1 = datetime.strpt

Python 八个数据清洗实例代码详解

如果你经历过数据清洗的过程,你就会明白我的意思.而这正是撰写这篇文章的目的——让读者更轻松地进行数据清洗工作. 事实上,我在不久前意识到,在进行数据清洗时,有一些数据具有相似的模式.也正是从那时起,我开始整理并编译了一些数据清洗代码,我认为这些代码也适用于其它的常见场景. 由于这些常见的场景涉及到不同类型的数据集,因此本文更加侧重于展示和解释这些代码可以用于完成哪些工作,以便读者更加方便地使用它们. 数据清洗小工具箱 在下面的代码片段中,数据清洗代码被封装在了一些函数中,代码的目的十分直观.你可

python socket 聊天室实例代码详解

python socket 聊天室 import socket s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) #绑定端口 s.bind(("127.0.0.1", 8888)) while True: data = s.recvfrom(1024) print(str(data[0].decode("gbk"))) send_data = input("请输入聊天内容") if &quo

python获取时间及时间格式转换问题实例代码详解

整理总结一下python中最常用的一些时间戳和时间格式的转换 第一部分:获取当前时间和10位13位时间戳 import datetime, time '''获取当前时间''' n = datetime.datetime.now() print(n) '''获取10位时间戳''' now = time.time() print(int(now)) '''获取13位时间戳''' now2 = round(now*1000) print(now2) 运行结果为: 2018-12-06 11:00:30

Python 带有参数的装饰器实例代码详解

demo.py(装饰器,带参数的装饰器): def set_level(level_num): def set_func(func): def call_func(*args, **kwargs): if level_num == 1: print("----权限级别1,验证----") elif level_num == 2: print("----权限级别2,验证----") return func() return call_func return set_f

Python生成验证码、计算具体日期是一年中的第几天实例代码详解

1.约瑟夫环问题 <幸运的基督徒> 有15个基督徒和15个非基督徒在海上遇险,为了能让一部分人活下来不得不将其中15个人扔到海里面去,有个人想了个办法就是大家围成一个圈,由某个人开始从1报数,报到9的人就扔到海里面,他后面的人接着从1开始报数,报到9的人继续扔到海里面,直到扔掉15个人.由于上帝的保佑,15个基督徒都幸免于难,问这些人最开始是怎么站的,哪些位置是基督徒哪些位置是非基督徒. def main(): ''' 先用列表中每个数字代表每个人,然后通过循环替换列表中的数字 用@代表基督徒

python 获取当前目录下的文件目录和文件名实例代码详解

os模块下有两个函数: os.walk() os.listdir() # -*- coding: utf-8 -*- import os def file_name(file_dir): for root, dirs, files in os.walk(file_dir): print(root) #当前目录路径 print(dirs) #当前路径下所有子目录 print(files) #当前路径下所有非目录子文件 输出格式为: 当前文件目录路径 当前路径下子文件目录(若存在, 不存在则为 []

Python中协程用法代码详解

本文研究的主要是python中协程的相关问题,具体介绍如下. Num01–>协程的定义 协程,又称微线程,纤程.英文名Coroutine. 首先我们得知道协程是啥?协程其实可以认为是比线程更小的执行单元. 为啥说他是一个执行单元,因为他自带CPU上下文.这样只要在合适的时机, 我们可以把一个协程 切换到另一个协程. 只要这个过程中保存或恢复 CPU上下文那么程序还是可以运行的. Num02–>协程和线程的差异 那么这个过程看起来和线程差不多.其实不然, 线程切换从系统层面远不止保存和恢复 CP

C#集合类用法实例代码详解

下面介绍C#的集合类 1ArrayList using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Collections; namespace 动态数组ArrayList { class Program { static void Main(string[] args) { ArrayList

spring boot application properties配置实例代码详解

废话不多说了,直接给大家贴代码了,具体代码如下所示: # =================================================================== # COMMON SPRING BOOT PROPERTIES # # This sample file is provided as a guideline. Do NOT copy it in its # entirety to your own application. ^^^ # ========

jQuery fadeOut 异步实例代码详解

定义和用法 fadeOut() 方法逐渐改变被选元素的不透明度,从可见到隐藏(褪色效果). 注释:隐藏的元素不会被完全显示(不再影响页面的布局). 提示:该方法通常与 fadeIn() 方法一起使用. 语法 $(selector).fadeOut(speed,easing,callback) 1. 概述 jquery实现动画效果的函数使用起来很方便,不过动画执行是异步的,所以要把自定义的操作放在回调函数里. 2. example <html> <body> <table id

表单验证正则表达式实例代码详解

表单验证正则表达式具体内容如下所示: 首先给大家解释一些符号相关的意义 1.  /^$/ 这个是个通用的格式. ^ 匹配输入字符串的开始位置:$匹配输入字符串的结束位置 2. 里面输入需要实现的功能. * 匹配前面的子表达式零次或多次:        + 匹配前面的子表达式一次或多次:        ?匹配前面的子表达式零次或一次:        \d  匹配一个数字字符,等价于[0-9] 下面通过一段代码给大家分析表单验证正则表达式,具体代码如下: <!DOCTYPE html> <h