大數據技術及應用-基于Python語言 課件 第3章大數據采集與預處理_第1頁
大數據技術及應用-基于Python語言 課件 第3章大數據采集與預處理_第2頁
大數據技術及應用-基于Python語言 課件 第3章大數據采集與預處理_第3頁
大數據技術及應用-基于Python語言 課件 第3章大數據采集與預處理_第4頁
大數據技術及應用-基于Python語言 課件 第3章大數據采集與預處理_第5頁
已閱讀5頁,還剩58頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第3章大數據采集與預處理目錄Contents3.1

數據采集概述3.2

常用的大數據采集工具簡介3.3

數據屬性的類型3.4

數據預處理數據采集概述3.1大數據的來源數據容量的單位大數據采集的基本方法3.1.1

大數據的來源

大數據的來源的非常廣泛,如互聯網、信息管理系統、物聯網、科學實驗和計算機系統的日志等等。按照產生數據的主體來劃分,大數據主要有三個來源,它們分別是:

1.對現實世界的測量通過感知設備獲得的數據,這類數據包括傳感器采集的數據(如環境監測、工業物聯網和智能交通的傳感數據),科學儀器產生的數據、攝像頭的監控影像等等。

2.人類的記錄由人類錄入計算機形成的數據,如信息管理系統、社交軟件、電子商務系統、企業財務系統等產生的數據。

3.計算機產生的數據由計算機程序生成的數據,如服務器的日志、計算機運算結果、軟件生成的圖像和視頻等等。3.1.2

數據容量的單位

數據容量的基本單位是bit,按容量單位從小到大的順序是:bit(位)、Byte(字節)、KB(千字節)、MB(兆)、GB(吉)、TB(太)、PB、EB、ZB、YB、BB、NB、DB,它們是按照進率1024(2的十次方)來計算:1Byte=8bit1KB=1,024Bytes=8192bit1MB=1,024KB=1,048,576Bytes1GB=1,024MB=1,048,576KB1TB=1,024GB=1,048,576MB1PB=1,024TB=1,048,576GB1EB=1,024PB=1,048,576TB1ZB=1,024EB=1,048,576PB……3.1.3大數據采集的基本方法

所謂數據采集是指從真實世界中獲得原始數據的過程,它是大數據應用的基礎環節,具有非常重要的作用,數據采集的手段通常有以下四種:

1.傳感數據采集

該方法通過傳感器采集物理世界的信息,例如通過環境監測傳感器、工業傳感器采集的熱、光、氣、電、磁、聲和力等數據,多媒體數據采集設備獲取的圖像、音頻和視頻數據等。

2.系統日志采集

該方法主要采集數字設備和計算機系統運行狀態的日志。許多數字設備和計算機系統每天都會產生大量的日志,一般為流式數據,如信息管理系統的操作日志、服務器的運行狀態和搜索引擎的查詢等。3.1.3大數據采集的基本方法

3.網絡數據采集

網絡數據的采集通常可以分為網頁內容采集和網絡流量采集兩種類型。

網頁內容采集是指通過網絡爬蟲或網站公開API等方式從網站上獲取數據信息,該方法可以將非結構化數據從網頁中抽取出來,將其存儲為統一的本地數據文件,并以結構化或非結構化的方式存儲,右圖是網絡爬蟲的工作原理示意圖。

網絡爬蟲工作原理示意圖3.1.3大數據采集的基本方法

網絡流量的采集可以使用DPI(DeepPacketInspection,深度包檢測)和DFI(Deep/DynamicFlowInspection,深度/動態流檢測)等帶寬管理技術進行處理。DPI技術在分析包頭的基礎上,增加了對應用層的分析,是一種基于應用層的流量檢測和控制技術。DFI僅對網絡流量行為分析,因此只能對應用的類型進行籠統分類,但速度很快。

4.外包和眾包

外包(Outsourcing)是指將所要進行的數據采集任務交付給已知的雇員去完成。眾包(Crowdsourcing)是指數據采集任務由一群不固定,通常數量很大的參與者共同協作完成,例如Wikipedia就是一個成功應用“眾包”方法構建的龐大知識庫。常用的大數據采集工具簡介3.2基于Python的網頁采集框架Scrapy日志收集工具Flume3.2.1基于Python的網頁采集框架Scrapy1.Scrapy簡介Scrapy是一個Python開發的基于twisted異步模型的web抓取框架,用于抓取網站并從頁面中提取結構化數據。它的用途廣泛,可以用于數據挖掘、監控和自動化測試等。Scrapy是一個框架,可以根據需求方便的修改,它提供了多種類型爬蟲的基類,如BaseSpider、sitemap爬蟲等。Scrapy框架主要由五大組件組成,它們分別是調度器(Scheduler)、下載器(Downloader)、爬蟲(Spider)、實體管道(ItemPipeline)和Scrapy引擎(ScrapyEngineer),其整體架構如圖所示。

Scrapy整體架構示意圖3.2.1基于Python的網頁采集框架Scrapy調度器(Scheduler)下載器(Downloader)爬蟲(Spider)實體管道(ItemPipeline)Scrapy引擎(ScrapyEngine)Scrapy引擎是整個框架的核心,它用來控制調度器、下載器、爬蟲的運行流程。Scrapy的調度器是一種抓取網頁的網址或者說是鏈接的優先隊列,由它來決定下一個要抓取的網址是什么,同時去除重復的網址,用戶可以根據自己的需求定制調度器。爬蟲是一種按照一定的規則,自動地抓取Web信息的程序或者腳本。用戶可以定制自己的Scrapy爬蟲(通過定制正則表達式等語法),用于從特定的網頁中提取自己需要的信息,即所謂的實體(Item),用戶也可以從中提取出鏈接,讓Scrapy繼續抓取下一個頁面。Scrapy的下載器是建立在twisted異步模型上的,用于高效地下載網絡上的資源。實體管道用于處理爬蟲(spider)提取的實體,主要的功能是持久化實體、驗證實體的有效性、清除不需要的信息。3.2.1基于Python的網頁采集框架Scrapy

2.Scrapy框架的安裝

Scrapy是作為Python的庫形式提供的,它需要python3.6+和CPython實現(默認)或pypy7.2.0+實現的支持。Scrapy是用純Python編寫的,依賴于幾個關鍵的Python包:lxml、parsel、w3lib、twisted、cryptography和pyOpenSSL。可以用以下命令在Python開發環境中下載并安裝Scrapy庫:python3-mpipinstall--upgradepip#將pip工具更新到最新版本python3-mpipinstallscrapy

#安裝scrapy3.2.1基于Python的網頁采集框架Scrapy3.Scrapy項目案例(教材P70)案例【3.1】使用Scrapy框架爬取當當網圖書暢銷榜當當網圖書暢銷榜網頁示意圖網頁是怎樣構成的網頁一般由三部分組成,分別是HTML(超文本標記語言)、CSS(層疊樣式表)和JavaScript(簡稱“JS”動態腳本語言),它們三者在網頁中分別承擔著不同的任務。HTML負責定義網頁的內容CSS負責描述網頁的布局JavaScript負責網頁的行為參考資料:/python_spider/webpage.html3.2.2日志收集工具Flume

Flume是Apache的頂級項目(官方網站:/),用于日志數據的采集。Flume提供一種分布式、可靠的服務,用于高效地收集、聚合和移動大量日志數據,它具備可調節的可靠性機制、故障轉移和恢復機制,具有強大的容錯能力。

Flume支持在日志系統中定制各類數據源,可以對數據進行簡單處理,并將數據輸出到各種數據接受方,其設計的原理是基于將數據流(如日志數據)從各種網站服務器上匯集起來,存儲到HDFS、HBase等集中存儲器中。3.2.2日志收集工具Flume

1.Flume數據流模型和邏輯架構

Flume的基本數據采集單元是Agent(代理),一個Agent包含Source(數據源)、Channel(數據通道)和Sink(接收器)。Flume基本使用方法是在某個節點上配置和運行Agent以執行數據采集任務,一個Agent是Source+Channel+Sink三個組件的組合,以及組件間的連接方式。

Flume有一個重要的抽象概念dataflow(數據流),它描述了數據從產生、傳輸、處理并最終寫入目標的一條路徑,Flume的基本數據流模型如圖3.8所示,具體描述如下:

3.2.2日志收集工具Flume(1)EnxternalSource(外部數據源,如WebServer)將Flume可識別的Event(事件)發送給Flumesource(Flume數據源);(2)Flumesource接收到事件后,會將其存儲到一個或多個Channel(數據通道);(3)Channel是一個被動存儲,可保留Event直到被FlumeSink消耗完為止;(4)FlumeSink(接收器)從Channel中獲取Event(獲取后會刪除之),并將其放入HDFS之類的外部存儲庫,或將其轉發到流中下一個FlumeAgent(下一跳Agent)的FlumeSource。Flume基本數據流模型3.2.2日志收集工具Flume

2.Flume的核心組件說明(1)Event(事件):Flume事件被定義為具有字節有效載荷和可選字符串屬性集的數據流單元。(2)Agent(代理):Flume代理是一個JVM進程,它承載事件從外部源流向下一個目的地的組件。一個Agent包含Source、Channel、Sink和其他組件,它利用這些組件將事件從一個節點傳輸到另一個節點。(3)Source(數據源):專門用來收集數據,可以處理各種類型、各種格式的日志數據,比如avro、exec、HTTP、Kafka、SpoolingDirectory等。3.2.2日志收集工具Flume(4)Channel(數據通道):是一個存儲Source已經接收到的數據的緩沖區,簡單來說就是對Source采集到的數據進行緩存,可以緩存在內存、文件、數據庫和Kafka等。(5)Sink(接收器):從Channel中獲取數據并將數據發送到目的地,目的地可以是HDFS、Hive、HBase、ES、Kafka、Logger等,完成后將Event從Channel中刪除。(6)Client(客戶):將原始日志包裝成Event發送到Agent實體,它在Flume中不是必須的。3.2.2日志收集工具Flume場景1:某個在線購物App需要建立用戶推薦系統(userrecommendationsystem),可以根據用戶訪問的節點區域、瀏覽的商品信息等來分析消費者的行為或購買意圖,以便更加快速地將用戶可能想要購買的商品推送到界面上。為了實現這一功能,就需要收集用戶在App上點擊的產品數據、訪問的頁面和訪問時間等日志信息,并保存到后臺的大數據平臺上去進行分析和挖掘,這樣的需求就可以用Flume來實現。場景2:

目前許多新聞類App(如:今日頭條、騰訊新聞等)大都具有“內容推送”、“廣告定時投放”和“新聞私人訂制”等功能,這需要收集用戶操作的日志信息(如:用戶曾經看過的新聞、視頻、觀看時間和IP地址等),以便使用智能推薦系統進行分析,更精準地向用戶推薦可能感興趣的內容和廣告。

3.Flume應用場景示例3.2.2日志收集工具Flume4.在Linux中安裝Flume可以從Flume官方網站(/)下載Flume的安裝包,如1.9.0版本的安裝文件apache-flume-1.9.0-bin.tar,將其解壓到Linux主機的/usr/local/servers目錄中:$tar-zxvfapache-flume-1.9.0-bin.tar.gz-C/usr/local/servers為了操作方便,可以把目錄重命名為:$mvapache-flume-1.9.0-binflume#目錄重命名為flume3.2.2日志收集工具Flume在/etc/profile中添加flume環境變量:exportFLUME_HOME=/usr/local/servers/flumeExportFLUME_CONF_DIR=$FLUME_HOME/confexportPATH=$PATH:$FLUME_HOME/bin$source/etc/profile$whichflume-ng #查找flume-ng所在路徑如果在Linux終端上看到如下結果則表示路徑設置正確:/usr/local/servers/flume/bin/flume-ng修改flume-env.sh文件:$cd/usr/local/servers/flume/conf$cpflume-env.sh.templateflume-env.sh在flume-env.sh文件中添加上:$exportJAVA_HOME=${JAVA_HOME}3.2.2日志收集工具Flume5.Flume的配置與運行方法在某個節點上運行Flume代理進行數據采集的基本流程分可為三個步驟:(1)步驟1:創建FlumeAgent配置文件在Linux主機上創建FlumeAgent配置文件(configurationfile),Flume的配置文件是一個遵循Java屬性文件格式的文本文件,在每個配置文件中可指定一個或多個Agent。(2)步驟2:為每個Agent設置組件屬性和組件間連接方式一個Agent包含source、sink和channel三個組件,需要為配置文件中的每個Agent設置這三個組件的屬性,以及它們如何連接在一起以形成數據流。3.2.2日志收集工具Flume(3)步驟3:啟動AgentAgent進程使用一個名為flume-ng的shell腳本啟動,該腳本位于flume安裝目錄中的bin子目錄中。您需要在命令行中指定代理名稱、配置目錄和配置文件:flume-ngagent-n代理名-cconf-f配置文件名或:flume-ngagent--name代理名--configconf--config-file配置文件名上述命令中“-n代理名”(或“--name代理名”)表示要啟動的配置文件中的哪個Agent。在配置文件中可能有多個Agent,當啟動給定的Flume進程時,要傳遞一個Agent名稱以啟動該Agent。3.2.2日志收集工具Flume6.Flume應用實例(教材P76-79)【例3.2】從網絡端口采集數據【例3.3】使用TaildirSource采集文件夾中的數據到HDFS數據屬性的類型3.3“屬性”的類型屬性類型的轉換3.3.1“屬性”的類型所謂“屬性”(attribute)是指數據對象的特征(feature),也稱為數據字段。常見的屬性類型可以分為兩大類:定性描述屬性和定量描述屬性。1標稱屬性(nominalattribute)::是一些符號或事物的名稱,每個值代表某種類別、編碼或狀態。如:性別分類的“男”、“女”;表示顏色的“紅”、“黃”、”藍“等。標稱屬性也稱為“名詞屬性”、“名義屬性”、“分類屬性”等……。2二元屬性(binaryattribute):只有兩個值或狀態:0或1,又可以稱為布爾屬性(值為true或false)。3序值屬性(ordinalattribute):其可能的值之間具有有意義的序或秩評定。如成績{“差”、“中”、“良”、“優”}。定性描述屬性3.3.1“屬性”的類型

定量描述屬性是描述數據對象屬性的數值大小,如長度、速度、半徑等的數量值,定量屬性有整數(離散)和浮點數(連續)兩種形式。

實際上,在許多真實的數據集中,對象通常是混合類型的變量,一個數據集可能包含上面列舉的多種屬性類型。3.3.2

屬性類型的轉換

1.標稱屬性(nominalattribute)的數值化編碼

最常用的是One-HotEncoder(熱獨編碼)和LabelEncoder(標簽編碼)兩種編碼方法。One-HotEncoder(熱獨編碼)又稱為一位有效編碼,主要是采用N位狀態寄存器(有0和1兩個狀態)來對數據的N個狀態進行編碼。如下表所示,“公司名”屬性的每個值被編碼為3個屬性值(因為該屬性有3個不同的值:Toyata、Honda和VM),每個數據轉換后只有一個屬性為1,其他為0。公司名ToyotaHondaVWToyota100Honda010VW001Honda010表

:One-HotEncoder示例3.3.2屬性類型的轉換

LabelEncoder(標簽編碼)將標稱屬性轉換成連續的數值型變量,即對不連續的數字或者文本進行編號,對于右上表中的數據運用標簽編碼的結果如下表所示。可以看出,LabelEncoder方法將原本無序的數據變成有序的數值序列,這是LabelEncoder方法的明顯缺陷。公司名公司編碼Toyota0Honda1VW2表:LabelEncoder示例3.3.2屬性類型的轉換

2.連續變量的離散化處理對連續變量離散化處理是把連續量轉換為離散值,如某門課程的成績可以根據分數段,將其轉換為:“差”、“中”、“良”、“優”(或:“D”、“C”、“B”、“A”)等。常用的方法有:等寬法、等頻法和基于聚類的分析方法等。例如有一組實數(浮點數)的數值在0.0到100.0之間,采用等寬法將數據劃分為10個區間,將處于[0.0,10.0)區間的數轉換為1,[10.0,20.0)區間的數轉換為2,以此類推。數據預處理3.4數據變換數據清洗使用OpenRefine清洗數據數據集成3.4.1

數據變換

數據預處理是指在數據進行分析挖掘之前,對原始數據進行變換、清洗與集成等一系列操作。通過數據預處理工作,可以使殘缺的數據完整、將錯誤的數據糾正、多余的數據去除,有效提高數據質量。

沒有高質量的數據,就沒有高質量的數據挖掘結果,低質量的數據會對許多數據挖掘算法有很大的影響,甚至“挖掘”出錯誤的知識。

3.4.1

數據變換

所謂數據變換,是將數據轉換成適當的形式以便更好地理解和處理,常用的數據變換方法如圖所示。常用的數據變換方法

3.4.1

數據變換1.數據歸一化數據歸一化是將數據變換為[0,1]之間的小數,這樣可以把有量綱數據轉變為無量綱表示。(1)Max-Min歸一化方法

Max-Min歸一化對原始數據進行線性變換,變換后的數據區間為[0,1]。

這種標準化方法的適應性非常廣泛,它對數據歸一化的同時還能較好地保持原有數據分布結構。(2)用于稀疏數據的MaxAbsMaxAbs根據最大的絕對值進行標準化,變換后的數據區間為[-1,1]。MaxAbs也具有不破壞原有數據分布結構的特點,可以用于稀疏數據,或者稀疏的CSR或CSC矩陣。

3.4.1

數據變換2.數據標準化數據標準化的目的是將不同規模和量綱的數據經過處理,縮放到相同的數據區間和范圍,以減少規模、特征、分布差異等對模型的影響。Z-Score標準化可將數據轉換成標準正態分布,其轉換公式如下:Z-Score標準化之后的數據是以0為均值,方差為1的正態分布。但是Z-Score方法是一種中心化方法,會改變原有數據的分布結構,不適合用于對稀疏數據做處理。

3.4.1

數據變換【例3.4】Z-Score標準化實例Z-Score的主要目的就是將不同量級的數據統一轉化為同一個量級,統一用計算出的Z-Score值衡量,以保證數據之間的可比性。

假設兩個班級考試,所采用的試卷不同:A班級的平均分是80,標準差是10,Li考了90分;B班的平均分是400,標準差是100,Ma考了600分。那么利用Z-Score計算它們的標準分數,看看誰更優秀。解答:Li=(90-80)/10=1Ma=(600-400)/100=2

因此Ma更優秀。

3.4.1

數據變換【例3.5】用Pythonsklearn庫進行數據標準化處理本例子的Python程序首先構造左偏和右偏的數據,然后將生成的數據用sklearn庫的StandardScaler函數進行標準化處理(也就是Z-Score標準化),最后畫出處理前后數據的對比圖。代碼參考教材P82(教材代碼中需增加一行:fromsklearnimportpreprocessing);源代碼也在本頁的備注中提供。標準化前后數據的均值與方差變化示意圖

3.4.1

數據變換3.數據編碼用統一的編碼標準對信息記錄進行編碼,用一個編碼符號代表一條信息或一串數據。運用數據編碼方法可以對采集的大數據進行規范化管理、提高處理效率和精度。例如我國的身份證號碼就是一種帶有特定含義的編碼方案,它可以表示某人所在省市區、出生年月、性別等,因此可以用特定的算法進行分類、校核、檢索、統計和分析操作。4.數據平滑在實際應用中,經常會遇到初始結果噪聲數據太多的問題,如視頻流中的bbox抖動的太厲害、光譜信號抖動的太厲害等。數據平滑就是為了去除數據中的噪聲波動,使數據平滑,常用方法:滑動平均法、指數滑動平均法和SG濾波法等。

3.4.2

數據清洗1.

缺失值填充均值填充如果缺失值是數值型的,就根據該變量在其他所有對象取值的平均值來填充該缺失的變量值。眾數填充如果缺失值是非數值型的,通常使用眾數來補齊該缺失的變量值。其它填充方法其他的數據填充方法有回歸填充法、熱卡填充填補法、就近補齊法、極大似然估計、期望最大化法、K最近距離鄰法等。

3.4.2

數據清洗【例3.5】用Python的Sklearn庫進行缺失值填充(1)從/ml/index.php下載數據集labor。(2)labor數據集包含16個屬性(8個數值型、8個非數值型)和一個分類標簽,16個屬性的數據都包含有缺失值。(3)對labor數據的第3列缺失值進行均值填充的Python示例程序如下:#數據預處理:缺失值填充importpandasaspdfromsklearn.imputeimportSimpleImputerfromnumpyimportnanasNAdata=pd.read_csv('labor.csv')x=data.iloc[:,2:3]#取第3列數據imp_mean=SimpleImputer(missing_values=NA,strategy=‘mean’)#均值填充imp_mean.fit(x)print(imp_mean.transform(x))#通過接口導出結果

3.4.2

數據清洗2.去除噪聲

噪聲數據是指數據中存在著錯誤或異常的數據,這些數據對數據的分析和挖掘造成了干擾,以下是常用的預處理方法:(1)分箱(Binning)分箱法是指通過考察“鄰居”(周圍的值)來平滑存儲數據的值,存儲的值被分布到一些“桶”或箱中,平滑各個分箱中的數據。常用的分箱方法有等深(頻)分箱法:各個箱里有相同個數的數據。等寬分箱法:各個箱的取值區間相同。常用的數據平滑的方法有3種:平均數平滑:箱中每一個值被箱的平均數替換中位數平滑:箱中每一個值被箱的中位數替換箱邊界平滑:箱中每一個值被離它最近的箱邊界值替換的輸入數據進行平均。

3.4.2

數據清洗【例3.7】假設有8、24、15、41、6、10、18、50、25等9個數,先對數進行從小到大的排序,6、8、10、15、18、24、25、41、50。按等深(頻)分箱法分為3箱:箱1:6、8、10箱2:15、18、24箱3:25、41、50分別用三種不同的平滑技術平滑噪聲數據的值:按箱平均值求得平滑數據值:箱1:平均值是8,這樣該箱中的每一個值被替換為(8,8,8)。按箱中值求得平滑數據值:箱2:中位數為18,可以使用按箱中值平滑,這樣該箱中的每一個值被替換為(18,18,18)。按箱邊界值求得平滑數據值:箱3:(25,50,50),箱中的最大和最小值被視為箱邊界,箱中的每一個值都被最近的邊界值替換。

3.4.2

數據清洗【例3.7】續按等寬分箱法(箱寬度為10),可分為3個箱:箱1:6、8、10、15箱2:18、24、25箱3:41、50

3.4.2

數據清洗(2)移動平均移動平均是一種用以濾除噪聲的簡單數據處理方法。當接收到輸入數據后,就將本次輸入數據與其前若干次的輸入數據進行平均。(3)3σ探測方法σ探測方法的思想來源于切比雪夫不等式,假設一組數據的均值為μ標準差為σ,一般情況下數據分布有以下特點: 所有數據中,數值分布在(μ-σ,μ+σ)中的概率為0.6827

所有數據中,數值分布在(μ-2σ,μ+2σ)中的概率為0.9545

所有數據中,數值分布在(μ-3σ,μ+3σ)中的概率為0.9973可以認為,數據的取值幾乎全部集中在(μ-3σ,μ+3σ)區間內,超出這個范圍的可能性僅占不到0.3%。

3.4.2

數據清洗(4)k-近鄰法

根據某種距離度量方法來確定具有缺失值數據最近的k個近鄰,然后將這k個值加權(權重可取距離的比值),然后根據自定義的閾值,將距離超過閾值的當做噪聲數據。(5)聚類去除噪聲數據用某種聚類算法把相似的數據聚成一個“類簇”,落在各個類簇之外的數據可以被看成是噪聲數據,如右圖所示。聚類去除噪聲數據示意圖

3.4.3使用OpenRefine清洗數據OpenRefine是一種開源軟件,可以對excel、html等結構型的數據進行數據清洗、修正、分類、排序、篩選與整理,它的功能強大,使用比較簡便。OpenRefine軟件的前身是Metaweb公司于2009年發布的一個開源軟件,Google公司在2010年收購了Metaweb,把項目的名稱從FreebaseGridworks改成了GoogleRefine。2012年,Google放棄了對Refine的支持,讓它重新成為開源軟件,名字改成了OpenRefine。

3.4.3使用OpenRefine清洗數據1.建立OpenRefine項目OpenRefine啟動后是以本地Web服務(端口號為3333)運行的,可以用瀏覽器訪問:3333打開初始界面,如圖所示。OpenRefine初始界面

3.4.3使用OpenRefine清洗數據在OpenRefine初始界面中點擊“選擇文件”按鈕打開本地數據文件,接著單擊“Next>>”按鈕進入文件格式選項設置窗口。注意:如果是CSV或Excel文件,需要在彈出的窗口下方的選擇中勾選“Parsecelltextintonumbers,dates,…”,如圖所示,否則會將實數列作為文本處理。輸入項目名稱,單擊“CreateProject”按鈕建立OpenRefine項目。CSV和Excel文件需勾選的格式選項

3.4.3使用OpenRefine清洗數據2.OpenRefine的數據預處理功能選擇想要處理的列,點擊列標題左邊的箭頭出現下拉菜單,選擇Facet選項,如果是文本數據則選擇第一項Textfacet,如果是數字數據就選擇第二項Numericfacet,如圖所示。選擇數據列的Facet選項

3.4.3使用OpenRefine清洗數據點擊后頁面的左邊會出現數據透視結果,該結果是以頻率圖的形式顯現的,從左到右按升序排列,藍色柱形的高度表示其密集程度,下面四個選項表示數據類型,如圖所示。

數據透視結果示意圖

3.4.3使用OpenRefine清洗數據缺失值填充

可以從上圖中看出數據集的num_critic_for_reviews列有50個缺失值。取消勾選”Numeric“,則只會顯示包含缺失的行,在缺失值單元格中單擊“Edit”按鈕,填入想要的值(如該列數據的平均值),如圖所示。

缺失值填充示意圖

3.4.3使用OpenRefine清洗數據數據轉換

可以對數據進行一些必要的變換,包括英文單詞大小寫不統一造成的分類偏差、額外的空格、首行有空格等。在打開的數據集中選擇某一文本列,在下拉菜單editcells選項中選擇commontransform的trimleadingandtrailingwhitespace命令則會去除該列所有的行首和行尾空格;選擇touppercase命令則將該列所有字母從小寫轉換到大寫(選擇tolowercase轉換到小寫),該項操作的界面如圖所示。

數據轉換操作示意圖

3.4.3使用OpenRefine清洗數據3.OpenRefine的數據分析功能在選擇數據時,有時篩選條件并不是那么嚴格時可能會選擇好幾類相似的數據,此時可以用聚類方法對相似的數據類進行聚類。下面對genres列數據進行聚類操作,點擊genres列,在下拉菜單中選擇editcells的clusterandedit選項,如圖所示。對某列數據進行聚類操作

3.4.3使用OpenRefine清洗數據

在聚類分析界面中選擇Method為“NearestNeighbor”,采用PPM計算字符串之間的距離并進行聚類,結果如圖所示。

OpenRefine的特點是對于列的操作十分便利

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論