版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
浙江《大數(shù)據(jù)基礎(chǔ)》.移動商務(wù)營銷課程群4.3.1Scala簡介4.3.3Scala語法基礎(chǔ)4.3Scala語言4.3.2Scala安裝與使用編程基礎(chǔ)大數(shù)據(jù)大數(shù)據(jù)基礎(chǔ)Unit44.3.3Scala語法基礎(chǔ)1變量與常量Scala是一種靜態(tài)類型語言,支持變量和常量的聲明和定義。在Scala中,變量可以用var關(guān)鍵字聲明,常量則是用val關(guān)鍵字聲明,常量一旦被賦值就不能再修改。聲明變量和常量的語法格式如下:var變量名:數(shù)據(jù)類型[=初始值]val常量名:數(shù)據(jù)類型[=初始值]4.3.3Scala語法基礎(chǔ)1變量與常量valage:Int=25//聲明一個val(常量)//age=30//這行代碼會報錯,因?yàn)闊o法改變age的值varname:String="張三"http://聲明一個var(變量)name="李四"http://可以改變name的值指定類型聲明變量和常量valpi=3.14//推斷為Double類型vargreeting="Hello,world!"http://推斷為String類型自動推斷類型聲明變量和常量4.3.3Scala語法基礎(chǔ)2數(shù)據(jù)類型整型(Int):表示整數(shù)值,取值范圍為-2^31~2^31-1。長整型(Long):表示更大范圍的整數(shù)值,取值范圍為-2^63~2^63-1。浮點(diǎn)型(Float):表示帶小數(shù)部分的實(shí)數(shù)值,占用32位空間。雙精度浮點(diǎn)型(Double):表示更高精度的實(shí)數(shù)值,占用64位空間。布爾型(Boolean):表示邏輯上的真或假。字符型(Char):表示單個字符,使用單引號括起來。字符串型(String):表示一組字符,使用雙引號括起來。4.3.3Scala語法基礎(chǔ)2數(shù)據(jù)類型varage:Int=25//聲明一個整型變量varbigNumber:Long=123456789012345L//聲明一個長整型變量varpi:Float=3.14f//聲明一個浮點(diǎn)型變量vare:Double=2.71828//聲明一個雙精度浮點(diǎn)型變量varisScalaFun:Boolean=true//聲明一個布爾型變量varfirstLetter:Char='S'//聲明一個字符型變量vargreeting:String="Hello,world!"http://聲明一個字符串型變量4.3.3Scala語法基礎(chǔ)3運(yùn)算符——算術(shù)運(yùn)算算術(shù)運(yùn)算符覆蓋加(+)、減(-)、乘(*)、除(/)、求余(%)等幾種運(yùn)算,下面是這些運(yùn)算符的示例代碼:vala=10;valb=20valsum=a+b//加法運(yùn)算,sum的值為30valdiff=b-a//減法運(yùn)算,diff的值為10valproduct=a*b//乘法運(yùn)算,product的值為200valquotient=a/b//除法運(yùn)算,quotient的值為0,整除valremainder=a%b//求余運(yùn)算,remainder的值為104.3.3Scala語法基礎(chǔ)3運(yùn)算符——比較運(yùn)算比較運(yùn)算符覆蓋相等(==)、不等(!=)、大于(>)、小于(<)、大于等于(>=)、小于等于(<=)等幾種運(yùn)算,下面是這些運(yùn)算符的示例代碼:vala=10;valb=20;valc=10valisEqual=a==b//isEqual的值為falsevalisNotEqual=a!=b//isNotEqual的值為truevalisGreaterThan=b>a//isGreaterThan的值為truevalisLessThan=a<b//isLessThan的值為truevalisGreaterOrEqual=b>=a//isGreaterOrEqual的值為truevalisLessOrEqual=c<=b//isLessOrEqual的值為true4.3.3Scala語法基礎(chǔ)3運(yùn)算符——邏輯運(yùn)算邏輯運(yùn)算符覆蓋與(&&)、或(||)、非(!)三種運(yùn)算,下面是這些運(yùn)算符的示例代碼:vala=true;valb=falsevalresult=a&&b//result的值為falsevalresult=a||b//result的值為truevalresult=!a//result的值為false4.3.3Scala語法基礎(chǔ)4選擇語句——if語句if語句用于根據(jù)給定的條件決定是否執(zhí)行某段代碼。如果條件為真,則執(zhí)行語句塊;否則不執(zhí)行。valx=10if(x<20){println("x小于20")//條件滿足,輸出該文本}4.3.3Scala語法基礎(chǔ)4選擇語句——if-else語句if-else語句用于根據(jù)給定的條件執(zhí)行不同的代碼塊。如果條件為真,則執(zhí)行if語句塊;否則執(zhí)行else語句塊。valx=10if(x<20){println("x小于20")//條件滿足,輸出該文本}else{println("x大于等于20")//條件不滿足,不輸出}4.3.3Scala語法基礎(chǔ)4選擇語句——if-else語句嵌套通過if-else語句嵌套處理,程序可以在多個條件之間進(jìn)行判斷和選擇,并根據(jù)不同的條件執(zhí)行不同的代碼塊。valx=10if(x<0){println("x是負(fù)數(shù)")}elseif(x==0){println("x等于0")}else{println("x是正數(shù)")}4.3.3Scala語法基礎(chǔ)5循環(huán)語句——while循環(huán)while循環(huán)語句用于在給定條件為true時執(zhí)行某個代碼塊,當(dāng)條件不再為true時,停止執(zhí)行。vari=0while(i<10){println(i)i+=1}4.3.3Scala語法基礎(chǔ)5循環(huán)語句——do-while循環(huán)do-while循環(huán)與while循環(huán)類似,不同之處在于do-while循環(huán)至少會執(zhí)行一次代碼塊,然后再根據(jù)給定條件決定是否繼續(xù)執(zhí)行。vari=0do{println(i)i+=1}while(i<10)4.3.3Scala語法基礎(chǔ)5循環(huán)語句——for循環(huán)for循環(huán)用于迭代集合中的元素,并重復(fù)執(zhí)行特定的代碼塊。在Scala中,for循環(huán)可以遍歷數(shù)組、列表、集合等類型的數(shù)據(jù)結(jié)構(gòu)。vallist=List(1,2,3,4,5)for(num<-list){println(num)}4.3.3Scala語法基礎(chǔ)6Scala大數(shù)據(jù)應(yīng)用——操作步驟進(jìn)入Linux系統(tǒng),打開“終端”,進(jìn)入Shell命令提示符狀態(tài)。在“/usr/local/scala/bigdata”目錄下,新建一個wordcount子目錄在“/usr/local/scala/bigdata/wordcount”目錄下新建兩個文本文件word1.txt和word2.txt,在兩個文本文件中隨意輸入一些單詞,用空格隔開。在“/usr/local/scala/bigdata”目錄下新建一個test.scala文件,并在test.scala中編寫詞頻統(tǒng)計的Scala程序代碼。Scala進(jìn)行詞頻統(tǒng)計4.3.3Scala語法基礎(chǔ)6Scala大數(shù)據(jù)應(yīng)用——總體思路importjava.io.Fileimportscala.io.SourceobjectWordCount{defmain(args:Array[String]):Unit={//1、讀取文件、設(shè)置分詞結(jié)果存儲變量
//2、遍歷文件、切分單詞并記錄數(shù)量
//3、輸出分詞結(jié)果}}4.3.3Scala語法基礎(chǔ)6Scala大數(shù)據(jù)應(yīng)用——步驟1代碼valdirfile=newFile("/usr/local/scala/bigdata/wordcount")valfiles=dirfile.listFilesfor(file<-files)println(file)vallistFiles=files.toListvalwordsMap=scala.collection.mutable.Map[String,Int]()讀取文件、設(shè)置分詞結(jié)果存儲變量。4.3.3Scala語法基礎(chǔ)6Scala大數(shù)據(jù)應(yīng)用——步驟2代碼對列表listFiles中的每個元素進(jìn)行遍歷,取出每個文件,并調(diào)用getLines()方法獲取該文件的所有行,并針對每行執(zhí)行foreach()方法進(jìn)行遍歷使用split()方法把一行語句切分成一個個單詞,這些單詞又構(gòu)成一個集合,然后對這個集合中的每個元素,也就是每個單詞,又通過foreach()方法進(jìn)行遍歷,對于遍歷到的每個單詞進(jìn)行計數(shù),存儲在Map中l(wèi)istFiles.foreach(file=>Source.fromFile(file).getLines().foreach(line=>line.split("").foreach(word=>{if(wordsMap.contains(word)){wordsMap(word)+=1}else{wordsMap+=(word->1)}})))4.3.3Scala語法基礎(chǔ)6Scala大數(shù)據(jù)應(yīng)用——步驟3代碼與執(zhí)行println(wordsMap)for((key,value)<-wordsMap)println(key+":"+value)輸出分詞結(jié)果的代碼如下。cd/usr/local/scala/bigdata//要確保當(dāng)前工作目錄是bigdata目錄scalatest.scala程序編寫完成后,在Shell命令提示符狀態(tài)下,運(yùn)行下面命令執(zhí)行程序即可?!洞髷?shù)據(jù)基礎(chǔ)》在線開放課程組《大數(shù)據(jù)基礎(chǔ)》.移動商務(wù)營銷課程群浙江訓(xùn)練4-1單元4Python語言店鋪寶貝價格排序訓(xùn)練同步BigdataHadoop大數(shù)據(jù)基礎(chǔ)pythonUnit4《大數(shù)據(jù)基礎(chǔ)》.移動商務(wù)營銷課程群訓(xùn)練4-1:店鋪寶貝價格排序案例目標(biāo)用戶輸入多個淘寶店鋪寶貝的價格,程序?qū)斎氲膬r格數(shù)據(jù)進(jìn)行處理,要求價格數(shù)據(jù)以升序形式輸出。案例解釋在一行內(nèi)輸入多個寶貝價格數(shù)值(正整數(shù)),使用冒泡排序等排序算法對價格數(shù)據(jù)進(jìn)行處理,并輸出排序后數(shù)據(jù)。運(yùn)行效果實(shí)現(xiàn)思路基本步驟按實(shí)訓(xùn)要求創(chuàng)建工程并配置環(huán)境。接收用戶控制臺輸入的多個價格:(1)定義列表變量用于保存價格數(shù)據(jù)。(2)使用input方法接受用戶控制臺的輸入(一行輸入所有價格)。(3)拆分輸入字符串,轉(zhuǎn)化成價格字符串列表。(4)循環(huán)將各個價格轉(zhuǎn)化為整數(shù),將獲取的數(shù)值存儲入價格列表中。升序排序思路:(1)思路:每次排序從左至右依次比較相鄰兩個列表元素,若左側(cè)元素(下標(biāo)較?。┍扔覀?cè)元素(下標(biāo)較大)大,則交換兩者位置,直至把本次待比較數(shù)據(jù)中的最大者置右。每次排序都確定本次排序數(shù)據(jù)中的最大者,并使下一次待排序數(shù)據(jù)個數(shù)減少1個。訓(xùn)練4-1:店鋪寶貝價格排序運(yùn)行效果實(shí)現(xiàn)思路基本步驟(2)例:對寶貝價格數(shù)列:418937進(jìn)行升序排序,方法和過程如下:訓(xùn)練4-1:店鋪寶貝價格排序運(yùn)行效果實(shí)現(xiàn)思路基本步驟實(shí)現(xiàn)列表升序排序(冒泡排序):(1)創(chuàng)建用于遍歷列表的外層for循環(huán)(設(shè)循環(huán)變量為i):1)循環(huán)范圍:0~列表長度-2。(2)創(chuàng)建用于按大小關(guān)系交換列表成員的內(nèi)層for循環(huán)(設(shè)循環(huán)變量為j):1)循環(huán)范圍:0~列表長度-i-2。2)說明:循環(huán)范圍的設(shè)計目的是,確保每次排序中相鄰元素的比較次數(shù)。(3)依次判斷當(dāng)前列表成員(prices[j])是否大于右側(cè)相鄰列表成員(prices[j+1])。(4)如果prices[j]>prices[j+1],那么交換兩個列表成員。訓(xùn)練4-1:店鋪寶貝價格排序運(yùn)行效果實(shí)現(xiàn)思路基本步驟輸出結(jié)果:(1)向控制臺輸出:“排序后寶貝價格:”。(2)向控制臺輸出列表中的數(shù)據(jù),數(shù)據(jù)間通過空格間隔,
并在一行中顯示。訓(xùn)練4-1:店鋪寶貝價格排序《大數(shù)據(jù)基礎(chǔ)》在線開放課程組《大數(shù)據(jù)基礎(chǔ)》.移動商務(wù)營銷課程群《大數(shù)據(jù)基礎(chǔ)》.移動商務(wù)營銷課程群5.1.1數(shù)據(jù)采集原理5.1數(shù)據(jù)采集5.1.2BeautifulSoup網(wǎng)絡(luò)
數(shù)據(jù)采集與預(yù)處理數(shù)據(jù)采集大數(shù)據(jù)基礎(chǔ)Unit5
為什么需要數(shù)據(jù)采集特征:隨著人類活動的擴(kuò)展,數(shù)據(jù)規(guī)模在急劇膨脹,數(shù)據(jù)類型也越來越多。需求:數(shù)據(jù)需要以簡單的方式進(jìn)行處理,又要十分準(zhǔn)確且能迅速滿足各種類型的數(shù)據(jù)需求。挑戰(zhàn):在大量分散的、異構(gòu)的數(shù)據(jù)中收集需要的數(shù)據(jù),以相對統(tǒng)一的方式存儲。這也就是數(shù)據(jù)采集的任務(wù)。5.1.1數(shù)據(jù)采集原理系統(tǒng)日志采集工具很多互聯(lián)網(wǎng)企業(yè)都有數(shù)據(jù)采集工具,多用于系統(tǒng)日志采集,如Flume,Kafka,Chukwa等,這些工具均采用分布式架構(gòu),能滿足每秒數(shù)百M(fèi)B的日志數(shù)據(jù)采集和傳輸需求。
5.1.1數(shù)據(jù)采集原理系統(tǒng)日志采集工具——FlumeFlume是一種分布式、可靠和可用的服務(wù),用于高效地收集、聚合和移動大量日志數(shù)據(jù)。比如,將日志數(shù)據(jù)從各種網(wǎng)站服務(wù)器上匯集起來存儲到HDFS、HBase等集中存儲器中。
5.1.1數(shù)據(jù)采集原理
網(wǎng)絡(luò)數(shù)據(jù)采集工具需求:通過網(wǎng)絡(luò)爬蟲和一些網(wǎng)站平臺提供的公共API等方式從網(wǎng)站上獲取數(shù)據(jù)。方法:將非結(jié)構(gòu)化數(shù)據(jù)和半結(jié)構(gòu)化數(shù)據(jù)的網(wǎng)頁數(shù)據(jù)從網(wǎng)頁中提取出來。并將其提取、清洗、轉(zhuǎn)換成結(jié)構(gòu)化的數(shù)據(jù),將其存儲為統(tǒng)一的本地文件數(shù)據(jù)。工具:用于網(wǎng)頁爬蟲的ApacheNutch、Scrapy等框架,另外有諸如BeautifulSoup、urllib、requests等底層工具包。5.1.1數(shù)據(jù)采集原理
網(wǎng)絡(luò)數(shù)據(jù)采集流程5.1.1數(shù)據(jù)采集原理《大數(shù)據(jù)基礎(chǔ)》在線開放課程組《大數(shù)據(jù)基礎(chǔ)》.移動商務(wù)營銷課程群《大數(shù)據(jù)基礎(chǔ)》.移動商務(wù)營銷課程群5.1.1數(shù)據(jù)采集原理5.1數(shù)據(jù)采集5.1.2BeautifulSoup網(wǎng)絡(luò)
數(shù)據(jù)采集與預(yù)處理數(shù)據(jù)采集大數(shù)據(jù)基礎(chǔ)Unit5
BeautifulSoup簡介BeautifulSoup提供一些簡單的、Python式的函數(shù)用來處理導(dǎo)航、搜索、修改分析樹等功能。它是一個工具箱,通過解析文檔為用戶提供需要抓取的數(shù)據(jù),因?yàn)楹唵?,所以不需要多少代碼就可以寫出一個完整的應(yīng)用程序。Anaconda已經(jīng)安裝了BeautifulSoup包,程序中導(dǎo)入包就可以直接使用。frombs4importBeautifulSoup5.1.2BeautifulSoup網(wǎng)絡(luò)數(shù)據(jù)采集
獲取網(wǎng)頁內(nèi)容
網(wǎng)頁的原始內(nèi)容可以使用requests包的get方法獲取,在設(shè)置了編碼之后就能獲得html文本。而解析html文本的結(jié)構(gòu),獲取指定的元素標(biāo)簽內(nèi)容,這部分工作則可以通過BeautifulSoup實(shí)現(xiàn)。
下例獲取百度首頁內(nèi)容importrequests#導(dǎo)入requests包res=requests.get('')#獲取網(wǎng)頁內(nèi)容res.encoding='utf-8'#設(shè)置編碼格式html=res.text#獲取網(wǎng)頁文本print(html)5.1.2BeautifulSoup網(wǎng)絡(luò)數(shù)據(jù)采集
練習(xí)材料說明
為例便于講解BeautifulSoup包的功能,本節(jié)不使用真實(shí)網(wǎng)頁數(shù)據(jù)進(jìn)行練習(xí),而是使用以下html文本,文本存放在test_html.txt中。html="""<html><head><title>TheDormouse'sstory</title></head><body><pclass="title"name="dromouse"><b>TheDormouse'sstory</b></p><pclass="story">Thereweretwolittlesisters;andtheirnameswere<ahref="/elsie"class="sister"id="link1">Elsie</a>and<ahref="/lacie"class="sister"id="link2">Lacie</a>.</p><pclass="story">...</p>"""5.1.2BeautifulSoup網(wǎng)絡(luò)數(shù)據(jù)采集
創(chuàng)建BeautifulSoup對象
使用html.parser解析html文本內(nèi)容,創(chuàng)建BeautifulSoup對象。frombs4importBeautifulSoupsoup=BeautifulSoup(html,'html.parser')5.1.2BeautifulSoup網(wǎng)絡(luò)數(shù)據(jù)采集
根據(jù)標(biāo)簽名查找BeautifulSoup提供的select方法可以根據(jù)CSS選擇器查找元素標(biāo)簽。查找結(jié)果存放在列表中,列表的每一個元素為匹配的元素標(biāo)簽,如果要訪問標(biāo)簽可以使用列表的下標(biāo)引用。
直接傳遞標(biāo)簽名給select方法,可以查找所有標(biāo)簽名相符的元素。soup.select('a')#查找所有a標(biāo)簽,結(jié)果為標(biāo)簽列表5.1.2BeautifulSoup網(wǎng)絡(luò)數(shù)據(jù)采集
根據(jù)class或id查找
傳遞’.<class>’參數(shù)時,BeautifulSoup根據(jù)class屬性進(jìn)行查找;傳遞’#<id>’參數(shù)時,BeautifulSoup根據(jù)id屬性進(jìn)行查找。soup.select('.sister')5.1.2BeautifulSoup網(wǎng)絡(luò)數(shù)據(jù)采集soup.select('#linke1')
根據(jù)上下級關(guān)系查找當(dāng)查找條件之間用空格分隔時,以普通上下級關(guān)系進(jìn)行查找;當(dāng)查找條件之間以空格大于號空格分隔時,以直接上下級關(guān)系進(jìn)行查找。soup.select('body#link1')5.1.2BeautifulSoup網(wǎng)絡(luò)數(shù)據(jù)采集soup.select('p>a')
獲取標(biāo)簽的內(nèi)容
經(jīng)過查找得到元素標(biāo)簽列表后,使用下標(biāo)或迭代可以取出標(biāo)簽。然后可以進(jìn)一步訪問標(biāo)簽的內(nèi)容,如文本、鏈接等。soup.select('a')[0]5.1.2BeautifulSoup網(wǎng)絡(luò)數(shù)據(jù)采集>>>soup.select('a')[0].text#獲取文本'Elsie‘>>>soup.select('a')[0]['href']#獲取鏈接'/elsie'《大數(shù)據(jù)基礎(chǔ)》在線開放課程組《大數(shù)據(jù)基礎(chǔ)》.移動商務(wù)營銷課程群《大數(shù)據(jù)基礎(chǔ)》.移動商務(wù)營銷課程群5.2.1數(shù)據(jù)預(yù)處理原理5.2數(shù)據(jù)預(yù)處理5.2.2Pandas數(shù)據(jù)預(yù)處理與預(yù)處理數(shù)據(jù)采集大數(shù)據(jù)基礎(chǔ)Unit5
數(shù)據(jù)預(yù)處理的意義與方法5.2.1數(shù)據(jù)預(yù)處理原理原始數(shù)據(jù)不一致重復(fù)不完整含噪聲高維度數(shù)據(jù)預(yù)處理方法數(shù)據(jù)清洗數(shù)據(jù)集成數(shù)據(jù)變換數(shù)據(jù)歸約
數(shù)據(jù)清洗5.2.1數(shù)據(jù)預(yù)處理原理干凈數(shù)據(jù)填充空值、丟失值消除異常數(shù)據(jù)平滑噪聲數(shù)據(jù)去掉數(shù)據(jù)中的噪音糾正不一致的數(shù)據(jù)
數(shù)據(jù)集成5.2.1數(shù)據(jù)預(yù)處理原理模式匹配整合不同數(shù)據(jù)源中的元數(shù)據(jù)。數(shù)據(jù)冗余數(shù)據(jù)中存在的直接冗余和間接冗余。數(shù)據(jù)值沖突對于一個現(xiàn)實(shí)世界實(shí)體,其來自不同數(shù)據(jù)源的屬性值或許不同。
數(shù)據(jù)變換5.2.1數(shù)據(jù)預(yù)處理原理光滑去除數(shù)據(jù)中的噪聲聚集對數(shù)據(jù)進(jìn)行匯總或聚集數(shù)據(jù)泛化使用概念分層,用高層概念替換低層或“原始”數(shù)據(jù)規(guī)范化將屬性數(shù)據(jù)按比例縮放,使之落入一個小的特定區(qū)間屬性構(gòu)造可以構(gòu)造新的屬性并添加到屬性集中,以幫助挖掘過程
數(shù)據(jù)規(guī)約5.2.1數(shù)據(jù)預(yù)處理原理特征歸約從原有的特征中刪除不重要或不相關(guān)的特征,或者通過對特征進(jìn)行重組來減少特征的個數(shù)。樣本歸約從數(shù)據(jù)集中選出一個有代表性的樣本的子集,從而減少成本、加快速度、拓寬范圍、甚至提高精度。征值歸約特將連續(xù)型特征的值離散化,使之成為少量的區(qū)間,每個區(qū)間映射到一個離散符號?!洞髷?shù)據(jù)基礎(chǔ)》在線開放課程組《大數(shù)據(jù)基礎(chǔ)》.移動商務(wù)營銷課程群《大數(shù)據(jù)基礎(chǔ)》.移動商務(wù)營銷課程群5.2.1數(shù)據(jù)預(yù)處理原理5.2數(shù)據(jù)預(yù)處理5.2.2Pandas數(shù)據(jù)預(yù)處理與預(yù)處理數(shù)據(jù)采集大數(shù)據(jù)基礎(chǔ)Unit5
Pandas簡介Pandas是Python的一個數(shù)據(jù)分析包,Pandas中引入了兩種新的數(shù)據(jù)結(jié)構(gòu):一維數(shù)組類型Series、二維表格類型DataFrame。Anaconda已經(jīng)為我們安裝好了Pandas,使用的時候只需要直接import就可以了。導(dǎo)入命令:importpandasaspd#導(dǎo)入pandas,并取個別名pd5.2.2Pandas數(shù)據(jù)預(yù)處理
練習(xí)用數(shù)據(jù)文件商品編號名稱產(chǎn)地進(jìn)價售價30101蘋果新疆5630101蘋果新疆5625211書包6010030102水晶梨浙江45.5商品編號名稱產(chǎn)地進(jìn)價售價30132鳳梨廣東7913704滑板車上海150200商品編號庫存301011002521130301028030132401370415商品信息1.xlsx商品信息2.xlsx商品信息3.xlsx5.2.2Pandas數(shù)據(jù)預(yù)處理
讀取數(shù)據(jù)文件Pandas提供了讀取Excel文件的方法read_excel,參數(shù)中傳遞文件路徑即可讀取文件內(nèi)容,并返回DataFrame類型的二維數(shù)據(jù)。
在數(shù)據(jù)文件存放路徑新建程序文件data_preprocessing.py,在程序文件中添加以下代碼讀取數(shù)據(jù)。importpandasaspditem1=pd.read_excel('商品信息1.xlsx')item2=pd.read_excel('商品信息2.xlsx')item3=pd.read_excel('商品信息3.xlsx')print(item1)5.2.2Pandas數(shù)據(jù)預(yù)處理
重復(fù)值處理item1的前兩行內(nèi)容重復(fù),可以使用Pandas的drop_duplicates方法去除重復(fù)項。item_drop_dup=item1.drop_duplicates()print(item_drop_dup)5.2.2Pandas數(shù)據(jù)預(yù)處理
刪除缺失值item_drop_dup的第2行的產(chǎn)地列部分內(nèi)容缺失,Pandas提供了直接刪除缺失行/列的方法,使用dropna方法去除缺失項。item_dropna=item_drop_dup.dropna(axis=1)#axis=1表示刪除列,0表示刪除行print(item_dropna)5.2.2Pandas數(shù)據(jù)預(yù)處理
填充缺失值item_drop_dup的第2行的產(chǎn)地列部分內(nèi)容缺失,除了dropna方法,還可以使用fillna方法填充缺失值,如下例直接填充固定值。item_fillna=item_drop_dup.fillna('未知')print(item_fillna)5.2.2Pandas數(shù)據(jù)預(yù)處理
字段抽取
商品編號中包含了商品品類信息,如30101的前3個字段表示品類。下面從item_drop_dup的商品編號截取字段,添加品類項。item_no=item_drop_dup['商品編號'].astype(str)#astype轉(zhuǎn)換數(shù)據(jù)類型為stritem_drop_dup['品類']=item_no.str.slice(0,3)#截取前三個字段5.2.2Pandas數(shù)據(jù)預(yù)處理
記錄抽取item_fillna數(shù)據(jù)中有多種商品信息,可以通過條件篩選取得進(jìn)價在5元以上的商品信息。item_filter=item_fillna[item_fillna['進(jìn)價']>=5]print(item_filter)5.2.2Pandas數(shù)據(jù)預(yù)處理《大數(shù)據(jù)基礎(chǔ)》在線開放課程組《大數(shù)據(jù)基礎(chǔ)》.移動商務(wù)營銷課程群《大數(shù)據(jù)基礎(chǔ)》.移動商務(wù)營銷課程群5.2.1數(shù)據(jù)預(yù)處理原理5.2數(shù)據(jù)預(yù)處理5.2.2Pandas數(shù)據(jù)預(yù)處理與預(yù)處理數(shù)據(jù)采集大數(shù)據(jù)基礎(chǔ)Unit5
按值排序item_fillna數(shù)據(jù)中有多種商品信息分布無序,可以通過排序進(jìn)行重新整理。item_sorted=item_fillna.sort_values(by='進(jìn)價',ascending=False)#by使用指定列的值進(jìn)行排序,ascending指定排序方向5.2.2Pandas數(shù)據(jù)預(yù)處理
記錄合并item_fillna和item2兩組數(shù)據(jù)有不同商品信息,可以進(jìn)行合并處理。item_concat=pd.concat([item_fillna,item2])#合并兩組商品信息print(item_concat)5.2.2Pandas數(shù)據(jù)預(yù)處理
字段匹配合并item_concat和item3兩組數(shù)據(jù)有不同的列屬性,可以進(jìn)行合并處理。item_merge=pd.merge(left=item_concat,right=item3,
left_on='商品編號',right_on='商品編號')5.2.2Pandas數(shù)據(jù)預(yù)處理
簡單計算item_merge中的進(jìn)價和庫存,可以簡單計算求得總成本。item_merge['總成本']=item_merge['進(jìn)價']*item_merge['庫存']print(item_merge)5.2.2Pandas數(shù)據(jù)預(yù)處理
數(shù)據(jù)標(biāo)準(zhǔn)化item_merge不同商品的庫存,可以進(jìn)行標(biāo)準(zhǔn)化處理。標(biāo)準(zhǔn)化是指將數(shù)據(jù)按照比例縮放,使之落入特定的區(qū)間,一般使用0-1標(biāo)準(zhǔn)化。公式如:X=(x-min)/(max-min)max_,min_=item_merge['庫存'].max(),item_merge['庫存'].min()item_scaled=(item_merge['庫存']-min_)/(max_-min_)#標(biāo)準(zhǔn)化fororigin,scaledinzip(item_merge['庫存'],item_scaled):print('{:>3d}->{:<5.2f}'.format(origin,scaled))#對比顯示5.2.2Pandas數(shù)據(jù)預(yù)處理
數(shù)據(jù)分組item_merge中庫存可以按段進(jìn)行劃分,即數(shù)據(jù)分組。數(shù)據(jù)分組:根據(jù)數(shù)據(jù)分析對象的特征,按照一定的數(shù)據(jù)指標(biāo),把數(shù)據(jù)劃分為不同的區(qū)間來進(jìn)行研究,以揭示其內(nèi)在的聯(lián)系和規(guī)律性。bins=[0,40,80,1000]#切分區(qū)間lbl=['少','正常','多']#[0-40)為少,[40-80)為正常,[80-1000)為多item_cut=pd.cut(item_merge['庫存'],bins,right=False,labels=lbl)fororigin,cutinzip(item_merge['庫存'],item_cut):print('{:>3d}->{}'.format(origin,cut))#對比顯示5.2.2Pandas數(shù)據(jù)預(yù)處理《大數(shù)據(jù)基礎(chǔ)》在線開放課程組《大數(shù)據(jù)基礎(chǔ)》.移動商務(wù)營銷課程群訓(xùn)練5-1單元5數(shù)據(jù)采集與預(yù)處理爬取二手房網(wǎng)站數(shù)據(jù)訓(xùn)練同步BigdataHadoop大數(shù)據(jù)基礎(chǔ)pythonUnit5《大數(shù)據(jù)基礎(chǔ)》.移動商務(wù)營銷課程群訓(xùn)練5-1:爬取二手房網(wǎng)站數(shù)據(jù)案例目標(biāo)程序訪問二手房網(wǎng)站的房源信息頁面,自動抓取最新的二手房信息并進(jìn)行存儲。案例解釋使用BeautifulSoup抓取網(wǎng)頁數(shù)據(jù),內(nèi)容涉及二手房的小區(qū)、戶型、面積、單價、總價及鏈接。運(yùn)行效果訓(xùn)練5-1:爬取二手房網(wǎng)站數(shù)據(jù)運(yùn)行效果實(shí)現(xiàn)思路基本步驟按實(shí)訓(xùn)要求創(chuàng)建工程并配置環(huán)境。導(dǎo)入項目中用到的BeautifulSoup、requests、pandas包。二手房鏈接,:5000,獲取網(wǎng)頁內(nèi)容并解碼為文本格式,之后用html.parser解析為BeautifulSoup對象。使用瀏覽器的檢查功能找到最新二手房列表對應(yīng)的標(biāo)簽?zāi)J?。使用BeautifulSoup的select方法獲取元素標(biāo)簽列表,與網(wǎng)頁內(nèi)容進(jìn)行對比驗(yàn)證。進(jìn)一步使用select方法解析出第一套二手房的各項屬性值。迭代處理所有30套二手房信息,將結(jié)果存放在列表中。將數(shù)據(jù)轉(zhuǎn)換為DataFrame類型,使用to_excel方法存儲數(shù)據(jù)。訓(xùn)練5-1:爬取二手房網(wǎng)站數(shù)據(jù)《大數(shù)據(jù)基礎(chǔ)》在線開放課程組《大數(shù)據(jù)基礎(chǔ)》.移動商務(wù)營銷課程群與挖掘數(shù)據(jù)分析大數(shù)據(jù)基礎(chǔ)Unit6《大數(shù)據(jù)基礎(chǔ)》.移動商務(wù)營銷課程群6.1.1數(shù)據(jù)分析簡介6.1.2數(shù)據(jù)挖掘簡介6.1.3pandas數(shù)據(jù)分析6.1數(shù)據(jù)分析與挖掘簡介6.1.1數(shù)據(jù)分析簡介1數(shù)據(jù)分析的定義數(shù)據(jù)分析是指用適當(dāng)?shù)慕y(tǒng)計分析方法對收集來的大量數(shù)據(jù)進(jìn)行分析,提取有用信息和形成結(jié)論而對數(shù)據(jù)加以詳細(xì)研究和概括總結(jié)的過程。
數(shù)據(jù)分析的數(shù)學(xué)基礎(chǔ)在20世紀(jì)早期就已確立,但直到計算機(jī)的出現(xiàn)才使得實(shí)際操作成為可能,并使得數(shù)據(jù)分析得以推廣。6.1.1數(shù)據(jù)分析簡介2數(shù)據(jù)分析的分類
按統(tǒng)計學(xué)領(lǐng)域劃分
描述性數(shù)據(jù)分析、探索性數(shù)據(jù)分析以及驗(yàn)證性數(shù)據(jù)分析。
描述性數(shù)據(jù)分析屬于初級數(shù)據(jù)分析,常見的分析方法有對比分析法、平均分析法、交叉分析法。在日常學(xué)習(xí)和工作中涉及的數(shù)據(jù)分析主要是描述性數(shù)據(jù)分析。
探索性分析和驗(yàn)證性分析屬于高級數(shù)據(jù)分析,常見的分析方法有相關(guān)分析、因子分析、回歸分析等。探索性分析側(cè)重于在數(shù)據(jù)中發(fā)現(xiàn)新的特征,驗(yàn)證性數(shù)據(jù)分析側(cè)重于驗(yàn)證已有假設(shè)的真?zhèn)巫C明。6.1.1數(shù)據(jù)分析簡介3數(shù)據(jù)分析的作用(1)現(xiàn)狀分析(2)原因分析(3)預(yù)測分析就是告訴你過去發(fā)生了什么,一般通過日常通報完成,如日報、周報、月報等,開展頻率頻繁。就是在現(xiàn)狀分析的基礎(chǔ)上,就某一個特定現(xiàn)狀為什么發(fā)生而發(fā)起的分析。比如:某年的2月份運(yùn)營收入環(huán)比下降5%,是什么原因?qū)е碌??就是告訴你將來會發(fā)生什么。通常用于制定企業(yè)季度、年度計劃等。開展頻率低。6.1.1數(shù)據(jù)分析簡介4數(shù)據(jù)分析流程(1)明確目的和思路數(shù)據(jù)分析必須有一個明確目的,再根據(jù)分析目的梳理分析思路,搭建分析框架,規(guī)劃后續(xù)步驟所選擇的分析方法等。(2)數(shù)據(jù)收集在明確目的和思路的基礎(chǔ)上,有目的的收集必要的、可能來自多途徑的數(shù)據(jù)。數(shù)據(jù)來源可能是數(shù)據(jù)庫、公開出版物、互聯(lián)網(wǎng)、市場調(diào)查等。但收集到的數(shù)據(jù)往往雜亂無章、難以理解、數(shù)量龐大。6.1.1數(shù)據(jù)分析簡介4數(shù)據(jù)分析流程(3)數(shù)據(jù)處理對搜集的數(shù)據(jù)進(jìn)行加工整理,形成對解決問題、數(shù)據(jù)分析有價值的數(shù)據(jù)。數(shù)據(jù)處理的方法包括數(shù)據(jù)清洗、數(shù)據(jù)轉(zhuǎn)化、數(shù)據(jù)提取、數(shù)據(jù)計算等。(4)數(shù)據(jù)分析數(shù)據(jù)處理過后,就會依據(jù)分析目的和思路,選用合適的數(shù)據(jù)分析方法對數(shù)據(jù)開展分析。一般的數(shù)據(jù)分析可以通過excel完成,高級數(shù)據(jù)分析就要采用如專業(yè)分析軟件spss、或python數(shù)據(jù)分析庫等進(jìn)行。6.1.1數(shù)據(jù)分析簡介4數(shù)據(jù)分析流程(5)數(shù)據(jù)展現(xiàn)數(shù)據(jù)分析結(jié)果通過圖、表進(jìn)行可視化展現(xiàn)。一般情況下,能用圖說明問題的就不要用表格,能用表格說明問題的不要用文字。(6)報告撰寫數(shù)據(jù)分析報告把起因、過程、結(jié)果及建議完整的呈現(xiàn)出來,供決策者參考。報告通過對數(shù)據(jù)全方位的科學(xué)分析來評估運(yùn)營質(zhì)量,為決策者提供科學(xué)、嚴(yán)謹(jǐn)?shù)臎Q策依據(jù),以降低企業(yè)運(yùn)營風(fēng)險,提高企業(yè)核心競爭力?!洞髷?shù)據(jù)基礎(chǔ)》在線開放課程組《大數(shù)據(jù)基礎(chǔ)》.移動商務(wù)營銷課程群與挖掘數(shù)據(jù)分析大數(shù)據(jù)基礎(chǔ)Unit6《大數(shù)據(jù)基礎(chǔ)》.移動商務(wù)營銷課程群6.1.1數(shù)據(jù)分析簡介6.1.2數(shù)據(jù)挖掘簡介6.1.3pandas數(shù)據(jù)分析6.1數(shù)據(jù)分析與挖掘簡介6.1.2數(shù)據(jù)挖掘簡介1數(shù)據(jù)挖掘的定義數(shù)據(jù)挖掘是指從大量的數(shù)據(jù)中,通過統(tǒng)計學(xué)、人工智能、機(jī)器學(xué)習(xí)等方法,挖掘出未知的、且有價值的信息和知識的過程。數(shù)據(jù)分析可以分為廣義的數(shù)據(jù)分析和狹義的數(shù)據(jù)分析。上一節(jié)所講的數(shù)據(jù)分析就是狹義的數(shù)據(jù)分析,而廣義的數(shù)據(jù)分析還包括數(shù)據(jù)挖掘。6.1.2數(shù)據(jù)挖掘簡介2數(shù)據(jù)分析與數(shù)據(jù)挖掘的比較
相同點(diǎn)數(shù)據(jù)分析與數(shù)據(jù)挖掘的本質(zhì)都是一樣的,都是從數(shù)據(jù)里面發(fā)現(xiàn)關(guān)于業(yè)務(wù)的知識、有價值的信息,從而幫助業(yè)務(wù)運(yùn)營、改進(jìn)產(chǎn)品以及幫助企業(yè)做更好的決策,所以數(shù)據(jù)分析與數(shù)據(jù)挖掘一起構(gòu)成了廣義的數(shù)據(jù)分析。6.1.2數(shù)據(jù)挖掘簡介2數(shù)據(jù)分析與數(shù)據(jù)挖掘的比較
目的的不同數(shù)據(jù)分析有明確的目標(biāo),先假設(shè)數(shù)據(jù)存在某種模型,然后通過統(tǒng)計分析方法來驗(yàn)證假設(shè)是否正確,或者有明確的統(tǒng)計指標(biāo),使用統(tǒng)計分析方法來得到這些指標(biāo)值,從而結(jié)合業(yè)務(wù)得出結(jié)論。數(shù)據(jù)挖掘是事先對于數(shù)據(jù)中的模型難以假設(shè),通過數(shù)據(jù)挖掘算法尋找未知的模型。6.1.2數(shù)據(jù)挖掘簡介2數(shù)據(jù)分析與數(shù)據(jù)挖掘的比較
方法的不同數(shù)據(jù)分析會采用對比分析、分組分析、交叉分析、回歸分析等常用統(tǒng)計分析方法。數(shù)據(jù)挖掘會采用決策樹、關(guān)聯(lián)規(guī)則、聚類、分類、神經(jīng)網(wǎng)絡(luò)等統(tǒng)計學(xué)、人工智能算法、機(jī)器學(xué)習(xí)算法等方法。6.1.2數(shù)據(jù)挖掘簡介2數(shù)據(jù)分析與數(shù)據(jù)挖掘的比較
結(jié)果的不同數(shù)據(jù)分析一般都得到一些統(tǒng)計量結(jié)果,如總和、平均值等,這些數(shù)據(jù)都需要與業(yè)務(wù)結(jié)合進(jìn)行解讀,才能發(fā)揮出數(shù)據(jù)的價值。數(shù)據(jù)挖掘會輸出挖掘到的模型,這個模型會被應(yīng)用到對新的數(shù)據(jù)的預(yù)測上。6.1.2數(shù)據(jù)挖掘簡介3數(shù)據(jù)挖掘的流程明確目的和思路數(shù)據(jù)收集數(shù)據(jù)處理構(gòu)建模型模型評價模型發(fā)布數(shù)據(jù)分析流程:明確目的和思路->數(shù)據(jù)收集->數(shù)據(jù)處理->數(shù)據(jù)分析->數(shù)據(jù)展現(xiàn)->報告撰寫6.1.2數(shù)據(jù)挖掘簡介模型訓(xùn)練數(shù)據(jù)挖掘算法選擇訓(xùn)練數(shù)據(jù)集模型評價測試數(shù)據(jù)集輸入算法輸入評估模型好不好?不好模型發(fā)布好新的數(shù)據(jù)輸入預(yù)測結(jié)果輸出4數(shù)據(jù)挖掘的模型創(chuàng)建過程《大數(shù)據(jù)基礎(chǔ)》在線開放課程組《大數(shù)據(jù)基礎(chǔ)》.移動商務(wù)營銷課程群與挖掘數(shù)據(jù)分析大數(shù)據(jù)基礎(chǔ)Unit6《大數(shù)據(jù)基礎(chǔ)》.移動商務(wù)營銷課程群6.1.1數(shù)據(jù)分析簡介6.1.2數(shù)據(jù)挖掘簡介6.1.3pandas數(shù)據(jù)分析6.1數(shù)據(jù)分析與挖掘簡介6.1.3pandas數(shù)據(jù)分析1統(tǒng)計方法
Pandas庫是進(jìn)行數(shù)據(jù)預(yù)處理的強(qiáng)有力工具,也是開展數(shù)據(jù)分析的強(qiáng)有力工具。Pandas的DataFrame或Series對象都提供了大量的統(tǒng)計方法,用于實(shí)現(xiàn)數(shù)值型數(shù)據(jù)的各類型統(tǒng)計運(yùn)算,注意這些方法都自動忽略缺失值。
常見的統(tǒng)計方法有統(tǒng)計個數(shù)count、最大值max、最小值min,總和sum、平均值mean,方差var和標(biāo)準(zhǔn)差std等。例如:data=pd.Series([2,3,5,7,11,13,17,19])
data.mean()6.1.3pandas數(shù)據(jù)分析2分組統(tǒng)計
前面的統(tǒng)計方法能夠讓我們對Series類型的一列數(shù)值型數(shù)據(jù)有個比較籠統(tǒng)的認(rèn)識,但要呈現(xiàn)豐富的描述性數(shù)據(jù)分析,就需要開展分組統(tǒng)計。
分組統(tǒng)計需要有一個被分組的數(shù)據(jù)集,主要是數(shù)值類型的Series對象,分組統(tǒng)計還需要選擇合適的標(biāo)簽作為分組鍵,作為分組鍵的數(shù)據(jù)會選用能夠呈現(xiàn)類別的Series對象。6.1.3pandas數(shù)據(jù)分析2分組統(tǒng)計
如圖所示,圖中最左側(cè)兩列數(shù)據(jù)分別是分組鍵和待分組數(shù)據(jù),分組統(tǒng)計需要經(jīng)過拆分、應(yīng)用、合并3個步驟:
第一步,根據(jù)分組鍵進(jìn)行拆分,將同一個鍵的數(shù)據(jù)合并成小的數(shù)據(jù)集。
第二步,根據(jù)分析需要,對每個小的數(shù)據(jù)集選用一個統(tǒng)計分析方法,這就是應(yīng)用,最終,每個小的數(shù)據(jù)集各會得到一個統(tǒng)計值。
第三步,最后是合并,將各組的統(tǒng)計值合并在一起。6.1.3pandas數(shù)據(jù)分析2分組統(tǒng)計pandas的DataFrame或Series對象都提供了方法groupby用于處理分組,返回一個DataFrameGroupBy或SeriesGroupBy對象,它的基本格式為:
DataFrame.groupby(by,….)或Series.groupby(by,…)其中DataFrame或Series對象是待分組的數(shù)據(jù)集,都能調(diào)用方法groupby,方法內(nèi)的參數(shù)by是分組鍵。例如:data=pd.Series([0,5,10,5,10,15,10,15,20])key=pd.Series([‘A’,‘B’,‘C’,‘A’,‘B’,‘C’,‘A’,‘B’,‘C’])data.groupby(key).sum()《大數(shù)據(jù)基礎(chǔ)》在線開放課程組《大數(shù)據(jù)基礎(chǔ)》.移動商務(wù)營銷課程群與挖掘數(shù)據(jù)分析大數(shù)據(jù)基礎(chǔ)Unit6《大數(shù)據(jù)基礎(chǔ)》.移動商務(wù)營銷課程群6.2.1數(shù)據(jù)挖掘算法分類6.2.2數(shù)據(jù)挖掘算法典型應(yīng)用6.2數(shù)據(jù)挖掘常用算法6.2.1數(shù)據(jù)挖掘算法分類1數(shù)據(jù)挖掘算法概述在數(shù)據(jù)挖掘的模型創(chuàng)建過程中,數(shù)據(jù)挖掘算法在模型訓(xùn)練中起到了非常重要的作用。國際權(quán)威的學(xué)術(shù)組織theIEEEInternationalConferenceonDataMining(ICDM)在2006年12月評選出了數(shù)據(jù)挖掘領(lǐng)域的十大經(jīng)典算法:C4.5,k-Means,SVM,Apriori,EM,PageRank,AdaBoost,kNN,NaiveBayes,和CART。其實(shí)參加評選的18種算法,隨便拿出一種來都可以稱得上是經(jīng)典算法,它們在數(shù)據(jù)挖掘領(lǐng)域都產(chǎn)生了極為深遠(yuǎn)的影響。
還有很多數(shù)據(jù)挖掘算法在特定場合下發(fā)揮著作用。6.2.1數(shù)據(jù)挖掘算法分類是指對數(shù)據(jù)的若干特征與若干標(biāo)簽之間的關(guān)聯(lián)性進(jìn)行建模的過程。包括分類、回歸兩大類算法。例如:描述一個人的身高、體重是特征、是否肥胖是標(biāo)簽。有監(jiān)督學(xué)習(xí)是指對只帶若干特征而不帶任何標(biāo)簽的數(shù)據(jù)進(jìn)行建模,去分析數(shù)據(jù)本身的內(nèi)在特點(diǎn)和結(jié)構(gòu)。包括聚類、降維兩大類算法。例如:只描述一個人的身高和體重。無監(jiān)督學(xué)習(xí)介于有監(jiān)督學(xué)習(xí)和無監(jiān)督學(xué)習(xí)之間,通常用在數(shù)據(jù)標(biāo)簽不完整的情況。包括了半監(jiān)督分類、半監(jiān)督回歸、半監(jiān)督聚類、半監(jiān)督降維算法。
半監(jiān)督學(xué)習(xí)2數(shù)據(jù)挖掘常用算法的分類6.2.1數(shù)據(jù)挖掘算法分類3有監(jiān)督學(xué)習(xí)算法劃分分類回歸12有監(jiān)督學(xué)習(xí)算法劃分分類任務(wù)中,標(biāo)簽都是離散值。比如決策樹算法、樸素貝葉斯算法等?;貧w任務(wù)中,標(biāo)簽都是連續(xù)值。比如線性回歸算法等。6.2.1數(shù)據(jù)挖掘算法分類4無監(jiān)督學(xué)習(xí)算法劃分聚類降維12無監(jiān)督學(xué)習(xí)算法劃分聚類任務(wù)中,沒有標(biāo)簽,主要是將數(shù)據(jù)分成不同的組別。如kmeans聚類算法等。降維任務(wù),主要是為了用更簡潔的方式表示數(shù)據(jù)。如主成分分析等?!洞髷?shù)據(jù)基礎(chǔ)》在線開放課程組《大數(shù)據(jù)基礎(chǔ)》.移動商務(wù)營銷課程群與挖掘數(shù)據(jù)分析大數(shù)據(jù)基礎(chǔ)Unit6《大數(shù)據(jù)基礎(chǔ)》.移動商務(wù)營銷課程群6.2.1數(shù)據(jù)挖掘算法分類6.2.2數(shù)據(jù)挖掘算法典型應(yīng)用6.2數(shù)據(jù)挖掘常用算法6.2.2數(shù)據(jù)挖掘算法典型應(yīng)用問題描述:已知某銀行的一批用戶數(shù)據(jù),涉及貸款申請情況,包含年齡、是否有工作、是否有房子、信用等級等4個特征,而是否允許貸款申請(只有兩個離散值,Yes或No)構(gòu)成了1個標(biāo)簽。當(dāng)有一個新的貸款申請者提供了4個特征的值,請構(gòu)建模型預(yù)測是否會允許貸款?1有監(jiān)督學(xué)習(xí)之分類算法案例6.2.2數(shù)據(jù)挖掘算法典型應(yīng)用問題描述:已知坐標(biāo)系的點(diǎn)的坐標(biāo)(x,y)表示的分別是面積為x的房屋的銷售價格是y。現(xiàn)有一批點(diǎn)表示不同面積的房屋的銷售價格。當(dāng)有一個新的房屋面積為X,請構(gòu)建模型預(yù)測銷售價格Y?(注:房屋面積是特征、價格是標(biāo)簽,且價格是連續(xù)值。)2有監(jiān)督學(xué)習(xí)之回歸算法案例6.2.2數(shù)據(jù)挖掘算法典型應(yīng)用問題描述:如果坐標(biāo)系的點(diǎn)的坐標(biāo)(x,y)仍舊表示的分別是面積為x的房屋的銷售價格是y。x,y都看成特征?,F(xiàn)有一批點(diǎn)表示不同面積的房屋銷售價格時,那么,可以通過什么方式將這批房屋分成3組呢?(注:x,y都是特征,沒有標(biāo)簽)3無監(jiān)督學(xué)習(xí)之聚類算法案例6.2.2數(shù)據(jù)挖掘算法典型應(yīng)用4無監(jiān)督學(xué)習(xí)之降維算法案例問題描述:已知某銀行的一批用戶數(shù)據(jù),包含年齡、是否有工作、是否有房子、信用等級等4個特征,沒有標(biāo)簽。假設(shè)為了減少分析的復(fù)雜度和減少存儲容量,試分析能否在保留較大的有效信息的情況下,刪除一個字段?6.2.2數(shù)據(jù)挖掘算法典型應(yīng)用5用scikit-Learn實(shí)現(xiàn)KNN分類應(yīng)用《大數(shù)據(jù)基礎(chǔ)》在線開放課程組《大數(shù)據(jù)基礎(chǔ)》.移動商務(wù)營銷課程群訓(xùn)練6-1單元6數(shù)據(jù)分析與挖掘python電商統(tǒng)計分析訓(xùn)練同步Bigdataeclipseeclipse大數(shù)據(jù)基礎(chǔ)pythonUnit6《大數(shù)據(jù)基礎(chǔ)》.移動商務(wù)營銷課程群訓(xùn)練6-1:python電商數(shù)據(jù)分析訓(xùn)練目標(biāo)已知某電商公司在2010-2013年的銷售數(shù)據(jù)表(含6000條數(shù)據(jù)),試分析歷年的銷售總額和利潤的總額。訓(xùn)練解釋基于python數(shù)據(jù)分析,分別統(tǒng)計2010-2013年間每年的銷售總額和利潤總額。案例效果實(shí)現(xiàn)思路基本步驟按實(shí)訓(xùn)要求準(zhǔn)備好銷售數(shù)據(jù)表,存放的路徑設(shè)定為D:/銷售數(shù)據(jù).xlsx打開Anaconda的Spyder,并選擇Ipythonconsol,在控制臺依據(jù)命令行依次操作。(1)導(dǎo)入包pandas。
(2)導(dǎo)入銷售數(shù)據(jù)表為DataFrame對象。(3)從“發(fā)貨日期”抽取“年份”。
(4)依據(jù)“年份”分組統(tǒng)計銷售總額和利潤總額。(5)將統(tǒng)計的各年份的銷售總額和利潤總額輸出顯示。訓(xùn)練6-1:python電商數(shù)據(jù)分析《大數(shù)據(jù)基礎(chǔ)》在線開放課程組《大數(shù)據(jù)基礎(chǔ)》.移動商務(wù)營銷課程群數(shù)據(jù)可視化大數(shù)據(jù)基礎(chǔ)Unit7《大數(shù)據(jù)基礎(chǔ)》.移動商務(wù)營銷課程群7.1.1什么是數(shù)據(jù)可視化7.1數(shù)據(jù)可視化7.1.2可視化的重要作用7.1.1什么是數(shù)據(jù)可視化1數(shù)據(jù)可視化
現(xiàn)狀:隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,尤其是移動互聯(lián)網(wǎng)技術(shù)的發(fā)展,網(wǎng)絡(luò)空間的數(shù)據(jù)量呈現(xiàn)出爆炸式增長。問題:如何從這些數(shù)據(jù)中快速獲取自己想要的信息,并以一種直觀、形象的方式展現(xiàn)出來?
數(shù)據(jù)可視化直觀形象的展示數(shù)據(jù)7.1.1什么是數(shù)據(jù)可視化1數(shù)據(jù)可視化是一門關(guān)于數(shù)據(jù)視覺表現(xiàn)形式的科學(xué)技術(shù)研究指借助于圖形化手段傳達(dá)信息,對數(shù)據(jù)進(jìn)行交互分析通過圖表形式展現(xiàn)數(shù)據(jù),幫助用戶快速、準(zhǔn)確理解信息2數(shù)據(jù)可視化的基本特征易懂性:可視化使得碎片化的數(shù)據(jù)轉(zhuǎn)換為具有特定結(jié)構(gòu)的知識,從而為決策支持提供幫助必然性:大數(shù)據(jù)所產(chǎn)生的數(shù)據(jù)量必然要求人們對數(shù)據(jù)進(jìn)行歸納總結(jié),對數(shù)據(jù)的結(jié)構(gòu)和形式進(jìn)行轉(zhuǎn)換處理片面性:數(shù)據(jù)可視化的片面性特征要求可視化模式不能替代數(shù)據(jù)本身,只能作為數(shù)據(jù)表達(dá)的一種特定形式專業(yè)性:專業(yè)化特征是人們從可視化模型中提取專業(yè)知識的環(huán)節(jié),它是數(shù)據(jù)可視化應(yīng)用的最后流程7.1.1什么是數(shù)據(jù)可視化《大數(shù)據(jù)基礎(chǔ)》在線開放課程組《大數(shù)據(jù)基礎(chǔ)》.移動商務(wù)營銷課程群大數(shù)據(jù)基礎(chǔ)Unit7《大數(shù)據(jù)基礎(chǔ)》.移動商務(wù)營銷課程群7.1.1什么是數(shù)據(jù)可視化7.1數(shù)據(jù)可視化7.1.2可視化的重要作用數(shù)據(jù)可視化1數(shù)據(jù)可視化的作用
數(shù)據(jù)可視化的作用主要包括數(shù)據(jù)表達(dá)、數(shù)據(jù)操作和數(shù)據(jù)分析等三個方面。數(shù)據(jù)表達(dá):表達(dá)數(shù)據(jù),方便人們閱讀、理解和運(yùn)用數(shù)據(jù)。
7.1.2可視化的重要作用可視化數(shù)據(jù)表達(dá)利用系列線型圖來可視化展示某網(wǎng)站的運(yùn)營推廣數(shù)據(jù)7.1.2可視化的重要作用1數(shù)據(jù)可視化的作用數(shù)據(jù)操作
數(shù)據(jù)操作是以計算機(jī)提供的界面、接口、協(xié)議等條件為基礎(chǔ)完成人與數(shù)據(jù)的交互需求,數(shù)據(jù)操作需要友好的人機(jī)交互技術(shù)、標(biāo)準(zhǔn)化的接口和協(xié)議支持來完成對多數(shù)據(jù)集合或者分布式的操作。
數(shù)據(jù)分析
數(shù)據(jù)可視化是數(shù)據(jù)分析和機(jī)器學(xué)習(xí)的重要環(huán)節(jié),比如數(shù)據(jù)清洗、特征工程、機(jī)器學(xué)習(xí)、數(shù)據(jù)分析、評估等環(huán)節(jié)都會用到“數(shù)據(jù)可視化”技術(shù)。7.1.2可視化的重要作用7.2.3
Matplotlib數(shù)據(jù)可視化可視化數(shù)據(jù)分析在本例圖中,我們展示出了如何通過數(shù)據(jù)可視化工具來分析數(shù)據(jù)。上面四張子圖分別展示了兩個數(shù)據(jù)集中數(shù)據(jù)間的相關(guān)關(guān)系。7.1.2可視化的重要作用《大數(shù)據(jù)基礎(chǔ)》在線開放課程組《大數(shù)據(jù)基礎(chǔ)》.移動商務(wù)營銷課程群大數(shù)據(jù)基礎(chǔ)Unit7《大數(shù)據(jù)基礎(chǔ)》.移動商務(wù)營銷課程群7.2.1ECharts數(shù)據(jù)可視化7.2可視化工具7.2.2PyECharts數(shù)據(jù)可視化7.2.3Matplotlib數(shù)據(jù)可視化數(shù)據(jù)可視化7.2.1ECharts數(shù)據(jù)可視化1Echarts簡介ECharts已經(jīng)可以支持包括折線圖、柱狀圖、散點(diǎn)圖、K線圖、餅圖、雷達(dá)圖、地圖等圖表,同時提供標(biāo)題、圖例、值域、時間軸、工具箱等可交互組件,支持多圖表、組件的聯(lián)動和混搭展現(xiàn)。
ECharts制作的圖表7.2.1ECharts數(shù)據(jù)可視化2數(shù)據(jù)可視化來源訪問(次)視頻廣告300搜索引擎1048郵件580聯(lián)盟廣告484……某網(wǎng)站訪問來源相關(guān)數(shù)據(jù)樣例
接下來,我們通過對某個網(wǎng)站的訪問來源相關(guān)的數(shù)據(jù)進(jìn)行可視化,來詳細(xì)介紹一下ECharts的使用方法。如右圖所示是這個網(wǎng)站的訪問來源的數(shù)據(jù)樣例。7.2.1ECharts數(shù)據(jù)可視化數(shù)據(jù)可視化展示在本例中,我們利用Echarts實(shí)現(xiàn)了某站點(diǎn)訪問來源的數(shù)據(jù)可視化展現(xiàn),展現(xiàn)結(jié)果如上圖所示。7.2.1ECharts數(shù)據(jù)可視化數(shù)據(jù)可視化展示
點(diǎn)擊右側(cè)工具箱中的數(shù)據(jù)視圖按鈕,可以得到數(shù)據(jù)視圖頁面,展示效果如上圖所示。7.2.1ECharts數(shù)據(jù)可視化
vardom=
document.getElementById('container');varmyChart=echarts.init(dom,null,{renderer:'canvas',useDirtyRect:false});varoption;option={title:{text:'某站點(diǎn)訪問來源',subtext:'測試數(shù)據(jù)',left:'center'},tooltip:{trigger:'item'},
示例程序toolbox:{show:true,orient:'vertical',x:'right',y:'center',feature:{mark:{show:true},dataView:{show:true,readOnly:false}}},legend:{orient:'vertical',left:'left'},7.2.1ECharts數(shù)據(jù)可視化series:[{name:'訪問來源',type:'pie',radius:'50%',data:[{value:1048,name:'搜索引擎'},{value:735,name:'直接訪問'},{value:580,name:'郵件'},{value:484,name:'聯(lián)盟廣告'},{value:300,name:'視頻廣告'}],emphasis:{itemStyle:{shadowBlur:10,shadowOffsetX:0,shadowColor:'rgba(0,0,0,0.5)'}}}]};示例程序
if(option&&typeofoption==='object'){myChart.setOption(option);}window.addEventListener('resize',myChart.resize);《大數(shù)據(jù)基礎(chǔ)》在線開放課程組《大數(shù)據(jù)基礎(chǔ)》.移動商務(wù)營銷課程群大數(shù)據(jù)基礎(chǔ)Unit7《大數(shù)據(jù)基礎(chǔ)》.移動商務(wù)營銷課程群7.2.1ECharts數(shù)據(jù)可視化7.2可視化工具7.2.2PyECharts數(shù)據(jù)可視化7.2.3Matplotlib數(shù)據(jù)可視化數(shù)據(jù)可視化7.2.2PyECharts數(shù)據(jù)可視化1PyEcharts簡介PyEcharts是一個用于生成Echarts圖表的類庫,實(shí)際上就是Echarts與Python的對接PyECharts同樣支持Echarts中各類圖表的繪制
7.2.2PyECharts數(shù)據(jù)可視化2數(shù)據(jù)可視化使用PyECharts展示2011年全國GDP數(shù)據(jù)的圖表。如圖所示是2011年全國GDP數(shù)據(jù)。城市GDP(億元)西藏605.83青海1
670.44寧夏2102.21海南2522.66……2011年中國全國GDP
7.2.2PyECharts數(shù)據(jù)可視化importrefrompyechartsimportMap#省和直轄市province_distribution={'河南':26931.03,'北京':16251.93,'河北':24515.76,'遼寧':22226.7,'浙江':32318.85,……}provice=list(province_distribution.keys())values=list(province_distribution.values())map=Map("2011年全國GDP數(shù)據(jù)",'2011年全國GDP數(shù)據(jù)',width=600,height=300)map.add("ChinaMap",provice,values,visual_range=[0,50],maptype='china',is_visualmap=True,visual_text_color='#000')map.render(path="2011年全國GDP數(shù)據(jù).html")示例程序7.2.2PyECharts數(shù)據(jù)可視化數(shù)據(jù)可視化展示結(jié)果在本例中,我們利用PyEcharts實(shí)現(xiàn)了2011年全國各地區(qū)GDP數(shù)據(jù)的展示。《大數(shù)據(jù)基礎(chǔ)》在線開放課程組《大數(shù)據(jù)基礎(chǔ)》.移動商務(wù)營銷課程群大數(shù)據(jù)基礎(chǔ)Unit7《大數(shù)據(jù)基礎(chǔ)》.移動商務(wù)營銷課程群7.2.1ECharts數(shù)據(jù)可視化7.2可視化工具7.2.2PyECharts數(shù)據(jù)可視化7.2.3
Matplotlib數(shù)據(jù)可視化數(shù)據(jù)可視化7.2.3
Matplotlib數(shù)據(jù)可視化1Matplotlib簡介Matplotlib是一個Python繪圖庫。只需幾行代碼即可生成柱狀圖,直方圖,功率譜,條形圖,極線圖,餅圖,散點(diǎn)圖等。
7.2.3
Matplotlib數(shù)據(jù)可視化數(shù)據(jù)可視化使用Matplotlib繪制折線圖、柱狀圖、水平柱狀圖、堆積柱狀圖、箱線圖、散點(diǎn)圖。7.2.3
Matplotlib數(shù)據(jù)可視化frommatplotlib.pyplotimport*x=[1,2,3,4]y=[5,4,3,2]figure()#線形圖subplot(231)plot(x,y)#柱狀圖subplot(232)bar(x,y)#水平柱狀圖subplot(233)barh(x,y)示例程序#堆積柱狀圖subplot(234)bar(x,y)y1=[7,8,5,3]bar(x,y1,bottom=y,color='r')#繪制箱型圖subplot(235)boxplot(x)#繪制散點(diǎn)圖subplot(236)scatter(x,y)7.2.3
Matplotlib數(shù)據(jù)可視化數(shù)據(jù)可視化使用Matplotlib可視化某在線教育網(wǎng)站教程點(diǎn)擊量數(shù)據(jù)7.2.3
Matplotlib數(shù)據(jù)可視化importmatplotlib.pyplotaspltx_data=['2013','2014','2015','2016','2017','2018','2019']#定義2個列表分別作為兩條折線的Y軸數(shù)據(jù)y_data=[58000,60200,63000,71000,84000,90500,107000]y_data2=[52000,54200,51500,58300,56800,59500,62700]#指定折線的顏色、線寬和樣式plt.plot(x_data,y_data,color='red',linewidth=2.0,linestyle='--',label='Java基礎(chǔ)')示例程序plt.plot(x_data,y_data2,color='blue',linewidth=3.0,linestyle='-.',label='Python基礎(chǔ)')#用來正常顯示中文plt.rcParams['font.sans-serif']=['SimHei']#調(diào)用legend函數(shù)設(shè)置圖例plt.legend(loc='best')#設(shè)置兩條坐標(biāo)軸的名字plt.xlabel("年份")plt.ylabel("教程點(diǎn)擊量")#設(shè)置數(shù)據(jù)圖的標(biāo)題plt.title('某在線教育網(wǎng)站教程點(diǎn)擊量')7.2.3
Matplotlib數(shù)據(jù)可視化#設(shè)置Y軸上的刻度值#第一個參數(shù)是點(diǎn)的位置,第二個參數(shù)是點(diǎn)的文字提示plt.yticks([50000,100000,150000],[r'良好',r'優(yōu)秀',r'火爆'])ax=plt.gca()#設(shè)置將X軸的刻度值放在底部X軸上ax.xaxis.set_ticks_position('bottom')#設(shè)置將Y軸的刻度值放在左邊軸上ax.yaxis.set_ticks_position('left')#設(shè)置右邊坐標(biāo)軸線的顏色(設(shè)置為none表示不顯示)ax.spines['right'].set_color('none')示例程序#設(shè)置頂部坐標(biāo)軸線的顏色(設(shè)置為none表示不顯示)ax.spines['top'].set_color('none')#定義底部坐標(biāo)軸線的位置(放在100000數(shù)值處)ax.spines['bottom'].set_position(('data',100000))#調(diào)用show()函數(shù)顯示圖形plt.show()《大數(shù)據(jù)基礎(chǔ)》在線開放課程組《大數(shù)據(jù)基礎(chǔ)》.移動商務(wù)營銷課程群訓(xùn)練
7-1單元7
數(shù)據(jù)可視化利用PyECharts展示電商交易數(shù)據(jù)訓(xùn)練同步BigdataHadoop大數(shù)據(jù)基礎(chǔ)pythonUnit7《大數(shù)據(jù)基礎(chǔ)》.移動商務(wù)營銷課程群訓(xùn)練
7-1:利用PyECharts展示電商交易數(shù)據(jù)案例目標(biāo)程序根據(jù)用戶輸入的電商交易數(shù)據(jù),按要求繪制出可視化圖表,用于展示、分析交易數(shù)據(jù)。案例解釋用戶輸入兩個經(jīng)過處理后的列表,列表1為商品名稱列表,列表2為交易成功數(shù)量列表,分別繪制出柱狀圖、餅圖等。運(yùn)行效果實(shí)現(xiàn)思路基本步驟配置PyECharts做數(shù)據(jù)可視化的工程環(huán)境,我們這里使用jupyter編寫程序
接收經(jīng)過清洗的商品交易數(shù)據(jù)
(1)定義列表變量用于保存商品名稱數(shù)據(jù)。
(2)定義列表變量用于保存商品交易量數(shù)據(jù)。
(3)調(diào)用PyECharts庫的add方法。訓(xùn)練7-1:利用PyECharts展示電商交易數(shù)據(jù)3.輸出結(jié)果:(1)用柱狀圖展示交易數(shù)據(jù)。(2)用餅圖展示各商品交易數(shù)量所占總體交易數(shù)量的比例。運(yùn)行效果實(shí)現(xiàn)思路柱狀圖:訓(xùn)練7-1:利用PyECharts展示電商交易數(shù)據(jù)運(yùn)行效果實(shí)現(xiàn)思路餅圖:訓(xùn)練7-1:利用PyECharts展示電商交易數(shù)據(jù)《大數(shù)據(jù)基礎(chǔ)》在線開放課程組《大數(shù)據(jù)基礎(chǔ)》.移動商務(wù)營銷課程群訓(xùn)練
7-2單元7
數(shù)據(jù)可視化利用Matplotlib展示死亡谷地區(qū)氣溫變化訓(xùn)練同步BigdataHadoop大數(shù)據(jù)基礎(chǔ)pythonUnit7《大數(shù)據(jù)基礎(chǔ)》.移動商務(wù)營銷課程群訓(xùn)練
7-2:利用Matplotlib展示死亡谷氣溫變化案例目標(biāo)文件sitka_weather_07-2014.csv是2014年七月死亡谷的氣溫數(shù)據(jù),編寫程序讀取csv文件并對其進(jìn)行數(shù)據(jù)可視化。案例解釋讀取
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年家具制造與供應(yīng)協(xié)議
- 企業(yè)課件教學(xué)
- 2024奶牛養(yǎng)殖企業(yè)環(huán)保責(zé)任合同
- 2024年建筑工程裝飾分包合同文本
- 2024年工程建設(shè)項目中介服務(wù)簡約合同
- 2024蘇州汽車質(zhì)押借款合同范本
- 公司行政部門經(jīng)理工作總結(jié)
- 企業(yè)迎新晚會主持詞(6篇)
- 現(xiàn)代商務(wù)課件教學(xué)課件
- 英語課件簡約教學(xué)課件
- 基層中醫(yī)藥適宜技術(shù)培訓(xùn)
- 斯派克直讀光譜儀
- 數(shù)學(xué)成語故事《朝三暮四》-完整版課件
- 教練場地技術(shù)條件說明
- 《網(wǎng)上圖書銷售系統(tǒng)(設(shè)計論文)》
- 裝卸工考核評分表〔月度〕(2023版)
- 高一選科指導(dǎo)班會
- GB/T 28268-2012滾動軸承沖壓保持架技術(shù)條件
- 學(xué)生處處長競聘演講競職演講
- GB/T 15425-2014商品條碼128條碼
- GB/T 14258-2003信息技術(shù)自動識別與數(shù)據(jù)采集技術(shù)條碼符號印制質(zhì)量的檢驗(yàn)
評論
0/150
提交評論