小編寫(xiě)這篇文章的主要目的,主要是來(lái)給大家解答下關(guān)于python數(shù)學(xué)建模的一些相關(guān)的介紹,涉及到內(nèi)容涵蓋Numpy的一些相關(guān)的應(yīng)用具體的一些介紹。另外,還會(huì)涉及到相關(guān)的Pandas學(xué)習(xí)知識(shí),具體內(nèi)容下面給大家詳細(xì)解答下。
1 Numpy介紹與應(yīng)用
1-1Numpy是什么
NumPy是一個(gè)運(yùn)行速度非常快的數(shù)學(xué)庫(kù),一個(gè)開(kāi)源的的python科學(xué)計(jì)算庫(kù),主要用于數(shù)組、矩陣計(jì)算,包含:
一個(gè)強(qiáng)大的N維數(shù)組對(duì)象ndarray廣播功能函數(shù)整合C/C++/Fortran代碼的工具線性代數(shù)、傅里葉變換、隨機(jī)數(shù)生成等功能1-2為什么選擇Numpy
對(duì)于同樣的數(shù)值計(jì)算任務(wù),使用Numpy比直接編寫(xiě)原生python代碼的優(yōu)點(diǎn)有:
代碼更簡(jiǎn)潔:
Numpy直接以數(shù)組、矩陣為粒度計(jì)算并且支撐大量的數(shù)學(xué)函數(shù),而Python需要用for循環(huán)從底層實(shí)現(xiàn)
性能更高效:
Numpy的數(shù)組存儲(chǔ)效率和輸入輸出計(jì)算性能,比Python使用List或者嵌套List好很多
注意:Numpy的數(shù)據(jù)存儲(chǔ)和Python原生的List是不一樣的
加上Numpy的大部分代碼都是C語(yǔ)言實(shí)現(xiàn)的,這是Numpy比純Python代碼高效的原因
相關(guān)學(xué)習(xí)、代碼如下:須提前安裝好Numpy、pandas和matplotlib
Numpy終端安裝命令:pip install numpy
Pandas終端安裝命令:pip install pandas
Matplotlib終端安裝過(guò)命令:pip install matplotlib
#Software:PyCharm #Numpy是Python各種數(shù)據(jù)科學(xué)類(lèi)庫(kù)的基礎(chǔ)庫(kù) #比如:Pandas,Scipy,Scikit_Learn等 #Numpy應(yīng)用: ''' NumPy通常與SciPy(Scientific Python)和Matplotlib(繪圖庫(kù))一起使用,這種組合廣泛用于替代MatLab,是一個(gè)強(qiáng)大的科學(xué)計(jì)算環(huán)境,有助于我們通過(guò)Python學(xué)習(xí)數(shù)據(jù)科學(xué)或者機(jī)器學(xué)習(xí)。 SciPy是一個(gè)開(kāi)源的Python算法庫(kù)和數(shù)學(xué)工具包。 SciPy包含的模塊有最優(yōu)化、線性代數(shù)、積分、插值、特殊函數(shù)、快速傅里葉變換、信號(hào)處理和圖像處理、常微分方程求解和其他科學(xué)與工程中常用的計(jì)算。 Matplotlib是Python編程語(yǔ)言及其數(shù)值數(shù)學(xué)擴(kuò)展包NumPy的可視化操作界面。它為利用通用的圖形用戶界面工具包,如Tkinter,wxPython,Qt或GTK+向應(yīng)用程序嵌入式繪圖提供了應(yīng)用程序接口(API)。 ''' #安裝NumPy最簡(jiǎn)單的方法就是使用pip工具: #pip3 install--user numpy scipy matplotlib #--user選項(xiàng)可以設(shè)置只安裝在當(dāng)前的用戶下,而不是寫(xiě)入到系統(tǒng)目錄。 #默認(rèn)情況使用國(guó)外線路,國(guó)外太慢,我們使用清華的鏡像就可以: #pip install numpy scipy matplotlib-i.csv https://pypi.tuna.tsinghua.edu.cn/simple #這種pip安裝是一種最簡(jiǎn)單、最輕量級(jí)的方法,當(dāng)然,這里的前提是有Python包管理器 #如若不行,可以安裝Anaconda【目前應(yīng)用較廣泛】,這是一個(gè)開(kāi)源的Python發(fā)行版 #安裝Anaconda地址:https://www.anaconda.com/ #安裝驗(yàn)證 #測(cè)試是否安裝成功 from numpy import*#導(dǎo)入numpy庫(kù) print(eye(4))#生成對(duì)角矩陣 #查看版本: import numpy as np print(np.__version__) #實(shí)現(xiàn)2個(gè)數(shù)組的加法: #1-原生Python實(shí)現(xiàn) def Py_sum(n): a=[i**2 for i in range(n)] b=[i**3 for i in range(n)] #創(chuàng)建一個(gè)空列表,便于后續(xù)存儲(chǔ) ab_sum=[] for i in range(n): #將a、b中對(duì)應(yīng)的元素相加 ab_sum.append(a<i>+b<i>) return ab_sum #調(diào)用實(shí)現(xiàn)函數(shù) print(Py_sum(10)) #2-Numpy實(shí)現(xiàn): def np_sum(n): c=np.arange(n)**2 d=np.arange(n)**3 return c+d print(np_sum(10)) #易看出使用Numpy代碼簡(jiǎn)潔且運(yùn)行效率快 #測(cè)試1000,10W,以及100W的運(yùn)行時(shí)間 #做繪圖對(duì)比: import pandas as pd #輸入數(shù)據(jù) py_times=[1.72*1000,202*1000,1.92*1000] np_times=[18.8,14.9*1000,17.8*10000] #創(chuàng)建Pandas的DataFrame類(lèi)型數(shù)據(jù) ch_lxw=pd.DataFrame({ 'py_times':py_times, 'np_times':np_times#可加逗號(hào) }) print(ch_lxw) import matplotlib.pyplot as plt #線性圖 print(ch_lxw.plot()) #柱狀圖 print(ch_lxw.plot.bar()) #簡(jiǎn)易箱線圖 print(ch_lxw.boxplot) plt.show()
線性圖運(yùn)行效果如下:
柱狀圖運(yùn)行效果如下:
2 NumPy Ndarray對(duì)象
NumPy最重要的一個(gè)特點(diǎn)是其N(xiāo)維數(shù)組對(duì)象ndarray,它是一系列同類(lèi)型數(shù)據(jù)的集合,以0下標(biāo)為開(kāi)始進(jìn)行集合中元素的索引。
ndarray對(duì)象是用于存放同類(lèi)型元素的多維數(shù)組,其中的每個(gè)元素在內(nèi)存中都有相同存儲(chǔ)大小的區(qū)域。ndarray對(duì)象采用了數(shù)組的索引機(jī)制,將數(shù)組中的每個(gè)元素映射到內(nèi)存塊上,并且按照一定的布局對(duì)內(nèi)存塊進(jìn)行排序(行或列)
ndarray內(nèi)部由以下內(nèi)容組成:
一個(gè)指向數(shù)據(jù)(內(nèi)存或內(nèi)存映射文件中的一塊數(shù)據(jù))的指針;
數(shù)據(jù)類(lèi)型或dtype,描述在數(shù)組中的固定大小值的格子;
一個(gè)表示數(shù)組形狀(shape)的元組,表示各維度大小的元組;
一個(gè)跨度元組(stride),其中的整數(shù)指的是為了前進(jìn)到當(dāng)前維度下一個(gè)元素需要"跨過(guò)"的字節(jié)數(shù)。
相關(guān)學(xué)習(xí)、代碼如下:
''' 創(chuàng)建一個(gè)ndarray只需調(diào)用NumPy的array函數(shù)即可: numpy.array(object,dtype=None,copy=True,order=None,subok=False,ndmin=0) 參數(shù)說(shuō)明: 名稱描述 object表示數(shù)組或嵌套的數(shù)列 dtype表示數(shù)組元素的數(shù)據(jù)類(lèi)型,可選 copy表示對(duì)象是否需要復(fù)制,可選 order創(chuàng)建數(shù)組的樣式,C為行方向,F(xiàn)為列方向,A為任意方向(默認(rèn)) subok默認(rèn)返回一個(gè)與基類(lèi)類(lèi)型一致的數(shù)組 ndmin指定生成數(shù)組的最小維度 ''' #ndarray對(duì)象由計(jì)算機(jī)內(nèi)存的連續(xù)一維部分組成,并結(jié)合索引模式,將每個(gè)元素映射到內(nèi)存塊中的一個(gè)位置。 #內(nèi)存塊以行順序(C樣式)或列順序(FORTRAN或MatLab風(fēng)格,即前述的F樣式)來(lái)保存元素 #學(xué)好Numpy,便于后期對(duì)Pandas的數(shù)據(jù)處理 #1:一維 import numpy as np lxw=np.array([5,2,0]) print(lxw) print() #2:多于一個(gè)維度 import numpy as np lxw2=np.array([[1,5,9],[5,2,0]]) print(lxw2) print() #3:最小維度 import numpy as np lxw3=np.array([5,2,0,1,3,1,4],ndmin=2)#ndmin:指定生成數(shù)組的最小維度 print(lxw3) print() #4:dtype參數(shù) import numpy as np lxw4=np.array([3,3,4,4],dtype=complex)#dtype:數(shù)組元素的數(shù)據(jù)類(lèi)型[complex復(fù)數(shù)】 print(lxw4)
3 Numpy數(shù)據(jù)類(lèi)型
numpy支持的數(shù)據(jù)類(lèi)型比Python內(nèi)置的類(lèi)型要多很多,基本上可以和C語(yǔ)言的數(shù)據(jù)類(lèi)型對(duì)應(yīng)上,其中部分類(lèi)型對(duì)應(yīng)為Python內(nèi)置的類(lèi)型.
常用NumPy基本類(lèi)型:
名稱描述
bool_:【布爾型數(shù)據(jù)類(lèi)型(True或者False)】
int_:【默認(rèn)的整數(shù)類(lèi)型(類(lèi)似于C語(yǔ)言中的long,int32或int64)】
intc:【與C的int類(lèi)型一樣,一般是int32或int 64】
intp:【用于索引的整數(shù)類(lèi)型(類(lèi)似于C的ssize_t,一般情況下仍然是int32或int64)】
int8:【字節(jié)(-128 to 127)】
int16:【整數(shù)(-32768 to 32767)】
int32:【整數(shù)(-2147483648 to 2147483647)】
int64:【整數(shù)(-9223372036854775808 to 9223372036854775807)】
uint8:【無(wú)符號(hào)整數(shù)(0 to 255)】
uint16:【無(wú)符號(hào)整數(shù)(0 to 65535)】
uint32:【無(wú)符號(hào)整數(shù)(0 to 4294967295)】
uint64:【無(wú)符號(hào)整數(shù)(0 to 18446744073709551615)】
float_ float64:【類(lèi)型的簡(jiǎn)寫(xiě)】
float16:【半精度浮點(diǎn)數(shù),包括:1個(gè)符號(hào)位,5個(gè)指數(shù)位,10個(gè)尾數(shù)位】
float32:【單精度浮點(diǎn)數(shù),包括:1個(gè)符號(hào)位,8個(gè)指數(shù)位,23個(gè)尾數(shù)位】
float64:【雙精度浮點(diǎn)數(shù),包括:1個(gè)符號(hào)位,11個(gè)指數(shù)位,52個(gè)尾數(shù)位】
complex_ complex128:【類(lèi)型的簡(jiǎn)寫(xiě),即128位復(fù)數(shù)】
complex64:【復(fù)數(shù),表示雙32位浮點(diǎn)數(shù)(實(shí)數(shù)部分和虛數(shù)部分)】
complex128:【復(fù)數(shù),表示雙64位浮點(diǎn)數(shù)(實(shí)數(shù)部分和虛數(shù)部分)】
相關(guān)學(xué)習(xí)、代碼如下:
''' #numpy的數(shù)值類(lèi)型實(shí)際上是dtype對(duì)象的實(shí)例,并對(duì)應(yīng)唯一的字符,包括np.bool_,np.int32,np.float32,等等。 ''' #Numpy類(lèi)型對(duì)象: ''' dtype對(duì)象是使用以下語(yǔ)法構(gòu)造的: numpy.dtype(object,align,copy) object-要轉(zhuǎn)換為的數(shù)據(jù)類(lèi)型對(duì)象 align-如果為true,填充字段使其類(lèi)似C的結(jié)構(gòu)體。 copy-復(fù)制dtype對(duì)象,如果為false,則是對(duì)內(nèi)置數(shù)據(jù)類(lèi)型對(duì)象的引用 ''' #1:使用標(biāo)量類(lèi)型 import numpy as np lxw=np.dtype(np.int32) print(lxw) print() #2:int8,int16,int32,int64四種數(shù)據(jù)類(lèi)型可以使用字符串'i1','i2','i4','i8'代替 import numpy as np lxw2=np.dtype('i8')#int64 print(lxw2) print() #3:字節(jié)順序標(biāo)注 import numpy as np lxw3=np.dtype('<i4')#int32 print(lxw3) print() #4:首先創(chuàng)建結(jié)構(gòu)化數(shù)據(jù)類(lèi)型 import numpy as np lxw4=np.dtype([('age',np.int8)])#i1 print(lxw4) print() #5:將數(shù)據(jù)類(lèi)型應(yīng)用于ndarray對(duì)象 import numpy as np lxw5=np.dtype([('age',np.int32)]) a=np.array([(10,),(20,),(30,)],dtype=lxw5) print(a) print() #6:類(lèi)型字段名可以用于存取實(shí)際的age列 import numpy as np lxw6=np.dtype([('age',np.int64)]) a=np.array([(10,),(20,),(30,)],dtype=lxw6) print(a['age']) print() #7:定義一個(gè)結(jié)構(gòu)化數(shù)據(jù)類(lèi)型student,包含字符串字段name,整數(shù)字段age,及浮點(diǎn)字段marks,并將這個(gè)dtype應(yīng)用到ndarray對(duì)象 import numpy as np student=np.dtype([('name','S20'),('age','i2'),('marks','f4')]) print(student)#運(yùn)行結(jié)果:[('name','S20'),('age','<i2'),('marks','<f4')] print() #8: import numpy as np student2=np.dtype([('name','S20'),('age','i1'),('marks','f4')]) lxw=np.array([('lxw',21,52),('cw',22,58)],dtype=student2) print(lxw)#運(yùn)行結(jié)果:[(b'lxw',21,52.)(b'cw',22,58.)] #每個(gè)內(nèi)建類(lèi)型都有一個(gè)唯一定義它的字符代碼,如下: ''' 字符對(duì)應(yīng)類(lèi)型 b布爾型 i.csv(有符號(hào))整型 u無(wú)符號(hào)整型integer f浮點(diǎn)型 c復(fù)數(shù)浮點(diǎn)型 m timedelta(時(shí)間間隔) M datetime(日期時(shí)間) O(Python)對(duì)象 S,a(byte-)字符串 U Unicode V原始數(shù)據(jù)(void) '''
4 Numpy數(shù)組屬性
在NumPy中,每一個(gè)線性的數(shù)組稱為是一個(gè)軸(axis),也就是維度(dimensions)。
比如說(shuō),二維數(shù)組相當(dāng)于是兩個(gè)一維數(shù)組,其中第一個(gè)一維數(shù)組中每個(gè)元素又是一個(gè)一維數(shù)組。
相關(guān)代碼學(xué)習(xí)、如下:
#NumPy的數(shù)組中比較重要ndarray對(duì)象屬性有: ''' 屬性說(shuō)明 ndarray.ndim秩,即軸的數(shù)量或維度的數(shù)量 ndarray.shape數(shù)組的維度,對(duì)于矩陣,n行m列 ndarray.size數(shù)組元素的總個(gè)數(shù),相當(dāng)于.shape中n*m的值 ndarray.dtype ndarray對(duì)象的元素類(lèi)型 ndarray.itemsize ndarray對(duì)象中每個(gè)元素的大小,以字節(jié)為單位 ndarray.flags ndarray對(duì)象的內(nèi)存信息 ndarray.real ndarray元素的實(shí)部 ndarray.imag ndarray元素的虛部 ndarray.data包含實(shí)際數(shù)組元素的緩沖區(qū),由于一般通過(guò)數(shù)組的索引獲取元素,所以通常不需要使用這個(gè)屬性。 ''' #ndarray.ndim #ndarray.ndim用于返回?cái)?shù)組的維數(shù),等于秩。 import numpy as np lxw=np.arange(36) print(lxw.ndim)#a現(xiàn)只有一個(gè)維度 #現(xiàn)調(diào)整其大小 a=lxw.reshape(2,6,3)#現(xiàn)在擁有三個(gè)維度 print(a.ndim) print() #ndarray.shape #ndarray.shape表示數(shù)組的維度,返回一個(gè)元組,這個(gè)元組的長(zhǎng)度就是維度的數(shù)目,即ndim屬性(秩)。比如,一個(gè)二維數(shù)組,其維度表示"行數(shù)"和"列數(shù)"。 #ndarray.shape也可以用于調(diào)整數(shù)組大小。 import numpy as np lxw2=np.array([[169,175,165],[52,55,50]]) print(lxw2.shape)#shape:數(shù)組的維度 print() #調(diào)整數(shù)組大小: import numpy as np lxw3=np.array([[123,234,345],[456,567,789]]) lxw3.shape=(3,2) print(lxw3) print() #NumPy也提供了reshape函數(shù)來(lái)調(diào)整數(shù)組大小: import numpy as np lxw4=np.array([[23,543,65],[32,54,76]]) c=lxw4.reshape(2,3)#reshape:調(diào)整數(shù)組大小 print(c) print() #ndarray.itemsize #ndarray.itemsize以字節(jié)的形式返回?cái)?shù)組中每一個(gè)元素的大小。 #例如,一個(gè)元素類(lèi)型為float64的數(shù)組itemsize屬性值為8(float64占用64個(gè)bits, #每個(gè)字節(jié)長(zhǎng)度為8,所以64/8,占用8個(gè)字節(jié)),又如,一個(gè)元素類(lèi)型為complex32的數(shù)組item屬性為4(32/8) import numpy as np #數(shù)組的dtype為int8(一個(gè)字節(jié)) x=np.array([1,2,3,4,5],dtype=np.int8) print(x.itemsize) #數(shù)組的dtypy現(xiàn)在為float64(八個(gè)字節(jié)) y=np.array([1,2,3,4,5],dtype=np.float64) print(y.itemsize)#itemsize:占用字節(jié)個(gè)數(shù) #拓展: #整體轉(zhuǎn)化為整數(shù)型 print(np.array([3.5,6.6,8.9],dtype=int)) #設(shè)置copy參數(shù),默認(rèn)為T(mén)rue a=np.array([2,5,6,8,9]) b=np.array(a)#復(fù)制a print(b)#控制臺(tái)打印b print(f'a:{id(a)},b:{id(b)}')#可打印出a和b的內(nèi)存地址 print('='*20) #類(lèi)似于列表的引用賦值 b=a print(f'a:{id(a)},b:{id(b)}') #創(chuàng)建一個(gè)矩陣 lxw5=np.mat([1,2,3,4,5]) print(type(lxw5))#矩陣類(lèi)型:<class'numpy.matrix'> #復(fù)制出副本,并保持原類(lèi)型 yy=np.array(lxw5,subok=True) print(type(yy)) #只復(fù)制副本,不管其類(lèi)型 by=np.array(lxw5,subok=False)#False:使用數(shù)組的數(shù)據(jù)類(lèi)型 print(type(by)) print(id(yy),id(by)) print('='*20) #使用數(shù)組的copy()方法: c=np.array([2,5,6,2]) cp=c.copy() print(id(c),id(cp)) print() #ndarray.flags ''' ndarray.flags返回ndarray對(duì)象的內(nèi)存信息,包含以下屬性: 屬性描述 C_CONTIGUOUS(C)數(shù)據(jù)是在一個(gè)單一的C風(fēng)格的連續(xù)段中 F_CONTIGUOUS(F)數(shù)據(jù)是在一個(gè)單一的Fortran風(fēng)格的連續(xù)段中 OWNDATA(O)數(shù)組擁有它所使用的內(nèi)存或從另一個(gè)對(duì)象中借用它 WRITEABLE(W)數(shù)據(jù)區(qū)域可以被寫(xiě)入,將該值設(shè)置為False,則數(shù)據(jù)為只讀 ALIGNED(A)數(shù)據(jù)和所有元素都適當(dāng)?shù)貙?duì)齊到硬件上 UPDATEIFCOPY(U)這個(gè)數(shù)組是其它數(shù)組的一個(gè)副本,當(dāng)這個(gè)數(shù)組被釋放時(shí),原數(shù)組的內(nèi)容將被更新 ''' import numpy as np lxw4=np.array([1,3,5,6,7]) print(lxw4.flags)#flags:其內(nèi)存信息
Pandas學(xué)習(xí)
當(dāng)然,做這些的前提是首先把文件準(zhǔn)備好
文件準(zhǔn)備:
文件太長(zhǎng),故只截取了部分,當(dāng)然,此文件可自行弄類(lèi)似的也可以!
1 pandas新增數(shù)據(jù)列
在進(jìn)行數(shù)據(jù)分析時(shí),經(jīng)常需要按照一定條件創(chuàng)造新的數(shù)據(jù)列,然后再進(jìn)一步分析
直接賦值
df.apply()方法
df.assign()方法
按條件進(jìn)行分組分別賦值
#1: import pandas as pd #讀取數(shù)據(jù) lxw=pd.read_csv('sites.csv') #print(lxw.head()) df=pd.DataFrame(lxw) #print(df) df['lrl']=df['lrl'].map(lambda x:x.rstrip('%')) #print(df) df.loc[:,'jf']=df['yye']-df['sku_cost_prc'] #返回的是Series #print(df.head()) #2: def get_cha(n): if n['yye']>5: return'高價(jià)' elif n['yye']<2: return'低價(jià)' else: return'正常價(jià)' df.loc[:,'yye_type']=df.apply(get_cha,axis=1) #print(df.head()) print(df['yye_type'].value_counts()) #3: #可同時(shí)添加多個(gè)新列 print(df.assign( yye_bh=lambda x:x['yye']*2-3, sl_zj=lambda x:x['sku_cnt']*6 ).head(10)) #4: #按條件先選擇數(shù)據(jù),然后對(duì)這部分?jǐn)?shù)據(jù)賦值新列 #先創(chuàng)建空列 df['zyye_type']='' df.loc[df['yye']-df['sku_cnt']>8,'zyye_type']='高' df.loc[df['yye']-df['sku_cnt']<=8,'zyye_type']='低' print(df.head())
下面分別是每個(gè)小問(wèn)對(duì)應(yīng)運(yùn)行效果:
2 Pandas數(shù)據(jù)統(tǒng)計(jì)函數(shù)
#Pandas數(shù)據(jù)統(tǒng)計(jì)函數(shù) ''' 1-匯總類(lèi)統(tǒng)計(jì) 2-唯一去重和按值計(jì)數(shù) 3-相關(guān)系數(shù)和協(xié)方差 ''' import pandas as pd lxw=pd.read_csv('nba.csv') #print(lxw.head(3)) #1: #一下子提取所有數(shù)字列統(tǒng)計(jì)結(jié)果 print(lxw.describe()) #查看單個(gè)Series的數(shù)據(jù) print(lxw['Age'].mean()) #年齡最大 print(lxw['Age'].max()) #體重最輕 print(lxw['Weight'].min()) #2: #2-1唯一性去重【一般不用于數(shù)值項(xiàng),而是枚舉、分類(lèi)項(xiàng)】 print(lxw['Height'].unique()) print(lxw['Team'].unique()) #2-2按值計(jì)算 print(lxw['Age'].value_counts()) print(lxw['Team'].value_counts()) #3: #應(yīng)用:股票漲跌、產(chǎn)品銷(xiāo)量波動(dòng)等等 ''' 對(duì)于兩個(gè)變量X、Y: 1-協(xié)方差:衡量同向程度程度,如果協(xié)方差為正,說(shuō)明X、Y同向變化,協(xié)方差越大說(shuō)明同向程度越高; 如果協(xié)方差為負(fù),說(shuō)明X、Y反向運(yùn)動(dòng),協(xié)方差越小說(shuō)明方向程度越高。 2-相關(guān)系數(shù):衡量相似度程度,當(dāng)他們的相關(guān)系數(shù)為1時(shí),說(shuō)明兩個(gè)變量變化時(shí)的正向相似度最大, 當(dāng)相關(guān)系數(shù)為-1,說(shuō)明兩個(gè)變化時(shí)的反向相似度最大。 ''' #協(xié)方差矩陣: print(lxw.cov()) #相關(guān)系數(shù)矩陣: print(lxw.corr()) #多帶帶查看年齡和體重的相關(guān)系數(shù) print(lxw['Age'].corr(lxw['Weight'])) #Age和Salary的相關(guān)系數(shù) print(lxw['Age'].corr(lxw['Salary'])) #注意看括號(hào)內(nèi)的相減 print(lxw['Age'].corr(lxw['Salary']-lxw['Weight']))
3 Pandas對(duì)缺失值的處理
特殊Excel的讀取、清洗、處理:
#Pandas對(duì)缺失值的處理 ''' 函數(shù)用法: 1-isnull和notnull:檢測(cè)是否有控制,可用于dataframe和series 2-dropna:丟棄、刪除缺失值 2-1 axis:刪除行還是列,{0 or'index',1 or'columns'},default() 2-2 how:如果等于any,則任何值都為空,都刪除;如果等于all所有值都為空,才刪除 2-3 inplace:如果為T(mén)rue,則修改當(dāng)前dataframe,否則返回新的dataframe 2-4 value:用于填充的值,可以是單個(gè)值,或者字典(key是列名,value是值) 2-5 method:等于ffill使用前一個(gè)不為空的值填充forword fill;等于bfill使用后一個(gè)不為空的值填充backword fill 2-6 axis:按行還是按列填充,{0 or"index",1 or"columns"} 2-7 inplace:如果為T(mén)rue則修改當(dāng)前dataframe,否則返回新的dataframe ''' #特殊Excel的讀取、清洗、處理 import pandas as pd #1:讀取excel時(shí),忽略前幾個(gè)空行 stu=pd.read_excel("Score表.xlsx",skiprows=14)#skiprows:控制在幾行以下 print(stu) #2:檢測(cè)空值 print(stu.isnull()) print(stu['成績(jī)'].isnull()) print(stu['成績(jī)'].notnull()) #篩選沒(méi)有空成績(jī)的所有行 print(stu.loc[stu['成績(jī)'].notnull(),:]) #3:刪除全是空值的列: #axis:刪除行還是列,{0 or'index',1 or'columns'},default() #how:如果等于any,則任何值都為空,都刪除;如果等于all所有值都為空,才刪除 #inplace:如果為T(mén)rue則修改當(dāng)前dataframe,否則返回新的dataframe stu.dropna(axis="columns",how="all",inplace=True) print(stu) #4:刪除全是空值的行: stu.dropna(axis="index",how="all",inplace=True) print(stu) #5:將成績(jī)列為空的填充為0分: stu.fillna({"成績(jī)":0}) print(stu) #同上: stu.loc[:,'成績(jī)']=stu['成績(jī)'].fillna(0) print(stu) #6:將姓名的缺失值填充【使用前面的有效值填充,用ffill:forward fill】 stu.loc[:,'姓名']=stu['姓名'].fillna(method='ffill') print(stu) #7:將清洗好的Excel保存: stu.to_excel("Score成績(jī)_clean.xlsx",index=False)
綜上所述,這篇內(nèi)容就給大家介紹到這里了,希望可以給各位讀者帶來(lái)幫助。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/128413.html
小編寫(xiě)這篇文章的一個(gè)主要目的,主要是來(lái)給大家去做一個(gè)介紹。介紹的內(nèi)容主要是關(guān)于建模知識(shí)的一些相關(guān)介紹,包括其Pandas的一些相關(guān)學(xué)習(xí),就具體的操作內(nèi)容,下面就給大家詳細(xì)解答下?! umpy學(xué)習(xí) 1 Numpy介紹與應(yīng)用 1-1Numpy是什么 NumPy是一個(gè)運(yùn)行速度非常快的數(shù)學(xué)庫(kù),一個(gè)開(kāi)源的的python科學(xué)計(jì)算庫(kù),主要用于數(shù)組、矩陣計(jì)算,包含: 一個(gè)強(qiáng)大的N維數(shù)組對(duì)象ndarr...
摘要:在本節(jié)中,我們將看到一些最流行和最常用的庫(kù),用于機(jī)器學(xué)習(xí)和深度學(xué)習(xí)是用于數(shù)據(jù)挖掘,分析和機(jī)器學(xué)習(xí)的最流行的庫(kù)。愿碼提示網(wǎng)址是一個(gè)基于的框架,用于使用多個(gè)或進(jìn)行有效的機(jī)器學(xué)習(xí)和深度學(xué)習(xí)。 showImg(https://segmentfault.com/img/remote/1460000018961827?w=999&h=562); 來(lái)源 | 愿碼(ChainDesk.CN)內(nèi)容編輯...
摘要:數(shù)據(jù)分析的發(fā)展方向一般有商業(yè)方向,行業(yè)分析業(yè)務(wù)方向,和機(jī)器學(xué)習(xí)數(shù)據(jù)挖掘方向。機(jī)器學(xué)習(xí)的書(shū)籍推薦統(tǒng)計(jì)學(xué)習(xí)方法,機(jī)器學(xué)習(xí),機(jī)器學(xué)習(xí)實(shí)戰(zhàn)三本書(shū)。 作者:xiaoyu 微信公眾號(hào):Python數(shù)據(jù)科學(xué) 知乎:python數(shù)據(jù)分析師 上一篇主要分享了博主親身轉(zhuǎn)行數(shù)據(jù)分析的經(jīng)歷: 【從零學(xué)起到成功轉(zhuǎn)行數(shù)據(jù)分析,我是怎么做的?】 本篇繼上一篇將分享轉(zhuǎn)行數(shù)據(jù)分析的一些經(jīng)驗(yàn)和學(xué)習(xí)方法,看完這篇你將會(huì)解...
摘要:在上篇文章里,為大家推薦了一些數(shù)學(xué)學(xué)習(xí)的軟件和微積分線性代數(shù)概率統(tǒng)計(jì)的學(xué)習(xí)視頻,今天再推薦一些精心挑選的經(jīng)典教材,并為大家提供電子書(shū)的下載鏈接,和視頻搭配起來(lái)一起學(xué)習(xí),效果會(huì)更好。我們要使用的以及等都包含在里面,無(wú)需額外下載。 在上篇文章里,為大家推薦了一些數(shù)學(xué)學(xué)習(xí)的軟件和微積分、線性代數(shù)、概率統(tǒng)計(jì)的學(xué)習(xí)視頻,今天再推薦一些精心挑選的經(jīng)典教材,并為大家提供電子書(shū)的下載鏈接,和視頻搭配起...
閱讀 1066·2023-01-14 11:38
閱讀 1062·2023-01-14 11:04
閱讀 901·2023-01-14 10:48
閱讀 2377·2023-01-14 10:34
閱讀 1147·2023-01-14 10:24
閱讀 1026·2023-01-14 10:18
閱讀 654·2023-01-14 10:09
閱讀 733·2023-01-14 10:02