找回密码
 会员注册
查看: 27|回复: 0

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

[复制链接]

2万

主题

0

回帖

7万

积分

超级版主

积分
70577
发表于 2024-9-10 03:22:36 | 显示全部楼层 |阅读模式
目录一、用法精讲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()Checkwhetherallcharactersineachstringarenumeric.ThisisequivalenttorunningthePythonstringmethodstr.isnumeric()foreachelementoftheSeries/Index.Ifastringhaszerocharacters,Falseisreturnedforthatcheck.Returns:SeriesorIndexofboolSeriesorIndexofbooleanvalueswiththesamelengthastheoriginalSeries/Index.356-2、参数    无356-3、功能        用于检查字符串元素是否只包含数字字符,该方法适用于包含数字的字符串,返回布尔类型的Series。356-4、返回值        返回一个布尔类型的Series,其中的每个元素表示对应字符串是否仅由数字构成。356-5、说明    无356-6、用法356-6-1、数据准备无356-6-2、代码示例#356、pandas.Series.str.isnumeric方法importpandasaspd#创建一个示例Seriesdata=pd.Series(['123','456.78','abc','123abc','',''])#使用isnumeric()方法result=data.str.isnumeric()#打印结果print(result)356-6-3、结果输出#356、pandas.Series.str.isnumeric方法#0True#1False#2False#3False#4False#5False#dtype:bool357、pandas.Series.str.isdecimal方法357-1、语法#357、pandas.Series.str.isdecimal方法pandas.Series.str.isdecimal()Checkwhetherallcharactersineachstringaredecimal.ThisisequivalenttorunningthePythonstringmethodstr.isdecimal()foreachelementoftheSeries/Index.Ifastringhaszerocharacters,Falseisreturnedforthatcheck.Returns:SeriesorIndexofboolSeriesorIndexofbooleanvalueswiththesamelengthastheoriginalSeries/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方法importpandasaspd#创建一个示例Seriesdata=pd.Series(['123','456.78','abc','123abc','','12¾',''])#使用isdecimal()方法result=data.str.isdecimal()#打印结果print(result)357-6-3、结果输出#357、pandas.Series.str.isdecimal方法#0True#1False#2False#3False#4False#5False#6False#dtype:bool358、pandas.Series.str.get_dummies方法358-1、语法#358、pandas.Series.str.get_dummies方法pandas.Series.str.get_dummies(sep='|')ReturnDataFrameofdummy/indicatorvariablesforSeries.EachstringinSeriesissplitbysepandreturnedasaDataFrameofdummy/indicatorvariables.Parameters:sepstr,default“|”Stringtospliton.ReturnsataFrameDummyvariablescorrespondingtovaluesoftheSeries.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、数据预处理importpandasaspd#创建一个包含多类别标签的示例数据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、特征工程importpandasaspdfromsklearn.model_selectionimporttrain_test_splitfromsklearn.linear_modelimportLogisticRegression#示例数据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、分类文本数据处理importpandasaspd#创建示例数据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、数据可视化importpandasaspdimportmatplotlib.pyplotasplt#示例数据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('CategoryCounts')plt.xlabel('Categories')plt.xticks(rotation=25)plt.ylabel('Counts')plt.show()358-6-3、结果输出#358、pandas.Series.str.get_dummies方法#358-1、数据预处理#ABCD#01110#11010#20101#31101#40010#358-2、特征工程#Predictions:[0]#358-3、分类文本数据处理#foodmusicsportstravel#00110#11001#20101#31010#358-4、数据可视化#见图1图1: 359、pandas.Series.cat.categories属性359-1、语法#359、pandas.Series.cat.categories属性pandas.Series.cat.categoriesThecategoriesofthiscategorical.Settingassignsnewvaluestoeachcategory(effectivelyarenameofeachindividualcategory).Theassignedvaluehastobealist-likeobject.Allitemsmustbeuniqueandthenumberofitemsinthenewcategoriesmustbethesameasthenumberofitemsintheoldcategories.Raises:ValueErrorIfthenewcategoriesdonotvalidateascategoriesorifthenumberofnewcategoriesisunequalthenumberofoldcategories.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、创建分类数据并访问类别importpandasaspd#创建包含分类数据的Seriesdata=pd.Series(['apple','orange','banana','apple','banana'],dtype='category')#访问类别categories=data.cat.categoriesprint("Categories:",categories,end='\n\n')#359-2、使用cat.categories过滤数据importpandasaspd#创建分类数据data=pd.Series(['apple','orange','banana','apple'],dtype='category')#只保留指定类别的数据filtered_data=data[data.isin(data.cat.categories[:2])]print("FilteredData:")print(filtered_data)359-6-3、结果输出#359、pandas.Series.cat.categories属性#359-1、创建分类数据并访问类别#Categories:Index(['apple','banana','orange'],dtype='object')#359-2、使用cat.categories过滤数据#FilteredData:#0apple#2banana#3apple#dtype:category#Categories(3,object):['apple','banana','orange']360、pandas.Series.cat.ordered属性360-1、语法#360、pandas.Series.cat.ordered属性pandas.Series.cat.orderedWhetherthecategorieshaveanorderedrelationship.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属性importpandasaspd#创建有序分类数据的Seriesordered_data=pd.Series(['low','medium','high'],dtype=pd.CategoricalDtype(categories=['low','medium','high'],ordered=True))#创建无序分类数据的Seriesunordered_data=pd.Series(['apple','banana','orange'],dtype='category')#检查有序性print("Isordereddataordered?",ordered_data.cat.ordered)print("Isunordereddataordered?",unordered_data.cat.ordered)360-6-3、结果输出#360、pandas.Series.cat.ordered属性#Isordereddataordered?True#Isunordereddataordered?False二、推荐阅读1、Python筑基之旅2、Python函数之旅3、Python算法之旅4、Python魔法之旅5、博客个人主页
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-8 11:28 , Processed in 1.122871 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表