在这个示例中,我们将使用 NumPy 的 select 函数根据油价的不同范围来创建更多的购买分类。让我们逐步说明这个用法:
假设我们有一个包含油价信息的 DataFrame oil,具体如下:
import pandas as pd
import numpy as np
# 创建示例 DataFrame
data = {
'price': [80, 120, 40, 60, 90]
}
oil = pd.DataFrame(data)
# 定义条件和选择项
conditions = [
(oil["price"] > 100),
(oil["price"] <= 100) & (oil["price"] > 50),
(oil["price"] <= 50)
]
choices = ["Don't Buy", "Buy", "Strong Buy"]
# 使用 np.select() 创建新的 'buy' 列
oil["buy"] = np.select(conditions, choices, default="Missing")
print(oil.head())
解释和步骤:
-
导入必要的库:
import pandas as pd:导入 Pandas 库,用于数据处理和操作。import numpy as np:导入 NumPy 库,用于数值计算和条件选择。
-
创建示例 DataFrame:
data字典包含一个名为'price'的列,代表油价。
-
定义条件和选择项:
conditions是一个包含不同条件的列表:(oil["price"] > 100):油价大于 100 的条件。(oil["price"] <= 100) & (oil["price"] > 50):油价小于等于 100 且大于 50 的条件。(oil["price"] <= 50):油价小于等于 50 的条件。
choices是一个对应条件的选择列表:"Don't Buy":如果油价大于 100。"Buy":如果油价在 51 到 100 之间。"Strong Buy":如果油价小于等于 50。
-
使用
np.select()创建新列:oil["buy"] = np.select(conditions, choices, default="Missing"):np.select(conditions, choices, default="Missing")根据条件conditions和选择项choices来创建一个新的 Series 或 NumPy 数组,这里我们将其赋值给 DataFrame 的新列'buy'。default="Missing"指定了默认值,即当所有条件都不满足时使用的值。
-
打印输出结果:
print(oil.head())打印输出 DataFrame 的前几行,以展示新创建的'buy'列。
结果解释:
根据我们定义的条件和选择项,np.select() 方法将会根据油价的不同范围为每一行分配相应的购买建议:
- 如果油价大于 100,对应的
'buy'列会显示"Don't Buy"。 - 如果油价在 51 到 100 之间,显示
"Buy"。 - 如果油价小于等于 50,显示
"Strong Buy"。 - 如果油价不符合任何条件(默认情况下),显示
"Missing"。
这种方法使得根据数值条件快速生成分类标签成为可能,非常适合需要根据数值区间进行分组或分类的数据处理和分析任务。