目录
366、pandas.Series.cat.remove_unused_categories方法
367、pandas.Series.cat.set_categories方法
368、pandas.Series.cat.as_ordered方法
369、pandas.Series.cat.as_unordered方法
370、pandas.Series.sparse.npoints属性
一、用法精讲
366、pandas.Series.cat.remove_unused_categories方法
366-1、语法
# 366、pandas.Series.cat.remove_unused_categories方法
pandas.Series.cat.remove_unused_categories(*args, **kwargs)
Remove categories which are not used.
Returns:
Categorical
Categorical with unused categories dropped.
366-2、参数
366-2-1、inplace(可选,默认值为False):布尔值,指示是否在原地修改Series。若为True,则在原地删除未使用的类别,这样会直接影响原Series;若为False,则返回一个新的Series,原Series不受影响。
366-3、功能
用于移除在分类Series中未被使用的类别,这对于清理数据非常有用,尤其是在对分类数据进行筛选或重新分类后,可以确保类别列表只包含实际存在的类别。
366-4、返回值
返回一个新的Series,如果inplace=False,原有的未使用类别将被移除;如果inplace=True,则返回值为None,因为修改发生在原始数据上。
366-5、说明
无
366-6、用法
366-6-1、数据准备
无
366-6-2、代码示例
# 366、pandas.Series.cat.remove_unused_categories方法
import pandas as pd
# 创建一个分类Series
s = pd.Series(['a', 'b', 'c', 'a'], dtype="category")
# 添加未使用的类别
s = s.cat.add_categories(['d', 'e'])
# 使用remove_unused_categories()方法
cleaned_s = s.cat.remove_unused_categories()
# 查看结果
print("清理前的类别:", s.cat.categories)
print("清理后的类别:", cleaned_s.cat.categories)
366-6-3、结果输出
# 366、pandas.Series.cat.remove_unused_categories方法
# 清理前的类别: Index(['a', 'b', 'c', 'd', 'e'], dtype='object')
# 清理后的类别: Index(['a', 'b', 'c'], dtype='object')
367、pandas.Series.cat.set_categories方法
367-1、语法
# 367、pandas.Series.cat.set_categories方法
pandas.Series.cat.set_categories(*args, **kwargs)
Set the categories to the specified new categories.
new_categories can include new categories (which will result in unused categories) or remove old categories (which results in values set to NaN). If rename=True, the categories will simply be renamed (less or more items than in old categories will result in values set to NaN or in unused categories respectively).
This method can be used to perform more than one action of adding, removing, and reordering simultaneously and is therefore faster than performing the individual steps via the more specialised methods.
On the other hand this methods does not do checks (e.g., whether the old categories are included in the new categories on a reorder), which can result in surprising changes, for example when using special string dtypes, which does not considers a S1 string equal to a single char python string.
Parameters:
new_categories
Index-like
The categories in new order.
ordered
bool, default False
Whether or not the categorical is treated as a ordered categorical. If not given, do not change the ordered information.
rename
bool, default False
Whether or not the new_categories should be considered as a rename of the old categories or as reordered categories.
Returns:
Categorical with reordered categories.
Raises:
ValueError
If new_categories does not validate as categories.
367-2、参数
367-2-1、new_categories(必须):指定新的类别列表,必须是无重复的值,可以是列表、Index 或者其他可迭代对象。
367-2-2、ordered(可选,默认值为False):指示新类别是否是有序的,如果设为True,则类别将视为有序的。
367-2-3、rename(可选,默认值为False):如果设为True,旧类别将被直接重命名为新类别,旧类别的顺序和出现频率将被保留。
367-2-4、inplace(可选,默认值为False):如果设为True,操作将在原地执行,不会返回新的对象。
367-3、功能
用于重设Series的类别,它允许用户将现有的类别替换为一组新的类别,该功能特别适用于需要在数据处理过程中更改或更新分类数据的情况。
367-4、返回值
返回一个新的Series,其中的类别已被替换为指定的新类别,如果inplace=True,原Series的类别将被替换,不会返回新的Series对象。
367-5、说明
无
367-6、用法
367-6-1、数据准备
无
367-6-2、代码示例
# 367、pandas.Series.cat.set_categories方法
import pandas as pd
# 创建一个分类Series
s = pd.Series(["a", "b", "c", "a"], dtype="category")
# 设置新的类别,并将其设为有序
s_new = s.cat.set_categories(["a", "b", "c", "d"], ordered=True)
# 查看结果
print("新的类别:", s_new.cat.categories)
print("是否有序:", s_new.cat.ordered)
367-6-3、结果输出
# 367、pandas.Series.cat.set_categories方法
# 新的类别: Index(['a', 'b', 'c', 'd'], dtype='object')
# 是否有序: True
368、pandas.Series.cat.as_ordered方法
368-1、语法
# 368、pandas.Series.cat.as_ordered方法
pandas.Series.cat.as_ordered(*args, **kwargs)
Set the Categorical to be ordered.
Returns:
Categorical
Ordered Categorical.
368-2、参数
368-2-4、inplace(可选,默认值为False):指定是否直接在原对象上进行操作,如果设为True,原Series会被修改,并且不返回新的对象;如果设为False(默认值),则返回一个新的Series,原对象不受影响。
368-3、功能
将一个分类数据的Series设置为有序的分类类型,有序的分类意味着这些类别之间存在某种顺序关系,比如可以比较大小,这在一些分析任务中非常有用,比如当你需要对分类数据进行排序或比较时。
368-4、返回值
返回一个新的Series,该Series的类别将被设置为有序,如果inplace=True,原Series对象会被修改为有序分类,不返回新的对象。
368-5、说明
无
368-6、用法
368-6-1、数据准备
无
368-6-2、代码示例
# 368、pandas.Series.cat.as_ordered方法
import pandas as pd
# 创建一个分类Series
s = pd.Series(["low", "medium", "high", "medium"], dtype="category")
# 将类别设置为有序
s_ordered = s.cat.as_ordered()
# 查看结果
print("是否有序:", s_ordered.cat.ordered)
print("类别顺序:", s_ordered.cat.categories)
368-6-3、结果输出
# 368、pandas.Series.cat.as_ordered方法
# 是否有序: True
# 类别顺序: Index(['high', 'low', 'medium'], dtype='object')
369、pandas.Series.cat.as_unordered方法
369-1、语法
# 369、pandas.Series.cat.as_unordered方法
pandas.Series.cat.as_unordered(*args, **kwargs)
Set the Categorical to be unordered.
Returns:
Categorical
Unordered Categorical.
369-2、参数
369-2-4、inplace(可选,默认值为False):指定是否直接在原对象上进行操作,如果设为True,原Series会被修改,并且不返回新的对象;如果设为False(默认值),则返回一个新的Series,原对象不受影响。
369-3、功能
将一个有序的分类数据Series转换为无序的分类类型,无序的分类意味着这些类别之间没有内在的顺序关系,比如无法直接比较大小,这通常适用于不需要比较类别顺序的分析任务。
369-4、返回值
返回一个新的Series,该Series的类别将被设置为无序,如果inplace=True,原Series对象会被修改为无序分类,不返回新的对象。
369-5、说明
无
369-6、用法
369-6-1、数据准备
无
369-6-2、代码示例
# 369、pandas.Series.cat.as_unordered方法
import pandas as pd
# 创建一个有序的分类Series
s = pd.Series(["low", "medium", "high", "medium"], dtype="category")
s = s.cat.as_ordered()
# 将类别设置为无序
s_unordered = s.cat.as_unordered()
# 查看结果
print("是否有序:", s_unordered.cat.ordered)
369-6-3、结果输出
# 369、pandas.Series.cat.as_unordered方法
# 是否有序: False
370、pandas.Series.sparse.npoints属性
370-1、语法
# 370、pandas.Series.sparse.npoints属性
pandas.Series.sparse.npoints
The number of non- fill_value points.
370-2、参数
无
370-3、功能
统计稀疏Series中的非缺失值数量。
370-4、返回值
返回的是一个整数值(int),表示稀疏Series中存储的非缺失值的数量。
370-5、说明
无
370-6、用法
370-6-1、数据准备
无
370-6-2、代码示例
# 370、pandas.Series.sparse.npoints属性
from pandas.arrays import SparseArray
s = SparseArray([0, 0, 1, 1, 1], fill_value=0)
data = s.npoints
print(data)
370-6-3、结果输出
# 370、pandas.Series.sparse.npoints属性
# 3