數(shù)據(jù)科學(xué)的原理與技巧 五昙读、探索性數(shù)據(jù)分析

五、探索性數(shù)據(jù)分析

原文:DS-100/textbook/notebooks/ch05

譯者:飛龍

協(xié)議:CC BY-NC-SA 4.0

自豪地采用谷歌翻譯

探索性數(shù)據(jù)分析是一種態(tài)度,一種靈活的狀態(tài)幕屹,一種尋找那些我們認(rèn)為不存在和存在的東西的心愿太惠。

John Tukey

在探索性數(shù)據(jù)分析(EDA)磨淌,也就是數(shù)據(jù)科學(xué)生命周期的第三步中,我們總結(jié)垛叨,展示和轉(zhuǎn)換數(shù)據(jù)伦糯,以便更深入地理解它昨登。 特別是你虹,通過(guò) EDA,我們發(fā)現(xiàn)數(shù)據(jù)中的潛在問(wèn)題像云,并發(fā)現(xiàn)可用于進(jìn)一步分析的趨勢(shì)剂癌。

我們?cè)噲D了解我們數(shù)據(jù)的以下屬性:

結(jié)構(gòu):我們數(shù)據(jù)文件的格式淤翔。
粒度:每行和每列的精細(xì)程度。
范圍:我們的數(shù)據(jù)有多么完整或不完整佩谷。
時(shí)間性:數(shù)據(jù)是不是當(dāng)時(shí)的情況旁壮。
忠實(shí)度:數(shù)據(jù)捕捉“現(xiàn)實(shí)”有多好。

盡管我們分別介紹了數(shù)據(jù)清理和 EDA 來(lái)有助于組織本書(shū)谐檀,但在實(shí)踐中抡谐,你經(jīng)常會(huì)在兩者之間切換。 例如桐猬,列的可視化可能會(huì)向你展示麦撵,應(yīng)使用數(shù)據(jù)清理技術(shù)進(jìn)行處理的格式錯(cuò)誤的值。 考慮到這一點(diǎn)溃肪,我們回顧伯克利警察局的數(shù)據(jù)集來(lái)進(jìn)行探索免胃。

結(jié)構(gòu)和連接

結(jié)構(gòu)

數(shù)據(jù)集的結(jié)構(gòu)指的是數(shù)據(jù)文件的“形狀”。 基本上惫撰,這指的是輸入數(shù)據(jù)的格式羔沙。例如,我們看到呼叫數(shù)據(jù)集是 CSV(逗號(hào)分隔值)文件:

!head data/Berkeley_PD_-_Calls_for_Service.csv

CASENO,OFFENSE,EVENTDT,EVENTTM,CVLEGEND,CVDOW,InDbDate,Block_Location,BLKADDR,City,State
17091420,BURGLARY AUTO,07/23/2017 12:00:00 AM,06:00,BURGLARY - VEHICLE,0,08/29/2017 08:28:05 AM,"2500 LE CONTE AVE
Berkeley, CA
(37.876965, -122.260544)",2500 LE CONTE AVE,Berkeley,CA
17020462,THEFT FROM PERSON,04/13/2017 12:00:00 AM,08:45,LARCENY,4,08/29/2017 08:28:00 AM,"2200 SHATTUCK AVE
Berkeley, CA
(37.869363, -122.268028)",2200 SHATTUCK AVE,Berkeley,CA
17050275,BURGLARY AUTO,08/24/2017 12:00:00 AM,18:30,BURGLARY - VEHICLE,4,08/29/2017 08:28:06 AM,"200 UNIVERSITY AVE
Berkeley, CA
(37.865491, -122.310065)",200 UNIVERSITY AVE,Berkeley,CA

另一方面厨钻,截停數(shù)據(jù)集是 JSON(JavaScript 對(duì)象表示法)文件扼雏。

# Show first and last 5 lines of file
!head -n 5 data/stops.json
!echo '...'
!tail -n 5 data/stops.json

{
  "meta" : {
    "view" : {
      "id" : "6e9j-pj9p",
      "name" : "Berkeley PD - Stop Data",
...
, [ 31079, "C2B606ED-7872-4B0B-BC9B-4EF45149F34B", 31079, 1496269085, "932858", 1496269085, "932858", null, "2017-00024245", "2017-04-30T22:59:26", " UNIVERSITY AVE/6TH ST", "T", "BM2TWN; ", null, null ]
, [ 31080, "8FADF18D-7FE9-441D-8709-7BFEABDACA7A", 31080, 1496269085, "932858", 1496269085, "932858", null, "2017-00024250", "2017-04-30T23:19:27", " UNIVERSITY AVE /  WEST ST", "T", "HM4TCS; ", "37.8698757000001", "-122.286550846" ]
, [ 31081, "F60BD2A4-8C47-4BE7-B1C6-4934BE9DF838", 31081, 1496269085, "932858", 1496269085, "932858", null, "2017-00024254", "2017-04-30T23:38:34", " CHANNING WAY /  BOWDITCH ST", "1194", "AR; ", "37.867207539", "-122.256529377" ]
 ]
}

當(dāng)然坚嗜,還有很多其他類型的數(shù)據(jù)格式。 以下是最常見(jiàn)格式的列表:

  • 逗號(hào)分隔值(CSV)和制表符分隔值(TSV)呢蛤。 這些文件包含由逗號(hào)(CSV)或制表符(\t惶傻,TSV)分隔的表格數(shù)據(jù)。 這些文件通常很容易處理其障,因?yàn)閿?shù)據(jù)的輸入格式與DataFrame類似银室。

  • JavaScript 對(duì)象表示法(JSON)。 這些文件包含嵌套字典格式的數(shù)據(jù)励翼。 通常我們必須將整個(gè)文件讀為 Python 字典蜈敢,然后弄清楚如何從字典中為DataFrame提取字段。

  • 可擴(kuò)展標(biāo)記語(yǔ)言(XML)或超文本標(biāo)記語(yǔ)言(HTML)汽抚。 這些文件也包含嵌套格式的數(shù)據(jù)抓狭,例如:

    <?xml version="1.0" encoding="UTF-8"?>
    <note>
        <to>Tove</to>
        <from>Jani</from>
        <heading>Reminder</heading>
        <body>Don't forget me this weekend!</body>
    </note>
    

    在后面的章節(jié)中,我們將使用 XPath 從這些類型的文件中提取數(shù)據(jù)造烁。

  • 日志數(shù)據(jù)否过。許多應(yīng)用在運(yùn)行時(shí)會(huì)以非結(jié)構(gòu)化文本格式輸出一些數(shù)據(jù),例如:

    2005-03-23 23:47:11,663 - sa - INFO - creating an instance of aux_module.Aux
    2005-03-23 23:47:11,665 - sa.aux.Aux - INFO - creating an instance of Aux
    2005-03-23 23:47:11,665 - sa - INFO - created an instance of aux_module.Aux
    2005-03-23 23:47:11,668 - sa - INFO - calling aux_module.Aux.do_something
    2005-03-23 23:47:11,668 - sa.aux.Aux - INFO - doing something
    

    在后面的章節(jié)中惭蟋,我們將使用正則表達(dá)式從這些類型的文件中提取數(shù)據(jù)苗桂。

連接(Join)

數(shù)據(jù)通常會(huì)分成多個(gè)表格。 例如告组,一張表可能描述一些人的個(gè)人信息煤伟,而另一張表可能包含他們的電子郵件:

personal information while another will contain their emails:

people = pd.DataFrame(
    [["Joey",      "blue",    42,  "M"],
     ["Weiwei",    "blue",    50,  "F"],
     ["Joey",      "green",    8,  "M"],
     ["Karina",    "green",    7,  "F"],
     ["Nhi",       "blue",     3,  "F"],
     ["Sam",       "pink",   -42,  "M"]], 
    columns = ["Name", "Color", "Number", "Sex"])

people
Name Color Number Sex
0 Joey blue 42 M
1 Weiwei blue 50 F
2 Joey green 8 M
3 Karina green 7 F
4 Fernando pink -9 M
5 Nhi blue 3 F
6 Sam pink -42 M
email = pd.DataFrame(
    [["Deb",  "deborah_nolan@berkeley.edu"],
     ["Sam",  "samlau95@berkeley.edu"],
     ["John", "doe@nope.com"],
     ["Joey", "jegonzal@cs.berkeley.edu"],
     ["Weiwei", "weiwzhang@berkeley.edu"],
     ["Weiwei", "weiwzhang+123@berkeley.edu"],
     ["Karina", "kgoot@berkeley.edu"]], 
    columns = ["User Name", "Email"])

email
User Name Email
0 Deb deborah_nolan@berkeley.edu
1 Sam samlau95@berkeley.edu
2 John doe@nope.com
3 Joey jegonzal@cs.berkeley.edu
4 Weiwei weiwzhang@berkeley.edu
5 Weiwei weiwzhang+123@berkeley.edu
6 Karina kgoot@berkeley.edu

為了使每個(gè)人匹配他或她的電子郵件,我們可以在包含用戶名的列上連接兩個(gè)表木缝。 然后便锨,我們必須決定,如何處理出現(xiàn)在一張表上而沒(méi)有在另一張表上的人我碟。 例如放案,Fernando出現(xiàn)在people表中,但不出現(xiàn)在email表中矫俺。 我們有幾種類型的連接吱殉,用于每個(gè)匹配缺失值的策略。 最常見(jiàn)的連接之一是內(nèi)連接恳守,其中任何不匹配的行都不放入最終結(jié)果中:

# Fernando, Nhi, Deb, and John don't appear
people.merge(email, how='inner', left_on='Name', right_on='User Name')
Name Color Number Sex User Name Email
0 Joey blue 42 M Joey jegonzal@cs.berkeley.edu
1 Joey green 8 M Joey jegonzal@cs.berkeley.edu
2 Weiwei blue 50 F Weiwei weiwzhang@berkeley.edu
3 Weiwei blue 50 F Weiwei weiwzhang+123@berkeley.edu
4 Karina green 7 F Karina kgoot@berkeley.edu
5 Sam pink -42 M Sam samlau95@berkeley.edu

這是我們經(jīng)常使用的四個(gè)基本連接:內(nèi)連接,全連接(有時(shí)稱為“外連接”)贩虾,左連接和右連接催烘。 以下是個(gè)圖表,展示了這些類型的連接之間的區(qū)別缎罢。

image

運(yùn)行下面的代碼伊群,并使用生成的下拉菜單考杉,來(lái)展示peopleemail表格的四種不同的連接的結(jié)果。 注意對(duì)于外舰始,左和右連接崇棠,哪些行包含了NaN值。

# HIDDEN
def join_demo(join_type):
    display(HTML('people and email tables:'))
    display_two(people, email)
    display(HTML('<br>'))
    display(HTML('Joined table:'))
    display(people.merge(email, how=join_type,
                         left_on='Name', right_on='User Name'))
    
interact(join_demo, join_type=['inner', 'outer', 'left', 'right']);

結(jié)構(gòu)檢查清單

查看數(shù)據(jù)集的結(jié)構(gòu)之后丸卷,你應(yīng)該回答以下問(wèn)題枕稀。我們將根據(jù)呼叫和截停數(shù)據(jù)集回答它們。

數(shù)據(jù)是標(biāo)準(zhǔn)格式還是編碼過(guò)的谜嫉?

標(biāo)準(zhǔn)格式包括:

表格數(shù)據(jù):CSV萎坷,TSV,Excel沐兰,SQL
嵌套數(shù)據(jù):JSON哆档,XML

呼叫數(shù)據(jù)集采用 CSV 格式,而截停數(shù)據(jù)集采用 JSON 格式住闯。

數(shù)據(jù)是組織為記錄形式(例如行)的嗎瓜浸?如果不是,我們可以通過(guò)解析數(shù)據(jù)來(lái)定義記錄嗎比原?

呼叫數(shù)據(jù)集按行出現(xiàn)插佛;我們從截停數(shù)據(jù)集中提取記錄。

數(shù)據(jù)是否嵌套春寿?如果是這樣朗涩,我們是否可以適當(dāng)?shù)靥崛》乔短椎臄?shù)據(jù)?

呼叫數(shù)據(jù)集不是嵌套的绑改;我們不必過(guò)于費(fèi)力從截停數(shù)據(jù)集中獲取非嵌套的數(shù)據(jù)谢床。

數(shù)據(jù)是否引用了其他數(shù)據(jù)?如果是這樣厘线,我們可以連接數(shù)據(jù)嗎识腿?

呼叫數(shù)據(jù)集引用了星期表。連接這兩張表讓我們知道數(shù)據(jù)集中每個(gè)事件的星期造壮。截取數(shù)據(jù)集沒(méi)有明顯的引用渡讼。

每個(gè)記錄中的字段(例如,列)是什么耳璧?每列的類型是什么成箫?

呼叫和截停數(shù)據(jù)集的字段,在每個(gè)數(shù)據(jù)集的“數(shù)據(jù)清理”一節(jié)中介紹旨枯。

粒度

數(shù)據(jù)的粒度是數(shù)據(jù)中每條記錄代表什么蹬昌。 例如,在呼叫數(shù)據(jù)集中攀隔,每條記錄代表一次警務(wù)呼叫皂贩。

# HIDDEN
calls = pd.read_csv('data/calls.csv')
calls.head()
CASENO OFFENSE CVLEGEND BLKADDR EVENTDTTM Latitude Longitude Day
0 17091420 BURGLARY AUTO BURGLARY - VEHICLE 2500 LE CONTE AVE 2017-07-23 06:00:00 37.876965 -122.260544 Sunday
1 17038302 BURGLARY AUTO BURGLARY - VEHICLE BOWDITCH STREET & CHANNING WAY 2017-07-02 22:00:00 37.867209 -122.256554 Sunday
2 17049346 THEFT MISD. (UNDER $950) LARCENY 2900 CHANNING WAY 2017-08-20 23:20:00 37.867948 -122.250664 Sunday
3 17091319 THEFT MISD. (UNDER $950) LARCENY 2100 RUSSELL ST 2017-07-09 04:15:00 37.856719 -122.266672 Sunday
4 17044238 DISTURBANCE DISORDERLY CONDUCT TELEGRAPH AVENUE & DURANT AVE 2017-07-30 01:16:00 37.867816 -122.258994 Sunday

在截停數(shù)據(jù)集中栖榨,每條記錄代表一次警務(wù)截停事件。

# HIDDEN
stops = pd.read_csv('data/stops.csv', parse_dates=[1], infer_datetime_format=True)
stops.head()
Incident Number Call Date/Time Location Incident Type Dispositions Location - Latitude Location - Longitude
0 2015-00004825 2015-01-26 00:10:00 SAN PABLO AVE / MARIN AVE T M NaN NaN
1 2015-00004829 2015-01-26 00:50:00 SAN PABLO AVE / CHANNING WAY T M NaN NaN
2 2015-00004831 2015-01-26 01:03:00 UNIVERSITY AVE / NINTH ST T M NaN NaN
3 2015-00004848 2015-01-26 07:16:00 2000 BLOCK BERKELEY WAY 1194 BM4ICN NaN NaN
4 2015-00004849 2015-01-26 07:43:00 1700 BLOCK SAN PABLO AVE 1194 BM4ICN NaN NaN

另一方面明刷,我們可能以下列格式收到接受數(shù)據(jù):

# HIDDEN
(stops
 .groupby(stops['Call Date/Time'].dt.date)
 .size()
 .rename('Num Incidents')
 .to_frame()
)
Num Incidents
Call Date/Time
2015-01-26 46
2015-01-27 57
2015-01-28 56
... ...
2017-04-28 82
2017-04-29 86
2017-04-30 59

825 rows × 1 columns

在這種情況下婴栽,表格中的每個(gè)記錄對(duì)應(yīng)于單個(gè)日期而不是單個(gè)事件。 我們會(huì)將此表描述為辈末,它具有比上述更粗的粒度愚争。 了解數(shù)據(jù)的粒度非常重要,因?yàn)樗鼪Q定了你可以執(zhí)行哪種分析本冲。 一般來(lái)說(shuō)准脂,細(xì)粒度由于粗粒度;雖然我們可以使用分組和旋轉(zhuǎn)將細(xì)粒度變?yōu)榇至6让识矗覀儧](méi)有幾個(gè)工具可以由粗到精狸膏。

粒度檢查清單

查看數(shù)據(jù)集的粒度后,你應(yīng)該回答以下問(wèn)題添怔。我們將根據(jù)呼叫和截停數(shù)據(jù)集回答他們湾戳。

一條記錄代表了什么?

在呼叫數(shù)據(jù)集中广料,每條記錄代表一次警務(wù)呼叫砾脑。在截停數(shù)據(jù)集中,每條記錄代表一次警務(wù)截停事件艾杏。

所有記錄的粒度是否在同一級(jí)別韧衣? (有時(shí)一個(gè)表格將包含匯總行。)

是的购桑,對(duì)于呼叫和截停數(shù)據(jù)集是如此畅铭。

如果數(shù)據(jù)是聚合的,聚合是如何進(jìn)行的勃蜘?采樣和平均是常見(jiàn)的聚合硕噩。

就有印象記住,在兩個(gè)數(shù)據(jù)集中缭贡,位置都是輸入為街區(qū)炉擅,而不是特定的地址。

我們可以對(duì)數(shù)據(jù)執(zhí)行什么類型的聚合阳惹?

例如谍失,隨著時(shí)間的推移,將個(gè)體聚合為人口統(tǒng)計(jì)分組莹汤,或個(gè)體事件聚合為總數(shù)快鱼。

在這種情況下,我們可以聚合為不同的日期或時(shí)間粒度。例如攒巍,我們可以使用聚合,找到事件最常見(jiàn)的一天的某個(gè)小時(shí)荒勇。我們也可能能夠按照事件地點(diǎn)聚合柒莉,來(lái)發(fā)現(xiàn)事件最多的伯克利地區(qū)。

范圍

數(shù)據(jù)集的范圍是指數(shù)據(jù)集的覆蓋面沽翔,與我們有興趣分析的東西相關(guān)兢孝。我們?cè)噲D回答我們數(shù)據(jù)范圍的以下問(wèn)題:

數(shù)據(jù)是否涵蓋了感興趣的話題?

例如仅偎,呼叫和截停數(shù)據(jù)集包含在伯克利發(fā)生的呼叫和截停事件跨蟹。然而,如果我們對(duì)加利福尼亞州的犯罪事件感興趣橘沥,那么這些數(shù)據(jù)集的范圍將會(huì)過(guò)于有限窗轩。

一般來(lái)說(shuō),較大的范圍比較小的范圍更有用座咆,因?yàn)槲覀兛梢詫⑤^大的范圍過(guò)濾為較小的范圍痢艺,但通常不能從較小的范圍轉(zhuǎn)到較大的范圍。例如介陶,如果我們有美國(guó)的警務(wù)截停數(shù)據(jù)集堤舒,我們可以取數(shù)據(jù)集的子集,來(lái)調(diào)查伯克利哺呜。

請(qǐng)記住舌缤,范圍是一個(gè)廣義術(shù)語(yǔ),并不總是用于描述地理位置某残。例如国撵,它也可以指時(shí)間覆蓋面 - 呼叫數(shù)據(jù)集僅包含 180 天的數(shù)據(jù)。

在調(diào)查數(shù)據(jù)生成的過(guò)程中驾锰,我們經(jīng)常會(huì)處理數(shù)據(jù)集的范圍卸留,并在 EDA 期間確認(rèn)數(shù)據(jù)集的范圍。讓我們來(lái)確認(rèn)呼叫數(shù)據(jù)集的地理和時(shí)間范圍椭豫。

calls
CASENO OFFENSE CVLEGEND BLKADDR EVENTDTTM Latitude Longitude Day
0 17091420 BURGLARY AUTO BURGLARY - VEHICLE 2500 LE CONTE AVE 2017-07-23 06:00:00 37.876965 -122.260544 Sunday
1 17038302 BURGLARY AUTO BURGLARY - VEHICLE BOWDITCH STREET & CHANNING WAY 2017-07-02 22:00:00 37.867209 -122.256554 Sunday
2 17049346 THEFT MISD. (UNDER $950) LARCENY 2900 CHANNING WAY 2017-08-20 23:20:00 37.867948 -122.250664 Sunday
... ... ... ... ... ... ... ... ...
5505 17021604 IDENTITY THEFT FRAUD 100 MONTROSE RD 2017-03-31 00:00:00 37.896218 -122.270671 Friday
5506 17033201 DISTURBANCE DISORDERLY CONDUCT 2300 COLLEGE AVE 2017-06-09 22:34:00 37.868957 -122.254552 Friday
5507 17047247 BURGLARY AUTO BURGLARY - VEHICLE UNIVERSITY AVENUE & CHESTNUT ST 2017-08-11 20:00:00 37.869679 -122.288038 Friday

5508 rows × 8 columns

# Shows earliest and latest dates in calls
calls['EVENTDTTM'].dt.date.sort_values()
'''
1384    2017-03-02
1264    2017-03-02
1408    2017-03-02
           ...    
3516    2017-08-28
3409    2017-08-28
3631    2017-08-28
Name: EVENTDTTM, Length: 5508, dtype: object
'''
calls['EVENTDTTM'].dt.date.max() - calls['EVENTDTTM'].dt.date.min()
# datetime.timedelta(179)

該表格包含 179 天的時(shí)間段的數(shù)據(jù)耻瑟,該時(shí)間段足夠接近數(shù)據(jù)描述中的 180 天,我們可以假設(shè) 2017 年 4 月 14 日或 2017 年 8 月 29 日沒(méi)有呼叫赏酥。

為了檢查地理范圍喳整,我們可以使用地圖:

import folium # Use the Folium Javascript Map Library
import folium.plugins

SF_COORDINATES = (37.87, -122.28)
sf_map = folium.Map(location=SF_COORDINATES, zoom_start=13)
locs = calls[['Latitude', 'Longitude']].astype('float').dropna().as_matrix()
heatmap = folium.plugins.HeatMap(locs.tolist(), radius = 10)
sf_map.add_child(heatmap)
image

除少數(shù)例外情況外,呼叫數(shù)據(jù)集覆蓋了伯克利地區(qū)裸扶。 我們可以看到框都,大多數(shù)警務(wù)呼叫發(fā)生在伯克利市中心和 UCB 校區(qū)的南部。

現(xiàn)在我們來(lái)確認(rèn)截停數(shù)據(jù)集的時(shí)間和地理范圍:

stops
Incident Number Call Date/Time Location Incident Type Dispositions Location - Latitude Location - Longitude
0 2015-00004825 2015-01-26 00:10:00 SAN PABLO AVE / MARIN AVE T M NaN NaN
1 2015-00004829 2015-01-26 00:50:00 SAN PABLO AVE / CHANNING WAY T M NaN NaN
2 2015-00004831 2015-01-26 01:03:00 UNIVERSITY AVE / NINTH ST T M NaN NaN
... ... ... ... ... ... ... ...
29205 2017-00024245 2017-04-30 22:59:26 UNIVERSITY AVE/6TH ST T BM2TWN NaN NaN
29206 2017-00024250 2017-04-30 23:19:27 UNIVERSITY AVE / WEST ST T HM4TCS 37.869876 -122.286551
29207 2017-00024254 2017-04-30 23:38:34 CHANNING WAY / BOWDITCH ST 1194 AR 37.867208 -122.256529

29208 rows × 7 columns

stops['Call Date/Time'].dt.date.sort_values()
'''
0        2015-01-26
25       2015-01-26
26       2015-01-26
            ...    
29175    2017-04-30
29177    2017-04-30
29207    2017-04-30
Name: Call Date/Time, Length: 29208, dtype: object
'''

如承諾的那樣呵晨,數(shù)據(jù)收集工作從 2015 年 1 月 26 日開(kāi)始魏保。因?yàn)樗?2017 年 4 月 30 日起停止熬尺,數(shù)據(jù)似乎在 2017 年 5 月初左右下載。讓我們繪制地圖來(lái)查看地理數(shù)據(jù):

SF_COORDINATES = (37.87, -122.28)
sf_map = folium.Map(location=SF_COORDINATES, zoom_start=13)
locs = stops[['Location - Latitude', 'Location - Longitude']].astype('float').dropna().as_matrix()
heatmap = folium.plugins.HeatMap(locs.tolist(), radius = 10)
sf_map.add_child(heatmap)
image

我們可以證實(shí)谓罗,數(shù)據(jù)集中在伯克利發(fā)生的警務(wù)截停粱哼,以及大多數(shù)警務(wù)呼叫,都發(fā)生在伯克利市中心和伯克利西部地區(qū)檩咱。

時(shí)間性

時(shí)間性是指數(shù)據(jù)在時(shí)間上如何表示揭措,特別是數(shù)據(jù)集中的日期和時(shí)間字段。我們?cè)噲D通過(guò)這些字段來(lái)了解以下特征:

數(shù)據(jù)集中日期和時(shí)間字段的含義是什么刻蚯?

在呼叫和截停數(shù)據(jù)集中绊含,日期時(shí)間字段表示警務(wù)呼叫或截停的時(shí)間。然而炊汹,截停數(shù)據(jù)集最初還有一個(gè)日期時(shí)間字段躬充,記錄案件什么時(shí)候輸入到數(shù)據(jù)庫(kù),我們?cè)跀?shù)據(jù)清理過(guò)程中將其移除讨便,因?yàn)槲覀冋J(rèn)為它不適用于分析麻裳。

另外,我們應(yīng)該注意日期時(shí)間字段的時(shí)區(qū)和夏令時(shí)器钟,特別是在處理來(lái)自多個(gè)位置的數(shù)據(jù)的時(shí)候津坑。

日期和時(shí)間字段在數(shù)據(jù)中有什么表示形式?

雖然美國(guó)使用MM/DD/YYYY格式傲霸,但許多其他國(guó)家使用DD/MM/YYYY格式疆瑰。仍有更多格式在世界各地使用,分析數(shù)據(jù)時(shí)認(rèn)識(shí)到這些差異非常重要昙啄。

在呼叫和截停數(shù)據(jù)集中穆役,日期顯示為MM/DD/YYYY格式。

是否有奇怪的時(shí)間戳梳凛,它可能代表空值耿币?

某些程序使用占位符而不是空值。例如韧拒,Excel 的默認(rèn)日期是 1990 年 1 月 1 日淹接,而 Mac 上的 Excel 則是 1904 年 1 月 1 日。許多應(yīng)用將生成 1970 年 1 月 1 日 12:00 或 1969 年 12 月 31 日 11:59 pm 的默認(rèn)日期時(shí)間叛溢,因?yàn)檫@是用于時(shí)間戳的 Unix 紀(jì)元塑悼。如果你在數(shù)據(jù)中注意到這些時(shí)間戳的多個(gè)實(shí)例,則應(yīng)該謹(jǐn)慎并仔細(xì)檢查數(shù)據(jù)源楷掉。 呼叫或截停數(shù)據(jù)集都不包含任何這些可疑值厢蒜。

忠實(shí)度

如果我們相信它能準(zhǔn)確捕捉現(xiàn)實(shí),我們將數(shù)據(jù)集描述為“忠實(shí)的”。通常斑鸦,不可信的數(shù)據(jù)集包含:

不切實(shí)際或不正確的值

例如愕贡,未來(lái)的日期,不存在的位置巷屿,負(fù)數(shù)或較大離群值颂鸿。

明顯違反的依賴關(guān)系

例如,個(gè)人的年齡和生日不匹配攒庵。

手動(dòng)輸入的數(shù)據(jù)

我們看到,這些通常充滿了拼寫(xiě)錯(cuò)誤和不一致败晴。

明顯的數(shù)據(jù)偽造跡象

例如浓冒,重復(fù)的名稱,偽造的電子郵件地址尖坤,或重復(fù)使用不常見(jiàn)的名稱或字段稳懒。

注意與數(shù)據(jù)清理的許多相似之處。 我們提到慢味,我們經(jīng)常在數(shù)據(jù)清理和 EDA 之間來(lái)回切換场梆,特別是在確定數(shù)據(jù)忠實(shí)度的時(shí)候。 例如纯路,可視化經(jīng)常幫助我們識(shí)別數(shù)據(jù)中的奇怪條目或油。

calls = pd.read_csv('data/calls.csv')
calls.head()
CASENO OFFENSE EVENTDT EVENTTM ... BLKADDR Latitude Longitude Day
0 17091420 BURGLARY AUTO 07/23/2017 12:00:00 AM 06:00 ... 2500 LE CONTE AVE 37.876965 -122.260544 Sunday
1 17038302 BURGLARY AUTO 07/02/2017 12:00:00 AM 22:00 ... BOWDITCH STREET & CHANNING WAY 37.867209 -122.256554 Sunday
2 17049346 THEFT MISD. (UNDER $950) 08/20/2017 12:00:00 AM 23:20 ... 2900 CHANNING WAY 37.867948 -122.250664 Sunday
3 17091319 THEFT MISD. (UNDER $950) 07/09/2017 12:00:00 AM 04:15 ... 2100 RUSSELL ST 37.856719 -122.266672 Sunday
4 17044238 DISTURBANCE 07/30/2017 12:00:00 AM 01:16 ... TELEGRAPH AVENUE & DURANT AVE 37.867816 -122.258994 Sunday

5 rows × 9 columns

calls['CASENO'].plot.hist(bins=30)
# <matplotlib.axes._subplots.AxesSubplot at 0x1a1ebb2898>
image

請(qǐng)注意1703000017090000處的非預(yù)期的簇。通過(guò)繪制案例編號(hào)的分布驰唬,我們可以很快查看數(shù)據(jù)中的異常顶岸。 在這種情況下,我們可能會(huì)猜測(cè)叫编,兩個(gè)不同的警察團(tuán)隊(duì)為他們的呼叫使用不同的案件編號(hào)辖佣。

數(shù)據(jù)探索通常會(huì)發(fā)現(xiàn)異常情況;如果可以修復(fù)搓逾,我們可以使用數(shù)據(jù)清理技術(shù)卷谈。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市霞篡,隨后出現(xiàn)的幾起案子世蔗,更是在濱河造成了極大的恐慌,老刑警劉巖朗兵,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件凸郑,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡矛市,警方通過(guò)查閱死者的電腦和手機(jī)芙沥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人而昨,你說(shuō)我怎么就攤上這事救氯。” “怎么了歌憨?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵着憨,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我务嫡,道長(zhǎng)甲抖,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任心铃,我火速辦了婚禮准谚,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘去扣。我一直安慰自己柱衔,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布愉棱。 她就那樣靜靜地躺著唆铐,像睡著了一般。 火紅的嫁衣襯著肌膚如雪奔滑。 梳的紋絲不亂的頭發(fā)上艾岂,一...
    開(kāi)封第一講書(shū)人閱讀 51,146評(píng)論 1 297
  • 那天,我揣著相機(jī)與錄音朋其,去河邊找鬼澳盐。 笑死,一個(gè)胖子當(dāng)著我的面吹牛令宿,可吹牛的內(nèi)容都是我干的叼耙。 我是一名探鬼主播,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼粒没,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼筛婉!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起癞松,我...
    開(kāi)封第一講書(shū)人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤爽撒,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后响蓉,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體硕勿,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年枫甲,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了源武。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片扼褪。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖粱栖,靈堂內(nèi)的尸體忽然破棺而出话浇,到底是詐尸還是另有隱情,我是刑警寧澤闹究,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布幔崖,位于F島的核電站,受9級(jí)特大地震影響渣淤,放射性物質(zhì)發(fā)生泄漏赏寇。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一价认、第九天 我趴在偏房一處隱蔽的房頂上張望嗅定。 院中可真熱鬧,春花似錦刻伊、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至动漾,卻和暖如春丁屎,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背旱眯。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工晨川, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人删豺。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓共虑,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親呀页。 傳聞我的和親對(duì)象是個(gè)殘疾皇子妈拌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 四尘分、數(shù)據(jù)清理 原文:DS-100/textbook/notebooks/ch04譯者:飛龍協(xié)議:CC BY-NC-...
    布客飛龍閱讀 1,338評(píng)論 0 7
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)丸氛,斷路器培愁,智...
    卡卡羅2017閱讀 134,651評(píng)論 18 139
  • 先列提綱,根據(jù)產(chǎn)品目前的市場(chǎng)定位和運(yùn)營(yíng)狀況(優(yōu)勢(shì)劣勢(shì))缓窜,確定要分析的順序和側(cè)重定续。盡量從某一個(gè)角度入手谍咆,比如旅行產(chǎn)品...
    cutty閱讀 2,486評(píng)論 0 2
  • 看到這個(gè)標(biāo)題可能部分人會(huì)想問(wèn)是否有小街這一地名,沒(méi)錯(cuò)香罐,是有的卧波,像北京的朝內(nèi)小街,亦或是云南文山縣的小街鎮(zhèn)庇茫,但...
    辰辰女王閱讀 216評(píng)論 0 1
  • 河邊的風(fēng)景港粱,有好友相伴,何不美哉 河邊的微風(fēng)靜靜地吹旦签,河水隨著風(fēng)默默的流動(dòng)查坪,下午烈陽(yáng)高照,我內(nèi)心卻毫無(wú)燥動(dòng)宁炫,幾...
    養(yǎng)樂(lè)多忒愛(ài)閱讀 344評(píng)論 2 1