時(shí)間序列數(shù)據(jù)幾乎每秒都會(huì)從多種來(lái)源收集,因此經(jīng)常會(huì)出現(xiàn)一些數(shù)據(jù)質(zhì)量問(wèn)題,其中之一是缺失數(shù)據(jù)。
在序列數(shù)據(jù)的背景下,缺失信息可能由多種原因引起,包括采集系統(tǒng)的錯(cuò)誤(例如傳感器故障)、傳輸過(guò)程中的錯(cuò)誤(例如網(wǎng)絡(luò)連接的故障)或者數(shù)據(jù)收集過(guò)程中的錯(cuò)誤(例如數(shù)據(jù)記錄過(guò)程中的人為錯(cuò)誤)。這些情況經(jīng)常會(huì)在數(shù)據(jù)集中產(chǎn)生零散和明確的缺失值,對(duì)應(yīng)于采集數(shù)據(jù)流中的小缺口。
此外,缺失信息也可能由于領(lǐng)域本身的特性而自然產(chǎn)生,從而在數(shù)據(jù)中形成較大的缺口。例如,某個(gè)特征在一段時(shí)間內(nèi)停止采集,從而產(chǎn)生非顯性的缺失數(shù)據(jù)。
無(wú)論底層原因如何,時(shí)間序列中存在缺失數(shù)據(jù)會(huì)對(duì)預(yù)測(cè)和預(yù)測(cè)模型產(chǎn)生嚴(yán)重的不利影響,并且可能對(duì)個(gè)人(例如誤導(dǎo)的風(fēng)險(xiǎn)評(píng)估)和業(yè)務(wù)結(jié)果(例如偏差的業(yè)務(wù)決策、收入和機(jī)會(huì)的損失)造成嚴(yán)重后果。
因此,在為建模方法準(zhǔn)備數(shù)據(jù)時(shí),一個(gè)重要的步驟是能夠識(shí)別這些未知信息的模式,因?yàn)樗鼈儗椭覀儧Q定處理數(shù)據(jù)的最佳方法,以提高數(shù)據(jù)的一致性和效率,可以通過(guò)某種形式的對(duì)齊校正、數(shù)據(jù)插值、數(shù)據(jù)填補(bǔ),或者在某些情況下,進(jìn)行逐案刪除(即,在特定分析中對(duì)具有缺失值的特征省略案例)。
因此,進(jìn)行全面的探索性數(shù)據(jù)分析和數(shù)據(jù)剖析是不可或缺的,這不僅有助于理解數(shù)據(jù)特征,還能就如何為分析準(zhǔn)備最佳數(shù)據(jù)做出明智決策。
在這個(gè)實(shí)踐教程中,我們將探索如何使用新版本ydata-profiling最近推出的功能來(lái)解決這些相關(guān)問(wèn)題。本文將使用Kaggle上提供的美國(guó)污染數(shù)據(jù)集(許可證DbCL v1.0),該數(shù)據(jù)集詳細(xì)記錄了美國(guó)各州的NO2、O3、SO2和CO污染物的信息。
【ydata-profiling】:https://github.com/ydataai/ydata-profiling
【Kaggle上提供的美國(guó)污染數(shù)據(jù)集】:https://www.kaggle.com/datasets/sogun3/uspollution?resource=download
為了開始我們的教程,首先需要安裝最新版本的ydata-profiling:
pip install ydata-profiling==4.5.1
然后就可以加載數(shù)據(jù),刪除不必要的特征,并專注于我們要研究的內(nèi)容。為了本例的目的,我們將重點(diǎn)研究亞利桑那州馬里科帕縣斯科茨代爾站測(cè)量的空氣污染物的特定行為:
import pandas as pd data = pd.read_csv("data/pollution_us_2000_2016.csv")data = data.drop('Unnamed: 0', axis = 1) # 刪除不必要的索引 # 從亞利桑那州,馬里科帕縣,斯科茨代爾站(站點(diǎn)編號(hào):3003)選擇數(shù)據(jù)data_scottsdale = data[data['Site Num'] == 3003].reset_index(drop=True)
現(xiàn)在,準(zhǔn)備開始對(duì)數(shù)據(jù)集進(jìn)行剖析!請(qǐng)記住,在使用時(shí)間序列剖析時(shí),我們需要傳遞參數(shù)tsmode=True,以便ydata-profiling可以識(shí)別與時(shí)間相關(guān)的特征:
# 將'Date Local'改為日期時(shí)間格式data_scottsdale['Date Local'] = pd.to_datetime(data_scottsdale['Date Local']) # 創(chuàng)建概述報(bào)告profile_scottsdale = ProfileReport(data_scottsdale, tsmode=True, sortby="Date Local")profile_scottsdale.to_file('profile_scottsdale.html')
輸出報(bào)告將與我們已經(jīng)知道的內(nèi)容一樣熟悉,但在體驗(yàn)上有所改進(jìn),并新增了時(shí)間序列數(shù)據(jù)的匯總統(tǒng)計(jì):
圖片
從概述中可以通過(guò)查看所提供的匯總統(tǒng)計(jì)數(shù)據(jù),從而對(duì)該數(shù)據(jù)集有一個(gè)整體的了解:
還可以獲取數(shù)據(jù)中所有序列的概覽圖,可以選擇以原始值或縮放值顯示:可以很容易地把握序列的總體變化情況,以及正在測(cè)量的組分(二氧化氮、臭氧、二氧化硫、一氧化碳)和特征(平均值、第一最大值、第一最大小時(shí)、空氣質(zhì)量指數(shù))。
在對(duì)數(shù)據(jù)有一個(gè)總體了解之后,我們可以關(guān)注每個(gè)時(shí)間序列的具體情況。
在最新版本的ydata-profiling中,分析報(bào)告在針對(duì)時(shí)間序列數(shù)據(jù)方面進(jìn)行了大幅改進(jìn),即針對(duì)“時(shí)間序列”和“間隙分析”指標(biāo)進(jìn)行報(bào)告。這些新功能極大地方便了趨勢(shì)和缺失模式的識(shí)別,現(xiàn)在還提供了具體的匯總統(tǒng)計(jì)數(shù)據(jù)和詳細(xì)的可視化。
所有時(shí)間序列都會(huì)呈現(xiàn)不穩(wěn)定模式,其中在連續(xù)測(cè)量之間似乎存在某種“跳躍”。這表明存在缺失數(shù)據(jù)(缺失信息的“間隙”),應(yīng)該對(duì)其進(jìn)行更仔細(xì)的研究。本文以S02 Mean為例來(lái)看一下。
圖片
圖片
在研究間隙分析所提供的細(xì)節(jié)時(shí),可以獲得對(duì)于已識(shí)別間隙特征的信息描述。總體而言,時(shí)間序列中有25個(gè)間隙,最短間隔為4天,最長(zhǎng)為32周,平均為10周。
從所呈現(xiàn)的可視化效果中,可以注意到較為“隨機(jī)”的細(xì)條紋代表的是較小的間隙,而較大的間隙似乎遵循著一種重復(fù)的模式。這表明我們的數(shù)據(jù)集中存在兩種不同的缺失數(shù)據(jù)模式。
較小的間隙對(duì)應(yīng)于產(chǎn)生缺失數(shù)據(jù)的零星事件,很可能是由于采集過(guò)程中的錯(cuò)誤而發(fā)生的,通常可以很容易地對(duì)數(shù)據(jù)進(jìn)行插值或從數(shù)據(jù)集中刪除。反之,較大的間隙則更為復(fù)雜,需要進(jìn)行更詳細(xì)的分析,因?yàn)樗鼈兛赡芙沂玖诵枰鼜氐捉鉀Q的潛在模式。
在本文的例子中,如果我們調(diào)查較大的間隙,實(shí)際上會(huì)發(fā)現(xiàn)它們反映了一個(gè)季節(jié)性模式:
df = data_scottsdale.copy()for year in df["Date Local"].dt.year.unique(): for month in range(1,13): if ((df["Date Local"].dt.year == year) & (df["Date Local"].dt.month ==month)).sum() == 0: print(f'Year {year} is missing month {month}.')
# Year 2000 is missing month 4.# Year 2000 is missing month 5.# Year 2000 is missing month 6.# Year 2000 is missing month 7.# Year 2000 is missing month 8.# (...)# Year 2007 is missing month 5.# Year 2007 is missing month 6.# Year 2007 is missing month 7.# Year 2007 is missing month 8.# (...)# Year 2010 is missing month 5.# Year 2010 is missing month 6.# Year 2010 is missing month 7.# Year 2010 is missing month 8.
正如我們所猜測(cè)的那樣,時(shí)間序列中呈現(xiàn)出一些較大的信息間隙,它們似乎具有重復(fù)性,甚至是季節(jié)性的:在大多數(shù)年份中,從5月到8月(第5至8個(gè)月)之間未收集數(shù)據(jù)。出現(xiàn)這種情況可能是由于不可預(yù)測(cè)的原因,或者與業(yè)務(wù)決策有關(guān),例如與削減成本有關(guān)的決定,或者僅僅是與天氣模式、溫度、濕度和大氣條件相關(guān)的污染物的季節(jié)性變化有關(guān)。
根據(jù)這些發(fā)現(xiàn),我們可以進(jìn)一步調(diào)查為什么會(huì)發(fā)生這種情況,是否應(yīng)該采取措施防止今后出現(xiàn)這種情況,以及如何處理我們目前擁有的數(shù)據(jù)。
在本教程中,已經(jīng)了解到理解時(shí)間序列中缺失數(shù)據(jù)模式的重要性,以及有效的分析方法如何揭示缺失信息的奧秘。無(wú)論是電信、醫(yī)療、能源還是金融等所有收集時(shí)間序列數(shù)據(jù)的行業(yè),都會(huì)在某個(gè)時(shí)候面臨缺失數(shù)據(jù)的問(wèn)題,并需要決定處理和從中提取所有可能知識(shí)的最佳方法。
通過(guò)全面的數(shù)據(jù)分析,我們可以根據(jù)手里擁有的數(shù)據(jù)特征做出明智而高效的決策:
希望本教程能夠幫助你正確識(shí)別和描述時(shí)間序列數(shù)據(jù)中的缺失數(shù)據(jù),期待你在間隙分析中的發(fā)現(xiàn)!
本文鏈接:http://www.tebozhan.com/showinfo-26-12731-0.html使用Python分析時(shí)序數(shù)據(jù)集中的缺失數(shù)據(jù)
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com
上一篇: 如何校驗(yàn)內(nèi)存數(shù)據(jù)的一致性,DynamicExpresso 算是幫上大忙了