NumPy 的 `select`

79 阅读2分钟

在这个示例中,我们将使用 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())

解释和步骤:

  1. 导入必要的库

    • import pandas as pd:导入 Pandas 库,用于数据处理和操作。
    • import numpy as np:导入 NumPy 库,用于数值计算和条件选择。
  2. 创建示例 DataFrame

    • data 字典包含一个名为 'price' 的列,代表油价。
  3. 定义条件和选择项

    • 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。
  4. 使用 np.select() 创建新列

    • oil["buy"] = np.select(conditions, choices, default="Missing")
      • np.select(conditions, choices, default="Missing") 根据条件 conditions 和选择项 choices 来创建一个新的 Series 或 NumPy 数组,这里我们将其赋值给 DataFrame 的新列 'buy'
      • default="Missing" 指定了默认值,即当所有条件都不满足时使用的值。
  5. 打印输出结果

    • print(oil.head()) 打印输出 DataFrame 的前几行,以展示新创建的 'buy' 列。

结果解释:

根据我们定义的条件和选择项,np.select() 方法将会根据油价的不同范围为每一行分配相应的购买建议:

  • 如果油价大于 100,对应的 'buy' 列会显示 "Don't Buy"
  • 如果油价在 51 到 100 之间,显示 "Buy"
  • 如果油价小于等于 50,显示 "Strong Buy"
  • 如果油价不符合任何条件(默认情况下),显示 "Missing"

这种方法使得根据数值条件快速生成分类标签成为可能,非常适合需要根据数值区间进行分组或分类的数据处理和分析任务。