看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gr99123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
(编码题)假设你正在分析某电商平台商品的价格分布区间,需要使用 pandas.Interval
来处理价格区间。请完成以下问题:
price_interval
,表示价格范围从 100(包含)到 500(不包含),区间在右侧闭合(即左开右闭)。discounted_interval
,其左右边界为原区间 price_interval
左右边界乘以 0.8。price_interval
区间内。special_offer
(从 400(包含)到 600(包含),两侧闭合),判断 special_offer
是否与 price_interval
重叠。代码如下:
import pandas as pd
# 1. 创建区间
price_interval = pd.Interval(left=100, right=500, closed='right')
print(f"创建的区间: {price_interval}")
# 输出: Interval(100, 500, closed='right')
# 2. 区间属性
interval_length = price_interval.length
interval_mid = price_interval.mid
interval_right = price_interval.right
print(f"区间长度: {interval_length}, ")
print(f"中点: {interval_mid}, ")
print(f"右边界: {interval_right}")
# 输出: 区间长度: 400, 中点: 300.0, 右边界: 500
# 3. 区间运算
discounted_interval = price_interval * 0.8
print(f"折扣后区间: {discounted_interval}")
# 输出: Interval(80.0, 400.0, closed='right')
# 4. 成员判断
test_price1 = 250
test_price2 = 500
is_in_interval1 = test_price1 in price_interval
is_in_interval2 = test_price2 in price_interval
print(f"价格 {test_price1} 在区间内: {is_in_interval1}")
# 输出: True
print(f"价格 {test_price2} 在区间内: {is_in_interval2}")
# 输出: True (因为区间右闭合)
# 5. 区间关系
special_offer = pd.Interval(left=400, right=600, closed='both')
overlaps = price_interval.overlaps(special_offer)
print(f"special_offer 与 price_interval 是否重叠: {overlaps}")
# 输出: True
pd.Interval
): 题目指定了右侧闭合(closed='right'
),这意味着区间包含右边界(500),但不包含左边界(100)。这要求理解 closed
参数不同取值的含义。Interval
对象的 length
(长度)、mid
(中点) 和 right
(右边界) 属性。Interval
对象支持一些算术运算(如乘法),运算会应用于每个边界。这里原区间 (100, 500]
乘以 0.8 后得到新区间 (80.0, 400.0]
。in
): 使用 in
关键字判断标量是否在区间内。由于 price_interval
是右闭合的,所以 500 属于该区间。overlaps
): 使用 overlaps
方法判断两个区间是否重叠。price_interval
(100, 500] 和 special_offer
[400, 600] 共享了 400 到 500 之间的点,因此重叠。pandas.Interval
常用于数据分箱(Binning)或分段分析,例如 cut
和 qcut
函数返回的区间对象。你可以尝试用它来分析年龄组、收入层级等连续数据的分段统计。
(完)
更新时间:2025-09-16 08:58:57 标签:pandas python 价格 区间分析