탐색 건너뛰기

Chicago Safety Data

Chicago 311 Service Requests Public Safety Streets Pot Holes Lights Garbage Sanitation Complaints

시카고시의 311 서비스 요청으로, 위생 관리 코드 불만 사항 기록, 보고된 포트홀 및 가로등 문제를 포함합니다.

모든 미해결 위생 관리 코드 불만 사항이 311에 보고되었으며 모든 요청은 2011년 1월 1일 이후 완료되었습니다. Department of Streets and Sanitation은 보고된 시카고의 위생 관리 코드 위반 사항을 조사하고 해결합니다. 거주자는 넘쳐흐르는 골목의 쓰레기통과 쓰레기 같은 위반 사항에 대해 서비스를 요청할 수 있습니다. 311은 중복된 위생 관리 코드 불만 사항을 접수하는 경우도 있습니다. 중복으로 레이블이 지정된 요청은 이전 요청과 동일한 지역에 속하고 311의 CSR(고객 서비스 요청) 시스템에 거의 동시에 입력되었습니다. 중복된 불만 사항은 상태 필드에 “Open - Dup”(미해결 - 중복) 또는 “Completed - Dup”(완료됨 - 중복)과 같은 레이블이 지정됩니다.

CDOT(Chicago Department of Transportation)는 시카고의 6,437km(4,000마일)이 넘는 간선도로 및 주택가에 있는 포트홀 보수 작업을 감독합니다. CDOT는 311 콜 센터를 통해 포트홀에 대한 보고를 받고 전산화된 매핑 및 추적 시스템을 사용하여 포트홀 위치를 파악한 후 효율적으로 담당자의 일정을 잡습니다. 311 통화 한 건으로 여러 건의 포트홀 복구가 생성될 수 있습니다. 담당자가 도착하여 311 포트홀을 복구하는 경우 블록 내에 있는 다른 모든 포트홀도 메우게 됩니다. 일반적으로 포트홀 복구는 포트홀이 311에 처음 보고된 날로부터 7일 이내에 완료됩니다. 기상 상태, 특히 몹시 낮은 기온 및 강수량은 복구 기간에 영향을 줍니다. 기상 상태가 좋고 비가 오지 않는 날 담당자는 수천 개의 포트홀을 메울 수 있습니다. 이전 요청이 4개의 주소 버퍼에 대해 이미 열려 있으면 해당 요청에는 “Duplicate (Open)”(중복(미해결)) 상태가 지정됩니다. 예를 들어 6535 N Western 지역에 대한 기존 CSR이 있는데 6531 N Western 지역(원본 CSR의 4개 주소에 포함)에 대해 새 요청이 접수되면 새 요청에는 “Duplicate (Open)”(중복(미해결)) 상태가 지정됩니다. 도로가 복구되면 CSR의 상태는 원본 요청에 대해 “Completed”(완료됨)로 표시되고 중복된 요청에 대해서는 “Duplicate (Closed)”(중복(종결됨))로 표시됩니다. 또한 보고된 주소를 조사했지만 포트홀이 발견되지 않거나 이미 메워진 경우 서비스 요청은 “Completed”(완료됨) 상태를 수신합니다. “붕괴”, “설비 파손” 등의 다른 문제가 도로에서 발견되는 경우 관련 부서나 수급자에게 전달됩니다.

모든 미해결 “Street Lights - All Out”(가로등 - 모두 정전)(3개 이상의 가로등 정전)이 311에 보고되었으며 모든 요청은 2011년 1월 1일 이후 완료되었습니다. CDOT(Chicago Department of Transportation)는 시카고의 간선도로 및 주택가를 비추는 약 25만 개의 가로등을 관리 감독합니다. CDOT는 거주자의 가로등 정전 보고에 대한 응답으로 복구 및 전구 교체 작업을 수행합니다. CDOT에서 “All Out”(모두 정전)이라는 보고를 받으면 복구하도록 배정된 전기 기사가 해당 회로(각 회로에 8-16개의 가로등이 있음)에 있는 모든 가로등을 점검하고 모두 제대로 작동하는지 확인합니다. 원본 요청일로부터 4일 이내에 동일한 회로의 가로등 정전이라는 두 번째 요청이 접수되면 최신 요청에 “Duplicate (Open)”(중복(미해결)) 상태가 자동으로 지정됩니다. CDOT의 전기 기사가 회로의 모든 가로등을 점검하여 모두 작동함을 확인했으므로 모든 “Duplicate (Open)”(중복(미해결)) 주소는 자동으로 관찰되고 복구됩니다. 가로등이 복구되면 CSR의 상태는 원본 요청에 대해 “Completed”(완료됨)로 표시되고 중복된 요청에 대해서는 “Duplicate (Closed)”(중복(종결됨))로 표시됩니다. 또한 보고된 가로등을 조사했는데 수리가 잘되어 작동하는 것으로 확인되거나, 존재하지 않는 주소에 대한 서비스 요청이거나, 가로등이 수급자에 의해 유지 관리되는 경우 서비스 요청은 “Completed”(완료됨) 상태를 수신합니다. 데이터는 매일 업데이트됩니다.

볼륨 및 보존

이 데이터 세트는 Parquet 형식으로 저장됩니다. 이 데이터 세트는 매일 업데이트되며, 2018년 기준 총 약 1백만 개의 행(80MB)을 포함합니다.

이 데이터 세트는 2011년부터 2018년까지 누적된 기록 레코드를 포함합니다. SDK의 매개 변수 설정을 사용하여 특정 시간 범위의 데이터를 가져올 수 있습니다.

스토리지 위치

이 데이터 세트는 미국 동부 Azure 지역에 저장됩니다. 선호도를 위해 미국 동부에 컴퓨팅 리소스를 할당하는 것이 좋습니다.

추가 정보

이 데이터 세트는 시카고시 정부에서 제공됩니다. 자세한 내용은 다음 링크에서 확인할 수 있습니다. 위생 관리, 포트홀, 가로등.

이 데이터 세트 사용과 관련된 사용 약관은 여기를 참조하세요. 데이터 원본에 대한 질문이 있는 경우 으로 문의해 주세요.

알림

Microsoft는 Azure Open Datasets를 “있는 그대로” 제공합니다. Microsoft는 귀하의 데이터 세트 사용과 관련하여 어떠한 명시적이거나 묵시적인 보증, 보장 또는 조건을 제공하지 않습니다. 귀하가 거주하는 지역의 법규가 허용하는 범위 내에서 Microsoft는 귀하의 데이터 세트 사용으로 인해 발생하는 일체의 직접적, 결과적, 특별, 간접적, 부수적 또는 징벌적 손해 또는 손실을 비롯한 모든 손해 또는 손실에 대한 모든 책임을 부인합니다.

이 데이터 세트는 Microsoft가 원본 데이터를 받은 원래 사용 약관에 따라 제공됩니다. 데이터 세트에는 Microsoft가 제공한 데이터가 포함될 수 있습니다.

Access

Available inWhen to use
Azure Notebooks

Quickly explore the dataset with Jupyter notebooks hosted on Azure or your local machine.

Azure Databricks

Use this when you need the scale of an Azure managed Spark cluster to process the dataset.

Azure Synapse

Use this when you need the scale of an Azure managed Spark cluster to process the dataset.

Preview

dataType dataSubtype dateTime category subcategory status address source extendedProperties latitude longitude
Safety 311_All 12/2/2020 11:54:58 PM 311 INFORMATION ONLY CALL null Completed 2111 W Lexington ST null
Safety 311_All 12/2/2020 11:53:07 PM Vacant/Abandoned Building Complaint null Open 4041 W WILCOX ST null 41.878650394 -87.727252536
Safety 311_All 12/2/2020 11:52:43 PM 311 INFORMATION ONLY CALL null Completed 2111 W Lexington ST null
Safety 311_All 12/2/2020 11:52:10 PM 311 INFORMATION ONLY CALL null Completed 2111 W Lexington ST null
Safety 311_All 12/2/2020 11:51:50 PM Street Light Out Complaint null Open 8110 S CHAMPLAIN AVE null 41.747190717 -87.609066703
Safety 311_All 12/2/2020 11:50:46 PM 311 INFORMATION ONLY CALL null Completed 2111 W Lexington ST null
Safety 311_All 12/2/2020 11:49:53 PM 311 INFORMATION ONLY CALL null Completed 2111 W Lexington ST null
Safety 311_All 12/2/2020 11:48:59 PM Abandoned Vehicle Complaint null Open 1211 N MAPLEWOOD AVE null 41.903364008 -87.690700101
Safety 311_All 12/2/2020 11:48:55 PM 311 INFORMATION ONLY CALL null Completed 2111 W Lexington ST null
Safety 311_All 12/2/2020 11:46:50 PM 311 INFORMATION ONLY CALL null Completed 2111 W Lexington ST null
Name Data type Unique Values (sample) Description
address string 821,345 2111 W Lexington ST
10510 W ZEMKE RD

주소입니다.

category string 99 311 INFORMATION ONLY CALL
Aircraft Noise Complaint

서비스 요청의 유형입니다.

dataSubtype string 1 311_All

“311_Sanitation”, “311_Potholes” 또는 “311_Street_Lights”입니다.

dataType string 1 Safety

“안전”입니다.

dateTime timestamp 3,760,130 2014-01-13 00:00:00
2014-03-10 00:00:00

서비스 요청의 생성 날짜입니다.

latitude double 1,151,823 41.871831278
41.994896549

위도입니다.

longitude double 1,294,170 -87.679846219
-87.887751654

경도입니다.

status string 5 Completed
Completed - Dup

완료 여부를 나타내는 서비스 요청의 상태입니다.

Select your preferred service:

Azure Notebooks

Azure Databricks

Azure Synapse

Azure Notebooks

Package: Language: Python Python
In [1]:
# This is a package in preview.
from azureml.opendatasets import ChicagoSafety

from datetime import datetime
from dateutil import parser


end_date = parser.parse('2016-01-01')
start_date = parser.parse('2015-05-01')
safety = ChicagoSafety(start_date=start_date, end_date=end_date)
safety = safety.to_pandas_dataframe()
ActivityStarted, to_pandas_dataframe ActivityStarted, to_pandas_dataframe_in_worker Looking for parquet files... Reading them into Pandas dataframe... Reading Safety/Release/city=Chicago/part-00080-tid-845600952581210110-a4f62588-4996-42d1-bc79-23a9b4635c63-446923.c000.snappy.parquet under container citydatacontainer Done. ActivityCompleted: Activity=to_pandas_dataframe_in_worker, HowEnded=Success, Duration=11294.27 [ms] ActivityCompleted: Activity=to_pandas_dataframe, HowEnded=Success, Duration=11295.76 [ms]
In [2]:
safety.info()
<class 'pandas.core.frame.DataFrame'> Int64Index: 56431 entries, 3751 to 2291417 Data columns (total 11 columns): dataType 56431 non-null object dataSubtype 56431 non-null object dateTime 56431 non-null datetime64[ns] category 56431 non-null object subcategory 0 non-null object status 56431 non-null object address 56431 non-null object latitude 56358 non-null float64 longitude 56358 non-null float64 source 0 non-null object extendedProperties 29124 non-null object dtypes: datetime64[ns](1), float64(2), object(8) memory usage: 5.2+ MB
In [1]:
# Pip install packages
import os, sys

!{sys.executable} -m pip install azure-storage-blob
!{sys.executable} -m pip install pyarrow
!{sys.executable} -m pip install pandas
In [2]:
# Azure storage access info
azure_storage_account_name = "azureopendatastorage"
azure_storage_sas_token = r""
container_name = "citydatacontainer"
folder_name = "Safety/Release/city=Chicago"
In [3]:
from azure.storage.blob import BlockBlobServicefrom azure.storage.blob import BlobServiceClient, BlobClient, ContainerClient

if azure_storage_account_name is None or azure_storage_sas_token is None:
    raise Exception(
        "Provide your specific name and key for your Azure Storage account--see the Prerequisites section earlier.")

print('Looking for the first parquet under the folder ' +
      folder_name + ' in container "' + container_name + '"...')
container_url = f"https://{azure_storage_account_name}.blob.core.windows.net/"
blob_service_client = BlobServiceClient(
    container_url, azure_storage_sas_token if azure_storage_sas_token else None)

container_client = blob_service_client.get_container_client(container_name)
blobs = container_client.list_blobs(folder_name)
sorted_blobs = sorted(list(blobs), key=lambda e: e.name, reverse=True)
targetBlobName = ''
for blob in sorted_blobs:
    if blob.name.startswith(folder_name) and blob.name.endswith('.parquet'):
        targetBlobName = blob.name
        break

print('Target blob to download: ' + targetBlobName)
_, filename = os.path.split(targetBlobName)
blob_client = container_client.get_blob_client(targetBlobName)
with open(filename, 'wb') as local_file:
    blob_client.download_blob().download_to_stream(local_file)
In [4]:
# Read the parquet file into Pandas data frame
import pandas as pd

print('Reading the parquet file into Pandas data frame')
df = pd.read_parquet(filename)
In [5]:
# you can add your filter at below
print('Loaded as a Pandas data frame: ')
df
In [6]:
 

Azure Databricks

Package: Language: Python Python
In [1]:
# This is a package in preview.
# You need to pip install azureml-opendatasets in Databricks cluster. https://docs.microsoft.com/en-us/azure/data-explorer/connect-from-databricks#install-the-python-library-on-your-azure-databricks-cluster
from azureml.opendatasets import ChicagoSafety

from datetime import datetime
from dateutil import parser


end_date = parser.parse('2016-01-01')
start_date = parser.parse('2015-05-01')
safety = ChicagoSafety(start_date=start_date, end_date=end_date)
safety = safety.to_spark_dataframe()
ActivityStarted, to_spark_dataframe ActivityStarted, to_spark_dataframe_in_worker ActivityCompleted: Activity=to_spark_dataframe_in_worker, HowEnded=Success, Duration=3396.42 [ms] ActivityCompleted: Activity=to_spark_dataframe, HowEnded=Success, Duration=3398.23 [ms]
In [2]:
display(safety.limit(5))
dataTypedataSubtypedateTimecategorysubcategorystatusaddresslatitudelongitudesourceextendedProperties
Safety311_All2015-08-14T00:00:00.000+0000Street Lights - All/OutnullCompleted3742 W 59TH ST41.78603578433899-87.71664452773216nullcommunity_area:62,completion_date:2015-08-20T00:00:00.000,police_district:8,service_request_number:15-04081104,type_of_service_request:Street Lights - All/Out,zip_code:60629,y_coordinate:1865225.18787483,x_coordinate:1152434.60798184,ward:23
Safety311_All2015-06-22T00:00:00.000+0000Street Lights - All/OutnullCompleted3719 W 53RD ST41.79697833262681-87.71666270664977nullcommunity_area:62,completion_date:2015-06-23T00:00:00.000,police_district:8,service_request_number:15-02890103,type_of_service_request:Street Lights - All/Out,zip_code:60632,y_coordinate:1869212.53972903,x_coordinate:1152401.04890436,ward:23
Safety311_All2015-12-11T00:00:00.000+0000Street Lights - All/OutnullCompleted2010 N SAWYER AVE41.9177056604285-87.70893291956332nullcommunity_area:22,completion_date:2015-12-14T00:00:00.000,police_district:14,service_request_number:15-06669629,type_of_service_request:Street Lights - All/Out,zip_code:60647,y_coordinate:1913220.44877936,x_coordinate:1154188.85999445,ward:26
Safety311_All2015-09-14T00:00:00.000+0000Street Lights - All/OutnullCompleted4800 N CENTRAL PARK AVE41.96834840769826-87.7182549592663nullcommunity_area:14,completion_date:2015-09-15T00:00:00.000,police_district:17,service_request_number:15-04793248,type_of_service_request:Street Lights - All/Out,zip_code:60625,y_coordinate:1931656.45677884,x_coordinate:1151519.31229956,ward:35
Safety311_All2015-12-17T00:00:00.000+0000Street Lights - All/OutnullCompleted7100 S YATES BLVDnullnullnullnull
In [1]:
# Azure storage access info
blob_account_name = "azureopendatastorage"
blob_container_name = "citydatacontainer"
blob_relative_path = "Safety/Release/city=Chicago"
blob_sas_token = r""
In [2]:
# Allow SPARK to read from Blob remotely
wasbs_path = 'wasbs://%s@%s.blob.core.windows.net/%s' % (blob_container_name, blob_account_name, blob_relative_path)
spark.conf.set(
  'fs.azure.sas.%s.%s.blob.core.windows.net' % (blob_container_name, blob_account_name),
  blob_sas_token)
print('Remote blob path: ' + wasbs_path)
In [3]:
# SPARK read parquet, note that it won't load any data yet by now
df = spark.read.parquet(wasbs_path)
print('Register the DataFrame as a SQL temporary view: source')
df.createOrReplaceTempView('source')
In [4]:
# Display top 10 rows
print('Displaying top 10 rows: ')
display(spark.sql('SELECT * FROM source LIMIT 10'))

Azure Synapse

Package: Language: Python Python
In [12]:
# This is a package in preview.
from azureml.opendatasets import ChicagoSafety

from datetime import datetime
from dateutil import parser


end_date = parser.parse('2016-01-01')
start_date = parser.parse('2015-05-01')
safety = ChicagoSafety(start_date=start_date, end_date=end_date)
safety = safety.to_spark_dataframe()
In [13]:
# Display top 5 rows
display(safety.limit(5))
Out[13]:
In [14]:
# Display data statistic information
display(safety, summary = True)
Out[14]:
In [1]:
# Azure storage access info
blob_account_name = "azureopendatastorage"
blob_container_name = "citydatacontainer"
blob_relative_path = "Safety/Release/city=Chicago"
blob_sas_token = r""
In [2]:
# Allow SPARK to read from Blob remotely
wasbs_path = 'wasbs://%s@%s.blob.core.windows.net/%s' % (blob_container_name, blob_account_name, blob_relative_path)
spark.conf.set(
  'fs.azure.sas.%s.%s.blob.core.windows.net' % (blob_container_name, blob_account_name),
  blob_sas_token)
print('Remote blob path: ' + wasbs_path)
In [3]:
# SPARK read parquet, note that it won't load any data yet by now
df = spark.read.parquet(wasbs_path)
print('Register the DataFrame as a SQL temporary view: source')
df.createOrReplaceTempView('source')
In [4]:
# Display top 10 rows
print('Displaying top 10 rows: ')
display(spark.sql('SELECT * FROM source LIMIT 10'))

City Safety

From the Urban Innovation Initiative at Microsoft Research, databricks notebook for analytics with safety data (311 and 911 call data) from major U.S. cities. Analyses show frequency distributions and geographic clustering of safety issues within cities.