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

如何使用Pandas按近海区域类别统计房屋数量?

问题解决:近海区域房屋数量分组统计

问题描述

我想要统计近海区域(NEAR BAY、<1HR OCEAN、INLAND、NEAR OCEAN、ISLAND)这5类对应的房屋数量,但编写的代码仅返回房屋总条数(20640条),未能得到各区域类别的分组统计结果。以下是我使用的代码:

import pandas as pd

proximities = []

for i in range(20640):
  if not data.ocean_proximity[i] in proximities:
    proximities.append(data.ocean_proximity[i])
proximities

df = pd.DataFrame(data.ocean_proximity)
print(df.count())

当前输出结果为:

ocean_proximity    20640
dtype: int64

期望得到的结果形式如下(数值为示例):

NEAR BAY       927
<1HR OCEAN     2284
INLAND         2060
NEAR OCEAN     9482
ISLAND         4133

请问如何修改代码实现该需求?是否是Google Colab出现了问题?所用数据文件为:file:///C:/Users/Minerva%20Panganiban/Downloads/housing.pdf

解决方案

不是Google Colab的问题,是代码逻辑未实现分组统计需求——df.count()仅统计列的非空值总数,不会按类别分组计数。以下两种方法可以快速实现目标:

方法1:使用value_counts()(推荐)

Pandas的value_counts()方法专门用于统计分类列的各值出现次数,代码简洁高效:

import pandas as pd

# 直接统计各区域类别数量
category_counts = data.ocean_proximity.value_counts()

# 若需仅保留指定的5类(过滤数据中可能存在的其他分类),可添加以下代码
target_categories = ['NEAR BAY', '<1HR OCEAN', 'INLAND', 'NEAR OCEAN', 'ISLAND']
category_counts = category_counts.reindex(target_categories, fill_value=0)

# 输出结果
print(category_counts)

方法2:使用groupby()分组统计

通过groupby按区域类别分组后,用size()统计每组数量,逻辑更直观:

import pandas as pd

# 按区域类别分组并统计数量
category_counts = data.groupby('ocean_proximity').size()

# 筛选指定5类
target_categories = ['NEAR BAY', '<1HR OCEAN', 'INLAND', 'NEAR OCEAN', 'ISLAND']
category_counts = category_counts.reindex(target_categories, fill_value=0)

# 输出结果
print(category_counts)

原代码问题说明

原代码中的循环仅收集了不重复的区域类别,未实现计数逻辑;最后调用的df.count()仅返回列的总记录数,因此无法得到分组统计结果。使用上述两种方法即可直接输出你需要的格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 23:25:16