让我们通过几个案例来学习如何使用Pandas进行数据清洗和预处理,包括处理缺失值、异常值,进行数据转换和规范化,以及处理重复数据等操作。
-
处理缺失值:
# 创建包含缺失值的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)
-
处理异常值:
# 创建包含异常值的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)
-
数据转换和规范化:
# 将姓名列转换为大写 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)
-
处理重复数据:
# 创建包含重复数据的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提供的函数和方法来处理数据清洗和预处理的任务。这些操作可以帮助您处理缺失值、异常值,进行数据转换和规范化,并处理重复数据,使数据适合后续的分析和建模。掌握这些技巧可以提高数据质量和准确性,从而得到更可靠的分析结果。您可以根据实际需求在项目中应用这些技术。