Pandas数据分析19——pandas分类数据

 参考书目:《深入浅出Pandas:利用Python进行数据处理与分析》


pandas中有专门的分类数据类型,虽然平时用的不多,但是也需要了解一下。读取spss文件时会自动生成分类数据类型。本次博客了解一下分类数据的生成和基础操作。


还是先导入包

import numpy as np
import pandas as pd

分类数据生成 

#使用 dtype="category" 来指定数据类型:

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

Pandas数据分析19——pandas分类数据_第1张图片

 #.astype('category') 可以转换为分类数据:

df = pd.DataFrame({"A": ["a", "b", "c", "a"]})
df["B"] = df["A"].astype('category')

#分箱数据自动变为分类数据

pd.Series(pd.cut(range(1,10,2),[0,5,10]))

Pandas数据分析19——pandas分类数据_第2张图片

 #pandas.Categorical 可以创建一个类型数据序列到 DataFrame 中:

raw_cat = pd.Categorical(["a", "b", "c", "d"],
                         categories=["b", "c", "d"],
                         ordered=False)
s = pd.Series(raw_cat)
s

Pandas数据分析19——pandas分类数据_第3张图片

 


类型转化

先读取案例数据

data = 'https://www.gairuo.com/file/data/dataset/team.xlsx'
df = pd.read_excel(data) 
df.head()

Pandas数据分析19——pandas分类数据_第4张图片

将team一列转化为分类数据‘

df.team.astype('category')

’ Pandas数据分析19——pandas分类数据_第5张图片


修改分类 

s = pd.Series(["a", "b", "c", "a"], dtype="category")
s.cat.categories=['0','1','2']
s

Pandas数据分析19——pandas分类数据_第6张图片将abc类别改为了012

 rename_categories也可以修改

s.cat.rename_categories(['A','B','C'])

 Pandas数据分析19——pandas分类数据_第7张图片

s.cat.rename_categories({'a':0,'b':1,'c':2}) #字典修改

Pandas数据分析19——pandas分类数据_第8张图片

s.cat.set_categories(['A','B','C'])  #设定分类修改

Pandas数据分析19——pandas分类数据_第9张图片

 


追加新的分类

s = s.cat.add_categories([4])
s.cat.categories


 删除分类

s = s.cat.remove_categories([4])
s

Pandas数据分析19——pandas分类数据_第10张图片

 #删除未使用的类别:

s = pd.Series(pd.Categorical(["a", "b", "a"],categories=["a", "b", "c", "d"]))
s.cat.remove_unused_categories()  #c为使用,删除

Pandas数据分析19——pandas分类数据_第11张图片数据里面没c,删掉

 


顺序

s = pd.Series(pd.Categorical(["a", "b", "c", "a"], ordered=False))
s.sort_values(inplace=True) # 排序
s

Pandas数据分析19——pandas分类数据_第12张图片

 #可以使用 as_ordered() 将类别数据设置为排序,或者使用 as_unordered() 将类别数据设置为无序。 这些默认情况下将返回一个新对象。

s.cat.as_ordered()

Pandas数据分析19——pandas分类数据_第13张图片

s.cat.as_unordered()

Pandas数据分析19——pandas分类数据_第14张图片

你可能感兴趣的:(pandas数据分析,pandas,数据分析,分类,python,numpy)