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

如何用Pandas按评分区间与房型分组统计数量?

解决方案

步骤1:划分评分区间

先将评分字段映射到你已定义的区间中,确保所有数据都能匹配对应区间:

import pandas as pd

# 复用你已使用的评分区间边界
bins = [19.92, 30.0, 40.0, 50.0, 60.0, 70.0, 80.0, 90.0, 100.0]
# 给区间设置可读标签(可选,不影响统计逻辑)
labels = ["(19.92, 30.0]", "(30.0, 40.0]", "(40.0, 50.0]", "(50.0, 60.0]", 
          "(60.0, 70.0]", "(70.0, 80.0]", "(80.0, 90.0]", "(90.0, 100.0]"]

# 新增列存储每条数据对应的评分区间
df['rating_bin'] = pd.cut(df['review_scores_rating'], bins=bins, labels=labels, include_lowest=True)

步骤2:双维度分组统计

同时按评分区间和房型分组,统计每个组合的数量:

# 按评分区间+房型分组,统计每组的记录数
grouped_data = df.groupby(['rating_bin', 'room_type']).size().reset_index(name='count')

步骤3:转换为目标格式

通过unstack将房型从行维度转为列维度,并用fillna(0)填充空值(表示该区间下对应房型无数据):

# 转换结构并处理空值
result_df = grouped_data.set_index('rating_bin').unstack('room_type').fillna(0)
# 清理多层列名,让结果更简洁
result_df.columns = result_df.columns.droplevel(0)

最终结果示例

运行后会得到符合需求的DataFrame,结构如下:

rating_binEntire home/aptHotel roomPrivate roomShared room
(19.92, 30.0]102120
(30.0, 40.0]81140
...............
(90.0, 100.0]1050085218840

补充说明

  • 如果你的原始数据已存在评分区间列,可直接跳过步骤1,用该列参与分组。
  • fillna(0)是为了保证所有区间-房型组合都有数值,避免空值干扰后续分析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 11:11:09