亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > Pandas數據類型之category的用法

Pandas數據類型之category的用法

熱門標簽:如何地圖標注公司 上海正規的外呼系統最新報價 企業彩鈴地圖標注 長春極信防封電銷卡批發 電銷機器人錄音要學習什么 銀川電話機器人電話 外賣地址有什么地圖標注 煙臺電話外呼營銷系統 預覽式外呼系統

創建category

使用Series創建

在創建Series的同時添加dtype="category"就可以創建好category了。category分為兩部分,一部分是order,一部分是字面量:

In [1]: s = pd.Series(["a", "b", "c", "a"], dtype="category")

In [2]: s
Out[2]: 
0    a
1    b
2    c
3    a
dtype: category
Categories (3, object): ['a', 'b', 'c']

可以將DF中的Series轉換為category:

In [3]: df = pd.DataFrame({"A": ["a", "b", "c", "a"]})

In [4]: df["B"] = df["A"].astype("category")

In [5]: df["B"]
Out[32]: 
0    a
1    b
2    c
3    a
Name: B, dtype: category
Categories (3, object): [a, b, c]

可以創建好一個pandas.Categorical ,將其作為參數傳遞給Series:

In [10]: raw_cat = pd.Categorical(
   ....:     ["a", "b", "c", "a"], categories=["b", "c", "d"], ordered=False
   ....: )
   ....: 

In [11]: s = pd.Series(raw_cat)

In [12]: s
Out[12]: 
0    NaN
1      b
2      c
3    NaN
dtype: category
Categories (3, object): ['b', 'c', 'd']

使用DF創建

創建DataFrame的時候,也可以傳入 dtype="category":

In [17]: df = pd.DataFrame({"A": list("abca"), "B": list("bccd")}, dtype="category")

In [18]: df.dtypes
Out[18]: 
A    category
B    category
dtype: object

DF中的A和B都是一個category:

In [19]: df["A"]
Out[19]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories (3, object): ['a', 'b', 'c']

In [20]: df["B"]
Out[20]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories (3, object): ['b', 'c', 'd']

或者使用df.astype("category")將DF中所有的Series轉換為category:

In [21]: df = pd.DataFrame({"A": list("abca"), "B": list("bccd")})

In [22]: df_cat = df.astype("category")

In [23]: df_cat.dtypes
Out[23]: 
A    category
B    category
dtype: object

創建控制

默認情況下傳入dtype='category' 創建出來的category使用的是默認值:

1.Categories是從數據中推斷出來的。

2.Categories是沒有大小順序的。

可以顯示創建CategoricalDtype來修改上面的兩個默認值:

In [26]: from pandas.api.types import CategoricalDtype

In [27]: s = pd.Series(["a", "b", "c", "a"])

In [28]: cat_type = CategoricalDtype(categories=["b", "c", "d"], ordered=True)

In [29]: s_cat = s.astype(cat_type)

In [30]: s_cat
Out[30]: 
0    NaN
1      b
2      c
3    NaN
dtype: category
Categories (3, object): ['b'  'c'  'd']

同樣的CategoricalDtype還可以用在DF中:

In [31]: from pandas.api.types import CategoricalDtype

In [32]: df = pd.DataFrame({"A": list("abca"), "B": list("bccd")})

In [33]: cat_type = CategoricalDtype(categories=list("abcd"), ordered=True)

In [34]: df_cat = df.astype(cat_type)

In [35]: df_cat["A"]
Out[35]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories (4, object): ['a'  'b'  'c'  'd']

In [36]: df_cat["B"]
Out[36]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories (4, object): ['a'  'b'  'c'  'd']

轉換為原始類型

使用Series.astype(original_dtype) 或者 np.asarray(categorical)可以將Category轉換為原始類型:

In [39]: s = pd.Series(["a", "b", "c", "a"])

In [40]: s
Out[40]: 
0    a
1    b
2    c
3    a
dtype: object

In [41]: s2 = s.astype("category")

In [42]: s2
Out[42]: 
0    a
1    b
2    c
3    a
dtype: category
Categories (3, object): ['a', 'b', 'c']

In [43]: s2.astype(str)
Out[43]: 
0    a
1    b
2    c
3    a
dtype: object

In [44]: np.asarray(s2)
Out[44]: array(['a', 'b', 'c', 'a'], dtype=object)

categories的操作

獲取category的屬性

Categorical數據有 categoriesordered 兩個屬性。可以通過s.cat.categoriess.cat.ordered來獲取:

In [57]: s = pd.Series(["a", "b", "c", "a"], dtype="category")

In [58]: s.cat.categories
Out[58]: Index(['a', 'b', 'c'], dtype='object')

In [59]: s.cat.ordered
Out[59]: False

重排category的順序:

In [60]: s = pd.Series(pd.Categorical(["a", "b", "c", "a"], categories=["c", "b", "a"]))

In [61]: s.cat.categories
Out[61]: Index(['c', 'b', 'a'], dtype='object')

In [62]: s.cat.ordered
Out[62]: False

重命名categories

通過給s.cat.categories賦值可以重命名categories:

In [67]: s = pd.Series(["a", "b", "c", "a"], dtype="category")

In [68]: s
Out[68]: 
0    a
1    b
2    c
3    a
dtype: category
Categories (3, object): ['a', 'b', 'c']

In [69]: s.cat.categories = ["Group %s" % g for g in s.cat.categories]

In [70]: s
Out[70]: 
0    Group a
1    Group b
2    Group c
3    Group a
dtype: category
Categories (3, object): ['Group a', 'Group b', 'Group c']

使用rename_categories可以達到同樣的效果:

In [71]: s = s.cat.rename_categories([1, 2, 3])

In [72]: s
Out[72]: 
0    1
1    2
2    3
3    1
dtype: category
Categories (3, int64): [1, 2, 3]

或者使用字典對象:

# You can also pass a dict-like object to map the renaming
In [73]: s = s.cat.rename_categories({1: "x", 2: "y", 3: "z"})

In [74]: s
Out[74]: 
0    x
1    y
2    z
3    x
dtype: category
Categories (3, object): ['x', 'y', 'z']

使用add_categories添加category

可以使用add_categories來添加category:

In [77]: s = s.cat.add_categories([4])

In [78]: s.cat.categories
Out[78]: Index(['x', 'y', 'z', 4], dtype='object')

In [79]: s
Out[79]: 
0    x
1    y
2    z
3    x
dtype: category
Categories (4, object): ['x', 'y', 'z', 4]

使用remove_categories刪除category

In [80]: s = s.cat.remove_categories([4])

In [81]: s
Out[81]: 
0    x
1    y
2    z
3    x
dtype: category
Categories (3, object): ['x', 'y', 'z']

刪除未使用的cagtegory

In [82]: s = pd.Series(pd.Categorical(["a", "b", "a"], categories=["a", "b", "c", "d"]))

In [83]: s
Out[83]: 
0    a
1    b
2    a
dtype: category
Categories (4, object): ['a', 'b', 'c', 'd']

In [84]: s.cat.remove_unused_categories()
Out[84]: 
0    a
1    b
2    a
dtype: category
Categories (2, object): ['a', 'b']

重置cagtegory

使用set_categories()可以同時進行添加和刪除category操作:

In [85]: s = pd.Series(["one", "two", "four", "-"], dtype="category")

In [86]: s
Out[86]: 
0     one
1     two
2    four
3       -
dtype: category
Categories (4, object): ['-', 'four', 'one', 'two']

In [87]: s = s.cat.set_categories(["one", "two", "three", "four"])

In [88]: s
Out[88]: 
0     one
1     two
2    four
3     NaN
dtype: category
Categories (4, object): ['one', 'two', 'three', 'four']

category排序

如果category創建的時候帶有 ordered=True , 那么可以對其進行排序操作:

In [91]: s = pd.Series(["a", "b", "c", "a"]).astype(CategoricalDtype(ordered=True))

In [92]: s.sort_values(inplace=True)

In [93]: s
Out[93]: 
0    a
3    a
1    b
2    c
dtype: category
Categories (3, object): ['a'  'b'  'c']

In [94]: s.min(), s.max()
Out[94]: ('a', 'c')

可以使用 as_ordered() 或者 as_unordered() 來強制排序或者不排序:

In [95]: s.cat.as_ordered()
Out[95]: 
0    a
3    a
1    b
2    c
dtype: category
Categories (3, object): ['a'  'b'  'c']

In [96]: s.cat.as_unordered()
Out[96]: 
0    a
3    a
1    b
2    c
dtype: category
Categories (3, object): ['a', 'b', 'c']

重排序

使用Categorical.reorder_categories() 可以對現有的category進行重排序:

In [103]: s = pd.Series([1, 2, 3, 1], dtype="category")

In [104]: s = s.cat.reorder_categories([2, 3, 1], ordered=True)

In [105]: s
Out[105]: 
0    1
1    2
2    3
3    1
dtype: category
Categories (3, int64): [2  3  1]

多列排序

sort_values 支持多列進行排序:

In [109]: dfs = pd.DataFrame(
   .....:     {
   .....:         "A": pd.Categorical(
   .....:             list("bbeebbaa"),
   .....:             categories=["e", "a", "b"],
   .....:             ordered=True,
   .....:         ),
   .....:         "B": [1, 2, 1, 2, 2, 1, 2, 1],
   .....:     }
   .....: )
   .....: 

In [110]: dfs.sort_values(by=["A", "B"])
Out[110]: 
   A  B
2  e  1
3  e  2
7  a  1
6  a  2
0  b  1
5  b  1
1  b  2
4  b  2

比較操作

如果創建的時候設置了ordered==True ,那么category之間就可以進行比較操作。支持 ==, !=, >, >=, , 和 =這些操作符。

In [113]: cat = pd.Series([1, 2, 3]).astype(CategoricalDtype([3, 2, 1], ordered=True))

In [114]: cat_base = pd.Series([2, 2, 2]).astype(CategoricalDtype([3, 2, 1], ordered=True))

In [115]: cat_base2 = pd.Series([2, 2, 2]).astype(CategoricalDtype(ordered=True))
In [119]: cat > cat_base
Out[119]: 
0     True
1    False
2    False
dtype: bool

In [120]: cat > 2
Out[120]: 
0     True
1    False
2    False
dtype: bool

其他操作

Cagetory本質上來說還是一個Series,所以Series的操作category基本上都可以使用,比如: Series.min(), Series.max() 和 Series.mode()。

value_counts:

In [131]: s = pd.Series(pd.Categorical(["a", "b", "c", "c"], categories=["c", "a", "b", "d"]))

In [132]: s.value_counts()
Out[132]: 
c    2
a    1
b    1
d    0
dtype: int64

DataFrame.sum():

In [133]: columns = pd.Categorical(
   .....:     ["One", "One", "Two"], categories=["One", "Two", "Three"], ordered=True
   .....: )
   .....: 

In [134]: df = pd.DataFrame(
   .....:     data=[[1, 2, 3], [4, 5, 6]],
   .....:     columns=pd.MultiIndex.from_arrays([["A", "B", "B"], columns]),
   .....: )
   .....: 

In [135]: df.sum(axis=1, level=1)
Out[135]: 
   One  Two  Three
0    3    3      0
1    9    6      0

Groupby:

In [136]: cats = pd.Categorical(
   .....:     ["a", "b", "b", "b", "c", "c", "c"], categories=["a", "b", "c", "d"]
   .....: )
   .....: 

In [137]: df = pd.DataFrame({"cats": cats, "values": [1, 2, 2, 2, 3, 4, 5]})

In [138]: df.groupby("cats").mean()
Out[138]: 
      values
cats        
a        1.0
b        2.0
c        4.0
d        NaN

In [139]: cats2 = pd.Categorical(["a", "a", "b", "b"], categories=["a", "b", "c"])

In [140]: df2 = pd.DataFrame(
   .....:     {
   .....:         "cats": cats2,
   .....:         "B": ["c", "d", "c", "d"],
   .....:         "values": [1, 2, 3, 4],
   .....:     }
   .....: )
   .....: 

In [141]: df2.groupby(["cats", "B"]).mean()
Out[141]: 
        values
cats B        
a    c     1.0
     d     2.0
b    c     3.0
     d     4.0
c    c     NaN
     d     NaN

Pivot tables:

In [142]: raw_cat = pd.Categorical(["a", "a", "b", "b"], categories=["a", "b", "c"])

In [143]: df = pd.DataFrame({"A": raw_cat, "B": ["c", "d", "c", "d"], "values": [1, 2, 3, 4]})

In [144]: pd.pivot_table(df, values="values", index=["A", "B"])
Out[144]: 
     values
A B        
a c       1
  d       2
b c       3
  d       4

到此這篇關于Pandas數據類型之category的用法的文章就介紹到這了,更多相關category的用法內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 詳細介紹在pandas中創建category類型數據的幾種方法
  • python-pandas創建Series數據類型的操作
  • 對pandas中兩種數據類型Series和DataFrame的區別詳解
  • Pandas實現數據類型轉換的一些小技巧匯總

標簽:西寧 潮州 湖北 佳木斯 宜昌 上饒 珠海 盤錦

巨人網絡通訊聲明:本文標題《Pandas數據類型之category的用法》,本文關鍵詞  Pandas,數據,類型,之,category,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Pandas數據類型之category的用法》相關的同類信息!
  • 本頁收集關于Pandas數據類型之category的用法的相關信息資訊供網民參考!
  • 推薦文章
    91麻豆精品国产高清在线| 四虎久久影院| 日本特黄特色aa大片免费| 精品国产一区二区三区久久久狼| 欧美激情一区二区三区在线 | 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 国产一区二区精品久| 免费国产一级特黄aa大片在线| 韩国毛片 免费| 日韩专区亚洲综合久久| 黄视频网站免费看| 九九久久国产精品| 免费的黄色小视频| 亚洲 国产精品 日韩| 国产视频一区二区在线播放| 欧美爱色| 欧美激情一区二区三区视频| 国产麻豆精品免费密入口| 国产不卡高清在线观看视频| 黄色免费网站在线| 成人影院一区二区三区| 国产精品免费久久| 99热精品一区| 999久久狠狠免费精品| 中文字幕一区二区三区 精品| 亚洲女初尝黑人巨高清在线观看| 国产极品精频在线观看| 99久久精品国产高清一区二区| 欧美电影免费| 亚洲 欧美 91| 黄视频网站免费| 国产成人精品影视| 国产网站麻豆精品视频| 999久久久免费精品国产牛牛| 免费国产在线视频| 日韩av片免费播放| 国产91精品露脸国语对白| 国产成人精品影视| 青青久久网| 天天色成人| 日韩在线观看免费| 亚洲 国产精品 日韩| 国产一区免费观看| 国产视频网站在线观看| 日日夜夜婷婷| 麻豆网站在线看| 欧美爱色| 亚洲精品中文一区不卡| 天天做日日爱夜夜爽| 中文字幕97| 国产高清视频免费| 久久国产影视免费精品| 四虎影视久久| 精品久久久久久中文字幕一区| 91麻豆爱豆果冻天美星空| 精品在线视频播放| 99色视频在线| 久久国产精品永久免费网站| 在线观看成人网 | 亚洲精品影院| 一本高清在线| 国产激情一区二区三区| 久久成人亚洲| 91麻豆精品国产自产在线观看一区| 久久成人亚洲| 精品在线视频播放| 九九干| 欧美另类videosbestsex久久| 免费国产在线视频| 青青久久精品| 黄色福利片| 国产a毛片| 免费国产一级特黄aa大片在线| 日日夜人人澡人人澡人人看免| 天天做日日爱| 午夜家庭影院| 欧美1区| 亚洲精品影院| 国产网站免费观看| 999久久狠狠免费精品| 国产精品1024在线永久免费| 国产a网| 九九久久国产精品| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 午夜激情视频在线播放| 欧美爱色| 九九精品久久| 亚飞与亚基在线观看| 美女被草网站| 国产成人精品综合在线| 91麻豆精品国产高清在线| 国产韩国精品一区二区三区| 久草免费资源| 亚洲第一色在线| 四虎影视精品永久免费网站| 亚洲天堂在线播放| 夜夜操天天爽| 一a一级片| 韩国毛片 免费| 欧美1卡一卡二卡三新区| 一本高清在线| 欧美激情伊人| 日韩中文字幕在线观看视频| 日本免费区| 日日日夜夜操| 久草免费在线色站| 日韩中文字幕在线观看视频| 精品久久久久久中文字幕一区| 久久精品店| 日本免费区| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 午夜精品国产自在现线拍| 日韩专区一区| 日韩在线观看免费| 欧美a级片视频| 成人高清免费| 精品视频一区二区| 日韩免费在线视频| 免费的黄色小视频| 亚洲女人国产香蕉久久精品| 日韩av片免费播放| 国产91精品一区| 成人免费网站久久久| 亚洲天堂免费观看| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 国产欧美精品| 日本特黄特黄aaaaa大片| 国产高清视频免费| 天天做日日干| 四虎影视库国产精品一区| 欧美国产日韩一区二区三区| 国产一区国产二区国产三区| 日韩欧美一二三区| 欧美国产日韩久久久| 欧美a级大片| 黄视频网站免费观看| 一级女性全黄生活片免费| 91麻豆高清国产在线播放| 国产麻豆精品免费密入口| 99热精品一区| 中文字幕一区二区三区精彩视频| 成人免费观看的视频黄页| 一本高清在线| 免费毛片播放| 中文字幕一区二区三区精彩视频| 青青久久国产成人免费网站| 国产一区二区精品尤物| 成人a大片高清在线观看| 久久久成人影院| 日韩av片免费播放| 日本免费区| 欧美一级视频免费| 美女免费精品视频在线观看| 一级女性全黄久久生活片| 精品国产三级a∨在线观看| 成人a大片高清在线观看| 免费的黄色小视频| 天天做人人爱夜夜爽2020| 可以免费看毛片的网站| 精品毛片视频| 免费毛片基地| 精品国产三级a| 可以在线看黄的网站| 国产一区国产二区国产三区| 亚洲精品影院久久久久久| 国产激情视频在线观看| 国产a网| 亚飞与亚基在线观看| 亚洲精品影院| 99热精品一区| 日韩一级黄色片| 九九久久99| 精品国产香蕉在线播出| 一a一级片| 日韩av东京社区男人的天堂| 成人高清免费| 亚洲女初尝黑人巨高清在线观看| 午夜精品国产自在现线拍| 99色视频在线观看| 亚洲精品永久一区| 亚洲天堂免费| 中文字幕一区二区三区 精品| 精品国产一区二区三区国产馆| 日日夜夜婷婷| 精品视频在线看| 可以免费看污视频的网站| 欧美国产日韩一区二区三区| 欧美另类videosbestsex久久| 青青青草影院 | 国产一区二区精品| 一本伊大人香蕉高清在线观看| 国产a视频| 黄视频网站免费| 成人免费观看网欧美片| 午夜在线亚洲| 韩国三级视频网站| 国产伦精品一区二区三区无广告| 免费一级片网站| 国产a网| 日韩中文字幕在线亚洲一区|