獲取 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 apply, map 和 applymap 的區別
  • 如何按一列的值對 Pandas DataFrame 進行排序