目录
356、pandas.Series.str.isnumeric方法
357、pandas.Series.str.isdecimal方法
358、pandas.Series.str.get_dummies方法
359、pandas.Series.cat.categories属性
360、pandas.Series.cat.ordered属性
一、用法精讲
356、pandas.Series.str.isnumeric方法
356-1、语法
# 356、pandas.Series.str.isnumeric方法
pandas.Series.str.isnumeric()
Check whether all characters in each string are numeric.
This is equivalent to running the Python string method str.isnumeric() for each element of the Series/Index. If a string has zero characters, False is returned for that check.
Returns:
Series or Index of bool
Series or Index of boolean values with the same length as the original Series/Index.
356-2、参数
无
356-3、功能
用于检查字符串元素是否只包含数字字符,该方法适用于包含数字的字符串,返回布尔类型的 Series。
356-4、返回值
返回一个布尔类型的Series,其中的每个元素表示对应字符串是否仅由数字构成。
356-5、说明
无
356-6、用法
356-6-1、数据准备
无
356-6-2、代码示例
# 356、pandas.Series.str.isnumeric方法
import pandas as pd
# 创建一个示例Series
data = pd.Series(['123', '456.78', 'abc', '123abc', ' ', ''])
# 使用isnumeric()方法
result = data.str.isnumeric()
# 打印结果
print(result)
356-6-3、结果输出
# 356、pandas.Series.str.isnumeric方法
# 0 True
# 1 False
# 2 False
# 3 False
# 4 False
# 5 False
# dtype: bool
357、pandas.Series.str.isdecimal方法
357-1、语法
# 357、pandas.Series.str.isdecimal方法
pandas.Series.str.isdecimal()
Check whether all characters in each string are decimal.
This is equivalent to running the Python string method str.isdecimal() for each element of the Series/Index. If a string has zero characters, False is returned for that check.
Returns:
Series or Index of bool
Series or Index of boolean values with the same length as the original Series/Index.
357-2、参数
无
357-3、功能
用于检查字符串元素是否只包含十进制数字字符,与isnumeric()方法相比,isdecimal()更具局限性,它只适用于表示十进制数的字符,不包括其他数字类型(如分数或指数表示法)。
357-4、返回值
返回一个布尔类型的Series,其中的每个元素表示对应的字符串是否仅由十进制数字构成。
357-5、说明
无
357-6、用法
357-6-1、数据准备
无
357-6-2、代码示例
# 357、pandas.Series.str.isdecimal方法
import pandas as pd
# 创建一个示例Series
data = pd.Series(['123', '456.78', 'abc', '123abc', ' ', '12¾', ''])
# 使用isdecimal()方法
result = data.str.isdecimal()
# 打印结果
print(result)
357-6-3、结果输出
# 357、pandas.Series.str.isdecimal方法
# 0 True
# 1 False
# 2 False
# 3 False
# 4 False
# 5 False
# 6 False
# dtype: bool
358、pandas.Series.str.get_dummies方法
358-1、语法
# 358、pandas.Series.str.get_dummies方法
pandas.Series.str.get_dummies(sep='|')
Return DataFrame of dummy/indicator variables for Series.
Each string in Series is split by sep and returned as a DataFrame of dummy/indicator variables.
Parameters:
sep
str, default “|”
String to split on.
Returns:
DataFrame
Dummy variables corresponding to values of the Series.
358-2、参数
358-2-1、sep(可选,默认值为'|'):用于分隔字符串中标签的字符(字符串)。
358-3、功能
用于文本数据的特征工程,特别是在处理包含多个类别标签的字符串字段时。例如,如果您有一个包含多个标签的字符串Series,您可以使用该方法将其转换为多个独立的列,从而更方便地进行后续的数据分析和建模。
358-4、返回值
返回一个DataFrame,其中每列代表一个唯一的标签,值为0或1,表示对应行中标签的存在与否。
358-5、说明
使用场景:
358-5-1、数据预处理:在处理原始数据集时,尤其是当您的数据包含多种类标签的组合形式(如一列中包含多个用分隔符连接的类别标签)时,该方法非常有用。它可以将这些组合标签拆分为更容易处理的格式。
358-5-2、特征工程:在机器学习项目中,特征工程是模型的关键步骤,使用该方法可以将分类变量转换为数值型特征,便于算法进行处理,这对于需要对类别变量进行编码的模型(如逻辑回归、支持向量机等)尤为重要。
358-5-3、分类文本数据处理:当处理自然语言处理(NLP)任务时,文本数据可能会包含组合标签。例如,社交媒体帖子、评论或产品标签。这些文本数据往往需要被转为数值特征才能用于训练模型。
358-5-4、类别属性分析:如果您需要分析类目属性的频次或分布,通过将它们拆分成独立的二进制特征,可以更直观地获得每个类别的出现情况,便于后续的数据分析。
358-5-5、数据可视化:在进行数据可视化时,将类别变量转换为数值型特征能够简化图表的创建,方便更好地理解数据分布和关系。
358-6、用法
358-6-1、数据准备
无
358-6-2、代码示例
# 358、pandas.Series.str.get_dummies方法
# 358-1、数据预处理
import pandas as pd
# 创建一个包含多类别标签的示例数据
data = {
'Product': ['A|B|C', 'A|C', 'B|D', 'A|B|D', 'C']
}
df = pd.DataFrame(data)
# 使用get_dummies方法进行预处理
dummies = df['Product'].str.get_dummies(sep='|')
print(dummies, end='\n\n')
# 358-2、特征工程
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
# 示例数据
data = {
'Features': ['red|small', 'blue|medium', 'green|large', 'red|large'],
'Target': [0, 1, 1, 0]
}
df = pd.DataFrame(data)
# 特征转换
X = df['Features'].str.get_dummies(sep='|')
y = df['Target']
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 训练模型
model = LogisticRegression()
model.fit(X_train, y_train)
# 预测
predictions = model.predict(X_test)
print("Predictions:", predictions, end='\n\n')
# 358-3、分类文本数据处理
import pandas as pd
# 创建示例数据
data = {
'Tags': ['sports|music', 'food|travel', 'music|travel', 'sports|food']
}
df = pd.DataFrame(data)
# 处理多标签分类数据
dummies = df['Tags'].str.get_dummies(sep='|')
print(dummies, end='\n\n')
# 358-4、数据可视化
import pandas as pd
import matplotlib.pyplot as plt
# 示例数据
data = {
'Categories': ['cat|dog', 'dog|mouse', 'cat|bird', 'bird|cat'],
}
df = pd.DataFrame(data)
# 转换为哑变量
dummies = df['Categories'].str.get_dummies(sep='|')
# 可视化
dummies.sum().plot(kind='bar', color='purple')
plt.title('Category Counts')
plt.xlabel('Categories')
plt.xticks(rotation=25)
plt.ylabel('Counts')
plt.show()
358-6-3、结果输出
# 358、pandas.Series.str.get_dummies方法
# 358-1、数据预处理
# A B C D
# 0 1 1 1 0
# 1 1 0 1 0
# 2 0 1 0 1
# 3 1 1 0 1
# 4 0 0 1 0
# 358-2、特征工程
# Predictions: [0]
# 358-3、分类文本数据处理
# food music sports travel
# 0 0 1 1 0
# 1 1 0 0 1
# 2 0 1 0 1
# 3 1 0 1 0
# 358-4、数据可视化
# 见图1
图1:
359、pandas.Series.cat.categories属性
359-1、语法
# 359、pandas.Series.cat.categories属性
pandas.Series.cat.categories
The categories of this categorical.
Setting assigns new values to each category (effectively a rename of each individual category).
The assigned value has to be a list-like object. All items must be unique and the number of items in the new categories must be the same as the number of items in the old categories.
Raises:
ValueError
If the new categories do not validate as categories or if the number of new categories is unequal the number of old categories.
359-2、参数
无
359-3、功能
用于访问分类数据的所有类别标签,它适用于pandas中的数据类型为Categorical的Series。
359-4、返回值
返回一个Index对象,包含与分类数据相关联的类别标签,这些标签可以是任何数据类型,例如字符串、整数或其他可哈希的类型。
359-5、说明
无
359-6、用法
359-6-1、数据准备
无
359-6-2、代码示例
# 359、pandas.Series.cat.categories属性
# 359-1、创建分类数据并访问类别
import pandas as pd
# 创建包含分类数据的Series
data = pd.Series(['apple', 'orange', 'banana', 'apple', 'banana'], dtype='category')
# 访问类别
categories = data.cat.categories
print("Categories:", categories, end='\n\n')
# 359-2、使用cat.categories过滤数据
import pandas as pd
# 创建分类数据
data = pd.Series(['apple', 'orange', 'banana', 'apple'], dtype='category')
# 只保留指定类别的数据
filtered_data = data[data.isin(data.cat.categories[:2])]
print("Filtered Data:")
print(filtered_data)
359-6-3、结果输出
# 359、pandas.Series.cat.categories属性
# 359-1、创建分类数据并访问类别
# Categories: Index(['apple', 'banana', 'orange'], dtype='object')
# 359-2、使用cat.categories过滤数据
# Filtered Data:
# 0 apple
# 2 banana
# 3 apple
# dtype: category
# Categories (3, object): ['apple', 'banana', 'orange']
360、pandas.Series.cat.ordered属性
360-1、语法
# 360、pandas.Series.cat.ordered属性
pandas.Series.cat.ordered
Whether the categories have an ordered relationship.
360-2、参数
无
360-3、功能
用于检查分类数据是否是有序的,该属性适用于数据类型为Categorical的Series,尤其是在处理有序分类数据时非常有用。
360-4、返回值
返回True表示该分类数据是有序的,返回False则表示是无序的。
360-5、说明
无
360-6、用法
360-6-1、数据准备
无
360-6-2、代码示例
# 360、pandas.Series.cat.ordered属性
import pandas as pd
# 创建有序分类数据的Series
ordered_data = pd.Series(['low', 'medium', 'high'], dtype=pd.CategoricalDtype(categories=['low', 'medium', 'high'], ordered=True))
# 创建无序分类数据的Series
unordered_data = pd.Series(['apple', 'banana', 'orange'], dtype='category')
# 检查有序性
print("Is ordered data ordered?", ordered_data.cat.ordered)
print("Is unordered data ordered?", unordered_data.cat.ordered)
360-6-3、结果输出
# 360、pandas.Series.cat.ordered属性
# Is ordered data ordered? True
# Is unordered data ordered? False