You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas统计缺失值占比时如何纳入指定字符串类缺失值

解决方案

核心逻辑为分别匹配三类缺失值,依次统计全局总占比和单列维度的占比,完整可运行代码如下:

import pandas as pd
import numpy as np

# 此处替换为你自己的数据集读取逻辑
# 示例数据构造,和你给出的示例一致
data = {
    'A': [np.nan, 'ex2'],
    'B': ['ex1', 'Information not found'],
    'C': ['Data not available', 'ex2'],
    'D': ['ex1', 'ex2']
}
df = pd.DataFrame(data)

# ---------- 第一部分:全局三类缺失值占比统计 ----------
total_cells = df.size
global_stats = {}

# 统计NA类占比
na_count = df.isna().sum().sum()
global_stats['NA'] = round(na_count * 100 / total_cells, 2)
# 统计"Information not found"占比
info_not_found_count = (df == 'Information not found').sum().sum()
global_stats['Information not found'] = round(info_not_found_count * 100 / total_cells, 2)
# 统计"Data not available"占比
data_not_ava_count = (df == 'Data not available').sum().sum()
global_stats['Data not available'] = round(data_not_ava_count * 100 / total_cells, 2)

# 输出全局统计结果
print("全局缺失值占比:")
for k, v in global_stats.items():
    print(f"{k}    {v}%")

# ---------- 第二部分:按列维度三类缺失值占比统计 ----------
col_stats = []
for col in df.columns:
    col_stat = {}
    col_stat[''] = col
    col_stat['NA'] = round(df[col].isna().sum() * 100 / len(df), 2)
    col_stat['Information not found'] = round((df[col] == 'Information not found').sum() * 100 / len(df), 2)
    col_stat['Data not available'] = round((df[col] == 'Data not available').sum() * 100 / len(df), 2)
    col_stats.append(col_stat)

col_stats_df = pd.DataFrame(col_stats).set_index('')
# 输出按列统计结果
print("\n按列缺失值占比:")
print(col_stats_df)

如果需要调整小数保留位数,修改round函数的第二个参数即可;如果需要对结果排序,直接对col_stats_df调用sort_values方法即可。

内容的提问来源于stack exchange,提问作者LdM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 08:48:03