首页 > Python资料 博客日记

Python酷库之旅-第三方库Pandas(085)

2024-09-13 09:00:04Python资料围观35

文章Python酷库之旅-第三方库Pandas(085)分享给大家,欢迎收藏Python资料网,专注分享技术知识

目录

一、用法精讲

356、pandas.Series.str.isnumeric方法

356-1、语法

356-2、参数

356-3、功能

356-4、返回值

356-5、说明

356-6、用法

356-6-1、数据准备

356-6-2、代码示例

356-6-3、结果输出

357、pandas.Series.str.isdecimal方法

357-1、语法

357-2、参数

357-3、功能

357-4、返回值

357-5、说明

357-6、用法

357-6-1、数据准备

357-6-2、代码示例

357-6-3、结果输出

358、pandas.Series.str.get_dummies方法

358-1、语法

358-2、参数

358-3、功能

358-4、返回值

358-5、说明

358-6、用法

358-6-1、数据准备

358-6-2、代码示例

358-6-3、结果输出

359、pandas.Series.cat.categories属性

359-1、语法

359-2、参数

359-3、功能

359-4、返回值

359-5、说明

359-6、用法

359-6-1、数据准备

359-6-2、代码示例

359-6-3、结果输出

360、pandas.Series.cat.ordered属性

360-1、语法

360-2、参数

360-3、功能

360-4、返回值

360-5、说明

360-6、用法

360-6-1、数据准备

360-6-2、代码示例

360-6-3、结果输出

二、推荐阅读

1、Python筑基之旅

2、Python函数之旅

3、Python算法之旅

4、Python魔法之旅

5、博客个人主页

一、用法精讲

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

二、推荐阅读

1、Python筑基之旅
2、Python函数之旅
3、Python算法之旅
4、Python魔法之旅
5、博客个人主页

版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!

标签:

相关文章

本站推荐