Pandas.cut
的使用注意事项pd.cut
是 Pandas 提供的一个非常实用的函数,用于将数值数据分割成离散的区间(bins)。它常用于数据分桶(binning)、分类或离散化操作。
x: Any
import pandas as pd
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
bins: Any
labels
长 1,可以是以下几种类型:
pd.cut
会自动计算等宽的区间。[0, 5, 10, 15]
,表示分割区间为 (0, 5]
、(5, 10]
和 (10, 15]
。bins = 3 # 自动分割为3个等宽区间
bins = [0, 5, 10, 15] # 自定义分割点
right: bool = True
True
,则区间为 (a, b]
。False
,则区间为 [a, b)
。pd.cut(x, bins=3, right=True) # 默认为 (a, b]
pd.cut(x, bins=3, right=False) # 区间为 [a, b)
labels: Any = None
None
,则默认使用区间字符串作为标签。labels = ['低', '中', '高']
pd.cut(x, bins=3, labels=labels)
retbins: bool = False
True
,则返回一个元组 (binned_data, bins)
。False
,则只返回分桶后的数据。result, bins = pd.cut(x, bins=3, retbins=True)
precision: int = 3
pd.cut(x, bins=3, precision=2) # 分割点保留两位小数
include_lowest: bool = False
True
,则第一个区间为 [a, b)
。False
,则第一个区间为 (a, b)
。pd.cut(x, bins=3, include_lowest=True) # 第一个区间包含最低值
duplicates: str = "raise"
"raise"
:如果发现重复的分割点,抛出 ValueError
。"drop"
:忽略重复的分割点。pd.cut(x, bins=[0, 5, 5, 10], duplicates='drop') # 忽略重复的5
ordered: bool = True
True
,则返回有序分类。此时 labels
中的数据必须唯一False
,则返回无序分类。此时 labels
中的数据可重复pd.cut(x, bins=3, ordered=True) # 默认为有序分类
import pandas as pd
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = pd.cut(x, bins=3)
print(result)
输出:
[(0.994, 4.0], (0.994, 4.0], (0.994, 4.0], (0.994, 4.0], (4.0, 7.0], (4.0, 7.0], (4.0, 7.0], (7.0, 10.0], (7.0, 10.0], (7.0, 10.0]]
Categories (3, interval[float64]): [(0.994, 4.0] < (4.0, 7.0] < (7.0, 10.0]]
result = pd.cut(x, bins=[0, 5, 10, 15])
print(result)
输出:
[(0, 5], (0, 5], (0, 5], (0, 5], (0, 5], (5, 10], (5, 10], (5, 10], (5, 10], (5, 10]]
Categories (3, interval[int64]): [(0, 5] < (5, 10] < (10, 15]]
result = pd.cut(x, bins=[0, 5, 10, 15], labels=['低', '中', '高'])
print(result)
输出:
[低, 低, 低, 低, 低, 中, 中, 中, 中, 中]
Categories (3, object): [低 < 中 < 高]
result, bins = pd.cut(x, bins=3, retbins=True)
print(result)
print(bins)
输出:
[(0.994, 4.0], (0.994, 4.0], (0.994, 4.0], (0.994, 4.0], (4.0, 7.0], (4.0, 7.0], (4.0, 7.0], (7.0, 10.0], (7.0, 10.0], (7.0, 10.0]]
Categories (3, interval[float64]): [(0.994, 4.0] < (4.0, 7.0] < (7.0, 10.0]]
[0.994 4. 7. 10. ]