Python金融數(shù)據(jù)分析與挖掘(微課版) 課件匯 黃恒秋 1-1. Python基本數(shù)據(jù)類型與基本數(shù)據(jù)結(jié)構(gòu)- 5-7.關(guān)聯(lián)規(guī)則_第1頁(yè)
Python金融數(shù)據(jù)分析與挖掘(微課版) 課件匯 黃恒秋 1-1. Python基本數(shù)據(jù)類型與基本數(shù)據(jù)結(jié)構(gòu)- 5-7.關(guān)聯(lián)規(guī)則_第2頁(yè)
Python金融數(shù)據(jù)分析與挖掘(微課版) 課件匯 黃恒秋 1-1. Python基本數(shù)據(jù)類型與基本數(shù)據(jù)結(jié)構(gòu)- 5-7.關(guān)聯(lián)規(guī)則_第3頁(yè)
Python金融數(shù)據(jù)分析與挖掘(微課版) 課件匯 黃恒秋 1-1. Python基本數(shù)據(jù)類型與基本數(shù)據(jù)結(jié)構(gòu)- 5-7.關(guān)聯(lián)規(guī)則_第4頁(yè)
Python金融數(shù)據(jù)分析與挖掘(微課版) 課件匯 黃恒秋 1-1. Python基本數(shù)據(jù)類型與基本數(shù)據(jù)結(jié)構(gòu)- 5-7.關(guān)聯(lián)規(guī)則_第5頁(yè)
已閱讀5頁(yè),還剩199頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第1章Python基礎(chǔ)Python基本數(shù)據(jù)類型Python基本數(shù)據(jù)結(jié)構(gòu)Python基本數(shù)據(jù)結(jié)構(gòu)之間的比較Python基本數(shù)據(jù)類型第1章

電子表格數(shù)據(jù)、新聞文本數(shù)據(jù)等屬于常見的數(shù)據(jù)集,它們是由一個(gè)個(gè)的數(shù)值和文本組成的。單個(gè)數(shù)值和文本,即是構(gòu)成數(shù)據(jù)集的基本單元。Python基本數(shù)據(jù)類型第1章

在Python中,將構(gòu)成數(shù)據(jù)集的基本單元:數(shù)值和文本,定義為基本數(shù)據(jù)類型,即數(shù)值和字符串。n1=2#整型n2=1.3#浮點(diǎn)n3=float(2)#轉(zhuǎn)換為浮點(diǎn)類型t=True#布爾真f=False#布爾假n4=t==1n5=f==0s1='1234's2='中國(guó)'s3='''helloword!'''s4='ILikepython’

Python基本數(shù)據(jù)類型,即對(duì)單個(gè)數(shù)值和文本進(jìn)行了定義。然而,真實(shí)數(shù)據(jù)集是由多個(gè)數(shù)值或多個(gè)文本組成的,其數(shù)據(jù)集形態(tài)可能是二維表(比如Excel表格),也可能是某一列(數(shù)據(jù)序列)。以某個(gè)數(shù)據(jù)序列為例,如何進(jìn)行組織和存儲(chǔ)呢?——Python基本數(shù)據(jù)結(jié)構(gòu)Python基本數(shù)據(jù)結(jié)構(gòu)第1章

列表元組集合字典

列表作為Python中一種數(shù)據(jù)結(jié)構(gòu),可以存放不同類型的數(shù)據(jù),用中括號(hào)括起來(lái)進(jìn)行定義。

L1=[1,2,3,4,5,6]L2=[1,2,'HE',3,5]L3=['KJ','CK','HELLO']

Python基本數(shù)據(jù)結(jié)構(gòu)(列表)第1章

元組與列表類似,也是Python中一種常用數(shù)據(jù)結(jié)構(gòu),不同之處在于元組中的元素不能修改,元組采用圓括號(hào)括起來(lái)進(jìn)行定義。

t1=(1,2,3,4,6)t2=(1,2,'kl')t3=('h1','h2','h3')

Python基本數(shù)據(jù)結(jié)構(gòu)(元組)第1章

集合也是Python中的數(shù)據(jù)結(jié)構(gòu),是一種不重復(fù)元素的序列,用大括號(hào)括起來(lái)進(jìn)行定義。

J1={1,'h',2,3,9}J2={1,'h',2,3,9,2}J3={'KR','LY','SE'}J4={'KR','LY','SE','SE'}Python基本數(shù)據(jù)結(jié)構(gòu)(集合)第1章

字典是一種按鍵、值對(duì)定義的數(shù)據(jù)結(jié)構(gòu),其中鍵必須唯一,用大括號(hào)括起來(lái)進(jìn)行定義。字典中的元素由鍵和值兩部分組成,鍵在前值在后,鍵和值之間用冒號(hào)(:)來(lái)區(qū)分,元素之間用逗號(hào)隔開。鍵可以是數(shù)值、字符,值可以是數(shù)值、字符或者其他Python數(shù)據(jù)結(jié)構(gòu)(比如列表、元組等)。

d1={1:'h',2:[1,2,'k'],3:9}d2={'a':2,'b':'ky'}d3={'q1':[90,100],'k2':'kkk'}

Python基本數(shù)據(jù)結(jié)構(gòu)(字典)第1章

Python基本數(shù)據(jù)結(jié)構(gòu)之間比較第1章

列表和元組,對(duì)每個(gè)元素都進(jìn)行了編號(hào),稱為索引(index),從0開始依次遞增,它們的編號(hào)方式是系統(tǒng)默認(rèn)的,不可以更改。從數(shù)據(jù)的存儲(chǔ)上來(lái)看,它們沒(méi)有本質(zhì)區(qū)別,但是在操作有區(qū)別,比如列表的元素可以修改,執(zhí)行L2[1]=100,則原來(lái)值為2的元素,成功修改為100,而執(zhí)行t2[1]=100,則報(bào)錯(cuò),說(shuō)明元組具有“寫保護(hù)”的功能,列表則沒(méi)有。而字典的編號(hào)方式則更靈活,可以進(jìn)行個(gè)性化設(shè)置,比如可以用整數(shù)來(lái)編號(hào),也可以用字符串來(lái)編號(hào),這個(gè)編號(hào)要求具有唯一性,即“鍵”。集合數(shù)據(jù)結(jié)構(gòu)則沒(méi)有索引,僅保持了元素的唯一性,如果是集合之間運(yùn)算,比如取交集、并集、差集等,建議使用這個(gè)數(shù)據(jù)結(jié)構(gòu),否則不建議使用第1章Python基礎(chǔ)索引、切片求長(zhǎng)度、統(tǒng)計(jì)成員身份確認(rèn)和變量刪除Python相關(guān)公有方法第1章Python公有方法是指Python中大部分的數(shù)據(jù)結(jié)構(gòu)均可以通用的一種數(shù)據(jù)操作方法索引切片求長(zhǎng)度統(tǒng)計(jì)成員身份確認(rèn)變量刪除

索引第1章索引即通過(guò)數(shù)據(jù)結(jié)構(gòu)中的數(shù)據(jù)標(biāo)識(shí)(下標(biāo)索引或鍵)來(lái)訪問(wèn)s3='ILikepython'L1=[1,2,3,4,5,6]t2=(1,2,'kl')d1={1:'h',2:[1,2,'k'],3:9}d3={'q1':[90,100],'k2':'kkk'}print(s3[0],s3[1],L1[0],t2[2],d1[3],d3['k2'])執(zhí)行結(jié)果如下:I1kl9kkk注意下標(biāo)從0開始。字典結(jié)構(gòu)的數(shù)據(jù)標(biāo)識(shí)為鍵。需要說(shuō)明的是,集合類型數(shù)據(jù)結(jié)構(gòu),不支持索引訪問(wèn)。因?yàn)樗鼪](méi)有數(shù)據(jù)標(biāo)識(shí)

切片是指定索引位置,對(duì)數(shù)據(jù)實(shí)現(xiàn)分塊訪問(wèn)或提取的一種數(shù)據(jù)操作方式。

下面簡(jiǎn)單介紹字符串、列表、元組的切片方法。

s2='''helloword!'''L2=[1,2,'HE',3,5]t2=(1,2,'kl')s21=s2[0:]s22=s2[0:4]s23=s2[:]s24=s2[1:6:2]L21=L2[1:3]L22=L2[2:]L23=L2[:]t21=t2[0:2]t22=t2[:]切片執(zhí)行結(jié)果如下:helloword!hellhelloword!el[2,'HE']['HE',3,5][1,2,'HE',3,5](1,2)(1,2,'kl')

第1章

print(s21)print(s22)print(s23)print(s24)print(L21)print(L22)print(L23)print(t21)print(t22)0123456789100123012345678910135122340123401012

字符串的長(zhǎng)度為字符串中所有字符的個(gè)數(shù),其中空格也算一個(gè)字符;列表、元組、集合的長(zhǎng)度,即為元素的個(gè)數(shù);字典的長(zhǎng)度為鍵的個(gè)數(shù),用函數(shù)len()來(lái)實(shí)現(xiàn)

s3='ILikepython'L1=[1,2,3,4,5,6]t2=(1,2,'kl')J2={1,‘h’,2,3,9}

d1={1:'h',2:[1,2,'k'],3:9}k1=len(s3)k2=len(L1)k3=len(t2)k4=len(J2)k5=len(d1)

求長(zhǎng)度第1章

統(tǒng)計(jì)包括求最大值、最小值、求和等,可以是列表、元組、字符串L1=[1,2,3,4,5,6]t1=(1,2,3,4,6)s2='''helloword!'''m1=max(L1)m2=max(t1)m3=min(L1)m4=sum(t1)m5=max(s2)

統(tǒng)計(jì)第1章

成員身份的確認(rèn),用in命令,用來(lái)判斷某個(gè)元素是否屬于指定的數(shù)據(jù)結(jié)構(gòu)變量。

L1=[1,2,3,4,5,6]t1=(1,2,3,4,6)s2='''helloword!'''J2={1,'h',2,3,9,'SE'}z1='I'ins2z2='kj'inL1z3=2int1z4='SE'inJ2

成員身份確認(rèn)第1章

程序運(yùn)行過(guò)程中,可以存在大量的中間變量,這些變量一來(lái)占用空間,二來(lái)影響可讀性,可以使用del命令刪除不必要的中間變量。

a=[1,2,3,4];b='srt'c={1:4,2:7,3:8,4:9}dela,b執(zhí)行該程序代碼,刪除了a、b兩個(gè)變量,而變量c保留。變量刪除第1章

第1章Python基礎(chǔ)列表和元組方法字典方法字符串方法

預(yù)定義幾個(gè)列表L1=[1,2,3,4,5,6]L2=[1,2,'HE',3,5]L3=['KJ','CK','HELLO']L4=[1,4,2,3,8,4,7]列表方法L=list()#產(chǎn)生空列表LL=[]#也可以用[]來(lái)產(chǎn)生空列表第1章

1.創(chuàng)建空列表:list()

2.添加元素:append()

L1=[1,2,3,4,5,6]L2=[1,2,'HE',3,5]L=[]L1.append('H')#在L1列表后面增加元素‘H’.print(L1)fortinL2:#利用循環(huán),將L2中的元素,依次順序添加到前面新建的空列表L中L.append(t)print(L)

執(zhí)行結(jié)果如下:[1,2,3,4,5,6,'H'][1,2,'HE',3,5]列表方法第1章

3.擴(kuò)展列表:extend()

L2=[1,2,'HE',3,5]L1=[1,2,3,4,5,6,'H']L1.extend(L2)#在前面的L1基礎(chǔ)上,添加整個(gè)L2至其后面print(L1)執(zhí)行結(jié)果如下:[1,2,3,4,5,6,'H',1,2,'HE',3,5]4.元素計(jì)數(shù):count()print('元素2出現(xiàn)的次數(shù)為:',L1.count(2))執(zhí)行結(jié)果如下:元素2出現(xiàn)的次數(shù)為:2列表方法第1章

5.返回下標(biāo):index()

L1=[1,2,3,4,5,6,'H',1,2,'HE',3,5]print('H的索引下標(biāo)為:',L1.index('H'))執(zhí)行結(jié)果如下:H的索引下標(biāo)為:66.刪除元素:remove()

L1.remove('HE')#刪除HE元素print(L1)執(zhí)行結(jié)果如下:[1,2,3,4,5,6,'H',1,2,3,5]列表方法第1章

7.元素排序:sort()

L4=[1,4,2,3,8,4,7]L4.sort()print(L4)執(zhí)行結(jié)果如下:[1,2,3,4,4,7,8]注意,如果執(zhí)行L5=L4.sort(),則L5為空的。實(shí)際上經(jīng)過(guò)排序后L4的元素位置順序已經(jīng)改變了列表方法第1章

預(yù)定義兩個(gè)元組T1=(1,2,2,4,5)T2=('H2',3,'KL')創(chuàng)建空元組:tuple()

t1=tuple()#產(chǎn)生空元組

t=()#產(chǎn)生空元組元組方法第1章

T1=(1,2,2,4,5)T2=('H2',3,'KL')2.元素計(jì)數(shù):count()print('元素2出現(xiàn)的次數(shù)為:',T1.count(2))執(zhí)行結(jié)果如下:

元素2出現(xiàn)的次數(shù)為:

23.返回下標(biāo):index()

print('KL的下標(biāo)索引為:',T2.index('KL'))執(zhí)行結(jié)果如下:KL的下標(biāo)索引為:2元組方法第1章4.元組連接T3=T1+T2print(T3)執(zhí)行結(jié)果如下:(1,2,2,4,5,'H2',3,'KL')

字符串作為基本的數(shù)據(jù)類型,也可以看作一種特殊的數(shù)據(jù)結(jié)構(gòu)字符從0開始進(jìn)行索引編號(hào),包括空格特特殊字符1.創(chuàng)建空字符串:str()通過(guò)str函數(shù),可以創(chuàng)建空的字符串。示例代碼如下:S=str()#或S=’’產(chǎn)生空字符串

字符串方法第1章

2.查找子串:find()用find函數(shù)查找子串出現(xiàn)的開始索引位置,如果沒(méi)有找到則返回-1。st='helloword!‘z1=st.find('he',0,len(st))#返回包含子串的開始索引位置,否則-1z2=st.find('he',1,len(st))print(z1,z2)

執(zhí)行結(jié)果為:

0-1其中find函數(shù)第一個(gè)參數(shù)為需要查找的子串,第二個(gè)參數(shù)是待查字符串指定的開始位置,第三個(gè)參數(shù)為指定待查字符串的長(zhǎng)度。字符串方法第1章

3.替換子串:replace()st='helloword!‘stt=st.replace('or','kl')#原來(lái)的st不變print(stt)print(st)執(zhí)行結(jié)果如下:hellowkld!helloword!4.字符串連接st1='joh'st2=st1+''+stprint(st2)執(zhí)行結(jié)果如下:johhelloword!字符串方法第1章

5.字符串比較

通過(guò)等號(hào)或不等號(hào)“==”、“!=”來(lái)進(jìn)行判斷。str1='jo'str2='qb'str3='qb's1=str1!=str2s2=str2==str3print(s1,s2)執(zhí)行結(jié)果如下:TrueTrue字符串方法第1章

字典方法1.創(chuàng)建字典:dict()通過(guò)dict函數(shù),可以創(chuàng)建空字典,也可以將嵌套列表轉(zhuǎn)換為典。d=dict()#產(chǎn)生空字典D={}#產(chǎn)生空字典list1=[('a','ok'),('1','lk'),('001','lk')]#嵌套元素為元組list2=[['a','ok'],['b','lk'],[3,'lk']]#嵌套元素為列表d1=dict(list1)d2=dict(list2)print('d=:',d)print('D=:',D)print('d1=:',d1)print('d2=:',d2)第1章

執(zhí)行結(jié)果如下:d={}D={}d1={'a':'ok','1':'lk','001':'lk'}d2={'a':'ok','b':'lk',3:'lk'}字典方法第1章

2.獲取字典值:get()print(d2.get('b'))輸出結(jié)果如下:lk3.字典賦值:setdefault()通過(guò)setdefault方法,可以對(duì)預(yù)定義的空字典進(jìn)行賦值。d.setdefault('a',0)D.setdefault('b',[1,2,3,4,5])print(d)print(D)執(zhí)行結(jié)果如下:{'a':0}{'b':[1,2,3,4,5]}預(yù)定義d={}D={}d2={'a':'ok','b':'lk',3:'lk'}第2章

科學(xué)計(jì)算包Numpy數(shù)組創(chuàng)建、數(shù)組尺寸與重排數(shù)組運(yùn)算與數(shù)學(xué)函數(shù)數(shù)組切片、連接、存取、展平、排序與搜索Numpy簡(jiǎn)介第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,即簡(jiǎn)稱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)步長(zhǎng)為1,末值為9的一維數(shù)組z4=np.arange(2,10)#創(chuàng)建默認(rèn)初始值為2,默認(rèn)步長(zhǎng)為1,末值為9的一維數(shù)組z5=np.arange(2,10,2)#創(chuàng)建默認(rèn)初始值為2,步長(zhǎng)為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兩個(gè)數(shù)組元素之間相減,結(jié)果賦給變量C1C2=A+B#A、B兩個(gè)數(shù)組元素之間相加,結(jié)果賦給變量C2C3=A*B#A、B兩個(gè)數(shù)組元素之間相乘,結(jié)果賦給變量C3C4=A/B#A、B兩個(gè)數(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])#取絕對(duì)值E3=np.cos([1,2,3])#取cos值E4=np.sin(D)#取sin值E5=np.exp(D)#取指數(shù)函數(shù)值第2章常用組切片方法假設(shè)D為待訪問(wèn)或切片的數(shù)據(jù)變量,則訪問(wèn)或者切片的數(shù)據(jù)=D[①,②]。其中①為對(duì)D的行下標(biāo)控制,②為對(duì)D的列下標(biāo)控制。為了更靈活地操作數(shù)據(jù),取所有的行或者列,可以用“:”來(lái)代替實(shí)現(xiàn)。同時(shí),行控制還可以通過(guò)邏輯列表來(lái)實(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]#訪問(wèn)D中行為1,列為2的數(shù)據(jù),注意下標(biāo)是從0開始的。D1=D[:,[1,3]]#訪問(wèn)D中第1、3列數(shù)據(jù)D2=D[[1,3],:]#訪問(wèn)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ù)組切片通過(guò)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ù)組,通過(guò)ravel()函數(shù)即可實(shí)現(xiàn)。importnumpyasnparr=np.arange(12).reshape(3,4)arr1=arr.ravel()第2章

數(shù)組排序

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

數(shù)組搜索

通過(guò)argmax和argmin函數(shù),可以返回待搜索數(shù)組最大值和最小值元素的索引值,如果存在多個(gè)最大值或最小值,則返回第一次出現(xiàn)的索引。對(duì)于二維數(shù)組而已,可以通過(guò)設(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ì)算包Numpy矩陣創(chuàng)建、矩陣基本屬性矩陣基本運(yùn)算線性代數(shù)運(yùn)算

矩陣創(chuàng)建Numpy的matrix是繼承自NumPy的二維數(shù)組對(duì)象,不僅擁有二維數(shù)組的屬性、方法與函數(shù),還擁有諸多特有的屬性與方法。同時(shí),Numpy中的matrix和線性代數(shù)中的矩陣概念幾乎完全相同,同樣含有轉(zhuǎn)置矩陣,共軛矩陣,逆矩陣等概念。利用mat、matrix創(chuàng)建Numpy矩陣Numpy中可使用mat、matrix或bmat函數(shù)來(lái)創(chuàng)建矩陣importnumpyasnpmat1=np.mat("123;456;789")mat2=np.matrix([[1,2,3],[4,5,6],[7,8,9]])

第2章

矩陣創(chuàng)建

利用bmat創(chuàng)建矩陣在矩陣的日常使用過(guò)程中,將小矩陣組合成大矩陣是一種頻率極高的操作。在Numpy中可以使用bmat分塊矩陣函數(shù)實(shí)現(xiàn)。importnumpyasnparr1=np.eye(3)arr2=3*arr1mat=np.bmat(“arr1arr2;arr1arr2”)

第2章

矩陣基本屬性(轉(zhuǎn)置、共軛、逆矩陣)

importnumpyasnpmat=np.matrix(np.arange(4).reshape(2,2))mT=mat.TmH=mat.HmI=mat.I矩陣基本屬性第2章

importnumpyasnpmat1=np.mat("123;456;789")mat2=mat1*3mat3=mat1+mat2mat4=mat1-mat2mat5=mat1*mat2mat6=np.multiply(mat1,mat2)#點(diǎn)乘矩陣基本運(yùn)算第2章

線性代數(shù)運(yùn)算線性代數(shù)是數(shù)學(xué)的一個(gè)重要分支。Numpy包含numpy.linalg模塊,提供線性代數(shù)所需的功能,如計(jì)算逆矩陣、求解線性方程組、求特征值、奇異值分解以及求解行列式等。numpy.linalg模塊中的一些常用函數(shù)表函數(shù)名稱說(shuō)明dot矩陣相乘inv求逆矩陣solve求解線性方程組

eig求特征值和特征向量eigvals求特征值svd計(jì)算奇異值分解det求行列式線性代數(shù)運(yùn)算第2章

計(jì)算逆矩陣使用numpy.linalg模塊中的inv函數(shù)可以計(jì)算逆矩陣importnumpyasnpmat=np.mat('111;123;136')inverse=np.linalg.inv(mat)A=np.dot(mat,inverse)線性代數(shù)運(yùn)算第2章

求解線性方程組numpy.linalg模塊中的solve函數(shù)可以求解線性方程組importnumpyasnpA=np.mat("1,-1,1;2,1,0;2,1,-1")b=np.array([4,3,-1])x=np.linalg.solve(A,b)#線性方程組Ax=b的解第2章

線性代數(shù)運(yùn)算求解特征值與特征向量numpy.linalg模塊中的eigvals函數(shù)可以計(jì)算矩陣的特征值,eig函數(shù)可以返回一個(gè)包含特征值和對(duì)應(yīng)的特征向量的元組:importnumpyasnpA=np.matrix([[1,0,2],[0,3,0],[2,0,1]])#A_value=np.linalg.eigvals(A)A_value,A_vector=np.linalg.eig(A)第2章

線性代數(shù)運(yùn)算奇異值分解利用numpy.linalg模塊中的svd函數(shù)可以對(duì)矩陣進(jìn)行奇異值分解,返回U、Sigma、V這3個(gè)矩陣,其中,U和V是正交矩陣,Sigma為一維。importnumpyasnpA=np.mat("4.0,11.0,14.0;8.0,7.0,-2.0")U,Sigma,V=np.linalg.svd(A,full_matrices=False)第2章

線性代數(shù)運(yùn)算計(jì)算矩陣行列式的值矩陣行列式是指矩陣的全部元素構(gòu)成的行列式,但構(gòu)成行列式的矩陣為方陣時(shí),行列式存在值。numpy.linalg模塊中的det函數(shù)可以計(jì)算矩陣行列式的值。importnumpyasnpA=np.mat("3,4;5,6")A_value=np.linalg.det(A)第2章

線性代數(shù)運(yùn)算第3章

數(shù)據(jù)處理包Pandaspandas簡(jiǎn)介、序列創(chuàng)建與訪問(wèn)序列屬性與方法序列切片與聚合運(yùn)算Pandas簡(jiǎn)介第3章

Pandas是基于Numpy開發(fā)的一個(gè)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ù)框,序列儲(chǔ)存一維數(shù)據(jù),而數(shù)據(jù)框則可以存儲(chǔ)更復(fù)雜的多維數(shù)據(jù)。這里的數(shù)據(jù)框主要用來(lái)存儲(chǔ)二維數(shù)據(jù)(類似于數(shù)據(jù)表)。通過(guò)importpandasaspd命令導(dǎo)入該包,其中pd為其簡(jiǎn)寫。序列創(chuàng)建及訪問(wèn)第3章

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

#導(dǎo)入Pandas庫(kù)importnumpyasnp

#導(dǎo)入Numpy庫(kù)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)建個(gè)性化序列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)序列#通過(guò)字典創(chuàng)建序列mydict={'red':2000,'bule':1000,'yellow':500}

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

#指定字典創(chuàng)建序列序列創(chuàng)建及訪問(wèn)第3章序列的訪問(wèn)通過(guò)index索引訪問(wèn)對(duì)應(yīng)的元素值。print(s4[3])print(s2['c'])執(zhí)行結(jié)果如下:7.12.3序列屬性第3章序列有兩個(gè)屬性,分別為值(values)和索引(index)。通過(guò)序列中的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é)果,可通過(guò)list()函數(shù)轉(zhuǎn)化為列表,如in2=list(in1)執(zhí)行結(jié)果如下:[1-22.3'hq']RangeIndex(start=0,stop=4,step=1)序列方法第3章unique()通過(guò)序列中的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']序列方法第3章isin()通過(guò)isin()方法,判斷元素值的存在性,如果存在則返回True,否則為False。比如判斷‘he’這個(gè)元素是否存在前面定義的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()第3章value_counts()通過(guò)序列中的value_counts()方法,可以統(tǒng)計(jì)獲得序列元素值出現(xiàn)的次數(shù)。比如統(tǒng)計(jì)s5序列中每個(gè)元素值出現(xiàn)的次數(shù)。s53=s5.value_counts()其中索引(index)為原序列元素的值,其值部分則為出現(xiàn)的次數(shù)。序列方法——空值處理方法第3章空值處理方法: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一樣。序列切片第3章序列元素訪問(wèn)是通過(guò)索引完成的,切片即連續(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']]#取索引號(hào)為字符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)算第3章序列的聚合運(yùn)算,主要包括對(duì)序列中的元素求和、平均值、最大值、最小值、方差、標(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()第3章

數(shù)據(jù)處理包Pandas數(shù)據(jù)框(DataFrame)簡(jiǎn)介、創(chuàng)建數(shù)據(jù)框?qū)傩耘c方法數(shù)據(jù)框訪問(wèn)與切片數(shù)據(jù)框(DataFram)簡(jiǎn)介第3章

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

基于字典,利用Pandas庫(kù)中的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ū)ο缶哂腥齻€(gè)屬性,分別為列名、索引和值。以前面定義的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ù)框方法第3章dropna()通過(guò)dorpna()方法,可以去掉數(shù)據(jù)集中的空值(nan值),需要注意的是原來(lái)數(shù)據(jù)集不發(fā)生改變,新數(shù)據(jù)集需要重新定義。df1=df.dropna()數(shù)據(jù)框方法第3章

fillna()通過(guò)fillna()方法,可以對(duì)數(shù)據(jù)框中的空值(nan值)進(jìn)行填充。默認(rèn)情況下所有空值填充同一個(gè)元素值(數(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ù)框方法第3章

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ù)框方法第3章sort_index()有時(shí)候需要按索引進(jìn)行排序,這時(shí)候可以使用sort_index()方法。Df2=Df1.sort_index(ascending=False)#默認(rèn)按升序,這里設(shè)置為降序數(shù)據(jù)框方法第3章head()通過(guò)head(N)方法,可以取數(shù)據(jù)集中的前N行,比如取前面定義的數(shù)據(jù)框Df2中的前4行。H4=Df2.head(4);數(shù)據(jù)框方法第3章

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

join()利用join()方法,可以實(shí)現(xiàn)兩個(gè)數(shù)據(jù)框之間的水平連接Df3=pd.DataFrame({'d':[1,2,3,4,5]})Df4=Df.join(Df3)數(shù)據(jù)框方法第3章to_excel()通過(guò)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ù)框方法第3章

描述統(tǒng)計(jì)方法可以對(duì)數(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ù)框訪問(wèn)與切片第3章

利用數(shù)據(jù)框中的iloc屬性進(jìn)行切片假設(shè)DF為待訪問(wèn)或切片的數(shù)據(jù)框,則切片形式為:DF.iloc[①,②]。其中①為行下標(biāo)控制,②為列下標(biāo)控制,可通過(guò)數(shù)值列表來(lái)實(shí)現(xiàn),取所有的行或者列用“:”。同時(shí),行控制還可以通過(guò)邏輯列表來(lái)實(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]]訪問(wèn)當(dāng)個(gè)值,比如:df2.iloc[2,1]第3章

數(shù)據(jù)處理包PandasExcel數(shù)據(jù)文件讀取TXT數(shù)據(jù)文件讀取CSV數(shù)據(jù)文件讀取Excel文件讀取第3章

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

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

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

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

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

#分隔為逗號(hào),設(shè)置無(wú)表頭CSV文件讀取第3章CSV文件也是一類廣泛使用的外部數(shù)據(jù)文件,對(duì)于一般的CSV數(shù)據(jù)文件可以通過(guò)read_csv()函數(shù)讀取。importpandasaspdA=pd.read_csv('data.csv',sep=',');#逗號(hào)分隔CSV文件讀取第3章CSV文件可以存儲(chǔ)大規(guī)模的數(shù)據(jù)文件,比如單個(gè)數(shù)據(jù)文件大小可達(dá)數(shù)GB、數(shù)十GB,這時(shí)候可以采用分塊的方式進(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文件讀取第3章對(duì)大規(guī)模的CSV文件進(jìn)行數(shù)據(jù)探索,可以讀取前N行進(jìn)行分析,比如前1000行importpandasaspdA=pd.read_csv('data.csv',sep=',',nrows=1000)小結(jié):通過(guò)pandas包中的函數(shù),讀取Excel、TXT和CSV文件,在Python中的數(shù)據(jù)結(jié)構(gòu)均為DataFrame數(shù)據(jù)框,進(jìn)而我們可以利用數(shù)據(jù)框中的方法進(jìn)行數(shù)據(jù)處理和分析了第3章

數(shù)據(jù)處理包Pandas時(shí)間處理函數(shù)數(shù)據(jù)框合并函數(shù)數(shù)據(jù)框關(guān)聯(lián)函數(shù)時(shí)間處理函數(shù)第3章

to_datetime()函數(shù)主要是將字符串型的日期轉(zhuǎn)換為時(shí)間戳的格式。方便后續(xù)的數(shù)據(jù)處理,比如提取其所屬年份、月份、周數(shù)、日期、小時(shí)、分鐘、秒、星期幾等簡(jiǎn)單調(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í)間處理函數(shù)第3章

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

對(duì)兩個(gè)數(shù)據(jù)框進(jìn)行水平合并、垂直合并是數(shù)據(jù)處理與整合中常見的操作,這里介紹concat()函數(shù),可以通過(guò)設(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ù)第3章

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

merge()函數(shù)類似于數(shù)據(jù)庫(kù)中的SQL關(guān)聯(lián)操作語(yǔ)句,指定關(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ù)第3章

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

數(shù)據(jù)處理包Pandas滾動(dòng)計(jì)算、時(shí)間元素提取映射與離散化分組統(tǒng)計(jì)滾動(dòng)計(jì)算第3章

滾動(dòng)計(jì)算,也稱為移動(dòng)計(jì)算,給定一個(gè)數(shù)據(jù)序列,按指定的前移長(zhǎng)度進(jìn)行統(tǒng)計(jì)計(jì)算,比如求和、平均值、最大值、最小值、中位數(shù)、方差、標(biāo)準(zhǔn)差等。這里前移長(zhǎng)度的計(jì)算,包含自身,如果待計(jì)算的數(shù)據(jù)序列小于指定的前移長(zhǎng)度,則無(wú)法計(jì)算,用空值“nan”來(lái)表示。簡(jiǎn)單調(diào)用形式為:S.rolling(N).統(tǒng)計(jì)函數(shù),其中S表示序列,N表示指定的前移長(zhǎng)度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()時(shí)間元素提取第3章

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

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

data['year']=data['刷卡時(shí)間'].dt.yeardata['month']=data['刷卡時(shí)間'].dt.monthdata['day']=data['刷卡時(shí)間'].dt.daydata['hour']=data['刷卡時(shí)間'].dt.hourdata['minute']=data['刷卡時(shí)間'].dt.minutedata['second']=data['刷卡時(shí)間'].dt.seconddata['week']=data['刷卡時(shí)間'].dt.isocalendar().weekdata['weekday']=data['刷卡時(shí)間'].dt.weekday將字符串類型的時(shí)間序列轉(zhuǎn)化為時(shí)間戳類型。時(shí)間元素提取形式式為:“時(shí)間戳類型序列.dt.時(shí)間元素”,返回的結(jié)果依然是序列映射第3章

序列中的映射方法,簡(jiǎn)單的調(diào)用形式為:序列.map(映射參數(shù)),其中映射參數(shù)一般為字典類型,格式如:{原值1:映射值1,原值2:映射值2,...}。dict_map={'進(jìn)站':1,'出站':0}data['刷卡類型']=data['刷卡類型'].map(dict_map)離散化第3章

data1=data.iloc[data['刷卡類型'].values==1,[0,5,6]]#取刷卡類型、hour、minute列data1_hour=data1.groupby('hour')['刷卡類型'].sum()#按hour分組,對(duì)刷卡類型列求和離散化第3章

bins=[0,100,500,1000]dt1=pd.cut(data1_hour,bins)dt2=pd.cut(data1_hour,bins,labels=[0,1,2])dt_cut=pd.DataFrame({'c1':data1_hour.values,'c2':dt1.values,'c3':dt2.values})dt_cut.index=data1_hour.index數(shù)據(jù)分割,即離散化,可以使用pandas庫(kù)中的cut函數(shù)來(lái)實(shí)現(xiàn),其簡(jiǎn)單調(diào)用形式為:pd.cut(S,bins)或pd.cut(S,bins,labels),其中S為數(shù)據(jù)序列,bins為分割區(qū)間列表,labels為分割區(qū)間的類別表示列表分組統(tǒng)計(jì)第3章

姓名日期消費(fèi)類型消費(fèi)額張明2018-01旅游200張明2018-01餐飲300張明2018-01服裝300張明2018-02旅游100張明2018-02餐飲250張明2018-02服裝250李紅2018-01旅游50李紅2018-01餐飲200李紅2018-01服裝400李紅2018-02旅游100李紅2018-02餐飲250李紅2018-02服裝500王周2018-01旅游500王周2018-01餐飲200王周2018-01服裝100王周2018-02旅游650王周2018-02餐飲180王周2018-02服裝80按“姓名”字段,可以分為3組;如果按“姓名”和“日期”字段,可以分為6組,比如第一組為“張明、2018-01”,第二組為“張明、2018-02”。以“姓名、日期”為分組字段,“消費(fèi)額”為統(tǒng)計(jì)字段,即可確定統(tǒng)計(jì)范圍,例如對(duì)第一組的“銷售額”作求和統(tǒng)計(jì),結(jié)果為:200+300+300=800;第二組求和統(tǒng)計(jì)結(jié)果為:100+250+250=600分組統(tǒng)計(jì)計(jì)算,可以通過(guò)數(shù)據(jù)框的groupby()方法和相關(guān)統(tǒng)計(jì)函數(shù)組合完成,調(diào)用形式為:df.groupby([分組字段])[統(tǒng)計(jì)字段].統(tǒng)計(jì)函數(shù),其中統(tǒng)計(jì)函數(shù)如sum()、mean()、median()、max()、min()、var()、std()等分組統(tǒng)計(jì)第3章

importpandasaspdB=pd.read_excel('表3-1用戶消費(fèi)數(shù)據(jù).xlsx')B1=B.groupby(['姓名','日期'])['消費(fèi)額'].sum()分組統(tǒng)計(jì)第3章

分組統(tǒng)計(jì)后的結(jié)果數(shù)據(jù)長(zhǎng)度與分組個(gè)數(shù)相同,與原始數(shù)據(jù)的長(zhǎng)度不相同,對(duì)某些計(jì)算任務(wù)不太友好,比如要計(jì)算張明,2018-01,在旅游、餐飲和服裝上的消費(fèi)占比。事實(shí)上,分組統(tǒng)計(jì)計(jì)算,有另外一種形式,其統(tǒng)計(jì)結(jié)果與原始數(shù)據(jù)規(guī)模相同,其簡(jiǎn)單調(diào)用形式為:df.groupby([分組字段])[統(tǒng)計(jì)字段].transform(‘統(tǒng)計(jì)函數(shù)’)。B['總消費(fèi)額']=B.groupby(['姓名','日期'])['消費(fèi)額'].transform('sum')B['消費(fèi)占比']=B['消費(fèi)額'].values/B['總消費(fèi)額'].values第1章Python基礎(chǔ)條件語(yǔ)句循環(huán)語(yǔ)句函數(shù)條件語(yǔ)句條件判斷語(yǔ)句,是指滿足某些條件,才能做某件事情,而不滿足條件時(shí)是不允許做的。Python條件語(yǔ)句主要有三種形式:if…if…else…if…elif…else…第1章

條件語(yǔ)句第1章

if…語(yǔ)句if條件:

執(zhí)行代碼塊注意條件后面的冒號(hào)(英文格式輸入),同時(shí)執(zhí)行代碼塊均需要縮

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論