Pandas教程之十:从DataFrame的列中获取唯一值

发布于:2024-11-27 ⋅ 阅读:(252) ⋅ 点赞:(0)

从 Pandas DataFrame 中的列中获取唯一值

unique() 函数删除列上的所有重复值,并为多个相同值返回单个值。在本文中,我们将讨论如何从Pandas DataFrame中的列中获取唯一值。

# 获取任意列的唯一值
df.ColumnName.unique()

Pandas 列中的唯一值

  • 创建具有重复元素的 Pandas Dataframe
  • 使用 unique() 获取 Pandas 的唯一值
  • 使用 nunique 查找列中的唯一值
  • 使用 set() 消除列中的重复值
  • 使用 Series.drop_duplicates() 获取列中的唯一值

下面是一些示例,通过这些示例我们可以获取数据框中列中的唯一值。

创建具有重复元素的 Pandas Dataframe

创建一个带有列表字典的示例 Pandas 数据框,假设列名称为A、B、C、D 和 E,其中包含重复元素。

Python

# Import pandas package
import pandas as pd

# create a dictionary with five fields each
data = {
    'A': ['A1', 'A2', 'A3', 'A4', 'A5'],
    'B': ['B1', 'B2', 'B3', 'B4', 'B4'],
    'C': ['C1', 'C2', 'C3', 'C3', 'C3'],
    'D': ['D1', 'D2', 'D2', 'D2', 'D2'],
    'E': ['E1', 'E1', 'E1', 'E1', 'E1']}

# Convert the dictionary into DataFrame
df = pd.DataFrame(data)

使用 unique() 获取 Pandas 的唯一值

获取“B”列的唯一值

在此示例中,我们使用方法检索并打印“B”列中的唯一值。结果的唯一值为。unique()['B1', 'B2', 'B3', 'B4']

Python

# Import pandas package
import pandas as pd

# Convert the dictionary into DataFrame
df = pd.DataFrame(data)

# Get the unique values of 'B' column
df.B.unique()

输出

array(['B1', 'B2', 'B3', 'B4'], dtype=object)

获取 Pandas 在 E 列中的唯一值

在此示例中,我们从字典中创建一个 pandas DataFrame,然后使用unique()方法从“E”列中检索唯一值。结果的唯一值为['E1']。

Python

# Import pandas package
import pandas as pd

# Convert the dictionary into DataFrame
df = pd.DataFrame(data)

# Get the unique values of 'E' column
df.E.unique()

输出

array(['E1'], dtype=object)

使用 nunique 查找列中的唯一值

在此示例中,我们从字典创建一个 pandas DataFrame,然后计算并打印“C”列中唯一值的数量(不包括 NaN 值)。结果为 3,表示“C”列中有三个唯一值。

Python

# Import pandas package
import pandas as pd

# Convert the dictionary into DataFrame
df = pd.DataFrame(data)

# Get number of unique values in column 'C'
df.C.nunique(dropna=True)

输出

3

使用 set() 消除列中的重复值

在此示例中,我们从字典中创建一个 pandas DataFrame,然后使用set()函数从“C”列中提取唯一值,消除重复项。结果集{'C1', 'C2', 'C3'}表示“C”列中的唯一值。

Python

# Import pandas package
import pandas as pd

# Convert the dictionary into DataFrame
df = pd.DataFrame(data)

# Use set() to eliminate duplicate values in column 'C'
unique_values_set = set(df['C'])

# Print the unique values
print(unique_values_set)

输出

{'C1','C2','C3'}

使用 Series.drop_duplicates() 获取列中的唯一值

在此示例中,我们从字典中创建一个 pandas DataFrame,并使用drop_duplicates()方法从“A”和“D”列中删除重复项。打印时,生成的 DataFrame 将显示“A”和“D”列中的唯一值,其中从“D”中删除重复项的位置显示 NaN 值。

Python

# Import pandas package
import pandas as pd

# Convert the dictionary into DataFrame
df = pd.DataFrame(data)

# Use drop_duplicates() to remove duplicates from columns 'A' and 'D'
df['A'] = df['A'].drop_duplicates()
df['D'] = df['D'].drop_duplicates()

# Print the DataFrame after removing duplicates from columns 'A' and 'D'
print(df)

输出

    

    A   B   C   D   E
0  A1  B1  C1  D1  E1
1  A2  B2  C2  D2  E1
2  A3  B3  C3 NaN  E1
3  A4  B4  C3 NaN  E1
4  A5  B4  C3 NaN  E1

从 Pandas DataFrame 中的列中获取唯一值 – 常见问题解答

如何从 Pandas DataFrame 中的列中获取唯一值?

要从 Pandas DataFrame 中的列中检索唯一值,请使用该unique()方法。此方法返回唯一值的 NumPy 数组。

例子:

import pandas as pd

# 创建一个 DataFrame
df = pd.DataFrame({'A': [1, 2, 2, 3, 4, 4, 5]})

# 从“A”列获取唯一值
unique_values = df['A'].unique()

print(unique_values) # [1 2 3 4 5]

有哪些方法可以获取 Pandas 中的唯一值?

  1. unique():返回某列中唯一值的数组。
  2. drop_duplicates():删除重复的行或列,返回DataFrame或Series。
  3. value_counts():返回包含唯一值计数的系列。

例子:

  • 使用:drop_duplicates()

# 从 'A' 列中删除重复值
unique_df = df['A'].drop_duplicates()

print(unique_df) # 0 1, 1 2, 2 3, 3 4, 4 5

  • 使用:value_counts()

# 获取唯一值的计数
value_counts = df['A'].value_counts()

print(value_counts) # 2 2, 4 2, 1 1, 3 1, 5 1

如何计算 Pandas DataFrame 中的唯一值?

要计算唯一值,请使用该nunique()方法。它返回列或 DataFrame 中唯一值的数量。

例子:

# 计算“A”列中的唯一值
unique_count = df['A'].nunique()

print(unique_count) # 5

unique()Pandas 中的和有什么区别nunique()

  • unique():返回唯一值的数组。
  • nunique():返回唯一值的数量。

例子:

# 使用 unique()
unique_values = df['A'].unique()
print(unique_values) # [1 2 3 4 5]

# 使用 nunique()
unique_count = df['A'].nunique()
print(unique_count) # 5

在 Pandas 中获取唯一数据时如何处理 NaN 值?

NaNunique()值包含在和方法的结果中nunique()。要处理它们:

  • 在获取唯一值之前删除 NaN 值:

# 具有 NaN 值的 DataFrame
df_with_nan = pd.DataFrame({'A': [1, 2, 2, None, 4, None]})

# 删除 NaN 值并获取唯一值
unique_values = df_with_nan['A'].dropna().unique()

print(unique_values) # [1. 2. 4.]

  • 计算唯一的非 NaN 值:

# 计算除 NaN 之外的唯一值
unique_count = df_with_nan['A'].dropna().nunique()

print(unique_count) # 3


网站公告

今日签到

点亮在社区的每一天
去签到