2022數(shù)據(jù)采用預(yù)處理講義_第1頁
2022數(shù)據(jù)采用預(yù)處理講義_第2頁
2022數(shù)據(jù)采用預(yù)處理講義_第3頁
2022數(shù)據(jù)采用預(yù)處理講義_第4頁
2022數(shù)據(jù)采用預(yù)處理講義_第5頁
已閱讀5頁,還剩599頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

數(shù)據(jù)采集與預(yù)處理2022《數(shù)據(jù)采集與預(yù)處理提綱《數(shù)據(jù)采集與預(yù)處理》主講教師先修課程教材介紹內(nèi)容提要教學(xué)大綱配套資源先修課程《數(shù)據(jù)采集與預(yù)處理》在學(xué)習(xí)本課程之前,建議學(xué)生已經(jīng)學(xué)習(xí)過Python編程(不是必須)內(nèi)容提要《數(shù)據(jù)采集與預(yù)處理》本課程詳細闡述了大數(shù)據(jù)領(lǐng)域數(shù)據(jù)采集與預(yù)處理的相關(guān)理論和技術(shù)內(nèi)容包括概述、大數(shù)據(jù)實驗環(huán)境搭建、網(wǎng)絡(luò)數(shù)據(jù)采集、分布式消息系統(tǒng)Kafka、日志采集系統(tǒng)Flume、數(shù)據(jù)倉庫中的數(shù)據(jù)集成、ETL工具Kettle、使用pandas進行數(shù)據(jù)清洗教學(xué)大綱《數(shù)據(jù)采集與預(yù)處理》章(或節(jié))主要內(nèi)容學(xué)時安排第1章概述數(shù)據(jù)的概念、類型、組織形式,數(shù)據(jù)分析過程以及數(shù)據(jù)采集與預(yù)處理的任務(wù),數(shù)據(jù)采集、數(shù)據(jù)清洗、數(shù)據(jù)轉(zhuǎn)換和數(shù)據(jù)脫敏2第2章大數(shù)據(jù)實驗環(huán)境搭建Python的安裝和使用方法,JDK的安裝以及MySQL的安裝和使用方法,Hadoop的安裝和使用方法4第3章網(wǎng)絡(luò)數(shù)據(jù)采集網(wǎng)絡(luò)爬蟲的基本概念,網(wǎng)絡(luò)爬蟲、網(wǎng)絡(luò)爬蟲的類型以及反爬機制,網(wǎng)頁基礎(chǔ)知識,如何使用Python實現(xiàn)HTTP請求,如何定制requests以及如何解析網(wǎng)頁,3個網(wǎng)絡(luò)爬蟲的具體實例4第4章分布式消息系統(tǒng)KafkaKafka在大數(shù)據(jù)生態(tài)系統(tǒng)中的作用以及Kafka與Flume的區(qū)別與聯(lián)系,Kafka的相關(guān)概念、Kafka的安裝和使用以及如何使用Python操作Kafka,Kafka與MySQL的組合使用2第5章日志采集系統(tǒng)FlumeFlume的安裝和使用方法以及Kafka和Flume的組合使用方法,采集日志文件到HDFS以及采集MySQL數(shù)據(jù)到HDFS的方法2第6章數(shù)據(jù)倉庫中的數(shù)據(jù)集成數(shù)據(jù)倉庫的概念,包括傳統(tǒng)的數(shù)據(jù)倉庫和實時主動數(shù)據(jù)倉庫,數(shù)據(jù)倉庫中的數(shù)據(jù)集成,包括數(shù)據(jù)集成方式、數(shù)據(jù)分發(fā)方式和數(shù)據(jù)集成技術(shù),兩種具有代表性的數(shù)據(jù)集成技術(shù),即ETL和CDC2第7章ETL工具KettleKettle的基本概念、基本功能和安裝方法,如何使用Kettle進行數(shù)據(jù)抽取、轉(zhuǎn)換和加載4第8章使用pandas進行數(shù)據(jù)清洗如何使用pandas進行數(shù)據(jù)清洗,NumPy的基本使用方法pandas的數(shù)據(jù)結(jié)構(gòu)和一些基本功能,如何使用pandas進行匯總和描述統(tǒng)計、處理缺失數(shù)據(jù)等4合計242《數(shù)據(jù)采集與預(yù)處理》》《數(shù)據(jù)采集與預(yù)處理第1章概述(PPT版本號:2022年1月版本)提綱《數(shù)據(jù)采集與預(yù)處理》數(shù)據(jù)數(shù)據(jù)分析過程數(shù)據(jù)采集與預(yù)處理的任務(wù)數(shù)據(jù)采集數(shù)據(jù)清洗數(shù)據(jù)集成數(shù)據(jù)轉(zhuǎn)換數(shù)據(jù)脫敏1.1

數(shù)據(jù)《數(shù)據(jù)采集與預(yù)處理》數(shù)據(jù)的概念數(shù)據(jù)類型數(shù)據(jù)組織形式數(shù)據(jù)的價值數(shù)據(jù)爆炸1.1.1

數(shù)據(jù)的概念《數(shù)據(jù)采集與預(yù)處理》 數(shù)據(jù)是指對客觀事件進行記錄并可以鑒別的符號,是對客觀事物的性質(zhì)、狀態(tài)以及相互關(guān)系等進行

記載的物理符號或這些物理符號的組合,是可識別的、抽象的符號 數(shù)據(jù)和信息是兩個不同的概念,信息是較為宏觀的概念,它由數(shù)據(jù)的有序排列組合而成,傳達給讀者某個概念方法等,而數(shù)據(jù)則是構(gòu)成信息的基本單位,離散的數(shù)據(jù)沒有任何實用價值。1.1.1

數(shù)據(jù)的概念數(shù)據(jù)也被稱為“未來的石油”《數(shù)據(jù)采集與預(yù)處理》1.1.2

數(shù)據(jù)類型文本A圖片B視頻D音頻A《數(shù)據(jù)采集與預(yù)處理》1.1.3

數(shù)據(jù)組織形式《數(shù)據(jù)采集與預(yù)處理》計算機系統(tǒng)中的數(shù)據(jù)組織形式主要有兩種,即文件和數(shù)據(jù)庫。文件:計算機系統(tǒng)中的很多數(shù)據(jù)都是以文件形式存在的,比如一個WORD文件、一個文本文件、一個網(wǎng)頁文件、一個圖片文件等等數(shù)據(jù)庫:計算機系統(tǒng)中另一種非常重要的數(shù)據(jù)組織形式就是數(shù)據(jù)庫,今天,數(shù)據(jù)庫已經(jīng)成為計算機軟件開發(fā)的基礎(chǔ)和核心1.1.4數(shù)據(jù)的價值《數(shù)據(jù)采集與預(yù)處理》在過去,一旦數(shù)據(jù)的基本用途實現(xiàn)了,往往就會被刪除,一方面是由于過去的存儲技術(shù)落后,人們需要刪除舊數(shù)據(jù)來存儲新數(shù)據(jù),另一方面則是人們沒有認識到數(shù)據(jù)的潛在價值。數(shù)據(jù)的價值不會因為不斷被使用而削減,反而會因為不斷重組而產(chǎn)生更大的價值各類收集來的數(shù)據(jù)都應(yīng)當(dāng)被盡可能長時間地保存下來,同時也應(yīng)當(dāng)在一定條件下與全社會分享,并產(chǎn)生價值1.1.5數(shù)據(jù)爆炸人類進入信息社會以后,數(shù)據(jù)以自然方式增長,其產(chǎn)生不以人的意志為轉(zhuǎn)移從1986年開始到2010年的20年時間里,全球數(shù)據(jù)的數(shù)量增長了100倍,今后的數(shù)據(jù)量增長速度將更快,我們正生活在一個“數(shù)據(jù)爆炸”的時代《數(shù)據(jù)采集與預(yù)處理》1.2

數(shù)據(jù)分析過程數(shù)據(jù)采集與預(yù)處理數(shù)據(jù)存儲與管理數(shù)據(jù)處理與分析數(shù)據(jù)可視化《數(shù)據(jù)采集與預(yù)處理》圖1-2

典型的數(shù)據(jù)分析過程典型的數(shù)據(jù)分析過程包括(如圖1-2所示):數(shù)據(jù)采集與預(yù)處理、數(shù)據(jù)存儲與管理、數(shù)據(jù)處理與分析、數(shù)據(jù)可視化等,具體如下:數(shù)據(jù)采集與預(yù)處理:采用各種技術(shù)手段把外部各種數(shù)據(jù)源產(chǎn)生的數(shù)據(jù)實時或非實時地采集、預(yù)處理并加以利用。數(shù)據(jù)存儲與管理:利用計算機硬件和軟件技術(shù)對數(shù)據(jù)進行有效的存儲和應(yīng)用的過程,其目的在于充分有效地發(fā)揮數(shù)據(jù)的作用。數(shù)據(jù)處理與分析:數(shù)據(jù)分析是指用適當(dāng)?shù)姆治龇椒ǎ▉碜越y(tǒng)計學(xué)、機器學(xué)習(xí)和數(shù)據(jù)挖掘等領(lǐng)域),對收集來的數(shù)據(jù)進行分析,提取有用信息和形成結(jié)論的過程。數(shù)據(jù)可視化:將數(shù)據(jù)集中的數(shù)據(jù)以圖形圖像形式表示,并利用數(shù)據(jù)分析和開發(fā)工具發(fā)現(xiàn)其中未知信息的處理過程。1.3

數(shù)據(jù)采集與預(yù)處理的任務(wù)《數(shù)據(jù)采集與預(yù)處理》數(shù)據(jù)采集與預(yù)處理包含了數(shù)據(jù)采集和數(shù)據(jù)預(yù)處理兩大任務(wù)。數(shù)據(jù)采集是指從傳感器和智能設(shè)備、企業(yè)在線系統(tǒng)、企業(yè)離線系統(tǒng)、社交網(wǎng)絡(luò)和互聯(lián)網(wǎng)平臺等獲取數(shù)據(jù)的過程。需要采集的數(shù)據(jù)包括RFID數(shù)據(jù)、傳感器數(shù)據(jù)、用戶行為數(shù)據(jù)、社交網(wǎng)絡(luò)交互數(shù)據(jù)及移動互聯(lián)網(wǎng)數(shù)據(jù)等各種類型的結(jié)構(gòu)化、半結(jié)構(gòu)化及非結(jié)構(gòu)化的海量數(shù)據(jù)。數(shù)據(jù)采集技術(shù)是大數(shù)據(jù)技術(shù)的重要組成部分,已經(jīng)廣泛應(yīng)用于國民經(jīng)濟各個領(lǐng)域,隨著大數(shù)據(jù)技術(shù)的發(fā)展和普及,大數(shù)據(jù)采集技術(shù)會迎來更加廣闊的發(fā)展前景。1.3

數(shù)據(jù)采集與預(yù)處理的任務(wù)數(shù)據(jù)預(yù)處理是一個廣泛的領(lǐng)域,其總體目標是為后續(xù)的數(shù)據(jù)分析工作提供可靠和高質(zhì)量的數(shù)據(jù),減少數(shù)據(jù)集規(guī)模,提高數(shù)據(jù)抽象程度和數(shù)據(jù)分析效率。在實際處理過程中,我們需要根據(jù)應(yīng)用問題的具體情況選擇合適的數(shù)據(jù)分析方法。數(shù)據(jù)預(yù)處理的任務(wù)主要包括數(shù)據(jù)清洗、數(shù)據(jù)集成、數(shù)據(jù)轉(zhuǎn)換和數(shù)據(jù)脫敏等(如圖1-3所示)。經(jīng)過這些步驟,我們可以從大量的數(shù)據(jù)屬性中提取出一部分對目標輸出有重要影響的屬性,降低源數(shù)據(jù)的維數(shù),去除噪聲,為數(shù)據(jù)分析算法提供干凈、準確且有針對性的數(shù)據(jù),減少數(shù)據(jù)分析算法的數(shù)據(jù)處理量,改進數(shù)據(jù)質(zhì)量,提高分析效率。數(shù)據(jù)預(yù)處理原始數(shù)據(jù)數(shù)據(jù)清洗數(shù)據(jù)集成數(shù)據(jù)轉(zhuǎn)換數(shù)據(jù)脫敏處理結(jié)果圖1-3

數(shù)據(jù)預(yù)處理的主要任務(wù)《數(shù)據(jù)采集與預(yù)處理》1.4數(shù)據(jù)采集《數(shù)據(jù)采集與預(yù)處理》數(shù)據(jù)采集概念數(shù)據(jù)采集的三大要點數(shù)據(jù)采集的數(shù)據(jù)源1.4.1數(shù)據(jù)采集概念《數(shù)據(jù)采集與預(yù)處理》數(shù)據(jù)采集,又稱“數(shù)據(jù)獲取”,是數(shù)據(jù)分析的入口,也是數(shù)

據(jù)分析過程中相當(dāng)重要的一個環(huán)節(jié),它通過各種技術(shù)手段把外部各種數(shù)據(jù)源產(chǎn)生的數(shù)據(jù)實時或非實時地采集并加以利用。表1-1

傳統(tǒng)的數(shù)據(jù)采集與大數(shù)據(jù)采集區(qū)別傳統(tǒng)的數(shù)據(jù)采集大數(shù)據(jù)采集數(shù)據(jù)源來源單一,數(shù)據(jù)量相對較少來源廣泛,數(shù)據(jù)量巨大數(shù)據(jù)類型結(jié)構(gòu)單一數(shù)據(jù)類型豐富,包括結(jié)構(gòu)化、半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)存儲關(guān)系數(shù)據(jù)庫和并行數(shù)據(jù)倉庫分布式數(shù)據(jù)庫,分布式文件系統(tǒng)1.4.2數(shù)據(jù)采集的三大要點0203多維性全面性高效性01《數(shù)據(jù)采集與預(yù)處理》1.4.3數(shù)據(jù)采集的數(shù)據(jù)源互聯(lián)網(wǎng)數(shù)據(jù)《數(shù)據(jù)采集與預(yù)處理》日志文件傳感器企業(yè)業(yè)務(wù)系統(tǒng)數(shù)據(jù)1.4.3數(shù)據(jù)采集的數(shù)據(jù)源《數(shù)據(jù)采集與預(yù)處理》傳感器數(shù)據(jù) 傳感器是一種檢測裝置,能感受到被測量的信息,并能將感受到的信息,按一定規(guī)律變換成為電信號或其他所需形式的信息輸出,以滿足信息的傳輸、處理、存儲、顯示、記錄和控制等要求。在工作現(xiàn)場,我們會安裝很多的各種類型的傳感器,如壓力傳感器、溫度傳感器、流量傳感器、聲音傳感器、電參數(shù)傳感器等等。傳感器對環(huán)境的適應(yīng)能力很強,可以應(yīng)對各種惡劣的工作環(huán)境。在日常生活中,如溫度計、麥克風(fēng)、DV錄像、手機拍照功能等都屬于傳感器數(shù)據(jù)采集的一部分,支持圖片、音頻、視頻等文件或附件的采集工作。1.4.3數(shù)據(jù)采集的數(shù)據(jù)源《數(shù)據(jù)采集與預(yù)處理》2.互聯(lián)網(wǎng)數(shù)據(jù)互聯(lián)網(wǎng)數(shù)據(jù)的采集通常是借助于網(wǎng)絡(luò)爬蟲來完成的。所謂“網(wǎng)絡(luò)爬蟲”,就是一個在網(wǎng)上到處或定向抓取網(wǎng)頁數(shù)據(jù)的程序。抓取網(wǎng)頁的一般方法是,定義一個入口頁面,然后一般一個頁面中會包含指向其他頁面的URL,于是從當(dāng)前頁面獲取到這些網(wǎng)址加入到爬蟲的抓取隊列中,然后進入到新頁面后再遞歸地進行上述的操作。爬蟲數(shù)據(jù)采集方法可以將非結(jié)構(gòu)化數(shù)據(jù)從網(wǎng)頁中抽取出來,將其存儲為統(tǒng)一的本地數(shù)據(jù)文件,并以結(jié)構(gòu)化的方式存儲。它支持圖片、音頻、視頻等文件或附件的采集,附件與正文可以自動關(guān)聯(lián)。1.4.3數(shù)據(jù)采集的數(shù)據(jù)源《數(shù)據(jù)采集與預(yù)處理》3.日志文件許多公司的業(yè)務(wù)平臺每天都會產(chǎn)生大量的日志文件。日志文件數(shù)據(jù)一般

由數(shù)據(jù)源系統(tǒng)產(chǎn)生,用于記錄數(shù)據(jù)源的執(zhí)行的各種操作活動,比如網(wǎng)絡(luò)監(jiān)控的流量管理、金融應(yīng)用的股票記賬和Web服務(wù)器記錄的用戶訪問行為。對于這些日志信息,我們可以得到出很多有價值的數(shù)據(jù)。通過對這些日志信息進行采集,然后進行數(shù)據(jù)分析,就可以從公司業(yè)務(wù)平臺日志數(shù)據(jù)中挖掘得到具有潛在價值的信息,為公司決策和公司后臺服務(wù)器平臺性能評估提供可靠的數(shù)據(jù)保證。系統(tǒng)日志采集系統(tǒng)做的事情就是收集日志數(shù)據(jù)提供離線和在線的實時分析使用。很多互聯(lián)網(wǎng)企業(yè)都有自己的海量數(shù)據(jù)采集工具,多用于系統(tǒng)日志采集,如Hadoop的Chukwa,Cloudera的Flume,F(xiàn)acebook的Scribe等,這些工具均采用分布式架構(gòu),能滿足每秒數(shù)百MB的日志數(shù)據(jù)采集和傳輸需求。1.4.3數(shù)據(jù)采集的數(shù)據(jù)源4.企業(yè)業(yè)務(wù)系統(tǒng)數(shù)據(jù)一些企業(yè)會使用傳統(tǒng)的關(guān)系型數(shù)據(jù)庫MySQL和Oracle等來存儲業(yè)務(wù)系統(tǒng)數(shù)據(jù),除此之外,Redis和MongoDB這樣的NoSQL數(shù)據(jù)庫也常用于數(shù)據(jù)的存儲。企業(yè)每時每刻產(chǎn)生的業(yè)務(wù)數(shù)據(jù),以數(shù)據(jù)庫一行記錄形式被直接寫入到數(shù)據(jù)庫中。企業(yè)可以借助于ETL(Extract-Transform-Load)工具,把分散在企業(yè)不同位置的業(yè)務(wù)系統(tǒng)的數(shù)據(jù),抽取、轉(zhuǎn)換、加載到企業(yè)數(shù)據(jù)倉庫中,以供后續(xù)的商務(wù)智能分析使用(如圖所示)。通過采集不同業(yè)務(wù)系統(tǒng)的數(shù)據(jù)并統(tǒng)一保存到一個數(shù)據(jù)倉庫中,就可以為分散在企業(yè)不同地方的商務(wù)數(shù)據(jù)提供一個統(tǒng)一的視圖,滿足企業(yè)的各種商務(wù)決策分析需求。抽取、轉(zhuǎn)換加載(

ETL

)外部數(shù)據(jù)數(shù)據(jù)集市前端工具和應(yīng)用系統(tǒng)服務(wù)OLAP服務(wù)器OLAP服務(wù)器

數(shù)據(jù)查詢工具

自由報表工具數(shù)據(jù)分析工具各類應(yīng)用系統(tǒng)元數(shù)據(jù)管理數(shù)據(jù)倉庫管理系統(tǒng)數(shù)據(jù)倉庫監(jiān)測、運行與維護工具數(shù)據(jù)挖掘工具……數(shù)據(jù)源數(shù)據(jù)存儲和管理OLAP服務(wù)器前端工具和應(yīng)用OLTP系統(tǒng)《數(shù)據(jù)采集與預(yù)處理》文檔資料1.4.4數(shù)據(jù)采集方法《數(shù)據(jù)采集與預(yù)處理》數(shù)據(jù)采集是數(shù)據(jù)系統(tǒng)必不可少的關(guān)鍵部分,也是數(shù)據(jù)平臺的根基。根據(jù)不同的應(yīng)用環(huán)境及采集對象,有多種不同的數(shù)據(jù)采集方法,包括:系統(tǒng)日志采集分布式消息訂閱分發(fā)ETL網(wǎng)絡(luò)數(shù)據(jù)采集1.4.4數(shù)據(jù)采集方法1.系統(tǒng)日志采集Flume是Cloudera提供的一個高可用的,高可靠的,分布式的海量日志采集、聚合和傳輸?shù)南到y(tǒng),F(xiàn)lume支持在日志系統(tǒng)中定制各類數(shù)據(jù)發(fā)送方,用于收集數(shù)據(jù);同時,F(xiàn)lume提供對數(shù)據(jù)進行簡單處理,并寫到各種數(shù)據(jù)接受方(可定制)的能力。WebServerSourceChannelSinkHDFSAgent《數(shù)據(jù)采集與預(yù)處理》1.4.4數(shù)據(jù)采集方法2.分布式消息訂閱分發(fā)分布式消息訂閱分發(fā)也是一種常見的數(shù)據(jù)采集方式,其中,Kafka就是一種具有代表性的產(chǎn)品。Kafka是由LinkedIn公司開發(fā)的一種高吞吐量的分布式發(fā)布訂閱消息系統(tǒng),用戶通過Kafka系統(tǒng)可以發(fā)布大量的消息,同時也能實時訂閱消費消息。Kafka的架構(gòu)包括以下組件:話題、生產(chǎn)者、服務(wù)代理、消費者producerproducerBROKER

1BROKER

2BROKER

3topic1/part1/part2topic2/part1topic1/part1/part2topic2/part1topic1/part1/part2topic2/part1consumerconsumer《數(shù)據(jù)采集與預(yù)處理》1.4.4數(shù)據(jù)采集方法3.

ETLETL是英文Extract-Transform-Load的縮寫,常用于數(shù)據(jù)倉庫中的數(shù)據(jù)采集和預(yù)處理環(huán)節(jié)(如圖所示)。顧名思義,ETL從原系統(tǒng)中抽取數(shù)據(jù),并根據(jù)實際商務(wù)需求對數(shù)據(jù)進行轉(zhuǎn)換,并把轉(zhuǎn)換結(jié)果加載到目標數(shù)據(jù)存儲中。可以看出,ETL既包含了數(shù)據(jù)采集環(huán)節(jié),也包含了數(shù)據(jù)預(yù)處理環(huán)節(jié)。抽取、轉(zhuǎn)換加載(

ETL

)外部數(shù)據(jù)數(shù)據(jù)集市前端工具和應(yīng)用系統(tǒng)服務(wù)OLAP服務(wù)器OLAP服務(wù)器

數(shù)據(jù)查詢工具

自由報表工具數(shù)據(jù)分析工具各類應(yīng)用系統(tǒng)元數(shù)據(jù)管理數(shù)據(jù)倉庫管理系統(tǒng)數(shù)據(jù)倉庫監(jiān)測、運行與維護工具數(shù)據(jù)挖掘工具……數(shù)據(jù)源數(shù)據(jù)存儲和管理OLAP服務(wù)器前端工具和應(yīng)用OLTP系統(tǒng)《數(shù)據(jù)采集與預(yù)處理》文檔資料Kettle是一款國外開源的ETL工具,使用Java語言編寫,可以在

Windows、Linux、Unix上運行,數(shù)據(jù)抽取高效、穩(wěn)定。1.4.4數(shù)據(jù)采集方法《數(shù)據(jù)采集與預(yù)處理》4.網(wǎng)絡(luò)數(shù)據(jù)采集網(wǎng)絡(luò)數(shù)據(jù)采集是指通過網(wǎng)絡(luò)爬蟲或網(wǎng)站公開應(yīng)用程序編程接口等方式從

網(wǎng)站上獲取數(shù)據(jù)信息。該方法可以將非結(jié)構(gòu)化數(shù)據(jù)從網(wǎng)頁中抽取出來,將其存儲為統(tǒng)一的本地數(shù)據(jù)文件,并以結(jié)構(gòu)化的方式存儲。它支持圖片、音頻、視頻等文件的采集,文件與正文可以自動關(guān)聯(lián)。網(wǎng)絡(luò)數(shù)據(jù)采集的應(yīng)用領(lǐng)域十分廣泛,包括搜索引擎與垂直搜索平臺搭建與運營,綜合門戶與行業(yè)門戶、地方門戶、專業(yè)門戶網(wǎng)站數(shù)據(jù)支撐與流量運營,電子政務(wù)與電子商務(wù)平臺的運營,知識管理與知識共享,企業(yè)競爭情報系統(tǒng)的運營,BI商業(yè)智能系統(tǒng),信息咨詢與信息增值,信息安全和信息監(jiān)控等。1.5數(shù)據(jù)清洗《數(shù)據(jù)采集與預(yù)處理》數(shù)據(jù)清洗的應(yīng)用領(lǐng)域數(shù)據(jù)清洗的實現(xiàn)方式數(shù)據(jù)清洗的內(nèi)容數(shù)據(jù)清洗的注意事項數(shù)據(jù)清洗的基本流程數(shù)據(jù)清洗的評價標準1.5.1

數(shù)據(jù)清洗的應(yīng)用領(lǐng)域《數(shù)據(jù)采集與預(yù)處理》數(shù)據(jù)清洗的主要應(yīng)用領(lǐng)域包括數(shù)據(jù)倉庫與數(shù)據(jù)挖掘、數(shù)據(jù)質(zhì)量管理。(1)數(shù)據(jù)倉庫與數(shù)據(jù)挖掘。數(shù)據(jù)清洗對于數(shù)據(jù)倉庫與數(shù)據(jù)挖掘應(yīng)用來說,是核心和基礎(chǔ),它是獲取可靠、有效數(shù)據(jù)的一個基本步驟。數(shù)據(jù)倉庫是為了支持決策分析的數(shù)據(jù)集合,在數(shù)據(jù)倉庫領(lǐng)域,數(shù)據(jù)清洗一般是應(yīng)用在幾個數(shù)據(jù)庫合并時或者多個數(shù)據(jù)源進行集成時。例如,指代同一個實體的記錄,在合并后的數(shù)據(jù)庫中就會出現(xiàn)重復(fù)的記錄。數(shù)據(jù)清洗就是要把這些重復(fù)的記錄識別出來并消除它們。數(shù)據(jù)挖掘是建立在數(shù)據(jù)倉庫基礎(chǔ)上的增值技術(shù),在數(shù)據(jù)挖掘領(lǐng)域,經(jīng)常會遇到挖掘出來的特征數(shù)據(jù)存在各種異常情況,如數(shù)據(jù)缺失、數(shù)據(jù)值異常等。對于這些情況,如果不加以處理,就會直接影響到最終挖掘模型的使用效果,甚至?xí)沟脛?chuàng)建模型任務(wù)失敗。因此,在數(shù)據(jù)挖掘過程中,數(shù)據(jù)清洗是第一步。1.5.1

數(shù)據(jù)清洗的應(yīng)用領(lǐng)域《數(shù)據(jù)采集與預(yù)處理》(2)數(shù)據(jù)質(zhì)量管理。數(shù)據(jù)質(zhì)量管理貫穿數(shù)據(jù)生命周期的全過程。在數(shù)

據(jù)生命周期中,可以通過數(shù)據(jù)質(zhì)量管理的方法和手段,在數(shù)據(jù)生成、使用、消亡的過程里,及時發(fā)現(xiàn)有缺陷的數(shù)據(jù),然后借助數(shù)據(jù)管理手段,將數(shù)據(jù)正確化和規(guī)范化,從而達到符合要求的數(shù)據(jù)質(zhì)量標準。總體而言,數(shù)據(jù)質(zhì)量管理覆蓋質(zhì)量評估、數(shù)據(jù)去噪、數(shù)據(jù)監(jiān)控、數(shù)據(jù)探查、數(shù)據(jù)清洗、數(shù)據(jù)診斷等方面,而在這個過程中,數(shù)據(jù)清洗是決定數(shù)據(jù)質(zhì)量好壞的重要因素。1.5.2

數(shù)據(jù)清洗的實現(xiàn)方式《數(shù)據(jù)采集與預(yù)處理》數(shù)據(jù)清洗按照實現(xiàn)方式,可以分為手工清洗和自動清洗。手工清洗。手工清洗是通過人工方式對數(shù)據(jù)進行檢查,發(fā)現(xiàn)數(shù)據(jù)中的錯誤。這種方式比較簡單,只要投入足夠的人力、物力、財力,也能發(fā)現(xiàn)所有錯誤,但效率低下。在大數(shù)據(jù)量的情況下,手工清洗數(shù)據(jù)幾乎是不可能的。自動清洗。自動清洗是通過專門編寫的計算機應(yīng)用程序來進行數(shù)據(jù)清洗。這種方法能解決某個特定的問題,但不夠靈活,特別是在清理過程需要反復(fù)進行時(一般來說,數(shù)據(jù)清理一遍就達到要求的很少),程序復(fù)雜,清理過程變化時工作量大。而且,這種方法也沒有充分利用目前數(shù)據(jù)庫提供的強大的數(shù)據(jù)處理能力。1.5.3數(shù)據(jù)清洗的內(nèi)容《數(shù)據(jù)采集與預(yù)處理》數(shù)據(jù)清洗主要是對缺失值、重復(fù)值、異常值和數(shù)據(jù)類型有誤的數(shù)據(jù)進行處理,數(shù)據(jù)清洗的內(nèi)容主要包括:缺失值處理。由于調(diào)查、編碼和錄入誤差,數(shù)據(jù)中可能存在一些缺失值,需要給予適當(dāng)?shù)奶幚?。常用的處理方法有:估算、整例刪除、變量刪除和成對刪除。異常值處理。根據(jù)每個變量的合理取值范圍和相互關(guān)系,檢查數(shù)據(jù)是否合乎要求,發(fā)現(xiàn)超出正常范圍、邏輯上不合理或者相互矛盾的數(shù)據(jù)。數(shù)據(jù)類型轉(zhuǎn)換。數(shù)據(jù)類型往往會影響到后續(xù)的數(shù)據(jù)處理分析環(huán)節(jié),因此,需要明確每個字段的數(shù)據(jù)類型,比如,來自A表的“學(xué)號”是字符型,而來自B表的字段是日期型,在數(shù)據(jù)清洗的時候就需要對二者的數(shù)據(jù)類型進行統(tǒng)一處理。重復(fù)值處理。重復(fù)值的存在會影響數(shù)據(jù)分析和挖掘結(jié)果的準確性,所以,在數(shù)據(jù)分析和建模之前需要進行數(shù)據(jù)重復(fù)性檢驗,如果存在重復(fù)值,還需要進行重復(fù)值的刪除。1.5.4

數(shù)據(jù)清洗的注意事項《數(shù)據(jù)采集與預(yù)處理》在進行數(shù)據(jù)清洗時,需要注意如下事項:數(shù)據(jù)清洗時優(yōu)先進行缺失值、異常值和數(shù)據(jù)類型轉(zhuǎn)換的操作,最后進行重復(fù)值的處理。在對缺失值、異常值進行處理時,要根據(jù)業(yè)務(wù)的需求進行處理,這些處理并不是一成不變的,常見的填充包括:統(tǒng)計值填充(常用的統(tǒng)計值有均值、中位數(shù)、眾數(shù))、前/后值填充(一般使用在前后數(shù)據(jù)存在關(guān)聯(lián)的情況下,比如數(shù)據(jù)是按照時間進行記錄的)、零值填充。在數(shù)據(jù)清洗之前,最為重要的對數(shù)據(jù)表的查看,要了解表的結(jié)構(gòu)和發(fā)現(xiàn)需要處理的值,這樣才能將數(shù)據(jù)清洗徹底。數(shù)據(jù)量的大小也關(guān)系著數(shù)據(jù)的處理方式。在導(dǎo)入數(shù)據(jù)表后,一般需要將所有列一個個地進行清洗,來保證數(shù)據(jù)處理的徹底性,有些數(shù)據(jù)可能看起來是可以正常使用的,實際上在進行處

理時可能會出現(xiàn)問題(比如某列數(shù)據(jù)在查看時看起來是數(shù)值類型,但是其實這列數(shù)據(jù)的類型卻是字符串,這就會導(dǎo)致在進行數(shù)值操作時無法使用)。1.5.5

數(shù)據(jù)清洗的基本流程《數(shù)據(jù)采集與預(yù)處理》數(shù)據(jù)清洗的基本流程一共分為5個步驟,分別是數(shù)據(jù)分析、定義數(shù)據(jù)清洗的策略和規(guī)則、搜尋并確定錯誤實例、糾正發(fā)現(xiàn)的錯誤以及干凈數(shù)據(jù)回流。具體如下:數(shù)據(jù)分析。定義數(shù)據(jù)清洗的策略和規(guī)則。搜尋并確定錯誤實例。糾正發(fā)現(xiàn)的錯誤。干凈數(shù)據(jù)回流。1.5.6

數(shù)據(jù)清洗的評價標準《數(shù)據(jù)采集與預(yù)處理》數(shù)據(jù)清洗的評價標準包括以下幾個方面:數(shù)據(jù)的可信性。數(shù)據(jù)的可用性。數(shù)據(jù)清洗的代價。1.6

數(shù)據(jù)集成《數(shù)據(jù)采集與預(yù)處理》數(shù)據(jù)處理常常涉及數(shù)據(jù)集成操作,即將來自多個數(shù)據(jù)源的數(shù)據(jù),結(jié)合在一起形成一個統(tǒng)一的數(shù)據(jù)集合,以便為數(shù)據(jù)處理工作的順利完成提供完整的數(shù)據(jù)基礎(chǔ)。在數(shù)據(jù)集成過程中,需要考慮解決以下幾個問題:模式集成問題。冗余問題。數(shù)據(jù)值沖突檢測與消除問題。1.7

數(shù)據(jù)轉(zhuǎn)換《數(shù)據(jù)采集與預(yù)處理》數(shù)據(jù)轉(zhuǎn)換策略平滑處理規(guī)范化處理1.7.1數(shù)據(jù)轉(zhuǎn)換策略《數(shù)據(jù)采集與預(yù)處理》常見的數(shù)據(jù)轉(zhuǎn)換策略包括:平滑處理。幫助除去數(shù)據(jù)中的噪聲,常用的方法包括分箱、回歸和聚類等。聚集處理。對數(shù)據(jù)進行匯總操作。例如,每天的數(shù)據(jù)經(jīng)過匯總操作可以獲得每月或每年的總額。這一操作常用于構(gòu)造數(shù)據(jù)立方體或?qū)?shù)據(jù)進行多粒度的分析。數(shù)據(jù)泛化處理。用更抽象(更高層次)的概念來取代低層次的數(shù)據(jù)對象。例如,街道屬性可以泛化到更高層次的概念,如城市、國家,再比如年齡屬性可以映射到更高層次的概念,如青年、中年和老年。規(guī)范化處理。將屬性值按比例縮放,使之落入一個特定的區(qū)間,比如0.0~1.0。常用的數(shù)據(jù)規(guī)范化方法包括Min-Max規(guī)范化、Z-Score規(guī)范化和小數(shù)定標規(guī)范化等。屬性構(gòu)造處理。根據(jù)已有屬性集構(gòu)造新的屬性,后續(xù)數(shù)據(jù)處理直接使用新增的屬性。例如,根據(jù)已知的質(zhì)量和體積屬性,計算出新的屬性——密度。1.7.2

平滑處理噪聲是指被測變量的一個隨機錯誤和變化。平滑處理旨在幫助去掉數(shù)據(jù)中的噪聲,常用的方法包括分箱、回歸和聚類等。1.分箱分箱(Bin)方法通過利用被平滑數(shù)據(jù)點的周圍點(近鄰),對一組排序數(shù)據(jù)進行平滑,排序后的數(shù)據(jù)被分配到若干箱子(稱為Bin)中。如圖5所示,對箱子的劃分方法一般有兩種,一種是等高方法,即每個箱子中元素的個數(shù)相等,另一種是等寬方法,即每個箱子的取值間距(左右邊界之差)相同。(a)等高方法箱子中元素的個數(shù)屬性值(b)等寬方法箱子中元素的個數(shù)屬性值《數(shù)據(jù)采集與預(yù)處理》1.7.2

平滑處理《數(shù)據(jù)采集與預(yù)處理》分箱這里給出一個實例介紹分箱方法。假設(shè)有一個數(shù)據(jù)集

X={4,8,15,21,21,24,25,28,34},這里采用基于平均值的等高分箱方法對其進行平滑處理,則分箱處理的步驟如下: 把原始數(shù)據(jù)集X放入以下三個箱子:箱子1:4,8,15箱子2:21,21,24箱子3:25,28,34分別計算得到每個箱子的平均值:箱子1的平均值:9箱子2的平均值:22箱子3的平均值:29 用每個箱子的平均值替換該箱子內(nèi)的所有元素:箱子1:9,9,9箱子2:22,22,22箱子3:29,29,29合并各個箱子中的元素得到新的數(shù)據(jù)集{9,9,9,22,22,22,29,29,29}。1.7.2

平滑處理《數(shù)據(jù)采集與預(yù)處理》1.分箱此外,還可以采用基于箱子邊界的等高分箱方法對數(shù)據(jù)進行平滑處理。利用邊界進行平滑時,對于給定的箱子,其最大值與最小值就構(gòu)成了該箱子的邊界,利用每個箱子的邊界值(最大值或最小值)可替換該箱子中的所有值。這時的分箱結(jié)果如下:箱子1:4,4,15

箱子2:21,21,24箱子3:25,25,34合并各個箱子中的元素得到新的數(shù)據(jù)集{4,4,15,21,21,24,25,25,34}。1.7.2

平滑處理2.回歸可以利用擬合函數(shù)對數(shù)據(jù)進行平滑。例如,借助線性回歸方法(包括多變量回歸方法),就可以獲得多個變量之間的擬合關(guān)系,從而達到利用一個(或一組)變量值來預(yù)測另一個變量取值的目的。如圖所示,利用回歸分析方法所獲得的擬合函數(shù),能夠幫助平滑數(shù)據(jù)并除去其中的噪聲。圖對數(shù)據(jù)進行線性回歸擬合《數(shù)據(jù)采集與預(yù)處理》1.7.2

平滑處理3.聚類通過聚類分析方法可幫助發(fā)現(xiàn)異常數(shù)據(jù)。如圖所示,相似或相鄰近的數(shù)據(jù)聚合在一起形成了各個聚類集合,而那些位于這些聚類集合之外的數(shù)據(jù)對象,則被認為是異常數(shù)據(jù)。圖基于聚類分析方法的異常數(shù)據(jù)監(jiān)測《數(shù)據(jù)采集與預(yù)處理》1.7.3

規(guī)范化處理《數(shù)據(jù)采集與預(yù)處理》1.

Min-Max規(guī)范化Min-Max規(guī)范化方法對被轉(zhuǎn)換數(shù)據(jù)進行一種線性轉(zhuǎn)換,其轉(zhuǎn)換公式如下:x=(待轉(zhuǎn)換屬性值?屬性最小值)/(屬性最大值?屬性最小值)例如,假設(shè)屬性的最大值和最小值分別是87000元和11000元,現(xiàn)在需要

利用Min-Max規(guī)范化方法,將“顧客收入”屬性的值映射到0~1

的范圍內(nèi),則“顧客收入”屬性的值為72400元時,對應(yīng)的轉(zhuǎn)換結(jié)果如下:

(72400?11000)/(87000?11000)=0.808Min-Max規(guī)范化比較簡單,但是也存在一些缺陷,當(dāng)有新的數(shù)據(jù)加入時,可能導(dǎo)致最大值和最小值的變化,需要重新定義屬性最大值和最小值。1.7.3

規(guī)范化處理《數(shù)據(jù)采集與預(yù)處理》2.

Z-Score規(guī)范化Z-Score規(guī)范化的主要目的就是將不同量級的數(shù)據(jù)統(tǒng)一轉(zhuǎn)化為同一個量級,統(tǒng)一用計算出的Z-Score值衡量,以保證數(shù)據(jù)之間的可比性。其轉(zhuǎn)換公式

如下:z=(待轉(zhuǎn)換屬性值?屬性平均值)/屬性標準差假設(shè)我們要比較學(xué)生A與學(xué)生B的考試成績,A的考卷滿分是100分(及格60分),B的考卷滿分是700分(及格420分)。很顯然,A考出的70分與B考出的70分代表著完全不同的意義。但是從數(shù)值來講,A與B在數(shù)據(jù)表中都是用數(shù)字70代表各自的成績。那么如何能夠用一個同等的標準來比較

A與B的成績呢?Z-Score就可以解決這一問題。假設(shè)A班級的平均分是80,標準差是10,A考了90分;B班的平均分是

400,標準差是100,B考了600分。通過上面的公式,我們可以計算得出,

A的Z-Score是1(即(90-80)/10),B的Z-Socre是2(即(600-400)/100),因此,B的成績更為優(yōu)異。若A考了60分,B考了300分,則A的Z-Score是-2,B的Z-Score是-1,這時,A的成績比較差。1.7.3

規(guī)范化處理《數(shù)據(jù)采集與預(yù)處理》2.

Z-Score規(guī)范化Z-Score的優(yōu)點是不需要知道數(shù)據(jù)集的最大值和最小值,對離群點規(guī)范化效果好。此外,Z-Score能夠應(yīng)用于數(shù)值型的數(shù)據(jù),并且不受數(shù)據(jù)量級的影響,因為它本身的作用就是消除量級給分析帶來的不便。但是Z-Score也有一些缺陷。首先,Z-Score對于數(shù)據(jù)的分布有一定的要求,正態(tài)分布是最有利于Z-Score計算的。其次,Z-Score消除了數(shù)據(jù)具有的實際意義,A的Z-Score與B的Z-Score與他們各自的分數(shù)不再有關(guān)系,因此,Z-Score的結(jié)果只能用于比較數(shù)據(jù)間的結(jié)果,數(shù)據(jù)的真實意義還需要還原原值。1.7.3

規(guī)范化處理《數(shù)據(jù)采集與預(yù)處理》3.小數(shù)定標規(guī)范化小數(shù)定標規(guī)范化方法通過移動屬性值的小數(shù)位置來達到規(guī)范化的目的。所移動的小數(shù)位數(shù)取決于屬性絕對值的最大值。其轉(zhuǎn)換公式為:x=待轉(zhuǎn)換屬性值/(10的k次方)其中,k為能夠使該屬性絕對值的最大值的轉(zhuǎn)換結(jié)果小于1的最小值。比如,假設(shè)屬性的取值范圍是-957~924,則該屬性絕對值的最大值為

957,很顯然,這時k=3。當(dāng)屬性的值為426時,對應(yīng)的轉(zhuǎn)換結(jié)果如下:426/10的3次方=0.426小數(shù)定標法的優(yōu)點是直觀簡單,缺點是并沒有消除屬性間的權(quán)重差異。1.8數(shù)據(jù)脫敏《數(shù)據(jù)采集與預(yù)處理》數(shù)據(jù)脫敏原則數(shù)據(jù)脫敏方法1.8.1數(shù)據(jù)脫敏原則《數(shù)據(jù)采集與預(yù)處理》數(shù)據(jù)脫敏不僅要執(zhí)行“數(shù)據(jù)漂白”,抹去數(shù)據(jù)中的敏感內(nèi)容,同時也需要保持原有的數(shù)據(jù)特征、業(yè)務(wù)規(guī)則和數(shù)據(jù)關(guān)聯(lián)性,保證開發(fā)、測試以及大數(shù)據(jù)類業(yè)務(wù)不會受到脫敏的影響,達成脫敏前后的數(shù)據(jù)一致性和有效性,具體如下:保持原有數(shù)據(jù)特征。數(shù)據(jù)脫敏前后必須保證數(shù)據(jù)特征的保持,例如:身份證號碼由十七位數(shù)字本體碼和一位校驗碼組成,分別為區(qū)域地址碼(6

位)、出生日期(8

位)、順序碼(3

位)和校驗碼(1位)。那么身份證號碼的脫敏規(guī)則就需要保證脫敏后依舊保持這些特征信息。保持數(shù)據(jù)之間的一致性。在不同業(yè)務(wù)中,數(shù)據(jù)和數(shù)據(jù)之間具有一定的關(guān)聯(lián)性。例如:出生年月或年齡和出生日期之間的關(guān)系。同樣,身份證信息脫敏后仍需要保證出生年月字段和身份證中包含的出生日期之間的一致性。1.8.1數(shù)據(jù)脫敏原則《數(shù)據(jù)采集與預(yù)處理》保持業(yè)務(wù)規(guī)則的關(guān)聯(lián)性。保持數(shù)據(jù)業(yè)務(wù)規(guī)則的關(guān)聯(lián)性是指數(shù)據(jù)脫敏時數(shù)據(jù)關(guān)聯(lián)性以及業(yè)務(wù)語義等保持不變,其中數(shù)據(jù)關(guān)聯(lián)性包括:主外鍵關(guān)聯(lián)性、關(guān)聯(lián)字段的業(yè)務(wù)語義關(guān)聯(lián)性等。特別是高度敏感的賬戶類主體數(shù)據(jù),往往會貫穿主體的所有關(guān)系和行為信息,因此需要特別注意保證所有相關(guān)主體信息的一致性。多次脫敏之間的數(shù)據(jù)一致性。相同的數(shù)據(jù)進行多次脫敏,或者在不同的測試系統(tǒng)進行脫敏,需要確保每次脫敏的數(shù)據(jù)始終保持一致性,只有這樣才能保障業(yè)務(wù)系統(tǒng)數(shù)據(jù)變更的持續(xù)一致性以及廣義業(yè)務(wù)的持續(xù)一致性。1.8.2數(shù)據(jù)脫敏方法《數(shù)據(jù)采集與預(yù)處理》數(shù)據(jù)脫敏的方法主要包括:數(shù)據(jù)替換。用設(shè)置的固定虛構(gòu)值替換真值。例如將手機號碼統(tǒng)一替換無效化。通過對數(shù)據(jù)值的截斷、加密、隱藏等方式使敏感數(shù)據(jù)脫敏,使其不再具有利用價值,例如將地址的值替換為“******”。數(shù)據(jù)無效化與數(shù)據(jù)替換所達成的效果基本類似。隨機化。采用隨機數(shù)據(jù)代替真值,保持替換值的隨機性以模擬樣本的真實性。例如用隨機生成的姓和名代替真值。偏移和取整。通過隨機移位改變數(shù)字數(shù)據(jù),例如把日期“2018-01-028:12:25”變?yōu)椤?018-01-02

8:00:00”。偏移取整在保持了數(shù)據(jù)的安全性的同時,保證了范圍的大致真實性,此項功能在大數(shù)據(jù)利用環(huán)境中具有重大價值。掩碼屏蔽。掩碼屏蔽是針對賬戶類數(shù)據(jù)的部分信息進行脫敏時的有力工具,比如銀行卡號或是身份證號的脫敏。比如,把身份證號碼替換為“220524********0254”。靈活編碼。在需要特殊脫敏規(guī)則時,可執(zhí)行靈活編碼以滿足各種可能的脫敏規(guī)則。比如用固定字母和固定位數(shù)的數(shù)字替代合同編號真值。2《數(shù)據(jù)采集與預(yù)處理》第2章大數(shù)據(jù)實驗環(huán)境搭建(PPT版本號:2022年1月版本)數(shù)據(jù)采集與預(yù)處理提綱《數(shù)據(jù)采集與預(yù)處理》Python的安裝和使用JDK的安裝MySQL數(shù)據(jù)庫的安裝和使用Hadoop的安裝和使用2.1

Python的安裝和使用《數(shù)據(jù)采集與預(yù)處理》Python簡介Python的安裝Python的基本使用方法Python基礎(chǔ)語法知識Python第三方模塊的安裝2.1.1

Python簡介《數(shù)據(jù)采集與預(yù)處理》Python(發(fā)音[?pa?θ?n])是1989年由荷蘭人GuidovanRossum發(fā)明的一種面向?qū)ο蟮慕忉屝透呒壘幊陶Z言。Python的第一個公開發(fā)行版發(fā)行于

1991年,自從2004年以后,Python的使用率呈線性增長。TIOBE在2019年1月發(fā)布的排行榜顯示,Python獲得“TIOBE最佳年度語言”稱號,這是Python第3次獲得“TIOBE最佳年度語言”,也是獲獎次數(shù)最多的編程語言。發(fā)展到今天,Python已經(jīng)成為最受歡迎的程序設(shè)計語言之一。Python常被稱為“膠水語言”,能夠把用其它語言制作的各種模塊(尤其是C/C++)很輕松地連接在一起。常見的一種應(yīng)用情形是,使用Python快速生成程序的原型(有時甚至是程序的最終界面),然后對其中有特別要求的部分,用更合適的語言改寫,比如3D游戲中的圖形渲染模塊,性能要求特別高,就可以用C/C++重寫,而后封裝為Python可以調(diào)用的擴展類庫。2.1.1

Python簡介《數(shù)據(jù)采集與預(yù)處理》Python的設(shè)計哲學(xué)是“優(yōu)雅”、“明確”、“簡單”。在設(shè)計Python語言時,如果面臨多種選擇,Python開發(fā)者一般會拒絕花哨的語法,而選擇明確地沒有或者很少有歧義的語法。總體來說,選擇Python開發(fā)程序具有簡單、開發(fā)速度快、節(jié)省時間和精力等特點,因此,在Python開發(fā)領(lǐng)域流傳著這樣一句話:“人生苦短,我用Python”。Python作為一門高級編程語言,雖然誕生的時間并不長,但是發(fā)展速度很快,已經(jīng)成為很多編程愛好者開展入門學(xué)習(xí)的第一門編程語言。總體而言,

Python語言具有以下優(yōu)點:語言簡單。開源、免費。面向?qū)ο???缙脚_。強大的生態(tài)系統(tǒng)。2.1.1

Python簡介《數(shù)據(jù)采集與預(yù)處理》豐富的生態(tài)系統(tǒng)也給專業(yè)開發(fā)者帶來了極大的便利。大量成熟的第三方庫可以直接使用,專業(yè)開發(fā)者只需要使用很少的語法結(jié)構(gòu)就可以編寫出功能強大的代碼,縮短了開發(fā)周期,提高了開發(fā)效率。常用的Python第三方庫包括Matplotlib(數(shù)據(jù)可視化庫)、NumPy(數(shù)值計算功能庫)、SciPy(數(shù)學(xué)、科學(xué)、工程計算功能庫)、pandas(數(shù)據(jù)分析高層次應(yīng)用庫)、Scrapy(網(wǎng)絡(luò)爬蟲功能庫)、BeautifulSoup(HTML和XML的解析庫)、Django(Web應(yīng)用框架)、Flask(Web應(yīng)用微框架)等。2.1.2Python的安裝《數(shù)據(jù)采集與預(yù)處理》Python自發(fā)布以來,主要經(jīng)歷了3個版本的變化,分別是1994年發(fā)布的1.0版本、2000年發(fā)布的2.0版本和2008年發(fā)布的3.0版本。其中,1.0版本已經(jīng)過時,2.0和3.0版本都在保持持續(xù)更新。Python官方網(wǎng)站目前同時發(fā)行

Python2.x和Python3.x兩個不同系列的版本,并且彼此之間不兼容,除了輸入輸出方式有所不同,很多內(nèi)置函數(shù)的實現(xiàn)和使用方式也有較大差別。本教程使用Python3.8.7版本,理由如下:Python2.x和Python3.x的思想是共通的。使用Python3.x是大勢所趨。2.1.2Python的安裝Python可以用于多種平臺,包括Windows、Linux和Mac

OS等。本教程采用的操作系統(tǒng)是Windows7或以上版本,使用的Python版本是3.8.7。請到

Python官網(wǎng)(https:///)下載與自己計算機操作系統(tǒng)匹配的安裝包,比如,64位Windows操作系統(tǒng)可以下載python-3.8.7-amd64.exe。在安裝過程中,要注意選中“Add

python3.8

to

PATH”,這樣可以在安裝過程中自動配置PATH環(huán)境變量,避免了手動配置的繁瑣過程。安裝成功以后,需要檢測是否安裝成功??梢源蜷_Windows系統(tǒng)的cmd命令界面,并在命令提示符后面輸入“python”后回車,如果出現(xiàn)如圖2-1所示信息,則說明Python已經(jīng)安裝成功?!稊?shù)據(jù)采集與預(yù)處理》2.1.3Python的基本使用方法假設(shè)在Windows系統(tǒng)的C盤根目錄下已經(jīng)存在一個代碼文件hello.py,該文件里面只有如下一行代碼:print("Hello

World")現(xiàn)在我們要運行這個代碼文件??梢源蜷_Windows系統(tǒng)的cmd命令界面,并在命令提示符后面輸入如下語句:$

python

C:\hello.py運行結(jié)果如圖2-2所示。圖2-2

在cmd命令界面中執(zhí)行Python代碼文件《數(shù)據(jù)采集與預(yù)處理》2.1.3Python的基本使用方法Python安裝成功以后,會自帶一個集成式開發(fā)環(huán)境IDLE,它是一個PythonShell,程序開發(fā)人員可以利用Python

Shell與Python交互。在Windows系統(tǒng)的“開始”菜單中找到“IDLE(Python3.864-bit)”,打開進入IDLE主窗口(如圖2-3所示),窗口左側(cè)會顯示Python命令提示符

“>>>”,可以在提示符后面輸入Python代碼,回車后就會立即執(zhí)行并返回結(jié)果。圖2-3

IDLE主窗口《數(shù)據(jù)采集與預(yù)處理》2.1.3Python的基本使用方法如果要創(chuàng)建一個代碼文件,可以在IDLE主窗口的頂部菜單欄中選擇“File->New

File”,然后就會彈出如圖2-4所示的文件窗口,可以在里面輸入

Python代碼,然后,在頂部菜單欄中選擇“File->Save

As...”,把文件保存為hello.py。圖2-4

IDLE的文件窗口《數(shù)據(jù)采集與預(yù)處理》2.1.3Python的基本使用方法如果要運行代碼文件hello.py,可以在IDLE的文件窗口的頂部菜單欄中,選擇“Run->Run

Module”,這時就會開始運行程序。程序運行結(jié)束后,會在

IDLE

Shell窗口顯示執(zhí)行結(jié)果(如圖2-5所示)。《數(shù)據(jù)采集與預(yù)處理》2.1.3Python的基本使用方法《數(shù)據(jù)采集與預(yù)處理》在實際開發(fā)中,可以通過使用IDLE提供的快捷鍵(如表2-1所示)來提高程序開發(fā)效率。表2-1

IDLE常用快捷鍵快捷鍵功能說明F1打開Python幫助文檔Ctrl+]縮進代碼塊Ctrl+[取消代碼塊縮進Ctrl+F6重新啟動IDLE

ShellCtrl+Z撤銷一步操作Ctrl+Shift+Z恢復(fù)上一次的撤銷操作Ctrl+S保存文件Alt+P瀏覽歷史命令(上一條)Alt+N瀏覽歷史命令(下一條)Alt+/自動補全前面曾經(jīng)出現(xiàn)過的單詞,如果之前有多個單詞具有相同前綴,可以連續(xù)按該快捷鍵,在多個單詞中循環(huán)選擇Alt+3注釋代碼塊Alt+4取消代碼塊注釋Alt+g轉(zhuǎn)到某一行2.1.4Python基礎(chǔ)語法知識《數(shù)據(jù)采集與預(yù)處理》1.基本數(shù)據(jù)類型Python3.x中有6個標準的數(shù)據(jù)類型,分別是數(shù)字、字符串、列表、元組、字典和集合。這6個標準的數(shù)據(jù)類型又可以進一步劃分為基本數(shù)據(jù)類型和組合數(shù)據(jù)類型。其中,數(shù)字和字符串是基本數(shù)據(jù)類型;列表、元組、字典和集合是組合數(shù)據(jù)類型。(1)數(shù)字在Python中,數(shù)字類型包括整數(shù)(int)、浮點數(shù)(float)、布爾類型(bool)和復(fù)數(shù)(complex),而且,數(shù)字類型變量可以表示任意大的數(shù)值。2.1.4Python基礎(chǔ)語法知識《數(shù)據(jù)采集與預(yù)處理》①整數(shù)。整數(shù)類型用來存儲整數(shù)數(shù)值。在Python中,整數(shù)包括正整數(shù)、負整數(shù)和0。按照進制的不同,整數(shù)類型還可以劃分為十進制整數(shù)、八進制整數(shù)、十六進制整數(shù)和二進制整數(shù)。②浮點數(shù)。浮點數(shù)也稱為“小數(shù)”,由整數(shù)部分和小數(shù)部分構(gòu)成,比如3.14、0.2、-1.648、5.8726849267842等。浮點數(shù)也可以用科學(xué)計數(shù)法表示,比如1.3e4、-0.35e3、2.36e-3等。③布爾類型。Python中的布爾類型主要用來表示“真”或“假”的值,每個對象天生具有布爾類型的True或False值??諏ο?、值為零的任何數(shù)字或者對象None的布爾值都是False。在Python3.x中,布爾值是作為整數(shù)的子類實現(xiàn)的,布爾值可以轉(zhuǎn)換為數(shù)值,True的值為1,F(xiàn)alse的值為0,可以進行數(shù)值運算。④復(fù)數(shù)。復(fù)數(shù)由實數(shù)部分和虛數(shù)部分構(gòu)成,可以用a+bj或者complex(a,b)表示,復(fù)數(shù)的實部a和虛部b都是浮點型。例如,一個復(fù)數(shù)的實部為2.38,虛部為18.2j,則這個復(fù)數(shù)為2.38+18.2j。2.1.4Python基礎(chǔ)語法知識《數(shù)據(jù)采集與預(yù)處理》(2)字符串字符串是Python

中最常用的數(shù)據(jù)類型,它是連續(xù)的字符序列,一般使用單引號('')、雙引號("")或三引號(''''''或"""""")進行界定。其中,單引號和雙引號中的字符序列必須在一行上,而三引號內(nèi)的字符序列可以分布在連續(xù)的多行上,從而可以支持格式較為復(fù)雜的字符串。例如,'xyz'、'123'、'廈門'、"hadoop"、'''spark'''、"""flink"""都是合法字符串,空字符串可以表示為''、""或''''''。2.1.4Python基礎(chǔ)語法知識《數(shù)據(jù)采集與預(yù)處理》2.序列數(shù)據(jù)結(jié)構(gòu)是通過某種方式組織在一起的數(shù)據(jù)元素的集合。序列是Python中最基本的數(shù)據(jù)結(jié)構(gòu),是指一塊可存放多個值的連續(xù)內(nèi)存空間,這些值按一定的順序排列,可通過每個值所在位置的索引訪問它們。在Python

中,序列類型包括字符串、列表、元組、字典和集合。2.1.4Python基礎(chǔ)語法知識《數(shù)據(jù)采集與預(yù)處理》(1)列表列表是最常用的Python數(shù)據(jù)類型,列表的數(shù)據(jù)項不需要具有相同的類型。在形式上,只要把逗號分隔的不同的數(shù)據(jù)項使用方括號括起來,就可以構(gòu)成一個列表,例如:['hadoop',

'spark',

2021,2010][1,

2,3,4,5]["a",

"b",

"c",

"d"]['Monday',

'Tuesday',

'Wednesday',

'Thursday',

'Friday',

'Saturday',

'Sunday']同其他類型的Python變量一樣,在創(chuàng)建列表時,也可以直接使用賦值運算符

“=”將一個列表賦值給變量。例如,以下都是合法的列表定義:student=['小明','男',2010,10]num=[1,

2,

3,

4,

5]motto=["自強不息","止于至善"]list=['hadoop','年度暢銷書',[2020,12000]]可以看出,列表里面的元素仍然可以是列表。需要注意的是,盡管一個列表中可以放入不同類型的數(shù)據(jù),但是,為了提高程序的可讀性,一般建議在一個列表中只出現(xiàn)一種數(shù)據(jù)類型。2.1.4Python基礎(chǔ)語法知識《數(shù)據(jù)采集與預(yù)處理》(2)元組Python中的列表適合存儲在程序運行時變化的數(shù)據(jù)集。列表是可以修改的,這對要存儲一些要變化的數(shù)據(jù)而言至關(guān)重要。但是,也不是任何數(shù)

據(jù)都要在程序運行期間進行修改,有時候需要創(chuàng)建一組不可修改的元素,此時可以使用元組。元組的創(chuàng)建和列表的創(chuàng)建很相似,不同之處在于,創(chuàng)建列表時使用的是方括號,而創(chuàng)建元組時則需要使用圓括號。元組的創(chuàng)建方法很簡單,只需要在圓括號中添加元素,并使用逗號隔開即可,具體實例如下:>>>

tuple1

=('hadoop','spark',2008,2009)>>>

tuple2

=(1,2,3,4,5)>>>tuple3=('hadoop',2008,("大數(shù)據(jù)","分布式計算

"),["spark","flink","storm"])2.1.4Python基礎(chǔ)語法知識《數(shù)據(jù)采集與預(yù)處理》(3)字典字典也是Python提供的一種常用的數(shù)據(jù)結(jié)構(gòu),它用于存放具有映射關(guān)系的數(shù)據(jù)。比如有一份學(xué)生成績表數(shù)據(jù),語文67分,數(shù)學(xué)91分,英語78分,如果使用列表保存這些數(shù)據(jù),則需要兩個列表,即["語文","數(shù)學(xué)","英語"]和[67,91,78]。但是,使用兩個列表來保存這組數(shù)據(jù)以后,就無法記錄兩組數(shù)據(jù)之間的關(guān)聯(lián)關(guān)系。為了保存這種具有映射關(guān)系的數(shù)據(jù),Python

提供了字典,字典相當(dāng)于保存了兩組數(shù)據(jù),其中一組數(shù)據(jù)是關(guān)鍵數(shù)據(jù),被稱為“鍵”(key);另一組數(shù)據(jù)可通過鍵來訪問,被稱為“值”(value)。2.1.4Python基礎(chǔ)語法知識《數(shù)據(jù)采集與預(yù)處理》字典具有如下特性: 字典的元素是“鍵值對”,由于字典中的鍵是非常關(guān)鍵的數(shù)據(jù),而且程序需要通過鍵來訪問值,因此字典中的鍵不允許重復(fù),必須是唯一值,而且鍵必須不可變;字典不支持索引和切片,但可以通過“鍵”查詢“值”; 字典是無序的對象集合,列表是有序的對象集合,兩者之間的區(qū)別在于,字典當(dāng)中的元素是通過鍵來存取的,而不是通過偏移量存??;字典是可變的,并且可以任意嵌套。字典用大括號{}標識。在使用大括號語法創(chuàng)建字典時,大括號中應(yīng)包含多個“鍵值對”,鍵與值之間用英文冒號隔開,多個鍵值對之間用英文逗號隔開。具體實例如下:#鍵是字符串>>>grade={"語文":67,"數(shù)學(xué)":91,"英語":78}>>>

grade{'語文':67,'數(shù)學(xué)':91,'英語':78}2.1.4Python基礎(chǔ)語法知識《數(shù)據(jù)采集與預(yù)處理》(4)集合集合(set)是一個無序的不重復(fù)元素序列。集合中的元素必須是不可變類型。在形式上,集合的所有元素都放在一對大括號“{}”中,兩個相鄰的元素之間使用逗號分隔。可以直接使用大括號{}創(chuàng)建集合,實例如下:>>>

dayset

=

{'Monday',

'Tuesday',

'Wednesday',

'Thursday',

'Friday','Saturday',

'Sunday'}>>>

dayset{'Tuesday',

'Monday',

'Wednesday',

'Saturday',

'Thursday',

'Sunday',

'Friday'}在創(chuàng)建集合時,如果存在重復(fù)元素,Python只會自動保留一個,實例如下:>>>

numset

=

{2,5,7,8,5,9}>>>

numset{2,

5,

7,

8,

9}2.1.4Python基礎(chǔ)語法知識《數(shù)據(jù)采集與預(yù)處理》3.控制結(jié)構(gòu)(1)選擇語句選擇語句也稱為“條件語句”,就是對語句中不同條件的值進行判斷,從而根據(jù)不同的條件執(zhí)行不同的語句。選擇語句可以分為以下3種形式:簡單的if語句;if…else語句;

if…elif…else多分支語句。2.1.4Python基礎(chǔ)語法知識《數(shù)據(jù)采集與預(yù)處理》【例2-1】使用if語句求出兩個數(shù)的較小值。#

two_number.pya,b,c

=

4,5,0if

a>b:c

=

bif

a<b:c

=

aprint("兩個數(shù)的較小值是:",c)2.1.4Python基礎(chǔ)語法知識《數(shù)據(jù)采集與預(yù)處理》【例2-2】判斷一個數(shù)是奇數(shù)還是偶數(shù)。#

odd_even.pya

=

5if

a

%

2==

0:print("這是一個偶數(shù)。")else:print("這是一個奇數(shù)。")2.1.4Python基礎(chǔ)語法知識《數(shù)據(jù)采集與預(yù)處理》【例2-3】判斷每天上課的內(nèi)容。#

lesson.pyday=int(input("請輸入第幾天課程:"))if

day

==

1:print("第1天上數(shù)學(xué)課")elif

day

==2:print("第2天上語文課")else:print("其他時間上計算機課")2.1.4Python基礎(chǔ)語法知識《數(shù)據(jù)采集與預(yù)處理》(2)循環(huán)語句循環(huán)語句就是重復(fù)執(zhí)行某段程序代碼,直到滿足特定條件為止。在Python語言中,循環(huán)語句有以下兩種形式:while循環(huán)語句;for循環(huán)語句。2.1.4Python基礎(chǔ)語法知識《數(shù)據(jù)采集與預(yù)處理》【例2-4】用while循環(huán)實現(xiàn)計算1~99的整數(shù)和。#

int_sum.pyn

=

1sum

=

0while(n

<=

99):sum

+=

nn

+=

1print("1~99的整數(shù)和是:",sum)2.1.4Python基礎(chǔ)語法知識《數(shù)據(jù)采集與預(yù)處理》【例2-5】用for循環(huán)實現(xiàn)計算1~99的整數(shù)和。#

int_sum_for.pysum=0for

n

in

range(1,100):

#range(1,100)用于生成

1到100(不包括100)的整數(shù)sum+=nprint("1到99的整數(shù)和是:",sum)2.1.4Python基礎(chǔ)語法知識《數(shù)據(jù)采集與預(yù)處理》4.函數(shù)函數(shù)是可以重復(fù)使用的用于實現(xiàn)某種功能的代碼塊。與其他語言類似,在Python中,函數(shù)的優(yōu)點也是提高程序的模塊性和代碼復(fù)用性。【例2-6】定義一個帶有參數(shù)的函數(shù)。#

i_like.py#定義帶有參數(shù)的函數(shù)def

like(language):'''打印喜歡的編程語言!'''print("我喜歡{}語言!".format(language))return#調(diào)用函數(shù)like("C")like("C#")10

like("Python")上面代碼的執(zhí)行結(jié)果如下:我喜歡C語言!我喜歡C#語言!我喜歡Python語言!2.1.5Python第三方模塊的安裝《數(shù)據(jù)采集與預(yù)處理》Python的強大之處在于它擁有非常豐富的第三方模塊(或第三方庫),可以幫我們方便、快捷地實現(xiàn)網(wǎng)絡(luò)爬蟲、數(shù)據(jù)清洗、數(shù)據(jù)可視化和科學(xué)計算等功能。為了便于用于安裝和管理第三方庫和軟件,Python提供了一個擴展模塊(或擴展庫)管理工具pip,Python3.8.7在安裝的時候會默認安裝pip。pip之所以能夠成為最流行的擴展模塊管理工具,并不是因為它被Python官方作為默認的擴展模塊管理器,而是因為它自身有很多優(yōu)點,主要包括:pip提供了豐富的功能,包括擴展模塊的安裝和卸載,以及顯示已經(jīng)安裝的擴展模塊;pip能夠很好地支持虛擬環(huán)境;pip可以集中管理依賴;pip能夠處理二進制格式;pip是先下載后安裝,如果安裝失敗,也會清理干凈,不會留下一個中間狀態(tài)。2.1.5Python第三方模塊的安裝《數(shù)據(jù)采集與預(yù)處理》pip提供的命令不多,但是都很實用。表2-2給出了常用pip命令的使用方法。表2-2常用pip命令的使用方法pip命令說明pip

install

SomePackage安裝SomePackage模塊pip

list列出當(dāng)前已經(jīng)安裝的所有模塊pip

install

--upgrade

SomePackage升級SomePackage模塊pip

uninstall

SomePackage卸載SomePackage模塊例如,Matplotlib是最著名的Python繪圖庫,它提供了一整套和Matlab相似的API,十分適合交互式地進行制圖,可以使用如下命令安裝Matplotlib:$

pip

installmatplotlib安裝成功以后,使用如下命令就可以看到安裝的Matplotlib:$

piplist2.2

JDK的安裝訪問Oracle官網(wǎng)(https:///java/technologies/javase/javase-jdk8-downloads.html)下載JDK安裝包并完成安裝。安裝完成后需要設(shè)置

Path環(huán)境變量,右鍵點擊“我的電腦”->“高級系統(tǒng)設(shè)置”->“環(huán)境變量”,然后,在用戶變量Path中加入類似如下的信息:C:\Program

Files\Java\jdk1.8.0_111\bin這個新添加的值和此前已經(jīng)存在的值之間用英文分號隔開(如圖2-6所示)。上面的“jdk1.8.0_111”是剛才已經(jīng)安裝的JDK的版本號。圖2-6

編輯用戶變量《數(shù)據(jù)采集與預(yù)處理》2.2

JDK的安裝然后,再新建一個環(huán)境變量JAVA_HOME,把它的值設(shè)置為如下內(nèi)容(如圖2-7所示):C:\Program

Files\Java\jdk1.8.0_111圖2-7

編輯系統(tǒng)變量《數(shù)據(jù)采集與預(yù)處理》2.2

JDK的安裝打開cmd窗口,輸入“java-version”命令測試是否安裝成功,如果安裝成功,則會返回如圖2-8所示信息。圖2-8

java–version命令執(zhí)行結(jié)果《數(shù)據(jù)采集與預(yù)處理》2.3

MySQL數(shù)據(jù)庫的安裝和使用《數(shù)據(jù)采集與預(yù)處理》關(guān)系數(shù)據(jù)庫關(guān)系數(shù)據(jù)庫標準語言SQL安裝MySQLMySQL數(shù)據(jù)庫的使用方法2.3.1

關(guān)系數(shù)據(jù)庫《數(shù)據(jù)采集與預(yù)處理》數(shù)據(jù)庫是一種主流的數(shù)據(jù)存儲和管理技術(shù)。數(shù)據(jù)庫指的是以一定方式儲存在一起、能為多個用戶共享、具有盡可能小的冗余度、與應(yīng)用程序彼此獨立的數(shù)據(jù)集合。目前比較主流的數(shù)據(jù)庫是關(guān)系數(shù)據(jù)庫,它采用了關(guān)系數(shù)據(jù)模型來組織和管理數(shù)據(jù)。一個關(guān)系數(shù)據(jù)庫可以看成是許多關(guān)系表的集合,每個關(guān)系表可以看成一張二維表格,如表2-3所示的學(xué)生信息表。表2-3

學(xué)生信息表學(xué)號姓名性別年齡考試成績95001張三男218895002李四男229595003王梅女227395004林莉女21962.3.2關(guān)系數(shù)據(jù)庫標準語言SQL《數(shù)據(jù)采集與預(yù)處理》結(jié)構(gòu)化查詢語言(Structured

Query

Language,SQL)是關(guān)系數(shù)據(jù)庫的標準語言,也是一個通用的功能極強的關(guān)系數(shù)據(jù)庫語言,其功能不僅僅是查詢,而是包括數(shù)據(jù)庫創(chuàng)建、數(shù)據(jù)庫數(shù)據(jù)的插入與修改、數(shù)據(jù)庫安全性完整性定義等一系列功能。SQL的主要特點如下:綜合統(tǒng)一。高度非過程化。面向集合的操作方式。以同一種語法結(jié)構(gòu)提供多種使用方式。語言簡潔,易學(xué)易用。2.3.2關(guān)系數(shù)據(jù)庫標準語言SQL《數(shù)據(jù)采集與預(yù)處理》下面介紹一些常用的SQL語句。1.創(chuàng)建數(shù)據(jù)庫在使用數(shù)據(jù)庫之前,需要創(chuàng)建數(shù)據(jù)庫,具體語法如下:CREATE

DATABASE

數(shù)據(jù)庫名稱;每條SQL語句的末尾用英文分號結(jié)束??梢允褂萌缦抡Z句查看已經(jīng)創(chuàng)建的所有數(shù)據(jù)庫:SHOW

DATABASES;創(chuàng)建好數(shù)據(jù)庫以后,可以使用如下語句打開數(shù)據(jù)庫:USE

數(shù)據(jù)庫名稱;2.3.2關(guān)系數(shù)據(jù)庫標準語言SQL《數(shù)據(jù)采集與預(yù)處理》2.創(chuàng)建表在一個數(shù)據(jù)庫中,會包含多個表。創(chuàng)建一個表的語法如下:CREATE

TABLE

表名稱(列名稱1

數(shù)據(jù)類型,列名稱2

數(shù)據(jù)類型,列名稱3

數(shù)據(jù)類型,);可以使用如下SQL語句查看所有已經(jīng)創(chuàng)建的表:SHOW

TABLES;2.3.2關(guān)系數(shù)據(jù)庫標準語言SQL《數(shù)據(jù)采集與預(yù)處理》3.插入數(shù)據(jù)可以使用INSERT

INTO語句向表中插入新的記錄,其語法形式如下:

INSERT

INTO

表名稱VALUES(值1,

值2,);也可以指定所要插入數(shù)據(jù)的列:INSERT

INTO表名稱(列1,

列2,...)VALUES(值1,

值2,);2.3.2關(guān)系數(shù)據(jù)庫標準語言SQL《數(shù)據(jù)采集與預(yù)處理》查詢數(shù)據(jù)可以使用SELECT語句從數(shù)據(jù)庫中查詢數(shù)據(jù),其語法形式如下:SELECT

列名稱FROM

表名稱;修改數(shù)據(jù)可以使用UPDATE語句修改表中的數(shù)據(jù),其語法形式如下:UPDATE

表名稱SET

列名稱=新值WHERE

列名稱=某值;刪除數(shù)據(jù)DELETE

FROM

表名稱WHERE列名稱=某值;刪除表可以使用DROP

TABLE語句從數(shù)據(jù)庫中刪除一個表,其語法形式如下:DROP

TABLE

表名稱;刪除數(shù)據(jù)庫可以使用DROPDATABASE語句刪除一個數(shù)據(jù)庫,其語法形式如下:

DROP

DATABASE

數(shù)據(jù)庫名稱;2.3.3安裝MySQL訪問如下MySQL官網(wǎng)地址下載安裝包:/downloads/windows/installer/8.0.html在MySQL下載頁面中(如圖2-9所示),選擇“mysql-installer-community-.msi”下載。圖2-9

MySQL下載網(wǎng)頁《數(shù)據(jù)采集與預(yù)處理》2.3.3安裝MySQL《數(shù)據(jù)采集與預(yù)處理》使用安裝包mysql-installer-community-.msi開始安裝,如果在安裝過程中提示需要安裝“.NET

Framework

4.5.2”,則需要到如下網(wǎng)址下載.NETFramework4.5.2的安裝文件NDP452-KB2901907-x86-x64-AllOS-ENU.exe并安裝:https:///zh-CN/download/confirmation.aspx?id=426422.3.3安裝MySQL在安裝MySQL過程中,當(dāng)出現(xiàn)“ChoosingaSetup

Type”界面時,需要選擇“Serveronly”(如圖2-10所示)。圖2-10

選擇安裝類型界面《數(shù)據(jù)采集與預(yù)處理》2.3.3安裝MySQL在安裝MySQL過程中,如果提示需要安裝“MicrosoftVisual

C++

2015-2019

Redistributable(x64)–14.28.29325”時,選擇同意安裝即可(如圖2-11所示)。圖2-11

安裝過程中顯示的界面《數(shù)據(jù)采集與預(yù)處理》2.3.3安裝MySQL安裝完成以后,MySQL數(shù)據(jù)庫的后臺服務(wù)進程已經(jīng)被自動啟動,這時就需要使用一個客戶端工具來操作MySQL數(shù)據(jù)庫,我們可以使用MySQL安裝時自帶的命令行界面作為客戶端工具來操作數(shù)據(jù)庫。具體方法是,在Windows7的開始菜單中點擊“MySQL

8.0

Command

Line

Client”圖標,然后輸入數(shù)據(jù)庫密碼(這個密碼是在安裝MySQL的過程中用戶自己設(shè)置的),就會出現(xiàn)如圖2-12所示界面??梢栽诿钐崾痉癿ysql>”后面輸入SQL語句來執(zhí)行數(shù)據(jù)庫的各種操作。圖2-12

MySQL的命令行界面《數(shù)據(jù)采集與預(yù)處理》2.3.3安裝MySQL《數(shù)據(jù)采集與預(yù)處理》需要說明的是,MySQL數(shù)據(jù)庫服務(wù)進程啟動以后,會占用一定的系統(tǒng)資源。實際上,我們平時在計算機上很少使用MySQL數(shù)據(jù)庫,因此,為了減少對系統(tǒng)資源的占用,沒有必要每次開機都自動啟動MySQL數(shù)據(jù)庫后臺服務(wù)進程,可以設(shè)置為“手動”啟動服務(wù)進程,這樣,只有當(dāng)需要用到

MySQL數(shù)據(jù)庫時,再去手動啟動即可。這里以Windows7操作系統(tǒng)為例介紹如何把MySQL數(shù)據(jù)庫服務(wù)設(shè)置為“手動”啟動。2.3.3安裝MySQL在Windows系統(tǒng)桌面上的“計算機”圖標上單擊鼠標右鍵,在彈出的菜單中

點擊“管理”,在出現(xiàn)的計算機管理界面(如圖2-13所示)中,在左側(cè)欄目中點擊“服務(wù)”,在右側(cè)欄目中會出現(xiàn)很多服務(wù)進程,其中,就可以找到名稱為“MySQL80”的服務(wù)進程,可以看到,該服務(wù)進程的狀態(tài)為“已啟動”,啟動類型為“自動”。圖2-13

計算機管理界面《數(shù)據(jù)采集與預(yù)處理》2.3.3安裝MySQL在“MySQL80”這一行上單擊鼠標右鍵,在彈出的菜單中點擊“屬性”,會彈出如圖2-14所示的界面,在這個界面中,在“服務(wù)狀態(tài)”下面有三個按鈕,即“啟動”、“停止”和“暫停”,分別用來啟動、停止和暫停

MySQL服務(wù)進程。為了修改啟動類型,可以在“啟動類型”右側(cè)的下拉列表中選擇“手動”,最后單擊“確定”按鈕即可。圖2-14

MySQL啟動類型設(shè)置界面《數(shù)據(jù)采集與預(yù)處理》2.3.4MySQL數(shù)據(jù)庫的使用方法《數(shù)據(jù)采集與預(yù)處理》這里給出一個綜合實例來演示MySQL數(shù)據(jù)庫的用法。需要創(chuàng)建一個管理學(xué)生信息的數(shù)據(jù)庫,并把表2-5中的數(shù)據(jù)填充到數(shù)據(jù)庫中,完成相關(guān)的數(shù)據(jù)庫操作。表2-5

學(xué)生表學(xué)號姓名性別年齡95001王小明男2195002張梅梅女202.3.4MySQL數(shù)據(jù)庫的使用方法《數(shù)據(jù)采集與預(yù)處理》打開MySQL數(shù)據(jù)庫的命令行界面,輸入如下SQL語句創(chuàng)建數(shù)據(jù)庫school:mysql>

CREATE

DATABASE

school;需要注意的是,SQL語句中可以不用區(qū)分字母大小寫??梢允褂萌缦耂QL語句查看已經(jīng)創(chuàng)建的所有數(shù)據(jù)庫:

mysql>SHOW

DATABASES;創(chuàng)建好數(shù)據(jù)庫school以后,可以使用如下SQL語句打開數(shù)據(jù)庫:mysql>

USE

school;2.3.4MySQL數(shù)據(jù)庫的使用方法《數(shù)據(jù)采集與預(yù)處理》使用如下SQL語句創(chuàng)建一個表student:mysql>CREATE

TABLE

student(->

snochar(5),->

sname

char(10),->

ssexchar(2),->

sage

int);使用如下SQL語句查看已經(jīng)創(chuàng)建的表:mysql>

SHOW

TABLES;2.3.4MySQL數(shù)據(jù)庫的使用方法《數(shù)據(jù)采集與預(yù)處理》使用如下SQL語句向student表中插入兩條記錄:mysql>INSERT

INTO

student

VALUES('95001','王小明','男',21);mysql>INSERT

INTO

student

VALUES('95002','張梅梅','女',20);使用如下SQL語句查詢student表中的記錄:mysql>

SELECT

*

FROM

student使用如下SQL語句修改表中的數(shù)據(jù):mysql>

UPDATE

student

SET

age

=21

WHERE

sno=’95001’;使用如下SQL語句刪除student表:mysql>

DROP

TABLE

student;使用如下SQL語句查

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論