python&Pandas三: 数据清洗和预处理

让我们通过几个案例来学习如何使用Pandas进行数据清洗和预处理,包括处理缺失值、异常值,进行数据转换和规范化,以及处理重复数据等操作。

  1. 处理缺失值:

    # 创建包含缺失值的DataFrame
    data = {
        '姓名': ['张三', '李四', None, '赵六'],
        '年龄': [18, 19, None, 20],
        '性别': ['男', '女', '男', '女'],
        '分数': [90, None, 95, 80]
    }
    df = pd.DataFrame(data)
    
    # 检测缺失值
    print(df.isnull())
    
    # 删除包含缺失值的行
    df_dropna = df.dropna()
    print(df_dropna)
    
    # 使用指定值填充缺失值
    df_fillna = df.fillna(0)
    print(df_fillna)
    
  2. 处理异常值:

    # 创建包含异常值的DataFrame
    data = {
        '姓名': ['张三', '李四', '王五', '赵六'],
        '年龄': [18, -10, 17, 20],
        '性别': ['男', '女', '男', '女'],
        '分数': [90, 85, 105, 80]
    }
    df = pd.DataFrame(data)
    
    # 检测异常值
    age_outliers = df[(df['年龄'] < 0) | (df['年龄'] > 100)]
    print(age_outliers)
    
    score_outliers = df[(df['分数'] < 0) | (df['分数'] > 100)]
    print(score_outliers)
    
    # 替换异常值
    df.loc[df['年龄'] < 0, '年龄'] = 18
    df.loc[df['分数'] < 0, '分数'] = 0
    print(df)
    
  3. 数据转换和规范化:

    # 将姓名列转换为大写
    df['姓名'] = df['姓名'].str.upper()
    print(df)
    
    # 将分数归一化到0-1之间
    df['分数_normalized'] = (df['分数'] - df['分数'].min()) / (df['分数'].max() - df['分数'].min())
    print(df)
    
    # 使用字典映射进行数据规范化
    gender_mapping = {'男': 1, '女': 0}
    df['性别_encoded'] = df['性别'].map(gender_mapping)
    print(df)
    
  4. 处理重复数据:

    # 创建包含重复数据的DataFrame
    data = {
        '姓名': ['张三', '李四', '王五', '张三'],
        '年龄': [18, 19, 17, 20],
        '性别': ['男', '女', '男', '男'],
        '分数': [90, 85, 95, 80]
    }
    df = pd.DataFrame(data)
    
    # 检测重复行
    duplicate_rows = df.duplicated()
    print(duplicate_rows)
    
    # 删除重复行
    df_drop_duplicates = df.drop_duplicates()
    print(df_drop_duplicates)
    

通过这些案例,您可以学习如何使用Pandas提供的函数和方法来处理数据清洗和预处理的任务。这些操作可以帮助您处理缺失值、异常值,进行数据转换和规范化,并处理重复数据,使数据适合后续的分析和建模。掌握这些技巧可以提高数据质量和准确性,从而得到更可靠的分析结果。您可以根据实际需求在项目中应用这些技术。

你可能感兴趣的:(Pandas,Python,python,pandas,数据挖掘)