Python大模型基礎(chǔ)與智能應(yīng)用(微課版)課件第2章 科學(xué)計(jì)算與數(shù)據(jù)處理_第1頁
Python大模型基礎(chǔ)與智能應(yīng)用(微課版)課件第2章 科學(xué)計(jì)算與數(shù)據(jù)處理_第2頁
Python大模型基礎(chǔ)與智能應(yīng)用(微課版)課件第2章 科學(xué)計(jì)算與數(shù)據(jù)處理_第3頁
Python大模型基礎(chǔ)與智能應(yīng)用(微課版)課件第2章 科學(xué)計(jì)算與數(shù)據(jù)處理_第4頁
Python大模型基礎(chǔ)與智能應(yīng)用(微課版)課件第2章 科學(xué)計(jì)算與數(shù)據(jù)處理_第5頁
已閱讀5頁,還剩63頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第2章

科學(xué)計(jì)算與數(shù)據(jù)處理數(shù)組創(chuàng)建、數(shù)組尺寸與重排數(shù)組運(yùn)算與數(shù)學(xué)函數(shù)數(shù)組切片、連接、存取、展平、排序與搜索Numpy簡介第2章

Numpy是Python用于科學(xué)計(jì)算的基礎(chǔ)包,也是大量Python數(shù)學(xué)和科學(xué)計(jì)算包的基礎(chǔ)。Numpy的核心基礎(chǔ)是ndarray(N-dimensionalarray,N維數(shù)組),即由數(shù)據(jù)類型相同的元素組成的N維數(shù)組。使用該包,需要按模塊的形式導(dǎo)入,即:importnumpy,大多情況下是importnumpyasnp,即簡稱np。利用array()函數(shù)創(chuàng)建數(shù)組第2章?;赼rray()函數(shù),可以將列表、元組、嵌套列表、嵌套元組等數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)化為數(shù)組d1=[1,2,3,4,0.1,7]#列表d2=(1,2,3,4,2.3)#元組d3=[[1,2,3,4],[5,6,7,8]]#嵌套列表,元素為列表d4=[(1,2,3,4),(5,6,7,8)]#嵌套列表,元素為元組d5=((1,2,3,4),(5,6,7,8))#嵌套元組importnumpyasnpd11=np.array(d1)d21=np.array(d2)d31=np.array(d3)d41=np.array(d4)d51=np.array(d5)deld1,d2,d3,d4,d5利用內(nèi)置函數(shù)創(chuàng)建數(shù)組第2章importnumpyasnpz1=np.ones((3,3))#創(chuàng)建3行3列元素全為1的數(shù)組z2=np.zeros((3,4))#創(chuàng)建3行4列元素全為0的數(shù)組z3=np.arange(10)#創(chuàng)建默認(rèn)初始值為0,默認(rèn)步長為1,末值為9的一維數(shù)組z4=np.arange(2,10)#創(chuàng)建默認(rèn)初始值為2,默認(rèn)步長為1,末值為9的一維數(shù)組z5=np.arange(2,10,2)#創(chuàng)建默認(rèn)初始值為2,步長為2,末值為9的一維數(shù)組數(shù)組尺寸與重排第2章d1=[1,2,3,4,0.1,7]#列表d3=[[1,2,3,4],[5,6,7,8]]#嵌套列表,元素為列表importnumpyasnpd11=np.array(d1)#將d1列表轉(zhuǎn)換為一維數(shù)組,結(jié)果賦值給變量d11d31=np.array(d3)#將d3嵌套列表轉(zhuǎn)換為二維數(shù)組,結(jié)果賦值給變量d31deld1,d3#刪除d1,d3s11=d11.shape

#返回一維數(shù)組d11的尺寸,結(jié)果賦值給變量s11s31=d31.shape#返回二維數(shù)組d31的尺寸,結(jié)果賦值給變量s31r=np.array(range(9))#一維數(shù)組r1=r.reshape((3,3))#重排為3行3列第2章數(shù)組運(yùn)算importnumpyasnpA=np.array([[1,2],[3,4]])#定義二維數(shù)組AB=np.array([[5,6],[7,8]])#定義二維數(shù)組BC1=A-B#A、B兩個數(shù)組元素之間相減,結(jié)果賦給變量C1C2=A+B#A、B兩個數(shù)組元素之間相加,結(jié)果賦給變量C2C3=A*B#A、B兩個數(shù)組元素之間相乘,結(jié)果賦給變量C3C4=A/B#A、B兩個數(shù)組元素之間相除,結(jié)果賦給變量C4C5=A/3#A數(shù)組所有元素除以3,結(jié)果賦給變量C5C6=1/A#1除以A數(shù)組所有元素,結(jié)果賦給變量C6C7=A**2#A數(shù)組所有元素取平方,結(jié)果賦給變量C7C8=np.array([1,2,3,3.1,4.5,6,7,8,9])#定義數(shù)組C8C9=(C8-min(C8))/(max(C8)-min(C8))#C8中的元素做極差化處理,結(jié)果賦給變量C9第2章數(shù)學(xué)函數(shù)D=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]])#定義數(shù)組D#數(shù)學(xué)運(yùn)算E1=np.sqrt(D)#數(shù)組D中所有元素取平方根,結(jié)果賦給變量E1E2=np.abs([1,-2,-100])#取絕對值E3=np.cos([1,2,3])#取cos值E4=np.sin(D)#取sin值E5=np.exp(D)#取指數(shù)函數(shù)值第2章常用組切片方法假設(shè)D為待訪問或切片的數(shù)據(jù)變量,則訪問或者切片的數(shù)據(jù)=D[①,②]。其中①為對D的行下標(biāo)控制,②為對D的列下標(biāo)控制。為了更靈活地操作數(shù)據(jù),取所有的行或者列,可以用“:”來代替實(shí)現(xiàn)。同時,行控制還可以通過邏輯列表來實(shí)現(xiàn)。importnumpyasnpD=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]])#定義數(shù)組DD12=D[1,2]#訪問D中行為1,列為2的數(shù)據(jù),注意下標(biāo)是從0開始的。D1=D[:,[1,3]]#訪問D中第1、3列數(shù)據(jù)D2=D[[1,3],:]#訪問D中第1、3行數(shù)據(jù)Dt1=D[D[:,0]>5,:]#取D中滿足第0列大于5的所有列數(shù)據(jù),本質(zhì)上行控制為邏輯列表TF=[True,False,False,True]#取D中第0、3行的所有列數(shù)據(jù),本質(zhì)上行控制為邏輯列表,取邏輯值為真的行Dt3=D[TF,:]第2章利用ix_()函數(shù)進(jìn)行數(shù)組切片通過ix_()函數(shù)構(gòu)造行、列下標(biāo)索引器,實(shí)現(xiàn)數(shù)組的切片操作。importnumpyasnpD=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]])#定義數(shù)組DD3=D[np.ix_([1,2],[1,3])]#提取D中行數(shù)為1、2,列數(shù)為1、3的所有元素D4=D[np.ix_(np.arange(2),[1,3])]#提取D中行數(shù)為0、1,列數(shù)為1、3的所有元素D6=D[np.ix_(D[:,1]<11,[1,2])]#提取D中第1列小于11得到的邏輯數(shù)組作為行索引,列數(shù)為1、2的所有元素D7=D[np.ix_(D[:,1]<11,[2])]#提取D中第1列小于11得到的邏輯數(shù)組作為行索引,列數(shù)為2的所有元素TF=[True,False,False,True]D8=D[np.ix_(TF,[2])]#提取TF=[True,False,False,True]邏輯列表為行索引,列數(shù)為2的所有元素D9=D[np.ix_(TF,[1,3])]#提取TF=[True,False,False,True]邏輯列表為行索引,列數(shù)為1,,3的所有元素第2章數(shù)組連接importnumpyasnpA=np.array([[1,2],[3,4]])#定義二維數(shù)組AB=np.array([[5,6],[7,8]])#定義二維數(shù)組BC_s=np.hstack((A,B))#水平連接要求行數(shù)相同C_v=np.vstack((A,B))#垂直連接要求列數(shù)相同第2章數(shù)組存取importnumpyasnpA=np.array([[1,2],[3,4]])#定義二維數(shù)組AB=np.array([[5,6],[7,8]])#定義二維數(shù)組BC_s=np.hstack((A,B))#水平連接np.save('data',C_s)第2章數(shù)組存取importnumpyasnpC_s=np.load(‘data.npy’)

數(shù)組展平

前面介紹了reshape函數(shù)將一維數(shù)組形態(tài)變換為二維數(shù)組,事實(shí)上也可以將二維數(shù)組形態(tài)展平變換為一維數(shù)組,通過ravel()函數(shù)即可實(shí)現(xiàn)。importnumpyasnparr=np.arange(12).reshape(3,4)arr1=arr.ravel()第2章

數(shù)組排序

通過sort函數(shù),可以對數(shù)組元素值按從小到大進(jìn)行直接排序importnumpyasnparr=np.array([5,2,3,3,1,9,8,6,7])arr1=np.sort(arr)第2章

數(shù)組搜索

通過argmax和argmin函數(shù),可以返回待搜索數(shù)組最大值和最小值元素的索引值,如果存在多個最大值或最小值,則返回第一次出現(xiàn)的索引。對于二維數(shù)組而已,可以通過設(shè)置axis=0或1返回各列或者各行最大值或最小值索引。需要注意的是,索引從0開始。importnumpyasnparr=np.array([5,2,3,3,1,1,9,8,6,7,8,8])arr1=arr.reshape(3,4)maxindex=np.argmax(arr)minindex=np.argmin(arr)maxindex1=np.argmax(arr1,axis=0)#返回各列最大值索引minindex1=np.argmin(arr1,axis=1)

#返回各行最小值索引第2章第2章

科學(xué)計(jì)算與數(shù)據(jù)處理pandas簡介、序列創(chuàng)建與訪問序列屬性與方法序列切片與聚合運(yùn)算Pandas簡介第2章

Pandas是基于Numpy開發(fā)的一個Python數(shù)據(jù)分析包,提供了大量的數(shù)據(jù)分析函數(shù),包括數(shù)據(jù)處理、數(shù)據(jù)抽取、數(shù)據(jù)集成、數(shù)據(jù)計(jì)算等基本的數(shù)據(jù)分析手段。Pandas核心數(shù)據(jù)結(jié)構(gòu)包括序列和數(shù)據(jù)框,序列儲存一維數(shù)據(jù),而數(shù)據(jù)框則可以存儲更復(fù)雜的多維數(shù)據(jù)。這里的數(shù)據(jù)框主要用來存儲二維數(shù)據(jù)(類似于數(shù)據(jù)表)。通過importpandasaspd命令導(dǎo)入該包,其中pd為其簡寫。序列創(chuàng)建及訪問第2章

序列由索引index和對應(yīng)的值構(gòu)成,默認(rèn)情況下索引從0開始從小到大順序排列,每個索引對應(yīng)一個值??梢酝ㄟ^列表、元組、數(shù)組、字典等創(chuàng)建默認(rèn)序列或個性化序列。序列對象的創(chuàng)建通過Pandas包中的Series()函數(shù)來實(shí)現(xiàn)。importpandasaspd

#導(dǎo)入Pandas庫importnumpyasnp

#導(dǎo)入Numpy庫s1=pd.Series([1,-2,2.3,'hq'])#指定列表創(chuàng)建默認(rèn)序列s2=pd.Series([1,-2,2.3,'hq'],index=['a','b','c','d'])#指定列表和索引,創(chuàng)建個性化序列s3=pd.Series((1,2,3,4,'hq'))

#指定元組創(chuàng)建默認(rèn)序列s4=pd.Series(np.array([1,2,4,7.1]))

#指定數(shù)組創(chuàng)建默認(rèn)序列#通過字典創(chuàng)建序列mydict={'red':2000,'bule':1000,'yellow':500}

#定義字典ss=pd.Series(mydict)

#指定字典創(chuàng)建序列序列創(chuàng)建及訪問第2章序列的訪問通過index索引訪問對應(yīng)的元素值。print(s4[3])print(s2['c'])執(zhí)行結(jié)果如下:7.12.3序列屬性第2章序列有兩個屬性,分別為值(values)和索引(index)。通過序列中的values屬性和index屬性可以獲取其內(nèi)容。importpandasaspds1=pd.Series([1,-2,2.3,'hq'])#創(chuàng)建序列s1va1=s1.values#獲取序列s1中的值,賦給變量va1in1=s1.index#獲取序列s1中的索引,賦給變量in1print(va1)

#打印變量結(jié)果print(in1)

#打印變量結(jié)果,可通過list()函數(shù)轉(zhuǎn)化為列表,如in2=list(in1)執(zhí)行結(jié)果如下:[1-22.3'hq']RangeIndex(start=0,stop=4,step=1)序列方法第2章unique()通過序列中的unique()方法,可以去掉序列中重復(fù)的元素值importpandasaspds5=[1,2,2,3,'hq','hq','he']#定義列表s5s5=pd.Series(s5)#將定義的列表s5轉(zhuǎn)換為序列s51=s5.unique()#調(diào)用unique()方法去重print(s51)

執(zhí)行結(jié)果如下:[123'hq''he']序列方法第2章isin()通過isin()方法,判斷元素值的存在性,如果存在則返回True,否則為False。比如判斷‘he’這個元素是否存在前面定義的s5序列中。importpandasaspds5=[1,2,2,3,'hq','hq','he']s5=pd.Series(s5)s52=s5.isin(['he'])print(s52)執(zhí)行結(jié)果如下:0False1False2False3False4False5False6Truedtype:bool序列方法——value_counts()第2章value_counts()通過序列中的value_counts()方法,可以統(tǒng)計(jì)獲得序列元素值出現(xiàn)的次數(shù)。比如統(tǒng)計(jì)s5序列中每個元素值出現(xiàn)的次數(shù)。s53=s5.value_counts()其中索引(index)為原序列元素的值,其值部分則為出現(xiàn)的次數(shù)。序列方法——空值處理方法第2章空值處理方法:isnull()、notnull()、dropan()它們的使用方法如下:isnull()判斷序列中是否有空值(nan值),如果有空值,返回True,否則False;notnull()判斷序列中的非空值(nan值),如果真,返回True,否則False;dropan()清洗序列中的空值(nan值)。importpandasaspdimportnumpyasnpss1=pd.Series([10,'hq',60,np.nan,20])#定義序列ss1,其中np.nan為空值(nan值)tt=ss1[~ss1.isnull()]#~為取反,采用邏輯數(shù)組進(jìn)行索引獲取數(shù)據(jù)在以上代碼后面繼續(xù)輸入以下示例程序:tt2=ss1[ss1.notnull()]tt3=ss1.dropna()tt2和tt3的結(jié)果與tt一樣。序列切片第2章序列元素訪問是通過索引完成的,切片即連續(xù)或者間斷地批量獲取元素。importnumpyasnps1=pd.Series([1,-2,2.3,'hq'])s2=pd.Series([1,-2,2.3,'hq'],index=['a','b','c','d'])s4=pd.Series(np.array([1,2,4,7.1]))s22=s2[['a','d']]#取索引號為字符a,b的元素s11=s1[0:2]#索引為連續(xù)的數(shù)組s12=s1[[0,2,3]]#索引為不連續(xù)的數(shù)組s41=s4[s4>2]#索引為邏輯數(shù)組print(s22)print('-'*20)print(s11)print('-'*20)print(s12)print('-'*20)print(s41)執(zhí)行結(jié)果如下:a1dhqdtype:object--------------------011-2dtype:object--------------------0122.33hqdtype:object--------------------24.037.1dtype:float64序列聚合運(yùn)算第2章序列的聚合運(yùn)算,主要包括對序列中的元素求和、平均值、最大值、最小值、方差、標(biāo)準(zhǔn)差等。importpandasaspds=pd.Series([1,2,4,5,6,7,8,9,10])su=s.sum()sm=s.mean()ss=s.std()smx=s.max()smi=s.min()第2章

科學(xué)計(jì)算與數(shù)據(jù)處理數(shù)據(jù)框(DataFrame)簡介、創(chuàng)建數(shù)據(jù)框?qū)傩耘c方法數(shù)據(jù)框訪問與切片數(shù)據(jù)框(DataFram)簡介第2章

Pandas中另一個重要的數(shù)據(jù)對象為數(shù)據(jù)框(DataFram),由多個序列按照相同的index組織在一起形成一個二維表。事實(shí)上,數(shù)據(jù)框的每一列為序列。數(shù)據(jù)框的屬性包括index、列名和值,均可以獲取出來并進(jìn)行操作。由于數(shù)據(jù)框是更為廣泛的一種數(shù)據(jù)組織形式,許多外部數(shù)據(jù)文件讀取到Python中大部分會采用數(shù)據(jù)框的形式進(jìn)行存取,比如數(shù)據(jù)庫、excel和TXT文本。同時數(shù)據(jù)框也提供了極為豐富的方法用于處理數(shù)據(jù)及完成計(jì)算任務(wù)。數(shù)據(jù)框創(chuàng)建第2章

基于字典,利用Pandas庫中的DataFrame函數(shù),可以創(chuàng)建數(shù)據(jù)框。其中字典的鍵轉(zhuǎn)化為列名,字典的值轉(zhuǎn)化為列值,而索引為默認(rèn)值,即從0開始從小到大排列。importpandasaspdimportnumpyasnpdata={'a':[2,2,np.nan,5,6],'b':[‘kl’,’kl’,’kl’,np.nan,’kl’],’c’:[4,6,5,np.nan,6],’d’:[7,9,np.nan,9,8]}df=pd.DataFrame(data)數(shù)據(jù)框?qū)傩缘?章

數(shù)據(jù)框?qū)ο缶哂腥齻€屬性,分別為列名、索引和值。以前面定義的df為例print('columns=',df.columns)print('-'*50)print('index=',list(df.index))print('-'*50)print('values=')print(df.values)輸出結(jié)果為:columns=Index(['a','b','c','d'],dtype='object')--------------------------------------------------index=[0,1,2,3,4]--------------------------------------------------values=[[2.0'kl'4.07.0][2.0'kl'6.09.0][nan'kl'5.0nan][5.0nannan9.0][6.0'kl'6.08.0]]數(shù)據(jù)框方法第2章dropna()通過dorpna()方法,可以去掉數(shù)據(jù)集中的空值(nan值),需要注意的是原來數(shù)據(jù)集不發(fā)生改變,新數(shù)據(jù)集需要重新定義。df1=df.dropna()數(shù)據(jù)框方法第2章

fillna()通過fillna()方法,可以對數(shù)據(jù)框中的空值(nan值)進(jìn)行填充。默認(rèn)情況下所有空值填充同一個元素值(數(shù)值或者字符串),也可以指定不同的列填充不同的值。df2=df.fillna(0)#所有空值元素填充0df3=df.fillna('Kl')#所有空值元素填充kldf4=df.fillna({'a':0,'b':'kl','c':0,'d':0})

#全部列填充df5=df.fillna({'a':0,'b':'kl'})#部分列填充數(shù)據(jù)框方法第2章

sort_values()可以利用sort_values()方法,指定列按值進(jìn)行排序importpandasaspddata={'a':[5,3,4,1,6],'b':['d','c','a','e','q'],'c':[4,6,5,5,6]}Df=pd.DataFrame(data)Df1=Df.sort_values('a',ascending=False)#默認(rèn)按升序,這里設(shè)置為降序數(shù)據(jù)框方法第2章sort_index()有時候需要按索引進(jìn)行排序,這時候可以使用sort_index()方法。Df2=Df1.sort_index(ascending=False)#默認(rèn)按升序,這里設(shè)置為降序數(shù)據(jù)框方法第2章head()通過head(N)方法,可以取數(shù)據(jù)集中的前N行,比如取前面定義的數(shù)據(jù)框Df2中的前4行。H4=Df2.head(4);數(shù)據(jù)框方法第2章

drop()利用dorp()方法,可以刪掉數(shù)據(jù)集中的指定列。比如刪除前面定義的H4中的b列。H41=H4.drop('b',axis=1)#需指定軸為1數(shù)據(jù)框方法第2章

join()利用join()方法,可以實(shí)現(xiàn)兩個數(shù)據(jù)框之間的水平連接Df3=pd.DataFrame({'d':[1,2,3,4,5]})Df4=Df.join(Df3)數(shù)據(jù)框方法第2章to_excel()通過to_excel()方法,可以將數(shù)據(jù)框?qū)С龅紼xcel文件中,Excel文件中。importpandasaspdlist1=['a','b','c','d','e','f']list2=[1,2,3,4,5,6]list3=[1.4,3.5,2,6,7,8]list4=[4,5,6,7,8,9]list5=['t',5,6,7,'k',9.6]D={'M1':list1,'M2':list2,'M3':list3,'M4':list4,'M5':list5}G={'M1':list2,'M2':list3,'M3':list4}D=pd.DataFrame(D)#將字典D轉(zhuǎn)化為數(shù)據(jù)框G=pd.DataFrame(G)#將字典G轉(zhuǎn)化為數(shù)據(jù)框D.to_excel('D.xlsx')G.to_excel('G.xlsx')數(shù)據(jù)框方法第2章

描述統(tǒng)計(jì)方法可以對數(shù)據(jù)框中各列求和、求平均值或者進(jìn)行描述性統(tǒng)計(jì),以前面定義的Df4為例Dt=Df4.drop('b',axis=1)#Df4中刪除b列R1=Dt.sum()#各列求和R2=Dt.mean()#各列求平均值R3=Dt.describe()#各列做描述性統(tǒng)計(jì)數(shù)據(jù)框訪問與切片第2章

利用數(shù)據(jù)框中的iloc屬性進(jìn)行切片假設(shè)DF為待訪問或切片的數(shù)據(jù)框,則切片形式為:DF.iloc[①,②]。其中①為行下標(biāo)控制,②為列下標(biāo)控制,可通過數(shù)值列表來實(shí)現(xiàn),取所有的行或者列用“:”。同時,行控制還可以通過邏輯列表來實(shí)現(xiàn)。#ilocforpositionalindexingc3=df2.iloc[1:3,2]c4=df2.iloc[1:3,0:2]c5=df2.iloc[1:3,:]c6=df2.iloc[[0,2,3],[1,2]]TF=[True,False,False,True,True]c7=df2.iloc[TF,[1]]訪問當(dāng)個值,比如:df2.iloc[2,1]第2章

科學(xué)計(jì)算與數(shù)據(jù)處理Excel數(shù)據(jù)文件讀取TXT數(shù)據(jù)文件讀取CSV數(shù)據(jù)文件讀取Excel文件讀取第2章

通過read_excel()函數(shù)讀取Excel文件數(shù)據(jù),可以讀取指定的工作簿(sheet),也可以設(shè)置讀取有無表頭的數(shù)據(jù)表。path='一、車次上車人數(shù)統(tǒng)計(jì)表.xlsx';data=pd.read_excel(path);Excel文件讀取第2章

讀取文件中Sheet2里的數(shù)據(jù)data=pd.read_excel(path,'Sheet2')#讀取sheet里面的數(shù)據(jù)Excel文件讀取第2章

有時候數(shù)據(jù)表中沒有設(shè)置字段,即無表頭,讀取格式如下:dta=pd.read_excel('dta.xlsx',header=None)#無表頭TXT文件讀取第2章

通過read_table()函數(shù)可以讀取TXT文本數(shù)據(jù)。需要注意的是,TXT文本數(shù)據(jù)列之間會存在特殊字符作為分隔,常見的有Tab鍵、空格和逗號。同時還需注意有些文本數(shù)據(jù)文件是沒有設(shè)置表頭的。importpandasaspddta1=pd.read_table('txt1.txt',header=None)#分隔默認(rèn)為Tab鍵,設(shè)置無表頭。TXT文件讀取第2章

dta2=pd.read_table('txt2.txt',sep='\s+')#分隔為空格,帶表頭TXT文件讀取第2章dta3=pd.read_table('txt3.txt',sep=',',header=None)

#分隔為逗號,設(shè)置無表頭CSV文件讀取第2章CSV文件也是一類廣泛使用的外部數(shù)據(jù)文件,對于一般的CSV數(shù)據(jù)文件可以通過read_csv()函數(shù)讀取。importpandasaspdA=pd.read_csv('data.csv',sep=',');#逗號分隔CSV文件讀取第2章CSV文件可以存儲大規(guī)模的數(shù)據(jù)文件,比如單個數(shù)據(jù)文件大小可達(dá)數(shù)GB、數(shù)十GB,這時候可以采用分塊的方式進(jìn)行讀取。importpandasaspdreader=pd.read_csv('data.csv',sep=',',chunksize=50000,usecols=[3,4,10])k=0forAinreader:k=k+1print('第'+str(k)+'次讀取數(shù)據(jù)規(guī)模為:',len(A))執(zhí)行結(jié)果如下:第1次讀取數(shù)據(jù)規(guī)模為:50000第2次讀取數(shù)據(jù)規(guī)模為:50000第3次讀取數(shù)據(jù)規(guī)模為:33699CSV文件讀取第2章對大規(guī)模的CSV文件進(jìn)行數(shù)據(jù)探索,可以讀取前N行進(jìn)行分析,比如前1000行importpandasaspdA=pd.read_csv('data.csv',sep=',',nrows=1000)小結(jié):通過pandas包中的函數(shù),讀取Excel、TXT和CSV文件,在Python中的數(shù)據(jù)結(jié)構(gòu)均為DataFrame數(shù)據(jù)框,進(jìn)而我們可以利用數(shù)據(jù)框中的方法進(jìn)行數(shù)據(jù)處理和分析了第2章

科學(xué)計(jì)算與數(shù)據(jù)處理時間處理函數(shù)數(shù)據(jù)框合并函數(shù)數(shù)據(jù)框關(guān)聯(lián)函數(shù)時間處理函數(shù)第2章

to_datetime()函數(shù)主要是將字符串型的日期轉(zhuǎn)換為時間戳的格式。方便后續(xù)的數(shù)據(jù)處理,比如提取其所屬年份、月份、周數(shù)、日期、小時、分鐘、秒、星期幾等簡單調(diào)用形式為to_datetime(S,format),其中S為待求的日期字符串或日期字符串列表或日期字符串序列,format為日期字符串格式,默認(rèn)缺省importpandasaspdt1=pd.to_datetime('2015-08-0105:50:43.000001',format='%Y-%m-%d%H:%M:%S.%')t2=pd.to_datetime(['2015-08-0105:50:43','2015-08-0105:51:40'])t3=pd.to_datetime(['2015-08-01','2015-08-02'])t4=pd.to_datetime(pd.Series(['2015-08-01','2015-08-02']))時間處理函數(shù)第2章

執(zhí)行結(jié)果如下數(shù)據(jù)框合并函數(shù)第2章

對兩個數(shù)據(jù)框進(jìn)行水平合并、垂直合并是數(shù)據(jù)處理與整合中常見的操作,這里介紹concat()函數(shù),可以通過設(shè)置軸(Axis)為1或0實(shí)現(xiàn)importpandasaspdimportnumpyasnpdict1={'a':[2,2,'kt',6],'b':[4,6,7,8],'c':[6,5,np.nan,6]}dict2={'d':[8,9,10,11],'e':['p',16,10,8]}dict3={'a':[1,2],'b':[2,3],'c':[3,4],'d':[4,5],'e':[5,6]}df1=pd.DataFrame(dict1)df2=pd.DataFrame(dict2)df3=pd.DataFrame(dict3)deldict1,dict2,dict3df4=pd.concat([df1,df2],axis=1)#水平合并df5=pd.concat([df3,df4],axis=0)#垂直合并,有相同的列名,index屬性伴隨原數(shù)據(jù)框df5.index=range(6)#重新設(shè)置index屬性數(shù)據(jù)框合并函數(shù)第2章

執(zhí)行結(jié)果如下數(shù)據(jù)框關(guān)聯(lián)函數(shù)第2章

merge()函數(shù)類似于數(shù)據(jù)庫中的SQL關(guān)聯(lián)操作語句,指定關(guān)聯(lián)字段之后可進(jìn)行內(nèi)連接(InnerJoin)、左連接(LeftJoin)和右連接(RightJoin)等數(shù)據(jù)操作importpandasaspddict1={'code':['A01','A01','A01','A02','A02','A02','A03','A03'],'month':['01','02','03','01','02','03','01','02'],'price':[10,12,13,15,17,20,10,9]}dict2={'code':['A01','A01','A01','A02','A02','A02'],'month':['01','02','03','01','02','03'],'vol':[10000,10110,20000,10002,12000,21000]}df1=pd.DataFrame(dict1)df2=pd.DataFrame(dict2)deldict1,dict2df_inner=pd.merge(df1,df2,how='inner',on=['code','month']) #內(nèi)連接df_left=pd.merge(df1,df2,how='left',on=['code','month']) #左連接df_right=pd.merge(df1,df2,how='right',on=['code','month']) #右連接數(shù)據(jù)框關(guān)聯(lián)函數(shù)第2章

執(zhí)行結(jié)果如下第2章

科學(xué)計(jì)算與數(shù)據(jù)處理滾動計(jì)算、時間元素提取映射與離散化分組統(tǒng)計(jì)滾動計(jì)算第2章

滾動計(jì)算,也稱為移動計(jì)算,給定一個數(shù)據(jù)序列,按指定的前移長度進(jìn)行統(tǒng)計(jì)計(jì)算,比如求和、平均值、最大值、最小值、中位數(shù)、方差、標(biāo)準(zhǔn)差等。這里前移長度的計(jì)算,包含自身,如果待計(jì)算的數(shù)據(jù)序列小于指定的前移長度,則無法計(jì)算,用空值“nan”來表示。簡單調(diào)用形式為:S.rolling(N).統(tǒng)計(jì)函數(shù),其中S表示序列,N表示指定的前移長度importpandasaspdlist_data=[10,4,3,8,15,26,17,80,12,5]series_data=pd.Series(list_data)rolling_sum=series_data.rolling(5).sum()rolling_mean=series_data.rolling(5).mean()rolling_max=series_data.rolling(5).max()rolling_min=series_data.rolling(5).min()rolling_median=series_data.rolling(5).median()rolling_var=series_data.rolling(5).var()時間元素提取第2章

對時間格式的序列數(shù)據(jù),提取包括年份、月份、周數(shù)、日期、小時、分鐘、秒、星期幾等時間元素。importpandasaspddata=pd.read_excel('dat.xlsx')這里“刷卡時間”數(shù)據(jù)格式為字符串時間元素提取第2章

對時間格式的序列數(shù)據(jù),提取包括年份、月份、周數(shù)、日期、小時、分鐘、秒、星期幾等時間元素。importpandasaspddata=pd.read_excel('dat.xlsx')data['刷卡時間']=pd.to_datetime(data.iloc[:,1],format='%Y-%m-%d%H:%M:%S.%')這里“刷卡時間”數(shù)據(jù)格式為時間格式時間元素提取第2章

data['year']=data['刷卡時間'].dt.yeardata['month']=data['刷卡時間'].dt.monthdata['day']=data['刷卡時間'].dt.daydata['hour']=data['刷卡時間'].dt.hourdata['minute']=data['刷卡時間'].dt.minutedata['second']=data['刷卡時間'].dt.seconddata['week']=data['刷卡時間'].dt.isocalendar().weekdata['weekday']=data['刷卡時間'].dt.weekday將字符串類型

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論