
使用 Pandas 的 unique() 方法可快速提取分类列中全部不重复的值,无需遍历数据,返回简洁的 NumPy 数组,适用于探索性数据分析与预处理。
使用 pandas 的 `unique()` 方法可快速提取分类列中全部不重复的值,无需遍历数据,返回简洁的 numpy 数组,适用于探索性数据分析与预处理。
在数据分析过程中,了解分类列(如渠道来源、用户性别、产品类别等)中实际包含哪些唯一取值,是数据清洗、特征工程和可视化前的关键一步。虽然 df.nunique() 能高效返回唯一值的数量(标量),但它无法提供具体是哪些值——这时应使用 pd.unique() 函数。
pd.unique() 专为一维数组(如 Series 或 DataFrame 的单列)设计,它会去重并保持首次出现的顺序(非排序),返回一个 NumPy ndarray,结果直观且计算轻量。例如,针对如下数据:
| channel used | Column B |
|---|---|
| youtube | men 25-30 |
| men 30-35 | |
| women 35-40 | |
| youtube | men 40-45 |
| women 26_30 |
只需一行代码即可获取全部唯一渠道:
import pandas as pd
# 假设已加载数据
# df = pd.read_csv('data.csv')
print(pd.unique(df["channel used"]))
# 输出: ['youtube' 'facebook' 'instagram' 'email']
⚠️ 注意事项:
-
pd.unique()不支持直接作用于整个 DataFrame,必须指定列(如df["channel used"]或df.iloc[:, 0]); - 若列中含缺失值(
NaN),pd.unique()默认将其视为一个独立值并保留在结果中;如需排除,可先用dropna():pd.unique(df["channel used"].dropna())
- 如需按字母序排列结果,可链式调用
sorted():sorted(pd.unique(df["channel used"]))
- 对于大型数据集,
pd.unique()比df["col"].drop_duplicates().tolist()更高效,因其底层优化避免了索引重建。
总结:pd.unique() 是获取分类列唯一值的首选方法——简洁、高效、语义明确。配合 nunique() 使用(先查数量,再取值),可构建稳健的数据概览流程。










