目录
806、pandas.Categorical.codes属性
807、pandas.Categorical.__array__魔法方法
808、pandas.arrays.SparseArray类
810、pandas.arrays.StringArray类
一、用法精讲
806、pandas.Categorical.codes属性
806-1、语法
# 806、pandas.Categorical.codes属性
property Categorical.codes
The category codes of this categorical index.
Codes are an array of integers which are the positions of the actual values in the categories array.
There is no setter, use the other categorical methods and the normal item setter to change values in the categorical.
Returns:
ndarray[int]
A non-writable view of the codes array.
806-2、参数
无
806-3、功能
返回分类数据中每个值的编码,这些编码值通常是整数类型,表示每个分类值在整个分类集合中的索引位置,这对于许多数值运算和分析非常有用,尤其是在需要将分类变量转化为数值变量进行计算或建模时。
806-4、返回值
返回值是一个包含整数编码的numpy数组,每个整数对应于原始分类数据中的一个值,每个整数表示其对应的分类值在整个分类类别中的位置索引。
806-5、说明
无
806-6、用法
806-6-1、数据准备
无
806-6-2、代码示例
# 806、pandas.Categorical.codes属性
import pandas as pd
# 创建分类数据
categories = pd.Categorical(['红', '蓝', '绿', '红'])
# 获取整数编码
codes = categories.codes
print(codes)
806-6-3、结果输出
# 806、pandas.Categorical.codes属性
# [0 2 1 0]
807、pandas.Categorical.__array__魔法方法
807-1、语法
# 807、pandas.Categorical.__array__魔法方法
pandas.Categorical.__array__(dtype=None, copy=None)
The numpy array interface.
Returns:
numpy.array
A numpy array of either the specified dtype or, if dtype==None (default), the same dtype as categorical.categories.dtype.
807-2、参数
807-2-1、dtype(可选,默认值为None):指定转换后数组的数据类型,如果未提供,方法将根据Categorical对象的类型自动推导数据类型。
807-2-2、copy(可选,默认值为None):布尔值,如果设置为True,将强制返回数组的副本,如果设置为False,则返回的可能是视图或原始数组,具体取决于数据的情况。
807-3、功能
为Categorical数据提供了一种灵活的方式来转换为NumPy数组,可根据需要调整数据类型和内存使用情况。
807-4、返回值
返回一个NumPy数组,其中包含Categorical对象的值。
807-5、说明
无
807-6、用法
807-6-1、数据准备
无
807-6-2、代码示例
# 807、pandas.Categorical.__array__魔法方法
import pandas as pd
# 创建分类数据
categories = pd.Categorical(['红', '蓝', '绿', '红'])
# 将分类数据转换为NumPy数组
array_representation = categories.__array__(dtype=str)
print(array_representation)
807-6-3、结果输出
# 807、pandas.Categorical.__array__魔法方法
# ['红' '蓝' '绿' '红']
808、pandas.arrays.SparseArray类
808-1、语法
# 808、pandas.arrays.SparseArray类
class pandas.arrays.SparseArray(data, sparse_index=None, fill_value=None, kind='integer', dtype=None, copy=False)
An ExtensionArray for storing sparse data.
Parameters:
dataarray-like or scalar
A dense array of values to store in the SparseArray. This may contain fill_value.
sparse_indexSparseIndex, optional
fill_valuescalar, optional
Elements in data that are fill_value are not stored in the SparseArray. For memory savings, this should be the most common value in data. By default, fill_value depends on the dtype of data:
data.dtype
na_value
float
np.nan
int
0
bool
False
datetime64
pd.NaT
timedelta64
pd.NaT
The fill value is potentially specified in three ways. In order of precedence, these are
The fill_value argument
dtype.fill_value if fill_value is None and dtype is a SparseDtype
data.dtype.fill_value if fill_value is None and dtype is not a SparseDtype and data is a SparseArray.
kindstr
Can be ‘integer’ or ‘block’, default is ‘integer’. The type of storage for sparse locations.
‘block’: Stores a block and block_length for each contiguous span of sparse values. This is best when sparse data tends to be clumped together, with large regions of fill-value values between sparse values.
‘integer’: uses an integer to store the location of each sparse value.
dtypenp.dtype or SparseDtype, optional
The dtype to use for the SparseArray. For numpy dtypes, this determines the dtype of self.sp_values. For SparseDtype, this determines self.sp_values and self.fill_value.
copybool, default False
Whether to explicitly copy the incoming data array.
808-2、参数
808-2-1、data(必须):数组,表示输入的数据,可以是列表、NumPy 数组或其他可转换为数组的对象。
808-2-2、sparse_index(可选,默认值为None):一个索引对象,用于指示非零值的位置,如果未指定,将自动生成。
808-2-3、fill_value(可选,默认值为None):在稀疏数组中用来填充的缺失值,通常在处理稀疏数据时使用0或NaN。
808-2-4、kind(可选,默认值为'integer'):指定稀疏数组类型,有'integer'、'boolean'或'object'。
808-2-5、dtype(可选,默认值为None):指定数据的dtype,默认为None,表示使用数据本身的 dtype。
808-2-6、copy(可选,默认值为False):如果设置为True,则强制复制输入数据;如果设置为False,则可能不会复制,如果数据已经是稀疏格式。
808-3、功能
用于处理稀疏数据,即大部分值为零(或某个其他“缺失”值)的数组,该类能够有效管理稀疏数据,节省内存并提高性能。
808-4、返回值
返回一个SparseArray对象,表示稀疏数据的数组。
808-5、说明
无
808-6、用法
808-6-1、数据准备
无
808-6-2、代码示例
# 808、pandas.arrays.SparseArray类
import pandas as pd
# 创建一个稀疏数组
sparse_array = pd.arrays.SparseArray([1, 0, 0, 2, 0, 3])
print(sparse_array)
print(sparse_array.dtype)
808-6-3、结果输出
# 808、pandas.arrays.SparseArray类
# [1, 0, 0, 2, 0, 3]
# Fill: 0
# IntIndex
# Indices: array([0, 3, 5])
#
# Sparse[int64, 0]
809、pandas.SparseDtype类
809-1、语法
# 809、pandas.SparseDtype类
class pandas.SparseDtype(dtype=<class 'numpy.float64'>, fill_value=None)
Dtype for data stored in SparseArray.
This dtype implements the pandas ExtensionDtype interface.
Parameters:
dtypestr, ExtensionDtype, numpy.dtype, type, default numpy.float64
The dtype of the underlying array storing the non-fill value values.
fill_valuescalar, optional
The scalar value not stored in the SparseArray. By default, this depends on dtype.
dtype
na_value
float
np.nan
int
0
bool
False
datetime64
pd.NaT
timedelta64
pd.NaT
The default value may be overridden by specifying a fill_value.
809-2、参数
无
809-3、功能
提供了一种高效的方式来存储和处理稀疏数据,稀疏数据是指数据集中大部分值为零或缺失值的数据,通过使用稀疏数据类型,可以显著减少内存消耗,特别是在处理大规模数据集时。
809-4、返回值
返回一个稀疏数据类型的实例,该实例可以用于创建稀疏数组或稀疏数据框。
809-5、说明
无
809-6、用法
809-6-1、数据准备
无
809-6-2、代码示例
# 809、pandas.SparseDtype类
import pandas as pd
import numpy as np
# 创建一个稀疏数据类型
sparse_dtype = pd.SparseDtype(dtype=np.float64, fill_value=0.0)
# 创建一个稀疏数组
data = np.array([1.0, 0.0, 2.0, 0.0, 3.0])
sparse_array = pd.arrays.SparseArray(data, dtype=sparse_dtype)
# 创建一个稀疏数据框
df = pd.DataFrame({
'A': [1.0, 0.0, 2.0, 0.0, 3.0],
'B': [0.0, 0.0, 0.0, 0.0, 0.0]
})
sparse_df = df.astype(sparse_dtype)
print(sparse_array)
print(sparse_df)
809-6-3、结果输出
# 809、pandas.SparseDtype类
# [1.0, 0.0, 2.0, 0.0, 3.0]
# Fill: 0.0
# IntIndex
# Indices: array([0, 2, 4])
#
# A B
# 0 1.0 0.0
# 1 0.0 0.0
# 2 2.0 0.0
# 3 0.0 0.0
# 4 3.0 0.0
810、pandas.arrays.StringArray类
810-1、语法
# 810、pandas.arrays.StringArray类
class pandas.arrays.StringArray(values, copy=False)
Extension array for string data.
Warning
StringArray is considered experimental. The implementation and parts of the API may change without warning.
Parameters:
valuesarray-like
The array of data.
Warning
Currently, this expects an object-dtype ndarray where the elements are Python strings or nan-likes (None, np.nan, NA). This may change without warning in the future. Use pandas.array() with dtype="string" for a stable way of creating a StringArray from any sequence.
Changed in version 1.5.0: StringArray now accepts array-likes containing nan-likes(None, np.nan) for the values parameter in addition to strings and pandas.NA
copybool, default False
Whether to copy the array of data.
810-2、参数
810-2-1、values(必须):列表(list)、NumPy数组(numpy.ndarray)或Pandas Series(pandas.Series),表示包含要存储在StringArray中的字符串值,可以是任何形式的可迭代对象,但是需要确保其中的元素是字符串。
810-2-2、copy(可选,默认值为False):布尔值,如果设置为True,会创建values的副本;如果为False,则不会创建副本,这在处理大量数据时可以节省内存。
810-3、功能
提供了一种高效的方式来处理、存储和操作字符串数据,与标准的NumPy数组相比,它可以直接处理缺失值(使用pd.NA),通过这个类,用户可以实现以下功能:
- 支持缺失字符串的处理和表示。
- 支持对字符串数据的向量化操作,能够和Pandas的其他数据结构(如Series/DataFrame)无缝结合。
- 提供了与字符串相关的各种方法和属性,例如
.str
方法访问字符串操作的功能。
810-4、返回值
返回一个StringArray对象,其中包含传入的字符串值,这使得可以在Pandas中使用该数组执行各种操作,例如在DataFrame中作为列。
810-5、说明
无
810-6、用法
810-6-1、数据准备
无
810-6-2、代码示例
# 810、pandas.arrays.StringArray类
import pandas as pd
import numpy as np
from pandas.arrays import StringArray
# 一些示例数据,包括字符串和缺失值,全部使用pd.NA表示缺失
data = ['apple', 'banana', pd.NA, 'cherry', pd.NA]
# 创建 StringArray
string_array = pd.array(data)
# 打印结果
print("StringArray内容:")
print(string_array)
# 访问元素
print("\n访问特定元素:")
print("第一个元素:", string_array[0])
print("第三个元素:", string_array[2]) # 这是一个缺失值
# 处理缺失值
print("\n填充缺失值:")
filled = string_array.fillna("Unknown")
print(filled)
810-6-3、结果输出
# 810、pandas.arrays.StringArray类
# StringArray内容:
# <StringArray>
# ['apple', 'banana', <NA>, 'cherry', <NA>]
# Length: 5, dtype: string
#
# 访问特定元素:
# 第一个元素: apple
# 第三个元素: <NA>
#
# 填充缺失值:
# <StringArray>
# ['apple', 'banana', 'Unknown', 'cherry', 'Unknown']
# Length: 5, dtype: string
#
# 数据类型信息:
# string