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

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

[复制链接]

6

主题

0

回帖

19

积分

新手上路

积分
19
发表于 2024-9-10 03:51:08 | 显示全部楼层 |阅读模式
目录一、用法精讲421、pandas.DataFrame.infer_objects方法421-1、语法421-2、参数421-3、功能421-4、返回值421-5、说明421-6、用法421-6-1、数据准备421-6-2、代码示例421-6-3、结果输出422、pandas.DataFrame.copy方法422-1、语法422-2、参数422-3、功能422-4、返回值422-5、说明422-6、用法422-6-1、数据准备422-6-2、代码示例422-6-3、结果输出423、pandas.DataFrame.bool方法423-1、语法423-2、参数423-3、功能423-4、返回值423-5、说明423-6、用法423-6-1、数据准备423-6-2、代码示例423-6-3、结果输出424、pandas.DataFrame.to_numpy方法424-1、语法424-2、参数424-3、功能424-4、返回值424-5、说明424-6、用法424-6-1、数据准备424-6-2、代码示例424-6-3、结果输出425、pandas.DataFrame.head方法425-1、语法425-2、参数425-3、功能425-4、返回值 425-5、说明425-6、用法425-6-1、数据准备425-6-2、代码示例425-6-3、结果输出二、推荐阅读1、Python筑基之旅2、Python函数之旅3、Python算法之旅4、Python魔法之旅5、博客个人主页一、用法精讲421、pandas.DataFrame.infer_objects方法421-1、语法#421、pandas.DataFrame.infer_objects方法pandas.DataFrame.infer_objects(copy=None)Attempttoinferbetterdtypesforobjectcolumns.Attemptssoftconversionofobject-dtypedcolumns,leavingnon-objectandunconvertiblecolumnsunchanged.TheinferencerulesarethesameasduringnormalSeries/DataFrameconstruction.Parameters:copybool,defaultTrueWhethertomakeacopyfornon-objectornon-inferablecolumnsorSeries.NoteThecopykeywordwillchangebehaviorinpandas3.0.Copy-on-Writewillbeenabledbydefault,whichmeansthatallmethodswithacopykeywordwillusealazycopymechanismtodeferthecopyandignorethecopykeyword.Thecopykeywordwillberemovedinafutureversionofpandas.Youcanalreadygetthefuturebehaviorandimprovementsthroughenablingcopyonwritepd.options.mode.copy_on_write=TrueReturns:sametypeasinputobject.421-2、参数421-2-1、copy(可选,默认值为None):布尔值,决定是否在执行推断操作时创建数据的副本。如果设置为True,则会返回一个新的DataFrame,其推断后的类型会应用到新的对象上,原始的DataFrame不会被修改;如果设置为False,则推断的类型会直接在原始的DataFrame上进行修改。若设置为None(默认值),函数会决定是否创建副本,这个决定可能依赖于底层实现,通常情况下会在需要时创建副本。421-3、功能        用于从数据类型为object的列中推断出更具体的数据类型。例如,如果某一列中实际存储的是整数或浮点数,但由于某些原因被读取为object类型,这个方法就可以尝试将其转化为int64或float64类型。421-4、返回值        返回一个DataFrame,其object类型的列被尝试推断为更具体的类型,如果copy=True,返回的是一个新的DataFrame;否则,原始DataFrame将被修改并返回。421-5、说明    无421-6、用法421-6-1、数据准备无421-6-2、代码示例#421、pandas.DataFrame.infer_objects方法importpandasaspd#创建一个DataFrame,其中的某些列被推断为object类型df=pd.DataFrame({'A':[1,2,3],'B':[4.0,5.1,6.2],'C':['2022-01-01','2023-01-01','2024-01-01']},dtype='object')#使用infer_objects来推断更具体的类型df_inferred=df.infer_objects()print(df_inferred.dtypes)421-6-3、结果输出#421、pandas.DataFrame.infer_objects方法#Aint64#Bfloat64#Cobject#dtypebject422、pandas.DataFrame.copy方法422-1、语法#422、pandas.DataFrame.copy方法pandas.DataFrame.copy(deep=True)Makeacopyofthisobject’sindicesanddata.Whendeep=True(default),anewobjectwillbecreatedwithacopyofthecallingobject’sdataandindices.Modificationstothedataorindicesofthecopywillnotbereflectedintheoriginalobject(seenotesbelow).Whendeep=False,anewobjectwillbecreatedwithoutcopyingthecallingobject’sdataorindex(onlyreferencestothedataandindexarecopied).Anychangestothedataoftheoriginalwillbereflectedintheshallowcopy(andviceversa).NoteThedeep=Falsebehaviourasdescribedabovewillchangeinpandas3.0.Copy-on-Writewillbeenabledbydefault,whichmeansthatthe“shallow”copyisthatisreturnedwithdeep=Falsewillstillavoidmakinganeagercopy,butchangestothedataoftheoriginalwillnolongerbereflectedintheshallowcopy(orviceversa).Instead,itmakesuseofalazy(deferred)copymechanismthatwillcopythedataonlywhenanychangestotheoriginalorshallowcopyismade.Youcanalreadygetthefuturebehaviorandimprovementsthroughenablingcopyonwritepd.options.mode.copy_on_write=TrueParameters:deepbool,defaultTrueMakeadeepcopy,includingacopyofthedataandtheindices.Withdeep=Falseneithertheindicesnorthedataarecopied.Returns:SeriesorDataFrameObjecttypematchescaller.NotesWhendeep=True,dataiscopiedbutactualPythonobjectswillnotbecopiedrecursively,onlythereferencetotheobject.Thisisincontrasttocopy.deepcopyintheStandardLibrary,whichrecursivelycopiesobjectdata(seeexamplesbelow).WhileIndexobjectsarecopiedwhendeep=True,theunderlyingnumpyarrayisnotcopiedforperformancereasons.SinceIndexisimmutable,theunderlyingdatacanbesafelysharedandacopyisnotneeded.Sincepandasisnotthreadsafe,seethegotchaswhencopyinginathreadingenvironment.Whencopy_on_writeinpandasconfigissettoTrue,thecopy_on_writeconfigtakeseffectevenwhendeep=False.Thismeansthatanychangestothecopieddatawouldmakeanewcopyofthedatauponwrite(andviceversa).Changesmadetoeithertheoriginalorcopiedvariablewouldnotbereflectedinthecounterpart.SeeCopy_on_Writeformoreinformation.422-2、参数422-2-1、deep(可选,默认值为True):布尔值,该参数决定是否执行深复制(deepcopy):deep=True(默认值):进行深复制,这意味着副本和原始DataFrame的数据将独立存储,改变副本中的数据不会影响原始DataFrame,反之亦然。deep=False:进行浅复制,这意味着副本和原始DataFrame共享数据存储空间,改变副本中的数据可能会影响原始DataFrame,反之亦然。422-3、功能        用于生成现有DataFrame的一个副本,它允许用户选择进行深复制还是浅复制,从而根据需要选择合适的数据复制方式:深复制(deepcopy):创建DataFrame和其数据的完整拷贝,包括数据、索引等,确保副本和原始对象完全独立。浅复制(shallowcopy):创建DataFrame的新引用,但不复制数据本身,因此两者共享相同的底层数据存储空间。422-4、返回值        返回一个新的DataFrame对象,对于深复制,这个新对象是对原始DataFrame的完全独立的拷贝;对于浅复制,这个新对象与原始DataFrame共享相同的数据。422-5、说明    无422-6、用法422-6-1、数据准备无422-6-2、代码示例#422、pandas.DataFrame.copy方法importpandasaspd#创建一个DataFramedf=pd.DataFrame({'A':[1,2,3],'B':[4.0,5.1,6.2]})#执行深复制(默认行为)df_deep_copy=df.copy()df_deep_copy.iloc[0,0]=10#修改深复制的DataFrame中的数据print("OriginalDataFrame:")print(df)print("\nDeepCopyDataFrame:")print(df_deep_copy)#执行浅复制df_shallow_copy=df.copy(deep=False)df_shallow_copy.iloc[0,0]=10#修改浅复制的DataFrame中的数据print("\nOriginalDataFrameaftershallowcopymodification:")print(df)print("\nShallowCopyDataFrame:")print(df_shallow_copy)422-6-3、结果输出#422、pandas.DataFrame.copy方法#OriginalDataFrame:#AB#014.0#125.1#236.2##DeepCopyDataFrame:#AB#0104.0#125.1#236.2##OriginalDataFrameaftershallowcopymodification:#AB#0104.0#125.1#236.2##ShallowCopyDataFrame:#AB#0104.0#125.1#236.2423、pandas.DataFrame.bool方法423-1、语法#423、pandas.DataFrame.bool方法pandas.DataFrame.bool()ReturntheboolofasingleelementSeriesorDataFrame.Deprecatedsinceversion2.1.0:boolisdeprecatedandwillberemovedinfutureversionofpandas.ForSeriesusepandas.Series.item.Thismustbeabooleanscalarvalue,eitherTrueorFalse.ItwillraiseaValueErroriftheSeriesorDataFramedoesnothaveexactly1element,orthatelementisnotboolean(integervalues0and1willalsoraiseanexception).Returns:boolThevalueintheSeriesorDataFrame.423-2、参数    无423-3、功能        用于将DataFrame转换为布尔上下文,但它仅适用于包含单个元素(一个值)的DataFrame。换句话说,只有在DataFrame中包含一个元素的情况下,该方法才会返回该元素的布尔值;否则,它会引发ValueError。423-4、返回值        如果DataFrame中唯一的元素的布尔值为True,则返回True;否则返回False。423-5、说明    无423-6、用法423-6-1、数据准备无423-6-2、代码示例#423、pandas.DataFrame.bool方法importpandasaspd#创建一个包含单个元素的DataFramedf_single=pd.DataFrame({'A':[True]})#将DataFrame转换为布尔值try:result=df_single.bool()print("ThebooleanvalueoftheDataFrameis:",result)exceptValueErrorase:print('Error:',e)#创建一个包含多个元素的DataFramedf_multiple=pd.DataFrame({'A':[True,False]})#尝试将包含多个元素的DataFrame转换为布尔值try:result=df_multiple.bool()print("ThebooleanvalueoftheDataFrameis:",result)exceptValueErrorase:print('Error:',e)#创建一个包含超过一个元素的DataFramedf_multiple_elements=pd.DataFrame({'A':[5]})#尝试将单个非布尔值元素的DataFrame转换为布尔值try:result=df_multiple_elements.bool()print("ThebooleanvalueoftheDataFrameis:",result)exceptValueErrorase:print('Error:',e)423-6-3、结果输出#423、pandas.DataFrame.bool方法#ThebooleanvalueoftheDataFrameis:True#Error:ThetruthvalueofaDataFrameisambiguous.Usea.empty,a.bool(),a.item(),a.any()ora.all().#Error:boolcannotactonanon-booleansingleelementDataFrame424、pandas.DataFrame.to_numpy方法424-1、语法#424、pandas.DataFrame.to_numpy方法panas.DataFrame.to_numpy(dtype=None,copy=False,na_value=_NoDefault.no_default)ConverttheDataFrametoaNumPyarray.Bydefault,thedtypeofthereturnedarraywillbethecommonNumPydtypeofalltypesintheDataFrame.Forexample,ifthedtypesarefloat16andfloat32,theresultsdtypewillbefloat32.Thismayrequirecopyingdataandcoercingvalues,whichmaybeexpensive.Parameters:dtypestrornumpy.dtype,optionalThedtypetopasstonumpy.asarray().copybool,defaultFalseWhethertoensurethatthereturnedvalueisnotaviewonanotherarray.Notethatcopy=Falsedoesnotensurethatto_numpy()isno-copy.Rather,copy=Trueensurethatacopyismade,evenifnotstrictlynecessary.na_valueAny,optionalThevaluetouseformissingvalues.ThedefaultvaluedependsondtypeandthedtypesoftheDataFramecolumns.Returns:numpy.ndarray424-2、参数424-2-1、dtype(可选,默认值为None):指定生成数组的目标数据类型,如果未指定,默认情况下会保留数据的原始类型,可以通过该参数改变所有数据的类型,例如将所有元素转换为浮点型(float)或整型(int)。424-2-2、copy(可选,默认值为False):是否强制复制数据,如果设置为False,则在可能的情况下,不会创建数据的副本,而是返回数据的视图(引用);如果设置为True,则始终会复制数据,并返回新的数组。424-2-3、na_value(可选):在生成的数组中,用于替换缺失值(NaN)的值,如果未指定此参数,缺失值将保留为原来的形式(通常为NaN或者None),指定此参数可以将所有缺失值替换为一个指定的值。424-3、功能        将DataFrame中的数据转换并返回为numpy.ndarray,这对于需要进行高效的数值计算和数组操作非常有用。424-4、返回值    返回一个numpy.ndarray对象,对象中每个元素对应DataFrame中的值。数据类型、元素值和是否复制数据都取决于传递给该方法的参数。424-5、说明    无424-6、用法424-6-1、数据准备无424-6-2、代码示例#424、pandas.DataFrame.to_numpy方法importpandasaspdimportnumpyasnp#创建一个示例DataFramedf=pd.DataFrame({'A':[1,2,3],'B':[4,5,6],'C':[7.1,8.2,np.nan]})#默认转换为NumPy数组array_default=df.to_numpy()print("DefaultconversiontoNumPyarray:")print(array_default)#指定数据类型为float32array_float32=df.to_numpy(dtype='float32')print("\nConversiontoNumPyarraywithdtype='float32':")print(array_float32)#强制复制数据array_copy=df.to_numpy(copy=True)print("\nConversiontoNumPyarraywithcopy=True:")print(array_copy)#替换缺失值NaN为0array_na_value=df.to_numpy(na_value=0)print("\nConversiontoNumPyarraywithna_value=0:")print(array_na_value)424-6-3、结果输出#424、pandas.DataFrame.to_numpy方法#DefaultconversiontoNumPyarray:#[[1.4.7.1]#[2.5.8.2]#[3.6.nan]]##ConversiontoNumPyarraywithdtype='float32':#[[1.4.7.1]#[2.5.8.2]#[3.6.nan]]##ConversiontoNumPyarraywithcopy=True:#[[1.4.7.1]#[2.5.8.2]#[3.6.nan]]##ConversiontoNumPyarraywithna_value=0:#[[1.4.7.1]#[2.5.8.2]#[3.6.0.]]425、pandas.DataFrame.head方法425-1、语法#425、pandas.DataFrame.head方法pandas.DataFrame.head(n=5)Returnthefirstnrows.Thisfunctionreturnsthefirstnrowsfortheobjectbasedonposition.Itisusefulforquicklytestingifyourobjecthastherighttypeofdatainit.Fornegativevaluesofn,thisfunctionreturnsallrowsexceptthelast|n|rows,equivalenttodf[:n].Ifnislargerthanthenumberofrows,thisfunctionreturnsallrows.Parameters:nint,default5Numberofrowstoselect.Returns:sametypeascallerThefirstnrowsofthecallerobject.425-2、参数425-2-1、n(可选,默认值为5):整数,指定返回的行数,如果未提供,该方法默认返回前5行。425-3、功能        用于返回一个DataFrame的前n行,默认返回前5行,这在预览数据内容时非常有用,特别是当你想要查看一个DataFrame的前几行以便了解数据的结构和内容时。425-4、返回值     返回一个pandas.DataFrame对象,对象包含前n行。425-5、说明425-5-1、数据预览:当读入一个新的数据集时,快速查看前几行数据。425-5-2、调试和检查:在数据处理过程中的不同步骤,检查中间数据的内容和格式。425-5-3、报告和展示:在展示数据时,只需要展示前几行数据以保持简洁和清晰。425-6、用法425-6-1、数据准备无425-6-2、代码示例#425、pandas.DataFrame.head方法importpandasaspd#创建一个示例DataFramedata={'Name':['Alice','Bob','Charlie','David','Eve','Frank','Grace'],'Age':[24,30,22,25,29,32,27],'City':['NewYork','LosAngeles','Chicago','Houston','Phoenix','Philadelphia','SanAntonio']}df=pd.DataFrame(data)#使用head方法查看前5行print("前5行:")print(df.head())#使用head方法查看前3行print("\n前3行:")print(df.head(n=3))425-6-3、结果输出#425、pandas.DataFrame.head方法#前5行:#NameAgeCity#0Alice24NewYork#1Bob30LosAngeles#2Charlie22Chicago#3David25Houston#4Eve29Phoenix##前3行:#NameAgeCity#0Alice24NewYork#1Bob30LosAngeles#2Charlie22Chicago二、推荐阅读1、Python筑基之旅2、Python函数之旅3、Python算法之旅4、Python魔法之旅5、博客个人主页
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-8 11:35 , Processed in 0.424198 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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