获取 Pandas 列中的唯一值并进行排序

  1. unique 方法获取 Pandas DataFrame 列中的唯一值
  2. drop_duplicates 方法获取 Pandas DataFrame 列中的唯一值
  3. 在 Pandas DataFrame 中对列进行排序

本文将介绍如何获取 Pandas DataFrame 列中的唯一值。

例如,假设我们有一个由个人及其职业组成的 DataFrame,我们想知道职业的总数。在这种情况下,我们不能简单地使用总行数来确定独特的职业总数,因为许多人可能有相同的工作。对于这种情况,我们可以使用 Pandas 库提供的 unique()drop_duplicates() 函数。

知道如何对 DataFrame 进行排序也是很重要的,因为它可以帮助可视化和理解数据。sorted()sort_values() 函数可以帮助实现这一点。

我们将在本教程中对以下 DataFrame 进行排序和删除。

import pandas as pd
import numpy as np

df = pd.DataFrame({'A':[7,1,5,4,2,1,4,4,8],'B':[1,2,8,5,3,4,2,6,8]})

print(df)

输出:

   A  B
0  7  1
1  1  2
2  5  8
3  4  5
4  2  3
5  1  4
6  4  2
7  4  6
8  8  8

unique 方法获取 Pandas DataFrame 列中的唯一值

Pandas Seriesunique() 方法在我们处理 DataFrame 的单列时使用,并返回一列的所有唯一元素。使用 unique() 函数的最终输出是一个数组。

例:

import pandas as pd
import numpy as np

df = pd.DataFrame({'A':[7,1,5,4,2,1,4,4,8],'B':[1,2,8,5,3,4,2,6,8]})

print(df['A'].unique())
print(type(df['A'].unique()))

输出:

[7 1 5 4 2 8]
numpy.ndarray

drop_duplicates 方法获取 Pandas DataFrame 列中的唯一值

drop_duplicates() 可应用于 DataFrame 或其子集,并保留 DataFrame 对象的类型。当处理巨大的数据集以删除重复值时,它也被认为是一个更快的选择,

例:

import pandas as pd
import numpy as np

df = pd.DataFrame({'A':[7,1,5,4,2,1,4,4,8],'B':[1,2,8,5,3,4,2,6,8]})

print(df.drop_duplicates(subset = "A"))
print(type(df.drop_duplicates(subset = "A")))

输出:

   A  B
0  7  1
1  1  2
2  5  8
3  4  5
4  2  3
8  8  8
pandas.core.frame.DataFrame

在 Pandas DataFrame 中对列进行排序

我们可以使用 sorted() 方法对一个列进行排序,但它将最终结果转换为一个列表类型的对象。我们也可以通过将 reversed 参数设置为 True 来对列值进行降序排序。

下面的例子按照升序对列进行排序,并删除重复的值。

import pandas as pd
import numpy as np

df = pd.DataFrame({'A':[7,1,5,4,2,1,4,4,8],'B':[1,2,8,5,3,4,2,6,8]})

df_new = df.drop_duplicates(subset = "A")

print(sorted(df_new['A']))
print(type(sorted(df_new['A'])))

输出:

[1, 2, 4, 5, 7, 8]
list

sort_values() 是另一个对 DataFrame 进行排序的灵活选项。在这里,我们可以使用 by 参数指定要排序的列,使用 ascending 参数指定顺序是升序还是降序。它保留了对象类型为 Pandas DataFrame。

下面的例子是将列按降序排序,并删除重复的值。

import pandas as pd
import numpy as np

df = pd.DataFrame({'A':[7,1,5,4,2,1,4,4,8],'B':[1,2,8,5,3,4,2,6,8]})

df_new = df.drop_duplicates(subset = "A")

print(df_new.sort_values(by = 'A', ascending = False))
type(df_new.sort_values(by = 'A'))

输出:

   A  B
8  8  8
0  7  1
2  5  8
3  4  5
4  2  3
1  1  2
pandas.core.frame.DataFrame

相关文章 - Pandas DataFrame

  • 如何在 Pandas 中遍历 DataFrame 的行
  • 在 Pandas 中把对象转换为浮点型