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

 更新时间:2022年08月09日 08:54:31   作者:IT邦德  
这篇文章主要通过五个示例带大家深入了解下Python实现数据清洗的具体方法,文中的示例代码讲解详细,对我们学习Python有一定帮助,需要的可以参考一下

前言

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数据清洗的资料请关注脚本之家其它相关文章!

相关文章

  • Python用selenium实现自动登录和下单的项目实战

    Python用selenium实现自动登录和下单的项目实战

    本文主要介绍了Python用selenium实现自动登录和下单的项目实战,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • Python OpenCV学习之特征点检测与匹配详解

    Python OpenCV学习之特征点检测与匹配详解

    提取图像的特征点是图像领域中的关键任务,不管在传统还是在深度学习的领域中,特征代表着图像的信息,对于分类、检测任务都是至关重要的。这篇文章主要为大家详细介绍了OpenCV特征点检测与匹配,需要的可以参考一下
    2022-01-01
  • python实现批量修改文件名

    python实现批量修改文件名

    这篇文章主要为大家详细介绍了python实现批量修改文件名,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • 详解python进行mp3格式判断

    详解python进行mp3格式判断

    这篇文章主要介绍了详解python进行mp3格式判断,具有一定的参考价值,有兴趣的可以了解一下。
    2016-12-12
  • pandas聚合分组的具体使用

    pandas聚合分组的具体使用

    使用数据库时,我们利用查询操作对各列或各行中的数据进行分组,可以针对其中的每一组数据进行各种不同的操作,本文主要介绍了pandas聚合分组,感兴趣的可以了解一下
    2024-03-03
  • 使用Bazel编译TensorBoard教程

    使用Bazel编译TensorBoard教程

    今天小编就为大家分享一篇使用Bazel编译TensorBoard教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • 将python安装信息加入注册表的示例

    将python安装信息加入注册表的示例

    今天小编就为大家分享一篇将python安装信息加入注册表的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • 使用TensorFlow直接获取处理MNIST数据方式

    使用TensorFlow直接获取处理MNIST数据方式

    今天小编就为大家分享一篇使用TensorFlow直接获取处理MNIST数据方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • pytorch分类模型绘制混淆矩阵以及可视化详解

    pytorch分类模型绘制混淆矩阵以及可视化详解

    混淆矩阵是ROC曲线绘制的基础,同时它也是衡量分类型模型准确度中最基本,最直观,计算最简单的方法,下面这篇文章主要给大家介绍了关于pytorch分类模型绘制混淆矩阵以及可视化的相关资料,需要的朋友可以参考下
    2022-04-04
  • python 实现有道翻译功能

    python 实现有道翻译功能

    这篇文章主要介绍了python 实现有道翻译的方法,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-02-02

最新评论