Pandas 数据处理:拆分、合并和缺失值填充

本示例演示使用 Pandas 库对两个 DataFrame 进行拆分、合并和缺失值填充操作,并展示了不同的方法实现相同的结果。

数据准备

假设我们有两个 CSV 文件,分别包含两门课程的成绩信息:

import pandas as pd

df_fs1 = pd.DataFrame(pd.read_csv('data/Course1.csv'))
df_fs2 = pd.DataFrame(pd.read_csv('data/Course2.csv'))

print(df_fs1)
print(df_fs2)

目标

我们需要完成以下任务:

  1. 将两张表分别拆分为专业课与非专业课(结果为四张表)。
  2. 将两张专业课的分数表和两张非专业课的分数表分别合并。
  3. 不使用 (a) 中的步骤,请直接读取两张表合并后拆分。
  4. 专业课程中有缺失值吗,如果有的话请在完成 (c) 的同时,用组内(3 种类型的专业课)均值填充缺失值后拆分。

实现

方法一:分别拆分后合并

# (a) 将两张表分别拆分为专业课与非专业课(结果为四张表)。
df_fs1_zhuanye = df_fs1[df_fs1['课程类别'].str.contains('专业')]  # 专业课
df_fs1_feizhuanye = df_fs1[~df_fs1['课程类别'].str.contains('专业')]  # 非专业课
df_fs2_zhuanye = df_fs2[df_fs2['课程类别'].str.contains('专业')]  # 专业课
df_fs2_feizhuanye = df_fs2[~df_fs2['课程类别'].str.contains('专业')]  # 非专业课

# (b) 将两张专业课的分数表和两张非专业课的分数表分别合并。
df_zhuanye = pd.concat([df_fs1_zhuanye, df_fs2_zhuanye])
df_feizhuanye = pd.concat([df_fs1_feizhuanye, df_fs2_feizhuanye])

方法二:直接合并后拆分

# (c) 不使用(a)中的步骤,请直接读取两张表合并后拆分。
df_merge = pd.concat([df_fs1, df_fs2])
df_zhuanye = df_merge[df_merge['课程类别'].str.contains('专业')]  # 专业课
df_feizhuanye = df_merge[~df_merge['课程类别'].str.contains('专业')]  # 非专业课

# (d) 专业课程中有缺失值吗,如果有的话请在完成(c)的同时,用组内(3种类型的专业课)均值填充缺失值后拆分。
df_merge['分数'] = df_merge.groupby('课程类别')['分数'].transform(lambda x: x.fillna(x.mean()))
df_zhuanye = df_merge[df_merge['课程类别'].str.contains('专业')]  # 专业课
df_feizhuanye = df_merge[~df_merge['课程类别'].str.contains('专业')]  # 非专业课

总结

通过以上示例,我们学习了如何使用 Pandas 库进行以下操作:

  • 拆分 DataFrame:使用 str.contains 方法根据条件筛选数据。
  • 合并 DataFrame:使用 pd.concat 方法将多个 DataFrame 合并成一个。
  • 缺失值填充:使用 groupbytransform 方法根据组别进行均值填充。

希望本示例能帮助您更好地理解 Pandas 库的功能,并应用于您的数据处理任务。

Pandas 数据处理:拆分、合并和缺失值填充

原文地址: http://www.cveoy.top/t/topic/T 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录