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

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

前言

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

去掉信息不全的用户

描述

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

    Nowcoder_ID:用户IDLevel:等级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:用户IDLevel:等级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:用户IDLevel:等级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:用户IDLevel:等级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:用户IDLevel:等级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数据清洗的资料请关注易采站长站其它相关文章!