如何用Pandas识别CSV中无数据的国家(Python新手求助)
找出无数据的国家代码
嘿,作为Python新手能写到这一步已经很棒啦!你已经用groupby做了分组计数,现在要定位那些没有数据的国家其实很简单,我分两种常见情况给你说:
情况1:数据里有该国家的行,但所有列都是空值
你用gb.count()得到的explore表,每一行对应一个国家代码,每一列的数值是该列的非空数据量。如果某个国家的所有列计数都是0,说明它的行全是空值。要找出这些国家,可以这样做:
# 筛选出所有列计数都为0的国家 no_data_countries = explore[explore.eq(0).all(axis=1)].index.tolist() # 打印结果 print("所有数据列都为空的国家代码:") print(no_data_countries)
代码解释:
explore.eq(0):把explore表的每个元素和0比较,返回布尔值表.all(axis=1):检查每一行的所有元素是否都是True(也就是整行都是0).index.tolist():把符合条件的行索引(也就是国家代码)转成列表,方便查看
如果你只关心某一列(比如某个特定指标)没有数据,也可以指定列名筛选,比如:
# 比如筛选"GDP per capita"列没有数据的国家 no_gdp_countries = explore[explore['GDP per capita'] == 0].index.tolist()
情况2:数据里完全没有该国家的任何记录
如果你的需求是找出应该存在但数据里完全没出现的国家(比如参考完整的国家代码列表),可以这样操作:
- 先获取完整的国家代码列表(通常这个数据集会配套有
EdStatsCountry.csv文件,里面有所有国家信息) - 对比原始数据里的国家代码,找出缺失的那些
# 读取完整的国家代码列表 country_list = pd.read_csv("EdStatsCountry.csv")['Country Code'].tolist() # 获取数据中已有的国家代码 existing_codes = data['Country Code'].unique().tolist() # 找出缺失的国家代码 missing_countries = [code for code in country_list if code not in existing_codes] print("数据中完全没有记录的国家代码:") print(missing_countries)
这样就能精准定位到你要找的无数据国家啦!
内容的提问来源于stack exchange,提问作者hlkl bklk




