|
目录一、用法精讲426、pandas.DataFrame.at属性426-1、语法426-2、参数426-3、功能426-4、返回值426-5、说明426-6、用法426-6-1、数据准备426-6-2、代码示例426-6-3、结果输出427、pandas.DataFrame.iat属性427-1、语法427-2、参数427-3、功能427-4、返回值427-5、说明427-6、用法427-6-1、数据准备427-6-2、代码示例427-6-3、结果输出428、pandas.DataFrame.loc属性428-1、语法428-2、参数428-3、功能428-4、返回值428-5、说明428-6、用法428-6-1、数据准备428-6-2、代码示例428-6-3、结果输出429、pandas.DataFrame.iloc属性429-1、语法429-2、参数429-3、功能429-4、返回值429-5、说明429-6、用法429-6-1、数据准备429-6-2、代码示例429-6-3、结果输出430、pandas.DataFrame.insert方法430-1、语法430-2、参数430-3、功能430-4、返回值430-5、说明430-6、用法430-6-1、数据准备430-6-2、代码示例430-6-3、结果输出二、推荐阅读1、Python筑基之旅2、Python函数之旅3、Python算法之旅4、Python魔法之旅5、博客个人主页一、用法精讲426、pandas.DataFrame.at属性426-1、语法#426、pandas.DataFrame.at属性pandas.DataFrame.atAccessasinglevalueforarow/columnlabelpair.Similartoloc,inthatbothprovidelabel-basedlookups.UseatifyouonlyneedtogetorsetasinglevalueinaDataFrameorSeries.Raises:KeyErrorIfgettingavalueand‘label’doesnotexistinaDataFrameorSeries.ValueErrorIfrow/columnlabelpairisnotatupleorifanylabelfromthepairisnotascalarforDataFrame.Iflabelislist-like(excludingNamedTuple)forSeries.426-2、参数 无426-3、功能 用于基于行标签和列标签快速访问或设置单个元素的值,它具备高效性,因此非常适合在需要处理单个元素时使用。426-4、返回值 返回指定行和列位置的单个元素的值或直接修改DataFrame中指定位置的值,并不返回任何内容。426-5、说明 无426-6、用法426-6-1、数据准备无426-6-2、代码示例#426、pandas.DataFrame.at属性importpandasaspddata={'A':[1,2,3],'B':[4,5,6],'C':[7,8,9]}df=pd.DataFrame(data)#访问单个值value=df.at[1,'B']print(value)#设置单个值df.at[1,'B']=10print(df)426-6-3、结果输出#426、pandas.DataFrame.at属性#5#ABC#0147#12108#2369427、pandas.DataFrame.iat属性427-1、语法#427、pandas.DataFrame.iat属性pandas.DataFrame.iatAccessasinglevalueforarow/columnpairbyintegerposition.Similartoiloc,inthatbothprovideinteger-basedlookups.UseiatifyouonlyneedtogetorsetasinglevalueinaDataFrameorSeries.Raises:IndexErrorWhenintegerpositionisoutofbounds.427-2、参数 无427-3、功能 用于基于整数位置(即行索引和列索引)快速访问或设置单个元素的值,与基于标签的.at不同,.iat采用的是位置索引,因此更加类似于NumPy的访问方式。427-4、返回值 返回指定行索引和列索引位置的单个元素的值或直接修改DataFrame中指定位置的值,并不返回任何内容。427-5、说明 无427-6、用法427-6-1、数据准备无427-6-2、代码示例#427、pandas.DataFrame.iat属性importpandasaspddata={'A':[1,2,3],'B':[4,5,6],'C':[7,8,9]}df=pd.DataFrame(data)#访问单个值value=df.iat[1,1]print(value)#设置单个值df.iat[1,1]=10print(df)427-6-3、结果输出#427、pandas.DataFrame.iat属性#5#ABC#0147#12108#2369428、pandas.DataFrame.loc属性428-1、语法#428、pandas.DataFrame.loc属性pandas.DataFrame.locAccessagroupofrowsandcolumnsbylabel(s)orabooleanarray..loc[]isprimarilylabelbased,butmayalsobeusedwithabooleanarray.Allowedinputsare:Asinglelabel,e.g.5or'a',(notethat5isinterpretedasalabeloftheindex,andneverasanintegerpositionalongtheindex).Alistorarrayoflabels,e.g.['a','b','c'].Asliceobjectwithlabels,e.g.'a':'f'.WarningNotethatcontrarytousualpythonslices,boththestartandthestopareincludedAbooleanarrayofthesamelengthastheaxisbeingsliced,e.g.[True,False,True].AnalignablebooleanSeries.Theindexofthekeywillbealignedbeforemasking.AnalignableIndex.TheIndexofthereturnedselectionwillbetheinput.Acallablefunctionwithoneargument(thecallingSeriesorDataFrame)andthatreturnsvalidoutputforindexing(oneoftheabove)SeemoreatSelectionbyLabel.Raises:KeyErrorIfanyitemsarenotfound.IndexingErrorIfanindexedkeyispassedanditsindexisunalignabletotheframeindex.428-2、参数 无428-3、功能428-3-1、单个元素访问和修改:通过指定行标签和列标签来访问或修改DataFrame中的单个元素。428-3-2、行访问和修改:通过行标签来访问或修改整行数据。428-3-3、列访问和修改:通过列标签来访问或修改整列数据。428-3-4、多行或多列访问和修改:通过传递行标签或列标签的列表来访问或修改多个行或列的数据。428-3-5、条件筛选:通过布尔条件筛选出满足条件的行或列。428-3-6、子集访问和修改:访问和修改DataFrame的特定子集(基于行标签和列标签)。428-4、返回值428-4-1、单个元素访问和修改:返回指定的元素值(可以是任何类型,如整数、字符串、浮点数等)。428-4-2、行访问和修改:返回一个包含该行所有列数据的Series对象,索引为列标签。428-4-3、列访问和修改:返回一个包含该列所有行数据的Series对象,索引为行标签。428-4-4、多行或多列访问和修改:返回一个包含所选行或列数据的DataFrame对象。428-4-5、条件筛选:返回一个DataFrame对象,包含所有满足条件的行或列。428-4-6、子集访问和修改:返回一个包含子集数据的DataFrame对象。428-5、说明 无428-6、用法428-6-1、数据准备无428-6-2、代码示例#428、pandas.DataFrame.loc属性#428-1、数据筛选importpandasaspd#创建一个示例DataFramedata={'date':['2024-01-01','2024-01-02','2024-01-03','2024-01-04'],'value':[10,20,30,40]}df=pd.DataFrame(data)df['date']=pd.to_datetime(df['date'])#筛选出'value'大于20的行filtered_df=df.loc[df['value']>20]print(filtered_df,end='\n\n')#428-2、数据更新importpandasaspd#创建一个示例DataFramedata={'date':['2024-01-01','2024-01-02','2024-01-03','2024-01-04'],'value':[10,20,30,40]}df=pd.DataFrame(data)df['date']=pd.to_datetime(df['date'])#将'value'大于20的行的'value'列更新为100df.loc[df['value']>20,'value']=100print(df,end='\n\n')#428-3、多列操作importpandasaspd#创建一个示例DataFramedata={'A':[1,2,3,4],'B':[5,6,7,8],'C':[9,10,11,12]}df=pd.DataFrame(data)#选择'A'和'B'两列并计算它们的和df['A_B_sum']=df.loc[:,['A','B']].sum(axis=1)print(df,end='\n\n')#428-4、行操作importpandasaspd#创建一个示例DataFramedata={'A':[1,2,3,4],'B':[5,6,7,8],'C':[9,10,11,12]}df=pd.DataFrame(data)#选择第1行和第3行并计算它们的总和row_sum=df.loc[[0,2],:].sum()print(row_sum,end='\n\n')#428-5、多条件筛选importpandasaspd#创建一个示例DataFramedata={'A':[1,2,3,4],'B':[5,6,7,8],'C':[9,10,11,12]}df=pd.DataFrame(data)#筛选'A'列大于2且'B'列小于8的行filtered_df=df.loc[(df['A']>2)&(df['B']30]print(filtered_grouped_df,end='\n\n')#428-8、合并与连接importpandasaspd#创建两个示例DataFramedata1={'key':[1,2,3],'value1':[10,20,30]}data2={'key':[2,3,4],'value2':[40,50,60]}df1=pd.DataFrame(data1)df2=pd.DataFrame(data2)#合并两个DataFramemerged_df=pd.merge(df1,df2,on='key',how='outer')#筛选出'value1'和'value2'都不为NaN的行filtered_merged_df=merged_df.loc[~merged_df['value1'].isna()&~merged_df['value2'].isna()]print(filtered_merged_df)428-6-3、结果输出#428、pandas.DataFrame.loc属性#428-1、数据筛选#datevalue#22024-01-0330#32024-01-0440#428-2、数据更新#datevalue#02024-01-0110#12024-01-0220#22024-01-03100#32024-01-04100#428-3、多列操作#ABCA_B_sum#01596#126108#2371110#3481212#428-4、行操作#A4#B12#C20#dtype:int64#428-5、多条件筛选#ABC#23711#428-6、数据子集提取#AC#019#1210#428-7、数据分组与聚合#value#category#B70#428-8、合并与连接#keyvalue1value2#1220.040.0#2330.050.0429、pandas.DataFrame.iloc属性429-1、语法#429、pandas.DataFrame.iloc属性pandas.DataFrame.ilocPurelyinteger-locationbasedindexingforselectionbyposition.Deprecatedsinceversion2.2.0:Returningatuplefromacallableisdeprecated..iloc[]isprimarilyintegerpositionbased(from0tolength-1oftheaxis),butmayalsobeusedwithabooleanarray.Allowedinputsare:Aninteger,e.g.5.Alistorarrayofintegers,e.g.[4,3,0].Asliceobjectwithints,e.g.1:7.Abooleanarray.Acallablefunctionwithoneargument(thecallingSeriesorDataFrame)andthatreturnsvalidoutputforindexing(oneoftheabove).Thisisusefulinmethodchains,whenyoudon’thaveareferencetothecallingobject,butwouldliketobaseyourselectiononsomevalue.Atupleofrowandcolumnindexes.Thetupleelementsconsistofoneoftheaboveinputs,e.g.(0,1)..ilocwillraiseIndexErrorifarequestedindexerisout-of-bounds,exceptsliceindexerswhichallowout-of-boundsindexing(thisconformswithpython/numpyslicesemantics).SeemoreatSelectionbyPosition.429-2、参数 无429-3、功能429-3-1、单行选择: 可以通过整数索引来选择DataFrame中的一行。429-3-2、单列选择: 可以通过整数索引来选择DataFrame中的一列。429-3-3、特定单元格选择: 可以通过行列的整数位置索引来选择DataFrame中的特定单元格。429-3-4、区域选择(子集选择): 可以通过切片操作选择DataFrame的一个子集。429-3-5、数据更新:可以通过iloc来更新DataFrame中某个位置的值。429-4、返回值429-4-1、单行选择: 返回一个Series对象,索引为列标签。429-4-2、单列选择:返回一个Series对象,索引为行标签。429-4-3、特定单元格选择:返回具体单元格的值,数据类型视该单元格内容而定。429-4-4、区域选择(子集选择):返回一个新的DataFrame对象。429-5、说明 无429-6、用法429-6-1、数据准备无429-6-2、代码示例#429、pandas.DataFrame.iloc属性#429-1、数据清洗和预处理importpandasaspd#创建一个示例DataFramedata={'A':[1,2,None,4],'B':[5,6,7,8],'C':[9,None,11,12]}df=pd.DataFrame(data)#选择前两行的数据subset=df.iloc[:2,:]print("选择前两行的数据:\n",subset)#填补某个单元格的缺失值df.iloc[2,0]=3print("\n填补缺失值后的DataFrame:\n",df)#429-2、数据分析和探索importpandasaspd#创建一个示例DataFramedata={'A':[1,2,None,4],'B':[5,6,7,8],'C':[9,None,11,12]}df=pd.DataFrame(data)#分析第三和第四列的数据subset=df.iloc[:,2:]print("第三和第四列的数据:\n",subset)#选择某一行进行特定分析row=df.iloc[1]print("\n第二行的数据:\n",row)#429-3、数据分区和批量处理importpandasaspd#创建一个较大的DataFramedata={'A':range(10),'B':range(10,20)}large_df=pd.DataFrame(data)#将数据分成两部分batch_1=large_df.iloc[:5,:]batch_2=large_df.iloc[5:,:]#处理每个批次的数据print("第一批数据:\n",batch_1)print("\n第二批数据:\n",batch_2)#429-4、模型训练和测试fromsklearn.model_selectionimporttrain_test_split#假设large_df是我们的完整数据集X_train,X_test=train_test_split(large_df,test_size=0.2)#使用iloc进一步选择特定的行进行验证X_validate=X_train.iloc[:2,:]print("训练数据的前两行用于验证:\n",X_validate)#429-5、特定条件下的数据访问和更新importpandasaspd#假设我们有一个时间序列数据date_rng=pd.date_range(start='2024-01-01',end='2024-01-10',freq='D')ts_data=pd.DataFrame(date_rng,columns=['date'])ts_data['data']=range(10)ts_data.set_index('date',inplace=True)#使用iloc更新特定时间段的数据ts_data.iloc[0:3,0]=[20,30,40]print("更新特定时间段后的时间序列数据:\n",ts_data)429-6-3、结果输出#429、pandas.DataFrame.iloc属性#429-1、数据清洗和预处理#选择前两行的数据:#ABC#01.059.0#12.06NaN##填补缺失值后的DataFrame:#ABC#01.059.0#12.06NaN#23.0711.0#34.0812.0#429-2、数据分析和探索#第三和第四列的数据:#C#09.0#1NaN#211.0#312.0##第二行的数据:#A2.0#B6.0#CNaN#Name:1,dtype:float64#429-3、数据分区和批量处理#第一批数据:#AB#0010#1111#2212#3313#4414##第二批数据:#AB#5515#6616#7717#8818#9919#429-4、模型训练和测试#训练数据的前两行用于验证:#AB#7717#9919#429-5、特定条件下的数据访问和更新#更新特定时间段后的时间序列数据:#data#date#2024-01-0120#2024-01-0230#2024-01-0340#2024-01-043#2024-01-054#2024-01-065#2024-01-076#2024-01-087#2024-01-098#2024-01-109430、pandas.DataFrame.insert方法430-1、语法#430、pandas.DataFrame.insert方法pandas.DataFrame.insert(loc,column,value,allow_duplicates=_NoDefault.no_default)InsertcolumnintoDataFrameatspecifiedlocation.RaisesaValueErrorifcolumnisalreadycontainedintheDataFrame,unlessallow_duplicatesissettoTrue.Parameters:locintInsertionindex.Mustverify0
|
|