洛阳建网站公司,重庆免费网站建设,二级域名网站,上海百度推广官网类型转换 传统方法astype使用value_counts统计通过apply替换并使用astype转换 pd.to_numericx对连续变量进行转化⭐参数#xff1a;返回值#xff1a;示例代码#xff1a; isnull不会检查空字符串 数据准备 有一组数据信息如下#xff0c;其中主要将TotalCharges、MonthlyC… 类型转换 传统方法astype使用value_counts统计通过apply替换并使用astype转换 pd.to_numericx对连续变量进行转化⭐参数返回值示例代码 isnull不会检查空字符串 数据准备 有一组数据信息如下其中主要将TotalCharges、MonthlyCharges两列进行类型转换虽然通过函数info查看到类型已经是float64 和int64了但是其中存在缺失值我们的目的是找出缺失值 并填补进行类型转换
tcc.info()传统方法astype
def find_index(data_col, val):查询某值在某列中第一次出现位置的索引没有则返回-1:param data_col: 查询的列:param val: 具体取值val_list [val]if data_col.isin(val_list).sum() 0:index -1else:index data_col.isin(val_list).idxmax()# idxmax 方法将返回第一个匹配值的索引return index# 查看空格第一次出现在哪一列的哪个位置
for col in numeric_cols:print(find_index(tcc[col], ))-1 488
# -1 代表月费用是没有问题的 488 代表总费用是有问题 且是空值
tcc[TotalCharges][480:490]# 确认是空值
tcc[TotalCharges].iloc[488]’ ’ 【有个空格的哦】
使用value_counts统计
tcc[TotalCharges].value_counts()通过apply替换并使用astype转换
tcc[TotalCharges]tcc[TotalCharges].apply(lambda x: x if x ! else np.nan).astype(float)
tcc[MonthlyCharges]tcc[MonthlyCharges].astype(float)根据上述方法将空字符串替换为NaN这就方便使用isnull函数进行后续处理
def missing (df):计算每一列的缺失值及占比missing_number df.isnull().sum().sort_values(ascendingFalse) # 每一列的缺失值求和后降序排序 missing_percent (df.isnull().sum()/df.isnull().count()).sort_values(ascendingFalse) # 每一列缺失值占比missing_values pd.concat([missing_number, missing_percent], axis1, keys[Missing_Number, Missing_Percent]) # 合并为一个DataFramereturn missing_valuesmissing(tcc[numeric_cols])tcc[TotalCharges].isnull().sum()11
# 输出缺失值位置对应的索引
tcc.index[tcc[TotalCharges].isnull()].tolist()[488, 753, 936, 1082, 1340, 3331, 3826, 4380, 5218, 6670, 6754]
pd.to_numericx对连续变量进行转化⭐ pd.to_numeric 是 pandas 库中的一个函数用于将参数转换为数字类型。这个函数的默认返回类型是 float64 或 int64具体取决于提供的数据。以下是 pd.to_numeric 的一些关键用法和参数
参数
arg要转换的参数可以是标量、列表、元组、一维数组或 Series。errors{‘ignore’, ‘raise’, ‘coerce’}默认为 ‘raise’。 如果设置为 ‘raise’则无效的解析会引发异常。如果设置为 ‘coerce’则无效的解析会被设置为 NaN。如果设置为 ‘ignore’则无效的解析会返回输入的原始值。注意‘ignore’ 在版本 2.2 中已被弃用建议显式捕获异常。 downcast默认为 None。 可以是 ‘integer’、‘signed’、‘unsigned’ 或 ‘float’。如果不为 None并且数据已成功转换为数值类型则根据规则将结果数据转换为可能的最小数值类型。 dtype_backend{‘numpy_nullable’, ‘pyarrow’}默认为 ‘numpy_nullable’。 ‘numpy_nullable’返回支持空值的 DataFrame默认。‘pyarrow’返回基于 pyarrow 的可空 ArrowDtype DataFrame。
返回值
如果解析成功返回数字。返回类型取决于输入。如果是 Series则返回 Series否则返回 ndarray。
示例代码
# 将 Series 转换为数值类型
s pd.Series([1.0, 2, -3])
pd.to_numeric(s) # 返回 float64 类型# 使用 downcast 参数将数值类型转换为更小的数值类型
pd.to_numeric(s, downcastfloat) # 返回 float32 类型# 使用 errors 参数处理非数值数据
s pd.Series([None, , np.nan,2, -3])
pd.to_numeric(s, errorscoerce) # 非数值数据被替换为 NaNpd.to_numeric 是处理数据转换时非常有用的工具尤其是在数据清洗和预处理阶段它可以帮助确保数据类型的一致性。更多详细信息和用法可以参考 pandas 官方文档 。
isnull不会检查空字符串
没有空字符
s pd.Series([None, np.nan, 2, -3])
ss.isnull().sum()2
空字符串存在
t pd.Series([None, , 2, -3])
tt.isnull()0 True 1 False # 空字符当成有数据处理了 2 False 3 False dtype: bool
t.isnull().sum()1