一、分類變數的結構
乙個分類變數包括三個部分,元素值(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建立矩陣 首先使用預設方法 會...