修改导入:真/假数据

使用 pandas 高效导入数据

Amany Mahfouz

Instructor

布尔数据

  • True/False 数据

调查数据表格,含多列 true/false

使用 pandas 高效导入数据

布尔数据

调查数据表格,关于训练营出勤的列已高亮

使用 pandas 高效导入数据

布尔数据

调查数据表格,关于贷款使用的列已高亮

使用 pandas 高效导入数据

布尔数据

调查数据表格,含多列 True/False

使用 pandas 高效导入数据

布尔数据

调查数据表格,使用 0/1 的列已高亮

使用 pandas 高效导入数据

布尔数据

调查数据表格,使用 True/False 的列已高亮

使用 pandas 高效导入数据

布尔数据

调查数据表格,使用 yes/no 的列已高亮

使用 pandas 高效导入数据

pandas 与布尔值

bootcamp_data = pd.read_excel("fcc_survey_booleans.xlsx")
print(bootcamp_data.dtypes)
ID.x                      object
AttendedBootcamp         float64
AttendedBootCampYesNo     object
AttendedBootcampTF       float64
BootcampLoan             float64
LoanYesNo                 object
LoanTF                   float64
dtype: object
使用 pandas 高效导入数据

pandas 与布尔值

# 统计 True 的数量
print(bootcamp_data.sum())
AttendedBootcamp                      38
AttendedBootcampTF                    38
BootcampLoan                          14
LoanTF                                14
dtype: object
# 统计 NA 数量
print(bootcamp_data.isna().sum())
ID.x                           0
AttendedBootcamp               0
AttendedBootCampYesNo          0
AttendedBootcampTF             0
BootcampLoan                 964
LoanYesNo                    964
LoanTF                       964
dtype: int64
使用 pandas 高效导入数据
# 加载数据,将 True/False 列设为布尔型
bool_data = pd.read_excel("fcc_survey_booleans.xlsx", 
                          dtype={"AttendedBootcamp": bool,
                                "AttendedBootCampYesNo": bool,
                                "AttendedBootcampTF":bool,
                                "BootcampLoan": bool,
                                "LoanYesNo": bool,
                                "LoanTF": bool})

print(bool_data.dtypes)
ID.x                      object
AttendedBootcamp            bool
AttendedBootCampYesNo       bool
AttendedBootcampTF          bool
BootcampLoan                bool
LoanYesNo                   bool
LoanTF                      bool
dtype: object
使用 pandas 高效导入数据
# 统计 True 的数量
print(bool_data.sum())
AttendedBootcamp                         38
AttendedBootCampYesNo                  1000
AttendedBootcampTF                       38
BootcampLoan                            978
LoanYesNo                              1000
LoanTF                                  978
dtype: object
# 统计 NA 数量
print(bool_data.isna().sum())
ID.x                       0
AttendedBootcamp           0
AttendedBootCampYesNo      0
AttendedBootcampTF         0
BootcampLoan               0
LoanYesNo                  0
LoanTF                     0
dtype: int64
使用 pandas 高效导入数据

pandas 与布尔值

  • pandas 默认将 True/False 列读取为浮点型
  • read_excel()dtype 参数中将列设为 bool
  • 布尔列只能包含 TrueFalse
  • 布尔列中的 NA/缺失值会被改为 True
  • 在布尔列中,pandas 会自动识别部分值为 True/False
  • 未识别的布尔列值也会被改为 True
使用 pandas 高效导入数据

自定义 True/False 值

  • 使用 read_excel()true_values 指定自定义 True
  • 使用 false_values 指定自定义 False
  • 二者分别接收要视为 True/False 的值列表
  • 仅对设为布尔型的列应用自定义 True/False
使用 pandas 高效导入数据

自定义 True/False 值

# 以布尔 dtype 和自定义 T/F 值加载数据
bool_data = pd.read_excel("fcc_survey_booleans.xlsx", 
                          dtype={"AttendedBootcamp": bool,
                                "AttendedBootCampYesNo": bool,
                                "AttendedBootcampTF":bool,
                                "BootcampLoan": bool,
                                "LoanYesNo": bool,
                                "LoanTF": bool},
                          true_values=["Yes"],
                          false_values=["No"])
使用 pandas 高效导入数据

自定义 True/False 值

print(bool_data.sum())
AttendedBootcamp                                  38
AttendedBootCampYesNo                             38
AttendedBootcampTF                                38
BootcampLoan                                     978
LoanYesNo                                        978
LoanTF                                           978
dtype: object
使用 pandas 高效导入数据

布尔列的考量要点

  • 是否存在缺失值,或将来可能出现?
  • 此列将如何用于分析?
  • 若某值被误编码为 True 会怎样?
  • 能否用其他类型建模(如浮点或整数)?
使用 pandas 高效导入数据

Passons à la pratique !

使用 pandas 高效导入数据

Preparing Video For Download...