版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
大數(shù)據(jù)導(dǎo)論ndarray的運(yùn)算與標(biāo)量的運(yùn)算
一元函數(shù)運(yùn)算
二元函數(shù)運(yùn)算ndarray數(shù)組的運(yùn)算數(shù)組與標(biāo)量之間的運(yùn)算:作用于數(shù)組的每一個(gè)元素Numpy數(shù)組運(yùn)算:一元函數(shù)(1)對(duì)ndarray中的數(shù)據(jù)執(zhí)行元素級(jí)運(yùn)算的函數(shù)函數(shù)說(shuō)明np.abs(x)計(jì)算數(shù)組各元素的絕對(duì)值np.sqrt(x)計(jì)算數(shù)組各元素的平方根np.square(x)計(jì)算數(shù)組各元素的平方np.log(x)np.log10(x)np.log2(x)計(jì)算數(shù)組各元素的自然對(duì)數(shù)、10底對(duì)數(shù)和2底對(duì)數(shù)np.ceil(x)np.floor(x)計(jì)算數(shù)組各元素的ceiling值或floor值Numpy數(shù)組運(yùn)算:一元函數(shù)(2)對(duì)ndarray中的數(shù)據(jù)執(zhí)行元素級(jí)運(yùn)算的函數(shù)函數(shù)說(shuō)明np.rint(x)計(jì)算數(shù)組各元素的四舍五入值np.cos(x)np.sin(x)np.tan(x)計(jì)算數(shù)組各元素的三角函數(shù)np.exp(x)計(jì)算數(shù)組各元素的指數(shù)值np.sign(x)計(jì)算數(shù)組各元素的符號(hào)組:1(+),0,-1(-)Numpy數(shù)組運(yùn)算:一元函數(shù)——示例Numpy數(shù)組運(yùn)算:二元函數(shù)函數(shù)說(shuō)明+-*/**兩個(gè)數(shù)組各元素進(jìn)行對(duì)應(yīng)運(yùn)算np.maximum(x,y)np.minimum(x,y)元素級(jí)的最大值/最小值計(jì)算><>=<===!=算術(shù)比較,產(chǎn)生布爾型數(shù)組Numpy數(shù)組運(yùn)算:二元函數(shù)——舉例Numpy數(shù)組的轉(zhuǎn)置——ndarray的特殊T屬性Numpy的文件讀取操作np.savetxt():將Numpy數(shù)組保存到磁盤(pán)中np.loadtxt():從磁盤(pán)中讀取數(shù)據(jù)導(dǎo)Numpy中Numpy的文件讀取操作寫(xiě)入函數(shù):np.savetxt(frame,
array,
fmt='%.18e',
delimiter=None)?frame
:
文件、字符串或產(chǎn)生器,可以是.gz或.bz2的壓縮文件?array
:
存入文件的數(shù)組?fmt:
寫(xiě)入文件的格式,例如:%d
%.2f
%.18e?delimiter
:
分割字符串,默認(rèn)是任何空格CSV
(Comma‐Separated
Value,逗號(hào)分隔值)文件CSV是一種常見(jiàn)的文件格式,用來(lái)存儲(chǔ)批量數(shù)據(jù)指標(biāo),2020年第一季度,2019年第四季度,2019年第三季度,2019年第二季度國(guó)內(nèi)生產(chǎn)總值當(dāng)季值(億元),206504.3,278019.7,252208.7,242573.8國(guó)內(nèi)生產(chǎn)總值累計(jì)值(億元),206504.3,990865.1,712845.4,460636.7第一產(chǎn)業(yè)增加值當(dāng)季值(億元),10186.2,27461.6,19798,14437.6第一產(chǎn)業(yè)增加值累計(jì)值(億元),10186.2,70466.7,43005,23207Numpy的文件存儲(chǔ)操作——舉例Numpy的文件讀取操作讀取函數(shù):np.loadtxt(frame,dtype=np.float,delimiter=None,skiprows=0,usecols=None,unpack=False)frame
:
文件、字符串或產(chǎn)生器,可以是.gz或.bz2的壓縮文件dtype:
數(shù)據(jù)類(lèi)型,可選delimiter
:
分割字符串,默認(rèn)是任何空格unpack
:
如果True,讀入屬性將分別寫(xiě)入不同變量skiprows:跳過(guò)前x行,一般跳過(guò)第一行表頭usecols:讀取指定的列,索引,元組類(lèi)型Numpy的文件讀取操作——舉例課堂小任務(wù)讀取iris數(shù)據(jù)集中的花萼長(zhǎng)度數(shù)據(jù)(已保存為csv格式),文件名:iris.csv。路徑位于D:\Data\iris.csv并對(duì)其進(jìn)行排序、去重,并求出和、均值、標(biāo)準(zhǔn)差、方差、最小值、最大值。Sepal.LengthCm:花萼長(zhǎng)度,單位cm
Sepal.WidthCm:花萼寬度,單位cm
Petal.LengthCm:花瓣長(zhǎng)度,單位cm
Petal.WidthCm;花瓣寬度,單位cm
Species:鳶尾花種類(lèi).第一步:讀入數(shù)據(jù)第二步:排序、去重,并求出和、均值、標(biāo)準(zhǔn)差、方差、最小值、最大值numpy練習(xí)11、創(chuàng)建一個(gè)5x5的二維數(shù)組,其中邊界值為1,其余值為0;代碼如下:2.使用數(shù)字0將一個(gè)全為1的5x5二維數(shù)組包圍,效果如下:代碼如下:3.創(chuàng)建一個(gè)10x10的二維數(shù)組,并使得1和0沿對(duì)角線間隔放置,效果如下:代碼如下:numpy練習(xí)24、創(chuàng)建一個(gè)0-10的一維數(shù)組,并將(1,9]之間的數(shù)全部反轉(zhuǎn)成負(fù)數(shù),效果如下:array([0,1,-2,-3,-4,-5,-6,-7,-8,-9,10])代碼如下:5.創(chuàng)建一個(gè)5x5的矩陣,其中每行的數(shù)值范圍從1到5,效果如下:array([[1.,2.,3.,4.,5.],[1.,2.,3.,4.,5.],[1.,2.,3.,4.,5.],[1.,2.,3.,4.,5.],[1.,2.,3.,4.,5.]])代碼如下:6.創(chuàng)建一個(gè)長(zhǎng)度為5的一維數(shù)組,并將其中最大值替換成0代碼如下:numpy練習(xí)37.將二維數(shù)組的前兩行進(jìn)行順序交換,效果如下:交換前[[01234][56789][1011121314][1516171819][2021222324]]交換后[[56789][01234][1011121314][1516171819][2021222324]]代碼如下:8、找出給定一維數(shù)組中非0元素的位置索引代碼如下:9.找出數(shù)組中缺失值的總數(shù)及所在位置,案例如下:array([[0.8,0.25,0.74,0.05,0.24,0.16,0.63,0.62,0.89,0.85],[0.61,0.76,0.26,0.3,0.82,0.74,0.96,0.64,0.58,0.06],[0.78,0.38,0.19,0.68,0.75,0.91,0.13,0.24,0.98,0.21],[0.47,0.12,0.34,0.06,0.46,0.69,0.1,nan,0.27,0.92],[0.83,0.01,0.63,0.15,0.52,0.52,0.02,0.,0.74,0.59],[0.56,0.66,0.15,nan,0.26,0.88,0.15,0.57,0.61,0.35],[0.33,0.58,0.06,0.94,0.58,0.53,0.97,0.02,0.32,nan],[0.84,0.71,0.65,0.42,0.44,0.96,0.37,0.65,0.6,0.17],[0.04,0.94,0.92,nan,0.7,0.38,0.28,0.45,0.35,0.93],[0.38,0.69,0.43,0.01,0.67,0.46,0.73,0.99,0.94,0.45]])缺失值總數(shù):4缺失值索引:(array([3,5,6,8]),array([7,3,9,3]))代碼如下:生成20人,每人7門(mén)課程的成績(jī)?nèi)蝿?wù)一獲取所有學(xué)生成績(jī)中,每一科目中出現(xiàn)過(guò)的分?jǐn)?shù)(因?yàn)榭赡苡蟹謹(jǐn)?shù)相同,但是只出一次),每一科目的單科成績(jī)排名以及最高分任務(wù)一——解答生成20人,每人7門(mén)課程的成績(jī)?nèi)蝿?wù)二每個(gè)學(xué)生的平均分排名以及獲取平均分最高分學(xué)生序號(hào)——學(xué)生平均分成績(jī)排名任務(wù)二——解答生成20人,每人7門(mén)課程的成績(jī)?nèi)蝿?wù)三繪制20個(gè)同學(xué)的平均成績(jī)條形圖任務(wù)三——解答任務(wù)三——解答生成20人,每人7門(mén)課程的成績(jī)?nèi)蝿?wù)四計(jì)算及格率,以及繪制及格所占的餅狀圖任務(wù)四——解答任務(wù)四——解答Pandas統(tǒng)計(jì)分析目錄01Pandas庫(kù)的理解02Series類(lèi)型的基本操作
03Pandas庫(kù)的DataFrame類(lèi)型
04
Pandas庫(kù)索引操作05Pandas庫(kù)的數(shù)據(jù)類(lèi)型操作
06Pandas庫(kù)的數(shù)據(jù)排序和統(tǒng)計(jì)函數(shù)Pandas庫(kù)的理解Pandas介紹Series類(lèi)型Series類(lèi)型的創(chuàng)建Pandas庫(kù)的理解(1)importpandas
aspd引入模塊Pandas庫(kù)的理解(2)兩種數(shù)據(jù)類(lèi)型:Series,DataFramePandas庫(kù)的理解(3)NumpyPandas基礎(chǔ)數(shù)據(jù)類(lèi)型關(guān)注數(shù)據(jù)的結(jié)構(gòu)表達(dá)維度:數(shù)據(jù)間關(guān)系擴(kuò)展數(shù)據(jù)類(lèi)型關(guān)注數(shù)據(jù)的應(yīng)用表達(dá)數(shù)據(jù)與索引間關(guān)系Pandas庫(kù)的Series類(lèi)型(1)Series是一種類(lèi)似于一維數(shù)組的對(duì)象,它由一組數(shù)據(jù)(各種Numpy數(shù)據(jù)類(lèi)型)以及一組與之相關(guān)的數(shù)據(jù)標(biāo)簽(即索引)組成。值索引Pandas庫(kù)的Series類(lèi)型(2)自定義索引Series類(lèi)型的創(chuàng)建方法Series類(lèi)型可以由如下類(lèi)型創(chuàng)建:Python列表,index與列表元素個(gè)數(shù)一致標(biāo)量值,index表達(dá)Series類(lèi)型的尺寸Python字典,鍵值對(duì)中的“鍵”是索引,index從字典中進(jìn)行選擇操作ndarray,索引和數(shù)據(jù)都可以通過(guò)ndarray類(lèi)型創(chuàng)建其他函數(shù),range()函數(shù)等Series類(lèi)型的創(chuàng)建方法——從標(biāo)量值創(chuàng)建Series類(lèi)型的創(chuàng)建方法——從字典類(lèi)型創(chuàng)建Series類(lèi)型的創(chuàng)建方法——從ndarray類(lèi)型創(chuàng)建這也是非常常用的創(chuàng)建方式Series類(lèi)型的基本操作基本操作概述
index和values操作
類(lèi)似ndarray類(lèi)型
類(lèi)似Python字典操作Series類(lèi)型的基本操作Series類(lèi)型包括index和values兩部分Series類(lèi)型的操作類(lèi)似ndarray類(lèi)型Series類(lèi)型的操作類(lèi)似Python字典類(lèi)型Series類(lèi)型的基本操作——index和values操作(1)Series類(lèi)型的基本操作——index和values操作(2)自動(dòng)索引和基本索引并存,兩種索引都可以使用,但在使用的時(shí)候要么全是自動(dòng)索引、要么全是基本索引。Series類(lèi)型的基本操作——類(lèi)似ndarray類(lèi)型Series類(lèi)型的操作類(lèi)似ndarray類(lèi)型:索引方法相同,采用[]Numpy中運(yùn)算和操作可用于Series類(lèi)型可以通過(guò)自定義索引的列表進(jìn)行切片可以通過(guò)自動(dòng)索引進(jìn)行切片,如果存在自定義索引,則一同被切片Series類(lèi)型的基本操作——類(lèi)似ndarray類(lèi)型的切片和運(yùn)算Series類(lèi)型的基本操作——類(lèi)似Python字典類(lèi)型類(lèi)似Python字典操作方式:通過(guò)自定義索引訪問(wèn)保留字in操作使用.get()方法Series類(lèi)型的基本操作——通過(guò)index修改values的值通過(guò)基本索引和自動(dòng)索引切片對(duì)values值進(jìn)行修改并立即生效。Pandas庫(kù)索引操作索引的理解索引類(lèi)型的常用方法
重新索引Pandas庫(kù)——索引Series和DataFrame的索引是Index類(lèi)型Index對(duì)象是不可修改類(lèi)型Pandas庫(kù)——索引類(lèi)型的常用方法方法說(shuō)明.append(idx)連接另一個(gè)Index對(duì)象,產(chǎn)生新的Index對(duì)象.diff(idx)計(jì)算差集,產(chǎn)生新的Index對(duì)象.intersection(idx)計(jì)算交集.union(idx)計(jì)算并集.delete(loc)刪除Loc位置處的元素.insert(loc,e)在loc位置增加一個(gè)元素ePandas庫(kù)——索引類(lèi)型的方法使用Pandas庫(kù)——?jiǎng)h除指定索引對(duì)象.drop()能夠刪除Series和DataFrame指定行或列索引Pandas庫(kù)的數(shù)據(jù)類(lèi)型操作——重新索引.reindex()能夠改變或重排Series和DataFrame索引Pandas庫(kù)的數(shù)據(jù)類(lèi)型操作——重新索引reindex函數(shù)參數(shù)參數(shù)說(shuō)明index,columns新的行列自定義索引fill_value重新索引中,用于填充缺失位置的值method填充方法,ffill當(dāng)前值向前填充,bfill向后填充limit最大填充量copy默認(rèn)True,生成新的對(duì)象;False時(shí),新舊相等不復(fù)制Pandas庫(kù)的數(shù)據(jù)類(lèi)型操作——重新索引舉例Pandas庫(kù)的數(shù)據(jù)類(lèi)型操作算術(shù)運(yùn)算比較運(yùn)算Pandas庫(kù)數(shù)據(jù)的算術(shù)運(yùn)算算術(shù)運(yùn)算根據(jù)行列索引,補(bǔ)齊后運(yùn)算,運(yùn)算默認(rèn)產(chǎn)生浮點(diǎn)數(shù)補(bǔ)齊時(shí)缺項(xiàng)填充N(xiāo)aN(空值)二維和一維、一維和零維間為廣播運(yùn)算采用+
‐*
/符號(hào)進(jìn)行的二元運(yùn)算產(chǎn)生新的對(duì)象Pandas庫(kù)的數(shù)據(jù)的算術(shù)運(yùn)算——+、-、*、/符號(hào)運(yùn)算Pandas庫(kù)的數(shù)據(jù)的算術(shù)運(yùn)算——加減乘除的方法形式的運(yùn)算方法說(shuō)明.add(d,**argws)類(lèi)型間加法運(yùn)算,可選參數(shù).sub(d,**argws)類(lèi)型間減法運(yùn)算,可選參數(shù).mul(d,**argws)類(lèi)型間乘法運(yùn)算,可選參數(shù).div(d,**argws)類(lèi)型間除法運(yùn)算,可選參數(shù)Pandas庫(kù)的數(shù)據(jù)的算術(shù)運(yùn)算——加減乘除的方法形式的運(yùn)算(1)Pandas庫(kù)的數(shù)據(jù)的算術(shù)運(yùn)算——加減乘除的方法形式的運(yùn)算(2)Pandas庫(kù)數(shù)據(jù)的比較運(yùn)算比較運(yùn)算只能比較相同索引的元素,不進(jìn)行補(bǔ)齊二維和一維、一維和零維間為廣播運(yùn)算采用>
<
>=
<=
==
!=等符號(hào)進(jìn)行的二元運(yùn)算產(chǎn)生布爾對(duì)象Pandas庫(kù)的數(shù)據(jù)的比較運(yùn)算(1)Pandas庫(kù)的數(shù)據(jù)的比較運(yùn)算(2)
讀寫(xiě)文本文件1.文本文件讀取使用read_table來(lái)讀取文本文件。pandas.read_table(filepath,sep=’\t’)使用read_csv函數(shù)來(lái)讀取csv文件。pandas.read_csv(filepath_or_buffer)csv是一種逗號(hào)分隔的文件格式,因?yàn)槠浞指舴灰欢ㄊ嵌禾?hào),又被稱(chēng)為字符分隔文件,文件以純文本形式存儲(chǔ)表格數(shù)據(jù)(數(shù)字和文本)。使用read_table來(lái)讀取文本文件內(nèi)容實(shí)操。1.文本文件讀取encoding代表文件的編碼格式,常用的編碼有utf-8、utf-16、gbk、gb2312、gb18030等。如果編碼指定錯(cuò)誤數(shù)據(jù)將無(wú)法讀取,IPython解釋器會(huì)報(bào)解析錯(cuò)誤。使用read_table來(lái)讀取csv文件內(nèi)容實(shí)操1.文本文件讀取read_table和read_csv函數(shù)中的sep參數(shù)是指定文本的分隔符的,如果分隔符指定錯(cuò)誤,在讀取數(shù)據(jù)的時(shí)候,每一行數(shù)據(jù)將連成一片。2.文本文件儲(chǔ)存文本文件的存儲(chǔ)和讀取類(lèi)似,結(jié)構(gòu)化數(shù)據(jù)可以通過(guò)pandas中的to_csv函數(shù)實(shí)現(xiàn)以csv文件格式存儲(chǔ)文件。DataFrame.to_csv(path_or_buf=None,sep=’,’)數(shù)據(jù)庫(kù)數(shù)據(jù)讀取1.讀寫(xiě)數(shù)據(jù)庫(kù)數(shù)據(jù)數(shù)據(jù)庫(kù)數(shù)據(jù)讀取pandas提供了讀取與存儲(chǔ)關(guān)系型數(shù)據(jù)庫(kù)數(shù)據(jù)的函數(shù)與方法。除了pandas庫(kù)外,還需要使用SQLAlchemy庫(kù)建立對(duì)應(yīng)的數(shù)據(jù)庫(kù)連接。SQLAlchemy配合相應(yīng)數(shù)據(jù)庫(kù)的Python連接工具(例如MySQL數(shù)據(jù)庫(kù)需要安裝mysqlclient或者pymysql庫(kù)),使用create_engine函數(shù),建立一個(gè)數(shù)據(jù)庫(kù)連接。creat_engine中填入的是一個(gè)連接字符串。在使用Python的SQLAlchemy時(shí),MySQL和Oracle數(shù)據(jù)庫(kù)連接字符串的格式如下:
數(shù)據(jù)庫(kù)產(chǎn)品名+連接工具名://用戶名:密碼@數(shù)據(jù)庫(kù)IP地址:數(shù)據(jù)庫(kù)端口號(hào)/數(shù)據(jù)庫(kù)名稱(chēng)?charset=數(shù)據(jù)庫(kù)數(shù)據(jù)編碼read_sql既能夠讀取數(shù)據(jù)庫(kù)中的某一個(gè)表,也能夠?qū)崿F(xiàn)查詢(xún)操作。
pandas.read_sql(sql,con,index_col=None,coerce_float=True,columns=None)read_sql從數(shù)據(jù)庫(kù)讀取數(shù)據(jù)實(shí)操1.讀寫(xiě)數(shù)據(jù)庫(kù)數(shù)據(jù)2.數(shù)據(jù)庫(kù)數(shù)據(jù)存儲(chǔ)DataFrame.to_sql(name,con,if_exists=’fail’,index=True)參數(shù)名稱(chēng)說(shuō)明name接收string。代表數(shù)據(jù)庫(kù)表名。無(wú)默認(rèn)。con接收數(shù)據(jù)庫(kù)連接。無(wú)默認(rèn)。if_exists接收f(shuō)ail,replace,append。fail表示如果表名存在則不執(zhí)行寫(xiě)入操作;replace表示如果存在,將原數(shù)據(jù)庫(kù)表刪除,再重新創(chuàng)建;append則表示在原數(shù)據(jù)庫(kù)表的基礎(chǔ)上追加數(shù)據(jù)。默認(rèn)為fail。index接收boolean。表示是否將行索引作為數(shù)據(jù)傳入數(shù)據(jù)庫(kù)。默認(rèn)True。1.讀寫(xiě)數(shù)據(jù)庫(kù)數(shù)據(jù)DataFrame.to_sql(name,con,if_exists=’fail’,index=True)寫(xiě)入數(shù)據(jù)庫(kù)實(shí)操1.讀寫(xiě)數(shù)據(jù)庫(kù)數(shù)據(jù)橫向合并數(shù)據(jù)1.橫向表堆疊橫向堆疊,即將兩個(gè)表在X軸向拼接在一起,可以使用concat函數(shù)完成,concat函數(shù)的基本語(yǔ)法如下:pandas.concat(objs,axis=0,join='outer',join_axes=None,ignore_index=False,keys=None,levels=None,names=None,verify_integrity=False,copy=True)常用參數(shù)如下所示。參數(shù)名稱(chēng)說(shuō)明objs接收多個(gè)Series,DataFrame,Panel的組合。表示參與鏈接的pandas對(duì)象的列表的組合。無(wú)默認(rèn)。axis接收0或1。表示連接的軸向,默認(rèn)為0。join接收inner或outer。表示其他軸向上的索引是按交集(inner)還是并集(outer)進(jìn)行合并。默認(rèn)為outer。axis=1代表橫向堆疊,join方式為行索引的內(nèi)連接或外連接1.橫向表堆疊axis=1代表橫向堆疊,join方式為行索引的內(nèi)連接或外連接1.橫向表堆疊當(dāng)axis=1的時(shí)候,concat做行對(duì)齊,然后將不同列名稱(chēng)的兩張或多張表合并。當(dāng)兩個(gè)表索引不完全一樣時(shí),可以使用join參數(shù)選擇是內(nèi)連接還是外連接。在內(nèi)連接的情況下,僅僅返回索引重疊部分。在外連接的情況下,則顯示索引的并集部分?jǐn)?shù)據(jù),不足的地方則使用空值填補(bǔ)。當(dāng)兩張表完全一樣時(shí),不論join參數(shù)取值是inner或者outer,結(jié)果都是將兩個(gè)表完全按照X軸拼接起來(lái)。1.橫向表堆疊縱向合并數(shù)據(jù)1.縱向堆疊——concat函數(shù)使用concat函數(shù)時(shí),在默認(rèn)情況下,即axis=0時(shí),concat做列對(duì)齊,將不同行索引的兩張或多張表縱向合并。在兩張表的列名并不完全相同的情況下,可join參數(shù)取值為inner時(shí),返回的僅僅是列名交集所代表的列,取值為outer時(shí),返回的是兩者列名的并集所代表的列,其原理示意如圖。不論join參數(shù)取值是inner或者outer,結(jié)果都是將兩個(gè)表完全按照Y軸拼接起來(lái)axis=0代表縱向堆疊,join方式為列索引的內(nèi)連接或外連接1.縱向堆疊——concat函數(shù)axis=0代表縱向堆疊,join方式為列索引的內(nèi)連接或外連接1.縱向堆疊——concat函數(shù)append方法也可以用于縱向合并兩張表。但是append方法實(shí)現(xiàn)縱向表堆疊有一個(gè)前提條件,那就是兩張表的列名需要完全一致。append方法的基本語(yǔ)法如下pandas.DataFrame.append(self,other,ignore_index=False,verify_integrity=False)。常用參數(shù)如下所示。參數(shù)名稱(chēng)說(shuō)明other接收DataFrame或Series。表示要添加的新數(shù)據(jù)。無(wú)默認(rèn)。ignore_index接收boolean。如果輸入True,會(huì)對(duì)新生成的DataFrame使用新的索引(自動(dòng)產(chǎn)生)而忽略原來(lái)數(shù)據(jù)的索引。默認(rèn)為False。verify_integrity接收boolean。如果輸入True,那么當(dāng)ignore_index為False時(shí),會(huì)檢查添加的數(shù)據(jù)索引是否沖突,如果沖突,則會(huì)添加失敗。默認(rèn)為False。1.縱向堆疊——append方法1.縱向堆疊——append方法merge合并數(shù)據(jù)主鍵合并數(shù)據(jù)主鍵合并,即通過(guò)一個(gè)或多個(gè)鍵將兩個(gè)數(shù)據(jù)集的行連接起來(lái),類(lèi)似于SQL中的JOIN。針對(duì)同一個(gè)主鍵存在兩張包含不同字段的表,將其根據(jù)某幾個(gè)字段一一對(duì)應(yīng)拼接起來(lái),結(jié)果集列數(shù)為兩個(gè)元數(shù)據(jù)的列數(shù)和減去連接鍵的數(shù)量。主鍵合并——merge函數(shù)和數(shù)據(jù)庫(kù)的join一樣,merge函數(shù)也有左連接(left)、右連接(right)、內(nèi)連接(inner)和外連接(outer),但比起數(shù)據(jù)庫(kù)SQL語(yǔ)言中的join和merge函數(shù)還有其自身獨(dú)到之處,例如可以在合并過(guò)程中對(duì)數(shù)據(jù)集中的數(shù)據(jù)進(jìn)行排序等。pandas.merge(left,right,how='inner',on=None,left_on=None,right_on=None,left_index=False,right_index=False,sort=False,suffixes=('_x','_y'),copy=True,indicator=False)可根據(jù)merge函數(shù)中的參數(shù)說(shuō)明,并按照需求修改相關(guān)參數(shù),就可以多種方法實(shí)現(xiàn)主鍵合并。主鍵合并——merge函數(shù)默認(rèn)連接方式為inner。left_on表示left參數(shù)接收數(shù)據(jù)用于合并的主鍵。right_on表示right參數(shù)接收數(shù)據(jù)用于合并的主鍵主鍵合并——merge函數(shù)左連接(left)、右連接(right)、內(nèi)連接(inner)和外連接(outer)主鍵合并——merge函數(shù)Excel文件數(shù)據(jù)讀取1.Excel文件讀取pandas提供了read_excel函數(shù)來(lái)讀取“xls”“xlsx”兩種Excel文件。pandas.read_excel(io,sheetname=0,)read_excel讀Excel文件實(shí)操1.Excel文件讀取2.Excel文件儲(chǔ)存將文件存儲(chǔ)為Excel文件,可以使用to_excel方法。其語(yǔ)法格式如下:DataFrame.to_excel(excel_writer=None,sheetname=None’,na_rep=”,header=True,index=True,index_label=None,mode=’w’,encoding=None)to_csv方法的常用參數(shù)基本一致,區(qū)別之處在于指定存儲(chǔ)文件的文件路徑參數(shù)名稱(chēng)為excel_writer,并且沒(méi)有sep參數(shù),增加了一個(gè)sheetnames參數(shù)用來(lái)指定存儲(chǔ)的Excelsheet的名稱(chēng),默認(rèn)為sheet1。to_excel寫(xiě)入Excel文件實(shí)操2.Excel文件儲(chǔ)存使用分組聚合進(jìn)行組內(nèi)計(jì)算使用groupby方法拆分?jǐn)?shù)據(jù)該方法提供的是分組聚合步驟中的拆分功能,能根據(jù)索引或字段對(duì)數(shù)據(jù)進(jìn)行分組。其常用參數(shù)與使用格式如下:
DataFrame.groupby(by=None,axis=0,level=None,as_index=True,sort=True,group_keys=True,squeeze=False,**kwargs)GroupBy對(duì)象常用的描述性統(tǒng)計(jì)方法用groupby方法分組后的結(jié)果并不能直接查看,而是被存在內(nèi)存中,輸出的是內(nèi)存地址。實(shí)際上分組后的數(shù)據(jù)對(duì)象GroupBy類(lèi)似Series與DataFrame,是pandas提供的一種對(duì)象。GroupBy對(duì)象常用的描述性統(tǒng)計(jì)方法如下。方法名稱(chēng)說(shuō)明方法名稱(chēng)說(shuō)明count計(jì)算分組的數(shù)目,包括缺失值。cumcount對(duì)每個(gè)分組中組員的進(jìn)行標(biāo)記,0至n-1。head返回每組的前n個(gè)值。size返回每組的大小。max返回每組最大值。min返回每組最小值。mean返回每組的均值。std返回每組的標(biāo)準(zhǔn)差。median返回每組的中位數(shù)。sum返回每組的和。GroupBy對(duì)象常用的描述性統(tǒng)計(jì)方法使用agg方法聚合數(shù)據(jù)agg,aggregate方法都支持對(duì)每個(gè)分組應(yīng)用某函數(shù),包括Python內(nèi)置函數(shù)或自定義函數(shù)。同時(shí)這兩個(gè)方法能夠也能夠直接對(duì)DataFrame進(jìn)行函數(shù)應(yīng)用操作。在正常使用過(guò)程中,agg函數(shù)和aggregate函數(shù)對(duì)DataFrame對(duì)象操作時(shí)功能幾乎完全相同,因此只需要掌握其中一個(gè)函數(shù)即可。它們的參數(shù)說(shuō)明如下表。
DataFrame.agg(func,axis=0,*args,**kwargs)
DataFrame.aggregate(func,axis=0,*args,**kwargs)參數(shù)名稱(chēng)說(shuō)明func接收l(shuí)ist、dict、function。表示應(yīng)用于每行/每列的函數(shù)。無(wú)默認(rèn)。axis接收0或1。代表操作的軸向。默認(rèn)為0。agg方法求統(tǒng)計(jì)量可以使用agg方法一次求出當(dāng)前數(shù)據(jù)中課時(shí)數(shù)和班級(jí)人數(shù)的總和與均值,如df[['課時(shí)數(shù)','班級(jí)人數(shù)']].agg([np.sum,np.mean])。對(duì)于某個(gè)字段希望只做求均值操作,而對(duì)另一個(gè)字段則希望只做求和操作,可以使用字典的方式,將兩個(gè)字段名分別作為key,然后將NumPy庫(kù)的求和與求均值的函數(shù)分別作為value,如df.agg({'課時(shí)數(shù)':np.sum,'班級(jí)人數(shù)':np.mean})。在某些時(shí)候還希望求出某個(gè)字段的多個(gè)統(tǒng)計(jì)量,某些字段則只需要求一個(gè)統(tǒng)計(jì)量,此時(shí)只需要將字典對(duì)應(yīng)key的value變?yōu)榱斜?,列表元素為多個(gè)目標(biāo)的統(tǒng)計(jì)量即可,如detail.agg({'counts':np.sum,'amounts':[np.mean,np.sum]}))agg方法求統(tǒng)計(jì)量使用分組聚合進(jìn)行組內(nèi)計(jì)算(2)agg方法與自定義的函數(shù)在agg方法可傳入自定義的函數(shù)。使用自定義函數(shù)實(shí)現(xiàn)班級(jí)個(gè)數(shù)乘以課時(shí)數(shù):axis=1,針對(duì)這一行進(jìn)行操作;默認(rèn)情況下axis=0,針對(duì)的是這一列使用該函數(shù)agg方法與自定義的函數(shù)使用apply方法聚合數(shù)據(jù)apply方法類(lèi)似agg方法能夠?qū)⒑瘮?shù)應(yīng)用于每一列。不同之處在于apply方法相比agg方法傳入的函數(shù)只能夠作用于整個(gè)DataFrame或者Series,而無(wú)法像agg一樣能夠?qū)Σ煌侄危瑧?yīng)用不同函數(shù)獲取不同結(jié)果。DataFrame.apply(func,axis=0,broadcast=False,raw=False,reduce=None,args=(),**kwds)參數(shù)名稱(chēng)說(shuō)明func接收f(shuō)unctions。表示應(yīng)用于每行/列的函數(shù)。無(wú)默認(rèn)。axis接收0或1。代表操作的軸向。默認(rèn)為0。使用apply方法聚合數(shù)據(jù)使用transform方法聚合數(shù)據(jù)transform方法能夠?qū)φ麄€(gè)DataFrame的所有元素進(jìn)行操作。且transform方法只有一個(gè)參數(shù)“func”,表示對(duì)DataFrame操作的函數(shù)。同時(shí)transform方法還能夠?qū)ataFrame分組后的對(duì)象GroupBy進(jìn)行操作,可以實(shí)現(xiàn)組內(nèi)離差標(biāo)準(zhǔn)化等操作。小結(jié)1、agg、apply、transform三個(gè)函數(shù)都可以實(shí)現(xiàn)聚合數(shù)據(jù)的功能;2、都支持自定義函數(shù);3、agg函數(shù)參數(shù)可以是字典,針對(duì)不同的列使用不同的函數(shù);而apply、transform函數(shù)針對(duì)所有的列都使用同一個(gè)函數(shù)創(chuàng)建透視表使用povit_table函數(shù)創(chuàng)建透視表pivot_table函數(shù)常用參數(shù)及其說(shuō)明利用pivot_table函數(shù)可以實(shí)現(xiàn)透視表,pivot_table()函數(shù)的常用參數(shù)及其使用格式如下:pands.pivot_table(data,values=None,index=None,columns=None,aggfunc='mean',fill_value=None,margins=False,dropna=True,margins_name='All')參數(shù)名稱(chēng)說(shuō)明data接收DataFrame。表示創(chuàng)建表的數(shù)據(jù)。無(wú)默認(rèn)。values接收字符串。用于指定想要聚合的數(shù)據(jù)字段名,默認(rèn)使用全部數(shù)據(jù)。默認(rèn)為None。index接收string或list。表示行分組鍵。默認(rèn)為None。columns接收string或list。表示列分組鍵。默認(rèn)為None。aggfunc接收f(shuō)unctions。表示聚合函數(shù)。默認(rèn)為mean。margins接收boolearn。表示匯總(Total)功能的開(kāi)關(guān),設(shè)為T(mén)rue后結(jié)果集中會(huì)出現(xiàn)名為“ALL”的行和列。默認(rèn)為T(mén)rue。dropna接收boolearn。表示是否刪掉全為NaN的列。默認(rèn)為False。
在不特殊指定聚合函數(shù)aggfunc時(shí),會(huì)默認(rèn)使用numpy.mean進(jìn)行聚合運(yùn)算,numpy.mean會(huì)自動(dòng)過(guò)濾掉非數(shù)值類(lèi)型數(shù)據(jù)。使用povit_table函數(shù)創(chuàng)建透視表可以通過(guò)指定aggfunc參數(shù)修改聚合函數(shù)。使用povit_table函數(shù)創(chuàng)建透視表和groupby方法分組的時(shí)候相同,pivot_table函數(shù)在創(chuàng)建透視表的時(shí)候分組鍵index可以有多個(gè)。使用povit_table函數(shù)創(chuàng)建透視表清洗數(shù)據(jù)檢測(cè)與處理重復(fù)值pandas提供了一個(gè)名為drop_duplicates的去重方法。該方法只對(duì)DataFrame或者Series類(lèi)型有效。這種方法不會(huì)改變數(shù)據(jù)原始排列,該方法不僅支持單一特征的數(shù)據(jù)去重,還能夠依據(jù)DataFrame的其中一個(gè)或者幾個(gè)特征進(jìn)行去重操作。pandas.DataFrame(Series).drop_duplicates(self,subset=None,keep='first',inplace=False)參數(shù)名稱(chēng)說(shuō)明subset接收string或sequence。表示進(jìn)行去重的列。默認(rèn)為None,表示全部列。keep接收特定string。表示重復(fù)時(shí)保留第幾個(gè)數(shù)據(jù)。First:保留第一個(gè)。Last:保留最后一個(gè)。False:只要有重復(fù)都不保留。默認(rèn)為first。inplace接收boolean。表示是否在原表上進(jìn)行操作。默認(rèn)為False。檢測(cè)與處理重復(fù)值檢測(cè)與處理重復(fù)值利用isnull或notnull找到缺失值數(shù)據(jù)中的某個(gè)或某些特征的值是不完整的,這些值稱(chēng)為缺失值。pandas提供了識(shí)別缺失值的方法isnull以及識(shí)別非缺失值的方法notnull,這兩種方法在使用時(shí)返回的都是布爾值True和False。結(jié)合sum函數(shù)和isnull、notnull函數(shù),可以檢測(cè)數(shù)據(jù)中缺失值的分布以及數(shù)據(jù)中一共含有多少缺失值。isnull和notnull之間結(jié)果正好相反,因此使用其中任意一個(gè)都可以判斷出數(shù)據(jù)中缺失值的位置。利用isnull或notnull找到缺失值利用isnull或notnull找到缺失值空值的處理方法1.刪除法pandas中提供了簡(jiǎn)便的刪除缺失值的方法dropnapandas.DataFrame.dropna(self,axis=0,how='any',thresh=None,subset=None,inplace=False)常用參數(shù)及其說(shuō)明如下:參數(shù)名稱(chēng)說(shuō)明axis接收0或1。表示軸向,0為刪除觀測(cè)記錄(行),1為刪除特征(列)。默認(rèn)為0。how接收特定string。表示刪除的形式。any表示只要有缺失值存在就執(zhí)行刪除操作。all表示當(dāng)且僅當(dāng)全部為缺失值時(shí)執(zhí)行刪除操作。默認(rèn)為any。subset接收類(lèi)array數(shù)據(jù)。表示進(jìn)行去重的列∕行。默認(rèn)為None,表示所有列/行。inplace接收boolean。表示是否在原表上進(jìn)行操作。默認(rèn)為False。1.刪除法2.替換法替換法是指用一個(gè)特定的值替換缺失值。pandas庫(kù)中提供了缺失值替換的方法名為fillna,其基本語(yǔ)法如下。pandas.DataFrame.fillna(value=None,method=None,axis=None,inplace=False,limit=None)常用參數(shù)及其說(shuō)明如下:參數(shù)名稱(chēng)說(shuō)明value接收scalar,dict,Series或者DataFrame。表示用來(lái)替換缺失值的值。無(wú)默認(rèn)。method接收特定string。backfill或bfill表示使用下一個(gè)非缺失值填補(bǔ)缺失值。pad或ffill表示使用上一個(gè)非缺失值填補(bǔ)缺失值。默認(rèn)為None。axis接收0或1。表示軸向。默認(rèn)為1。inplace接收boolean。表示是否在原表上進(jìn)行操作。默認(rèn)為False。limit接收int。表示填補(bǔ)缺失值個(gè)數(shù)上限,超過(guò)則不進(jìn)行填補(bǔ)。默認(rèn)為None。2.替換法標(biāo)準(zhǔn)化數(shù)據(jù)離差標(biāo)準(zhǔn)化數(shù)據(jù)
離差標(biāo)準(zhǔn)化是對(duì)原始數(shù)據(jù)的一種線性變換,結(jié)果是將原始數(shù)據(jù)的數(shù)值映射都[0,1]區(qū)間之間,轉(zhuǎn)換公式為:離差標(biāo)準(zhǔn)化數(shù)據(jù)
離差標(biāo)準(zhǔn)化數(shù)據(jù)
標(biāo)準(zhǔn)差標(biāo)準(zhǔn)化數(shù)據(jù)標(biāo)準(zhǔn)差標(biāo)準(zhǔn)化也叫零均值標(biāo)準(zhǔn)化或分?jǐn)?shù)標(biāo)準(zhǔn)化,經(jīng)過(guò)該方法處理的數(shù)據(jù)均值為0,標(biāo)準(zhǔn)差為1,轉(zhuǎn)化公式為:標(biāo)準(zhǔn)差標(biāo)準(zhǔn)化數(shù)據(jù)小數(shù)定標(biāo)標(biāo)準(zhǔn)化數(shù)據(jù)通過(guò)移動(dòng)數(shù)據(jù)的小數(shù)位數(shù),將數(shù)據(jù)映射到區(qū)間[-1,1]之間,移動(dòng)的小數(shù)位數(shù)取決于數(shù)據(jù)絕對(duì)值得最大值。轉(zhuǎn)化公式如下:小數(shù)定標(biāo)標(biāo)準(zhǔn)化數(shù)據(jù)轉(zhuǎn)換與處理時(shí)間序列數(shù)據(jù)轉(zhuǎn)換字符串時(shí)間為標(biāo)準(zhǔn)時(shí)間Timestamp類(lèi)型在多數(shù)情況下,對(duì)時(shí)間類(lèi)型數(shù)據(jù)進(jìn)行分析的前提就是將原本為字符串的時(shí)間轉(zhuǎn)換為標(biāo)準(zhǔn)時(shí)間類(lèi)型。Timestamp類(lèi)常用屬性在多數(shù)涉及時(shí)間相關(guān)的數(shù)據(jù)處理,統(tǒng)計(jì)分析的過(guò)程中,需要提取時(shí)間中的年份,月份等數(shù)據(jù)。使用對(duì)應(yīng)的Timestamp類(lèi)屬性就能夠?qū)崿F(xiàn)這一目的。結(jié)合Python列表推導(dǎo)式,可以實(shí)現(xiàn)對(duì)DataFrame某一列時(shí)間信息數(shù)據(jù)的提取。屬性名稱(chēng)說(shuō)明year年month月day日hour小時(shí)minute分鐘second秒提取時(shí)間中的年份,月份、小時(shí)等數(shù)據(jù)。Timestamp類(lèi)常用屬性加減時(shí)間數(shù)據(jù)Timedelta是時(shí)間相關(guān)的類(lèi)中的一個(gè)異類(lèi),不僅能夠使用正數(shù),還能夠使用負(fù)數(shù)表示單位時(shí)間,例如1秒,2分鐘,3小時(shí)等。使用Timedelta類(lèi),配合常規(guī)的時(shí)間相關(guān)類(lèi)能夠輕松實(shí)現(xiàn)時(shí)間的算術(shù)運(yùn)算。目前Timedelta函數(shù)中時(shí)間周期中沒(méi)有年和月。所有周期名稱(chēng),對(duì)應(yīng)單位及其說(shuō)明如下表所示。周期名稱(chēng)單位說(shuō)明周期名稱(chēng)單位說(shuō)明weeks無(wú)星期secondss秒daysD天millisecondsms毫秒hoursh小時(shí)microsecondsus微妙minutesm分nanosecondsns納秒加減時(shí)間數(shù)據(jù)加減時(shí)間數(shù)據(jù)Pandas訓(xùn)練01練習(xí)011.將下面的字典創(chuàng)建為DataFramedata={"grammer":["Python","C","Java","GO",np.nan,"SQL","PHP","Python"],"score":[1,2,np.nan,4,5,6,7,10]}練習(xí)01——解答練習(xí)022.提取含有字符串"Python"的行3.輸出df的所有列名練習(xí)03練習(xí)044.修改第二列列名為'popularity'練習(xí)055.統(tǒng)計(jì)grammer列中每種編程語(yǔ)言出現(xiàn)的次數(shù)練習(xí)066.將空值用上下值的平均值填充Pandas訓(xùn)練02練習(xí)077.提取popularity列中值大于3的行練習(xí)088.按照grammer列進(jìn)行去除重復(fù)值練習(xí)099.計(jì)算popularity列平均值練習(xí)1010.將grammer列轉(zhuǎn)換為list練習(xí)1111.將popularity列轉(zhuǎn)換為int練習(xí)1212.將DataFrame保存為EXCELPandas訓(xùn)練03練習(xí)1313.查看數(shù)據(jù)行列數(shù)練習(xí)1414.提取popularity列值大于3小于7的行練習(xí)1515.交換兩列位置練習(xí)1616.提取popularity列最大值所在行練習(xí)1717.查看最后5行數(shù)據(jù)練習(xí)1818.刪除最后一行數(shù)據(jù)Pandas訓(xùn)練04練習(xí)1919.添加一行數(shù)據(jù)['Perl',6.6]練習(xí)2020.對(duì)數(shù)據(jù)按照"popularity"列值的大小進(jìn)行排序練習(xí)2121.統(tǒng)計(jì)grammer列每個(gè)字符串的長(zhǎng)度練習(xí)2222.讀取本地EXCEL數(shù)據(jù)練習(xí)2323.將數(shù)據(jù)根據(jù)學(xué)歷進(jìn)行分組并計(jì)算平均薪資練習(xí)2424.新增一列根據(jù)salary將數(shù)據(jù)分為三組Pandas訓(xùn)練05練習(xí)2525.按照salary列對(duì)數(shù)據(jù)降序排列練習(xí)2626.將createTime列設(shè)置為索引練習(xí)2727.將第8行數(shù)據(jù)添加至末尾練習(xí)2828.將salary列類(lèi)型轉(zhuǎn)換為浮點(diǎn)數(shù)練習(xí)2929.查看每種學(xué)歷出現(xiàn)的次數(shù)任務(wù)一
企業(yè)收入的多樣性【題目描述】一個(gè)企業(yè)的產(chǎn)業(yè)收入多樣性可以仿照信息熵的概念來(lái)定義收入熵指標(biāo):I=?∑i
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 有關(guān)幼兒園的小班月工作計(jì)劃總結(jié)計(jì)劃
- 2024年物流合作保險(xiǎn)法律保障詳盡協(xié)議版B版
- 買(mǎi)賣(mài)合同錦集六篇
- 2024年?duì)I養(yǎng)強(qiáng)化劑項(xiàng)目深度研究分析報(bào)告
- 服裝銷(xiāo)售店長(zhǎng)工作計(jì)劃
- 九年級(jí)計(jì)劃作文600字
- 家長(zhǎng)會(huì)發(fā)言稿集錦15篇
- 管理類(lèi)實(shí)習(xí)經(jīng)驗(yàn)報(bào)告畢業(yè)生
- 一周工作計(jì)劃模板
- 年產(chǎn)12000噸十二烷基苯磺酸鈉(濃縮洗衣粉)提升改造項(xiàng)目環(huán)評(píng)報(bào)告表
- 2024年全國(guó)《國(guó)防和兵役》理論知識(shí)競(jìng)賽試題庫(kù)與答案
- 企業(yè)知識(shí)產(chǎn)權(quán)保護(hù)策略及實(shí)施方法研究報(bào)告
- 2024年07月11026經(jīng)濟(jì)學(xué)(本)期末試題答案
- 2024年中小企業(yè)股權(quán)融資合同3篇
- 2024年01月11289中國(guó)當(dāng)代文學(xué)專(zhuān)題期末試題答案
- 2024年秋季生物教研組工作計(jì)劃
- 2024年云南高中學(xué)業(yè)水平合格考?xì)v史試卷真題(含答案詳解)
- 2025年董事長(zhǎng)年會(huì)發(fā)言稿范文
- 醫(yī)院廉潔購(gòu)銷(xiāo)合同
- 車(chē)間設(shè)備線路安裝方案
- 檢驗(yàn)科各專(zhuān)業(yè)組上崗輪崗培訓(xùn)考核制度全6頁(yè)
評(píng)論
0/150
提交評(píng)論