Pandas中的分類

2021-10-07 13:32:43 字數 3380 閱讀 9318

一、分類變數的結構

乙個分類變數包括三個部分,元素值(values)、分類類別(categories)、是否有序(order)

從上面可以看出,使用cut函式建立的分類變數預設為有序分類變數

(一)獲取分類屬性

(a)describe方法

該方法描述了乙個分類序列的情況,包括非缺失值個數、元素值類別數(不是分類類別數)、最多次出現的元素及其頻數。比如:

in: s = pd.series(pd.categorical(["a", "b", "c", "a",np.nan], categories=['a','b','c','d']))

s.describe()

out: count     4

unique    3

top       a

freq      2

dtype: object

(b)categories和ordered屬性

檢視分類類別和是否排序

(二)修改分類屬性

(a)利用set_categories修改

修改分類,但本身值不會變化。比如:

in:s = pd.series(pd.categorical(["a", "b", "c", "a",np.nan], categories=['a','b','c','d']))

s.cat.set_categories(['new_a','c'])

out: 0    nan

1    nan

2      c

3    nan

4    nan

dtype: category

categories (2, object): [new_a, c]

(b)利用rename_categories修改

需要注意的是該方法會把值和分類同時修改。

in:s = pd.series(pd.categorical(["a", "b", "c", "a",np.nan], categories=['a','b','c','d']))

s.cat.rename_categories(['new_%s'%i for i in s.cat.categories])

out: 0    new_a

1    new_b

2    new_c

3    new_a

4      nan

dtype: category

categories (4, object): [new_a, new_b, new_c, new_d]

(c)利用add_categories新增

in: s = pd.series(pd.categorical(["a", "b", "c", "a",np.nan], categories=['a','b','c','d']))

s.cat.add_categories(['e'])

out: 0      a

1      b

2      c

3      a

4    nan

dtype: category

categories (5, object): [a, b, c, d, e]

(d)利用remove_categories移除

in :s = pd.series(pd.categorical(["a", "b", "c", "a",np.nan], categories=['a','b','c','d']))

s.cat.remove_categories(['d'])

out: 0      a

1      b

2      c

3      a

4    nan

dtype: category

categories (3, object): [a, b, c]

(e)刪除元素值未出現的分類型別

in: s = pd.series(pd.categorical(["a", "b", "c", "a",np.nan], categories=['a','b','c','d']))

s.cat.remove_unused_categories()

out: 0      a

1      b

2      c

3      a

4    nan

dtype: category

categories (3, object): [a, b, c]

二、分類變數的建立

1. 分類變數的建立

(a)用series建立。

in:pd.series(["a", "b", "c", "a"], dtype="category")

out: 0    a

1    b

2    c

3    a

dtype: category

categories (3, object): [a, b, c]

(b)對dataframe指定型別建立

in: temp_df = pd.dataframe()

temp_df.dtypes

out: a    category

b      object

dtype: object

(c)利用內建categorical型別建立

in:cat = pd.categorical(["a", "b", "c", "a"], categories=['a','b','c'])

pd.series(cat)

out: 0    a

1    b

2    c

3    a

dtype: category

categories (3, object): [a, b, c]

(d)利用cut函式建立

in:pd.cut(np.random.randint(0,60,5), [0,10,30,60])

[(10, 30], (0, 10], (10, 30], (30, 60], (30, 60]]

out: categories (3, interval[int64]): [(0, 10] < (10, 30] < (30, 60]]

三、分類變數的排序

前面提到,分類資料型別被分為有序和無序,這非常好理解,例如分數區間的高低是有序變數,考試科目的類別一般看做無序變數。

(一)建立序

一般來說會將乙個序列轉為有序變數,可以利用as_ordered方法。退化為無序變數,只需要使用as_unordered。

利用set_categories方法中的order引數。

利用reorder_categories方法。這個方法的特點在於,新設定的分類必須與原分類為同一集。

(二)排序

所有的值排序和索引排序方法對於分類來講都是適用的。

pandas分類資料

二 分類變數的排序 問題與習題 category的建立有多種形式 series dataframe指定型別 內建categorical型別 cut函式。print pd.series a b c a dtype category temp df pd.dataframe print temp df....

pandas處理分類變數的方法

在做 分類的任務中,如果出現了分類變數,要對其進行一些處理,例如 在對這些分類變數處理的時候要注意以下兩點原則 離散特徵的取值之間沒有大小的意義,比如color red,blue 那麼就使用one hot編碼 離散特徵的取值有大小的意義,比如size x,xl,xxl 那麼就使用數值的對映 遵循這兩...

pandas中DataFrame mean函式用法

mean 平均數 pandas中的df.mean 函式預設是等價於df.mean 0 即按軸方向求平均,得到每列資料的平均值。相反的df.mean 1 則代表按行方向求平均,得到每行資料的平均值。舉例 我們 首先匯入pandas包 import pandas as pd建立矩陣 首先使用預設方法 會...