




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
利用Pandas進(jìn)行財(cái)務(wù)數(shù)據(jù)預(yù)處理項(xiàng)目四Pandas的基本操作任務(wù)4.1利用Pandas進(jìn)行財(cái)務(wù)數(shù)據(jù)篩選任務(wù)4.2利用Pandas高階函數(shù)進(jìn)行數(shù)據(jù)處理任務(wù)4.3利用Pandas進(jìn)行財(cái)務(wù)數(shù)據(jù)合并任務(wù)4.4目錄利用Pandas進(jìn)行財(cái)務(wù)數(shù)據(jù)清洗任務(wù)4.5引入案例任務(wù)分析知識(shí)解析案例解析任務(wù)實(shí)訓(xùn)實(shí)訓(xùn)評(píng)價(jià)4.1.1Pandas數(shù)據(jù)結(jié)構(gòu)4.1.2DataFrame創(chuàng)建方法與屬性4.1.3DataFrame的基本操作4.1.4DataFrame的簡(jiǎn)單運(yùn)算4.1.5Pandas讀寫外部文件任務(wù)4.1Pandas的基本操作任務(wù)4.1Pandas的基本操作引入案例在Excel文件中,數(shù)據(jù)量一旦超過10000行,利用Excel處理起來就會(huì)非常慢。于是,美創(chuàng)科技有限公司財(cái)務(wù)人員小王想把財(cái)務(wù)數(shù)據(jù)表fin_data.xlsx(E:\file\)導(dǎo)入到Python中,利用Pandas模塊可以查看表格的基本屬性,進(jìn)行行、列的新增、刪除操作或簡(jiǎn)單計(jì)算。這樣的操作在Pandas模塊中如何實(shí)現(xiàn)呢?任務(wù)分析要想把外部財(cái)務(wù)數(shù)據(jù)導(dǎo)入到Python中,就要用到Pandas讀寫外部文件的函數(shù),讀進(jìn)來之后默認(rèn)存儲(chǔ)為DataFrame對(duì)象,可利用相關(guān)函數(shù)查看其基本屬性,然后進(jìn)行新增或刪除等基本操作,還可以進(jìn)行簡(jiǎn)單的算術(shù)運(yùn)算。知識(shí)解析Pandas是Python的第三方庫,是數(shù)據(jù)分析工作中最常用并且最重的一個(gè)數(shù)據(jù)分析工具包,可以處理包含不同類型數(shù)據(jù)的復(fù)雜表格和時(shí)間序列。它易于使用、開源,并且允許處理大量數(shù)據(jù),能夠快速高效的處理缺失數(shù)據(jù),對(duì)數(shù)據(jù)進(jìn)行切片、聚合、整理和匯總統(tǒng)計(jì)等。Pandas具有許多與SQL或Excel相同的功能,并且可以讀取各種外部文件,比如CSV文件、文本文件、MicrosoftExcel文件、SQL數(shù)據(jù)庫文件等,允許將不同來源的數(shù)據(jù)集轉(zhuǎn)換為DataFrame對(duì)象。在使用Pandas進(jìn)行數(shù)據(jù)處理時(shí),首先要導(dǎo)入Pandas模塊,其語法格式如下:importpandasaspd執(zhí)行這條語句表示引入Pandas模塊,并為pandas模塊起別名pd,這個(gè)pd是一個(gè)約定成俗的名字。在以后的編程語句中,pandas與pd等同。Pandas包含Series和DataFrame兩種數(shù)據(jù)類型,其中DataFrame數(shù)據(jù)類型就相當(dāng)于Excel表格數(shù)據(jù)的行和列,而Series數(shù)據(jù)類型就相當(dāng)于Excel表中的一列或一行。Series是一種基于NumPy數(shù)組的一維數(shù)據(jù)結(jié)構(gòu),如右圖所示,由一組數(shù)據(jù)(各種NumPy類型)及與之相關(guān)的數(shù)據(jù)索引(index)組成。類似于Python列表,每個(gè)元素帶有一個(gè)自動(dòng)索引(索引從0開始,也稱為原始索引),除自動(dòng)索引外,還可以自定義索引,自定義索引可以是數(shù)字或字符串?!菊?qǐng)注意】Series中的自定義索引值是可以重復(fù)的。4.1.1Pandas數(shù)據(jù)結(jié)構(gòu)一、Series數(shù)據(jù)結(jié)構(gòu)任務(wù)4.1Pandas的基本操作1.Series對(duì)象的創(chuàng)建Series類型可由Python列表、字典、NumPy數(shù)組等數(shù)據(jù)類型創(chuàng)建。利用列表創(chuàng)建Series時(shí),列表的元素就是Series的值,而Series的索引可以通過index參數(shù)創(chuàng)建,并且索引的個(gè)數(shù)與值的個(gè)數(shù)要保持一致。利用一維數(shù)組創(chuàng)建Series時(shí),一維數(shù)組的值就是Series的值,而Series的索引可以通過index參數(shù)創(chuàng)建,并且索引的個(gè)數(shù)與值的個(gè)數(shù)要保持一致。利用字典創(chuàng)建Series時(shí),字典的鍵key就是Series的索引index,字典的值value就是Series的值。任務(wù)4.1Pandas的基本操作【做中學(xué)4.1.1】編寫程序,分別利用列表、一維數(shù)組和字典創(chuàng)建Series。利用列表創(chuàng)建的Series為:0庫存現(xiàn)金1銀行存款2應(yīng)收賬款dtype:object利用數(shù)組創(chuàng)建的Series為:1001庫存現(xiàn)金1002銀行存款1122應(yīng)收賬款dtype:object利用字典創(chuàng)建的Series為:1001庫存現(xiàn)金1002銀行存款1122應(yīng)收賬款dtype:objectimportnumpyasnp#導(dǎo)入Numpy模塊importpandasaspd#導(dǎo)入Pandas模塊#利用列表創(chuàng)建Series,先創(chuàng)建列表list1=['庫存現(xiàn)金','銀行存款','應(yīng)收賬款']#不指定索引,默認(rèn)為從0開始的原始索引ser1=pd.Series(list1)print('利用列表創(chuàng)建的Series為:\n',ser1)#利用數(shù)組創(chuàng)建Series,先創(chuàng)建數(shù)組arr=np.array(['庫存現(xiàn)金','銀行存款','應(yīng)收賬款'])#用index參數(shù)指定索引ser2=pd.Series(arr,index=['1001','1002','1122'])print('利用數(shù)組創(chuàng)建的Series為:\n',ser2)#利用字典創(chuàng)建Series,先創(chuàng)建字典dict1={'1001':'庫存現(xiàn)金','1002':'銀行存款','1122':'應(yīng)收賬款'}ser3=pd.Series(dict1)print('利用字典創(chuàng)建的Series為:\n',ser3)【做中學(xué)4.1.1】程序如下:任務(wù)4.1Pandas的基本操作2.Series對(duì)象的數(shù)據(jù)查詢
Series對(duì)象的數(shù)據(jù)查詢方式類似一維ndarray對(duì)象,可以通過值的位置序號(hào)獲取,同時(shí)由于每個(gè)值都關(guān)聯(lián)了索引標(biāo)簽,也可以通過索引來查詢。ser=pd.Series([4,7,-5,3],index=['d','b','a','c'])查詢方式語法格式說明舉例利用位置查詢Series[下標(biāo)值]選取單個(gè)值輸入程序:ser[2]輸出結(jié)果:-5Series[下標(biāo)值列表]選取多個(gè)值輸入程序:ser[[1,3]]輸出結(jié)果:b7
c3dtype:int64Series[下標(biāo)值1:下標(biāo)值2]切片操作輸入程序:ser[1:3]輸出結(jié)果:b7
a-5dtype:int64任務(wù)4.1Pandas的基本操作查詢方式語法格式說明舉例利用索引查詢Series[索引]選取單個(gè)值輸入程序:ser['a']輸出結(jié)果:-5Series[索引列表]選取多個(gè)值輸入程序:ser[['d','a']]輸出結(jié)果:d4a-5dtype:int64Series[索引1:索引2]切片操作輸入程序:ser['d':'a’]輸出結(jié)果:d4
b7a-5dtype:int64
ser=pd.Series([4,7,-5,3],index=['d','b','a','c'])任務(wù)4.1Pandas的基本操作查詢方式語法格式說明舉例利用索引器loc查詢Series.loc[索引]選取單個(gè)值輸入程序:ser.loc['a']輸出結(jié)果:-5Series.loc[索引列表]選取多個(gè)值輸入程序:ser.loc[['d','a']]輸出結(jié)果:d4
a-5dtype:int64Series.loc[索引1:索引2]切片操作輸入程序:ser.loc['d':'a']輸出結(jié)果:d4b7a-5dtype:int64條件查詢Series[條件表達(dá)式]選取滿足條件的值輸入程序:ser[ser>0]輸出結(jié)果:d4b7c3dtype:int64ser=pd.Series([4,7,-5,3],index=['d','b','a','c'])任務(wù)4.1Pandas的基本操作3.Series對(duì)象的修改、增加及刪除操作說明舉例修改Series對(duì)象的修改是建立在查詢的基礎(chǔ)上,通過查詢操作選取到單個(gè)值或多個(gè)值,然后通過賦值操作進(jìn)行修改。輸入程序:ser[2]=5ser輸出結(jié)果:d4
b7a5c3dtype:int64刪除Series對(duì)象的刪除操作通過drop()函數(shù)實(shí)現(xiàn)。輸入程序:ser3=ser.drop(['d','a’])ser3輸出結(jié)果:b7
c3
dtype:int64ser=pd.Series([4,7,-5,3],index=['d','b','a','c'])任務(wù)4.1Pandas的基本操作操作說明舉例增加Series對(duì)象不能直接添加新數(shù)據(jù),需要將新數(shù)據(jù)單獨(dú)創(chuàng)建為一個(gè)新的Series對(duì)象,然后用append()添加到原有的Series對(duì)象中。輸入程序:ser1=pd.Series([-6,6])
ser2=ser.append(ser1)
ser2輸出結(jié)果:d4b7a5c30-616dtype:int64ser=pd.Series([4,7,-5,3],index=['d','b','a','c'])任務(wù)4.1Pandas的基本操作DataFrame數(shù)據(jù)結(jié)構(gòu)如下圖所示,與Series類似,也是由索引和數(shù)據(jù)構(gòu)成,不同的是,DataFrame的索引不僅有行索引,還有列索引。行索引用index表示,列索引用columns表示,如果沒有傳入行索引或列索引,DataFrame會(huì)默認(rèn)自動(dòng)創(chuàng)建一個(gè)從0開始的整數(shù)索引,這種索引稱為自動(dòng)索引或原始索引。行索引位于最左邊一列,而列索引位于最上面一行。二、DataFrame數(shù)據(jù)結(jié)構(gòu)任務(wù)4.1Pandas的基本操作4.1.2DataFrame創(chuàng)建方法與屬性一、DataFrame的創(chuàng)建方法創(chuàng)建DataFrame對(duì)象的一般語法格式如下:
pd.DataFrame(data,columns=[序列],index=[序列])在創(chuàng)建DataFrame對(duì)象時(shí),行索引和列索引可以通過columns和index參數(shù)指定,若沒有明確指出,則會(huì)被設(shè)置為默認(rèn)值,默認(rèn)為自動(dòng)從0開始的連續(xù)數(shù)字。而其中的data主要有兩類數(shù)據(jù)類型創(chuàng)建:(1)使用字典類創(chuàng)建,如:①數(shù)組、列表、元組構(gòu)成的字典;②Series構(gòu)造的字典;③字典構(gòu)造的字典。(2)使用列表類創(chuàng)建,如:①二維數(shù)組構(gòu)成的列表;②字典構(gòu)造的列表;③Series構(gòu)成的列表。任務(wù)4.1Pandas的基本操作創(chuàng)建方法程序?qū)嵗梢痪S數(shù)組組成的字典創(chuàng)建data={'公司':np.array(['一分廠','二分廠','三分廠']),'收入':np.array([2000000,1500000,1300000]),'成本':np.array([1650000,1350000,1050000])}df=pd.DataFrame(data)由一維列表組成的字典創(chuàng)建data={'公司':['一分廠','二分廠','三分廠'],'收入':[2000000,1500000,1300000],'成本':[1650000,1350000,1050000]}df=pd.DataFrame(data)由Series組成的字典創(chuàng)建data={'公司':pd.Series(['一分廠','二分廠','三分廠']),'收入':pd.Series([2000000,1500000,1300000]),'成本':pd.Series([1650000,1350000,1050000])}df=pd.DataFrame(data)【做中學(xué)4.1.2】擬創(chuàng)建如下圖所示的DataFrame對(duì)象,可以采用的創(chuàng)建方法如表所示。任務(wù)4.1Pandas的基本操作【做中學(xué)4.1.2】擬創(chuàng)建如下圖所示的DataFrame對(duì)象,可以采用的創(chuàng)建方法如下表所示。創(chuàng)建方法程序?qū)嵗啥S數(shù)組創(chuàng)建data=np.array([['一分廠',2000000,1650000],['二分廠',1500000,1350000],['三分廠',1300000,1050000]])df=pd.DataFrame(data,columns=['公司','收入','成本'])由嵌套列表創(chuàng)建data=[['一分廠',2000000,1650000],['二分廠',1500000,1350000],['三分廠',1300000,1050000]]df=pd.DataFrame(data,columns=['公司','收入','成本'])由字典組成的列表創(chuàng)建data=[{'公司':'一分廠','收入':2000000,'成本':1650000},{'公司':'二分廠','收入':1500000,'成本':1350000},{'公司':'三分廠','收入':1300000,'成本':1050000}]df=pd.DataFrame(data)由字典組成的字典創(chuàng)建data={'公司':{0:'一分廠',1:'二分廠',2:'三分廠'},'收入':{0:2000000,1:1500000,2:1300000},'成本':{0:1650000,1:1350000,2:1050000}}df=pd.DataFrame(data)任務(wù)4.1Pandas的基本操作二、DataFrame的屬性DataFrame的屬性包括形狀(行數(shù)與列數(shù))、元素個(gè)數(shù)、列索引、行索引等,以【做中學(xué)4.1.2】中創(chuàng)建的DataFrame對(duì)象為例,查看其屬性的操作如下表所示。屬性說明實(shí)例結(jié)果indexDataFrame的行索引df.indexInt64Index([0,1,2],dtype='int64')columnsDataFrame的列索引df.columnsIndex(['公司','收入','成本'],dtype='object')valuesDataFrame的Numpy原生二維數(shù)組數(shù)據(jù)df.valuesarray([['一分廠',2000000,1650000],['二分廠',1500000,1350000],
['三分廠',1300000,1050000]],dtype=object)shapeDataFrame的形狀df.shape(3,3)sizeDataFrame的元素個(gè)數(shù)df.size9ndimDataFrame的維數(shù)df.ndim2dtypesDataFrame的數(shù)據(jù)類型df.dtypes公司
object收入
int64成本
int64dtype:object任務(wù)4.1Pandas的基本操作4.1.3DataFrame的基本操作DataFrame作為一種二維表的數(shù)據(jù)結(jié)構(gòu),其基本操作包括索引操作和數(shù)據(jù)內(nèi)容的操作。索引操作包括重生索引、重設(shè)索引、重命名索引、還原索引和軸向變換;數(shù)據(jù)內(nèi)容的操作包括增加和刪除操作,如增刪行和列,在實(shí)際應(yīng)用中新增列的情況比較多。一、DataFrame的索引操作索引操作說明語法格式重生索引對(duì)原來的DataFrame重新生成索引,索引既可以包括原來的索引,也可以引入新的索引DataFrame.reindex(labels=None,index=None,columns=None,axis=None,method=None,copy=True,level=None,fill_value=nan,limit=None,tolerance=None)其中:①labels:可選,表示新index或columns,和axis聯(lián)合使用;②index:可選,表示要使用的新的行索引;③columns:可選,表示要使用的新的列索引;④method:用于在重生索引的DataFrame中填充的方法;⑤fill_value:默認(rèn)為np.NaN,用于缺失值的填充;⑥limit:int,默認(rèn)None,向前或向后填充的連續(xù)元素的最大數(shù)量。任務(wù)4.1Pandas的基本操作索引操作說明語法格式還原索引將DataFrame對(duì)象的行索引還原為原始索引DataFrame.reset_index(level=None,drop=False,inplace=False,col_level=0,col_fill='')其中:①level:接收int、str、tuple或list,表示僅從索引中刪除給定級(jí)別。默認(rèn)情況下移除所有級(jí)別。②drop:表示索引列是否還原為普通列,否則會(huì)丟失,默認(rèn)值為False;③inplace:是否在原DataFrame上修改,默認(rèn)為False;④col_level:int或str,默認(rèn)值為0,如果列有多個(gè)級(jí)別,則確定將標(biāo)簽插入到哪個(gè)級(jí)別。默認(rèn)情況下,它將插入到第一級(jí);⑤col_fill:對(duì)象,默認(rèn)‘’,如果列有多個(gè)級(jí)別,則確定其他級(jí)別的命名方式。如果沒有,則重復(fù)索引名。重設(shè)索引將DataFrame行索引修改為DataFrame中的某一列或幾列DataFrame.set_index(keys,drop=True,append=False,inplace=False,verify_integrity=False)其中:①keys:表示要設(shè)置為索引的列名(如有多個(gè)應(yīng)放在一個(gè)列表里);②drop:將設(shè)置為索引的列刪除,默認(rèn)為True;③append:是否將新的索引追加到原索引后(即是否保留原索引),默認(rèn)為False;④inplace:是否在原DataFrame上修改,默認(rèn)為False;⑤verify_integrity:是否檢查索引有無重復(fù),默認(rèn)為False。任務(wù)4.1Pandas的基本操作索引操作說明語法格式重命名索引用來修改Dataframe的行索引index和列名DataFrame.rename(mapper=None,index=None,columns=None,axis=None,copy=True,inplace=False,level=None)其中:①mapper:映射器,類似于字典,應(yīng)用于特定軸標(biāo)簽,與axis聯(lián)合使用;②index:更改行索引名稱;③columns:更改列名;④axis:int或字符串值,0表示行,1表示列,默認(rèn)為0,確定mapper所針對(duì)的軸;⑤inplace:是否在原DataFrame上修改,默認(rèn)為False。軸向變換列索引轉(zhuǎn)化為行索引DataFrame.stack(level=-1,dropna=Ture)其中:①level:表示要轉(zhuǎn)換的索引軸,取值可以為int、str、list,默認(rèn)取值為-1,表示轉(zhuǎn)換最內(nèi)層的列索引,轉(zhuǎn)換后為最內(nèi)層的行索引;②dropna:表示是否刪除所有值均缺失的行,默認(rèn)為True。行索引轉(zhuǎn)化為列索引DataFrame.unstack(level=-1,fill_value=None)其中:①level:表示要轉(zhuǎn)換的索引軸,取值可以為int、str、list,默認(rèn)取值為-1,表示轉(zhuǎn)換最內(nèi)層的行索引,轉(zhuǎn)換后為最內(nèi)層的列索引;②fill_value:取值可以為int、str、list,表示缺失值替換方式。任務(wù)4.1Pandas的基本操作【做中學(xué)4.1.3】編寫程序?qū)崿F(xiàn)下圖所示DataFrame對(duì)象索引的變化。importnumpyasnpimportpandasaspddata={'公司':['一分廠','二分廠','三分廠’],
'收入':[2000000,1500000,1300000],
'成本':[1650000,1350000,1050000]}df=pd.DataFrame(data)df1=df.reindex(index=[1,2,0])df2=df1.set_index('公司’,inplace=True)df3=df2.rename(columns={'收入':'income','成本':'cost’},index={'二分廠':'Factory2'},inplace=True)df4=df3.reset_index()【做中學(xué)4.1.3】程序如下:任務(wù)4.1Pandas的基本操作二、新增列數(shù)據(jù)方法語法格式利用直接賦值DataFrame[new_col]=value,其中:new_col表示新增的列名。利用公式計(jì)算DataFrame[new_col]=DataFrame[col]+DataFrame[col]說明:不限兩列間的加法運(yùn)算,也可以進(jìn)行減法、除法和乘法運(yùn)算,當(dāng)然也可以進(jìn)行多列間的簡(jiǎn)單算術(shù)運(yùn)算。其中col表示已經(jīng)存在的列名。利用insert()函數(shù)插入新列DataFrame.insert(loc,column,value,allow_duplicates=False)參數(shù)說明:①loc:接收int,表示插入列的位置,插入第一列為loc=O;②column:表示插入列的列名;③value:表示插入的值,可以為數(shù)值、Series、數(shù)組等;④allow_duplicates:表示是否允許列名重復(fù),默認(rèn)False,如果列名已經(jīng)存在則報(bào)錯(cuò),設(shè)置為True表示允許列名重復(fù)。任務(wù)4.1Pandas的基本操作【做中學(xué)4.1.4】編寫程序,要求采用三種不同的方法實(shí)現(xiàn)下圖中DataFrame對(duì)象列的增加。importnumpyasnpimportpandasaspddata={'公司':['一分廠','二分廠','三分廠’],'收入':[2000000,1500000,1300000],'成本':[1650000,1350000,1050000]}df=pd.DataFrame(data)df['時(shí)間']='2021年'df['毛利']=df['收入']-df['成本’]df.insert(loc=1,column='地點(diǎn)’,value=['中國','美國','印度'])【做中學(xué)4.1.4】程序如下:任務(wù)4.1Pandas的基本操作三、刪除列數(shù)據(jù)刪除方法語法格式說明deldelDataFrame[col]無返回值,改變?cè)怠op()DataFrame.pop(col)返回被刪除的值,改變?cè)怠rop()DataFrame.drop(labels,axis=1)DataFrame.drop(columns=[col1,clol2,…])返回刪除后的剩余值,不改變?cè)担绻薷脑?,需增加參?shù)inplace=True即可。任務(wù)4.1Pandas的基本操作【做中學(xué)4.1.5】編寫程序以下操作:對(duì)【做中學(xué)4.1.4】最終生成的DataFrame對(duì)象df使用del、pop()、drop()方法進(jìn)行刪除操作,如下圖所示。deldf['時(shí)間']#刪除時(shí)間列df.pop('地點(diǎn)')#刪除地點(diǎn)列df.drop("毛利",axis=1,inplace=True)#刪除毛利列【做中學(xué)4.1.5】程序如下:任務(wù)4.1Pandas的基本操作四、行數(shù)據(jù)的增加和刪除行的增加可以使用索引器loc方法,然后利用列表和字典進(jìn)行賦值,也可以用其他方法。行的刪除仍然可以使用drop方法,其語法格式有如下兩種:DataFrame.drop(index=[index1,index2,…])DataFrame.drop(label,axis=0)【做中學(xué)4.1.6】編寫程序?qū)崿F(xiàn)下圖中DataFrame對(duì)象行的增加和刪除。importnumpyasnpimportpandasaspddata={'公司':['一分廠','二分廠','三分廠'],'收入':[2000000,1500000,1300000],'成本':[1650000,1350000,1050000]}df=pd.DataFrame(data)df.loc[3]=['四分廠',1850000,150000]df.drop(1,axis=0,inplace=True)【做中學(xué)4.1.6】程序如下:任務(wù)4.1Pandas的基本操作四、DataFrame的轉(zhuǎn)置及數(shù)據(jù)類型轉(zhuǎn)換利用Pandas將DataFrame對(duì)象的行和列相互調(diào)換,可以使用矩陣轉(zhuǎn)置操作實(shí)現(xiàn),其語法格式為:DataFame.T在Pandas中可以使用astype()進(jìn)行數(shù)據(jù)類型的強(qiáng)制轉(zhuǎn)換。astype()的一般用法格式如下:DataFrame[column].astype(dtype_new)【做中學(xué)4.1.7】解析如下:(1)創(chuàng)建DateFrame對(duì)象。程序如下:importpandasaspd#引入Pandas模塊importnumpyasnp#引入Numpy模塊data={"期初余額":[85000,97000,116000],"期末余額":[70000.15,50000.75,126000.55]}df=pd.DataFrame(data,index=["應(yīng)收賬款","應(yīng)付賬款","實(shí)收資本"])df#查看df【做中學(xué)4.1.7】創(chuàng)建一個(gè)DataFame對(duì)象,首先通過轉(zhuǎn)置操作實(shí)現(xiàn)行列的調(diào)換,然后進(jìn)行數(shù)據(jù)類型的轉(zhuǎn)換。任務(wù)4.1Pandas的基本操作(2)對(duì)df進(jìn)行轉(zhuǎn)置操作。程序如下:df.T#轉(zhuǎn)置操作,T為轉(zhuǎn)置運(yùn)算符(3)將df中期末余額列數(shù)據(jù)轉(zhuǎn)化為整數(shù)。程序如下:df['期末余額']=df['期末余額'].astype('int’)df#查看df運(yùn)行結(jié)果運(yùn)行結(jié)果任務(wù)4.1Pandas的基本操作4.1.3
DataFrame的簡(jiǎn)單運(yùn)算一、DataFrame與Series之間的轉(zhuǎn)化【做中學(xué)4.1.8】編寫程序?qū)ataFrame中的一列轉(zhuǎn)化成Series,然后再將該Series轉(zhuǎn)化成DataFrame。importnumpyasnp#導(dǎo)入Numpy模塊importpandasaspd#導(dǎo)入Pandas模塊data={'公司':['一分廠','二分廠','三分廠'],'收入':[2000000,1500000,1300000],'成本':[1650000,1350000,1050000]}df=pd.DataFrame(data)income=df['收入']#取收入列轉(zhuǎn)化為Seriesprint(income)#打印incomeprint(type(income))#查看income的數(shù)據(jù)類型df1=pd.DataFrame(income)#將income轉(zhuǎn)化為DataFramedf1#查看df1程序運(yùn)行結(jié)果如下:020000001150000021300000Name:收入,dtype:int64<class'pandas.core.series.Series'>【做中學(xué)4.1.8】解析如下:任務(wù)4.1Pandas的基本操作二、DataFrame的簡(jiǎn)單運(yùn)算Pandas的數(shù)據(jù)對(duì)象在進(jìn)行算術(shù)運(yùn)算時(shí),如果有相同索引,按照相同索引配對(duì)進(jìn)行算術(shù)運(yùn)算,如果沒有對(duì)應(yīng)的索引,則引入缺失值NaN,這就是數(shù)據(jù)自動(dòng)對(duì)齊的功能。Pandas數(shù)據(jù)結(jié)構(gòu)之間可以使用運(yùn)算符進(jìn)行運(yùn)算,如obj1-obj2、obj1+obj2、obj1*obj2、obj1/obj2,其中obj1和obj2是兩個(gè)數(shù)據(jù)結(jié)構(gòu),可以是Series或是DataFrame?!咀鲋袑W(xué)4.1.9】創(chuàng)建如下圖所示的DataFrame對(duì)象,并在此基礎(chǔ)上計(jì)算每家分廠的毛利和毛利率。任務(wù)4.1Pandas的基本操作importnumpyasnp#導(dǎo)入Numpy模塊importpandasaspd#導(dǎo)入Pandas模塊data={'公司':['一分廠','二分廠','三分廠'],'收入':[2000000,1500000,1300000],'成本':[1650000,1350000,1050000]}df=pd.DataFrame(data)df['毛利']=df['收入']-df['成本']df['毛利率']=df['毛利']/df['收入‘]df
#查看df運(yùn)行結(jié)果【做中學(xué)4.1.9】創(chuàng)建如下圖所示的DataFrame對(duì)象,并在此基礎(chǔ)上計(jì)算每家分廠的毛利和毛利率?!咀鲋袑W(xué)4.1.9】解析如下:任務(wù)4.1Pandas的基本操作4.1.3
Pandas讀寫外部文件一、讀寫Excel文件在工作中,許多數(shù)據(jù)都保存在Excel中,那么,如何將Excel中的數(shù)據(jù)讀取出來呢?Pandas庫提供了讀取Excel文件格式的read_excel()函數(shù),其語法格式如下:pandas.read_excel(io,sheet_name=0,header=0,names=None,index_col=None,usecols=None,squeeze=False,dtype=None,engine=None,converters=None,true_values=None,false_values=None,skiprows=None,nrows=None,na_values=None,parse_dates=False,date_parser=None,thousands=None,comment=None,skipfooter=0,convert_float=True,**kwds)任務(wù)4.1Pandas的基本操作
read_excel()函數(shù)常用參數(shù)說明參數(shù)說明實(shí)例io接收string,表示文件路徑r'D:\Python\data.xlsx'或者'D:/Python/data.xlsx'r寫在字符串前面,是防止字符轉(zhuǎn)義的一種方式。sheet_name接收string或int,表示導(dǎo)入的sheet頁1.sheet_name=0:默認(rèn)導(dǎo)入第一頁;2.sheet_name=’表名’:直接輸入目標(biāo)sheet表名;3.sheet_name=’Sheet2’:代表第2個(gè)sheet,S要大寫。header接收int或sequence,表示導(dǎo)入將某行數(shù)據(jù)作為列名1.header=0:默認(rèn)值,表格的第一行作為列名;2.header=[0,1]:表示前兩行作為列名(多重索引)。names接收sequence,表示自定義列名的列表。如果文件沒有標(biāo)題行,應(yīng)該顯式設(shè)置header=None。例如:names=['公司','收入','成本']注意:一般適用于Excel缺少列名,或者需要重新定義列名的情況,names的長(zhǎng)度必須和Excel列長(zhǎng)度一致,否則會(huì)報(bào)錯(cuò)。任務(wù)4.1Pandas的基本操作
read_excel()函數(shù)常用參數(shù)說明參數(shù)說明實(shí)例index_col指定列用作DataFrame的行索引1.index_col=None:默認(rèn)數(shù)據(jù)不帶行索引號(hào),Pandas自動(dòng)分配從0開始的索引號(hào);2.index_col=0:以第一列作為行索引;3.index_col=[0,1]:表示將前兩列作為多重索引。usecols指定要使用的列名列表。1.usecols=None:默認(rèn)取所有列;2.usecols=[0,2,3]:以列號(hào)代表要取的列;3.usecols=['年’,’月’];以列名代表要取的列。skiprows表示跳過指定行(包括)之前的行開始讀取。skiprows參數(shù)可選類型:1.int類型:int=1代表跳過1行,不是索引1的行;2.int-list類型:[0,1]代表跳過索引為0和1的行。converters對(duì)指定列的數(shù)據(jù)進(jìn)行指定函數(shù)的處理。例如:converters={'時(shí)間’:str,'資產(chǎn)總額’:float}表示將“時(shí)間”列數(shù)據(jù)類型強(qiáng)制規(guī)定為字符串,“資產(chǎn)總額”列強(qiáng)制規(guī)定為浮點(diǎn)型。任務(wù)4.1Pandas的基本操作利用to_excel()函數(shù)可以實(shí)現(xiàn)將DataFrame對(duì)象存儲(chǔ)為Excel文件,其語法格式如下:DataFrame.to_excel(excel_writer,sheet_name='Sheet1',na_rep='',float_format=None,columns=None,header=True,index=True,index_label=None,startrow=0,startcol=0,engine=None,merge_cells=True,encoding=None,inf_rep='inf',verbose=True,freeze_panes=None)常用參數(shù)說明:excel_writer:字符串或ExcelWriter對(duì)象,表示文件路徑或現(xiàn)有的ExcelWriter;sheet_name:字符串,默認(rèn)“Sheet1”,表示將DataFrame對(duì)象存儲(chǔ)為Excel工作簿的名稱;na_rep:字符串,默認(rèn)為‘’,表示缺失數(shù)據(jù)表示方式;float_format:字符串,默認(rèn)None,表示格式化浮點(diǎn)數(shù)的字符串。任務(wù)4.1Pandas的基本操作【做中學(xué)4.1.10】利用Pandas模塊讀入fin_data1.xlsx(位置:E:\file\)中的第一個(gè)表格,根據(jù)數(shù)據(jù)表中的數(shù)據(jù)計(jì)算毛利和毛利率,然后將加工過的表格導(dǎo)出一個(gè)新的excel文件,存放位置為:E:\file\,命名為fin_data2.xlsx?!咀鲋袑W(xué)4.1.10】解析如下:導(dǎo)入Pandas模塊和Excel表格數(shù)據(jù),并查看df。其程序如下:importpandasaspd#引入Pandas模塊#讀取Excel文件df=pd.read_excel(r'E:\file\fin_data1.xlsx’,sheet_name=0,converters={'年':str,'月':str})df.head()#默認(rèn)查看df的前5行數(shù)據(jù)STEP01任務(wù)4.1Pandas的基本操作根據(jù)DataFrame對(duì)象df計(jì)算毛利和毛利率。其程序如下:df['毛利']=df['營業(yè)收入']-df['營業(yè)成本']df['毛利率']=df['毛利']/df['營業(yè)收入']df.head()#默認(rèn)查看df的前5行數(shù)據(jù)STEP02(3)將df存儲(chǔ)為一個(gè)新的Excel文件。其程序如下:df.to_excel(r'E:\file\fin_data2.xlsx',sheet_name='毛利')STEP03任務(wù)4.1Pandas的基本操作二、讀寫CSV文件在Pandas中利用read_csv()函數(shù)讀取CSV文件,其語法格式如下:pandas.read_csv(filepath_or_buffer,sep=',',delimiter=None,header='infer',names=None,index_col=None,usecols=None,dtype=None,…)常用參數(shù)說明:filepath_or_buffer:接收string。表示CSV文件的保存路徑,無默認(rèn)值。sep:接收string,默認(rèn)值為“,”。如果分割符指定錯(cuò)誤,則在讀取數(shù)據(jù)時(shí),每行數(shù)據(jù)將連成一片。header:接收int或者sequence。表示將某行數(shù)據(jù)作為列名,默認(rèn)值為infer,表示自動(dòng)識(shí)別。names:接收列表。表示列名,默認(rèn)值為None。dtype:接收dict。表示寫入的數(shù)據(jù)類型(列名為key,數(shù)據(jù)類型為values)。任務(wù)4.1Pandas的基本操作CSV文件的存儲(chǔ)可以通過Pandas庫中的to_csv()函數(shù)實(shí)現(xiàn),其語法格式如下:DataFrame.to_csv(path_or_buf=None,sep=',',na_rep='',float_format=None,columns=None,header=True,index=True,index_label=None,mode='w',encoding=None,…)【做中學(xué)4.1.11】從fin_data.csv文件(如下圖所示,位置:E:\file\)讀取數(shù)據(jù)到DataFrame對(duì)象中,接著新增營業(yè)凈利率列,最后再存儲(chǔ)為CSV文件(位置:E:\file\),并重命名為fin_data1.csv。任務(wù)4.1Pandas的基本操作【做中學(xué)4.1.11】解析如下:導(dǎo)入Pandas模塊和讀入CSV文件,并查看結(jié)果。程序如下:importpandasaspd#導(dǎo)入Pandas模塊df=pd
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 合同履行擔(dān)保管理辦法
- 基礎(chǔ)設(shè)施建設(shè)臨時(shí)用地合同范本
- 跨境融資合同(樣式一)
- 6 有多少浪費(fèi)本可避免 第2課時(shí) (教學(xué)設(shè)計(jì))2023-2024學(xué)年統(tǒng)編版道德與法治四年級(jí)下冊(cè)
- 14《我要的是葫蘆》教學(xué)設(shè)計(jì)-2024-2025學(xué)年統(tǒng)編版(五四制)語文二年級(jí)上冊(cè)
- 4田家四季歌教學(xué)設(shè)計(jì)-2024-2025學(xué)年二年級(jí)上冊(cè)語文統(tǒng)編版
- 建筑安裝工程承包合同
- 雇工植樹合同范本
- 6《9的乘法口訣》(教學(xué)設(shè)計(jì))-2024-2025學(xué)年二年級(jí)上冊(cè)數(shù)學(xué)人教版
- Module 3 Unit 9 Great cities of the world(教學(xué)設(shè)計(jì))-2024-2025學(xué)年滬教牛津版(深圳用)英語六年級(jí)上冊(cè)
- GB/T 1346-2024水泥標(biāo)準(zhǔn)稠度用水量、凝結(jié)時(shí)間與安定性檢驗(yàn)方法
- 2025年湖南中醫(yī)藥高等??茖W(xué)校高職單招職業(yè)技能測(cè)試近5年??及鎱⒖碱}庫含答案解析
- 【歷史】金與南宋對(duì)峙課件-2024-2025學(xué)年統(tǒng)編版七年級(jí)歷史下冊(cè)
- 易制毒化學(xué)品理論考試試題及答案
- 2025年春新人教PEP版英語三年級(jí)下冊(cè)課件 Unit 1 Part C 第8課時(shí) Reading time
- 《消防檢查指導(dǎo)手冊(cè)》(2024版)
- 2024年萍鄉(xiāng)衛(wèi)生職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫標(biāo)準(zhǔn)卷
- 2025年重慶三峰環(huán)境集團(tuán)招聘筆試參考題庫含答案解析
- 育嬰培訓(xùn)課件
- 《管理品牌資產(chǎn)》戴維·阿克著
- 藥品網(wǎng)絡(luò)交易服務(wù)三方平臺(tái)質(zhì)量管理體系文件-B2B平臺(tái)(完整版)
評(píng)論
0/150
提交評(píng)論