跳过导航

Chicago Safety Data

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

芝加哥市的 311 服务请求,包括历史的卫生法规投诉、报告的坑洞和路灯问题

自 2011 年 1 月 1 日以来,所有向 311 提出的待解决的卫生法规投诉和所有已完成的请求。 芝加哥街道卫生局调查了报告的违反芝加哥卫生法规的行为,并采取了补救措施。 对于违规行为(例如垃圾箱溢出和小巷中的垃圾),居民可以提出服务请求。 311 有时会收到重复的卫生法规投诉。 被标记为重复项的请求与在先请求位于同一地理区域,并且大致在同一时间输入到 311 的客户服务请求 (CSR) 系统中。 重复投诉在状态字段中被标记为“待解决 - 重复”或“已完成 - 重复”。

芝加哥交通部 (CDOT) 监管芝加哥 4,000 多英里主干道和住宅街道上的坑洞修补。 CDOT 通过 311 呼叫中心接收坑洞报告,并使用计算机化的地图和跟踪系统来确定坑洞位置并高效调度工作人员。 一次 311 呼叫可能会导致多次坑洞修补。 工作人员到达并修补一个 311 坑洞时,会填满该街区中的所有其他坑洞。 坑洞修补通常在 311 第一次收到坑洞报告 7 天内完成。 天气状况(尤其是严寒和降雨)会影响修补时间,。 在天气情况良好且没有降雨的时候,工作人员可以修补数千个坑洞。 如果对于 4 个地址的缓冲范围,已提出一个在先请求,则系统将该请求的状态设为“重复(待解决)”。 例如,如果存在一个用于 6535 N Western 的 CSR,并且收到了针对 6531 N Western(位于原始 CSR 的 4 个地址之内)的新请求,则系统将新请求的状态设为“重复(待解决)”。 街道修补完成后,原始请求在 CSR 中的状态显示为“已完成”,任何重复请求的状态显示为“重复(已解决)”。 已检查报告的地址但未发现坑洞或坑洞已修补时,服务请求的状态也是“已完成”。 如果发现了街道的其他问题(例如“塌陷”或“公共设施断开失败”),则转而提交到相应的部门或承包商。

自 2011 年 1 月 1 日以来,所有向 311 提出的“路灯 - 全部故障”(3 盏或 3 盏以上的灯发生故障)的待解决报告以及所有已完成的请求。芝加哥交通局 (CDOT) 监管约 250,000 盏路灯,这些路灯覆盖芝加哥的主干道和住宅街道。 CDOT 根据居民对路灯故障的报告进行维修和灯泡更换。 每当 CDOT 收到“全部故障”的报告时,所指派的维修电工将查看该电路中的所有路灯(每个电路有 8 - 16 盏灯),确保均正常工作。 如果在原始请求的 4 个日历日内提出对同一电路中路灯故障的第二个请求,则最新请求自动设置为“重复(待解决)”状态。 由于 CDOT 的电工将查看电路中的所有灯,验证其是否均正常工作,因此将自动查看任何“重复(待解决)”地址并进行维修。 路灯维修完成后,原始请求在 CSR 中的状态显示为“已完成”,任何重复请求的状态显示为“重复(已解决)”。 发生以下情况之一时,服务请求也会设置为“已完成”状态:已检查报告的灯但发现维修情况良好且功能正常;服务请求针对于不存在的地址;灯由承包商维护。 数据每天更新。

数量和保留期

此数据集以 Parquet 格式存储。 每天更新,截至 2018 年总共包括约 1 百万行 (80 MB)。

此数据集包括从 2011 年到 2018 年累积的历史记录。 可使用我们的 SDK 中的参数设置来提取特定时间范围内的数据。

存储位置

此数据集存储在美国东部 Azure 区域。 建议将计算资源分配到美国东部地区,以实现相关性。

其他信息

此数据集源自芝加哥市政府。 可以通过以下链接找到更多详细信息:卫生坑洞路灯

有关此数据集的使用条款,请参阅此处。 如果对数据源有任何疑问,请发送电子邮件至

声明

Microsoft 以“原样”为基础提供 AZURE 开放数据集。 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 latitude longitude source extendedProperties
Safety 311_All 5/27/2020 10:05:05 AM Sewer Cleaning Inspection Request null Open 3527 W 111TH ST 41.69136289 -87.709129299 null
Safety 311_All 5/27/2020 10:04:58 AM Sign Repair Request - All Other Signs null Open 954 W GRAND AVE 41.891171388 -87.651949881 null
Safety 311_All 5/27/2020 10:04:50 AM Sign Repair Request - All Other Signs null Open 1733 W MONTROSE AVE 41.96153146 -87.672224649 null
Safety 311_All 5/27/2020 10:04:45 AM Weed Removal Request null Open 6700 S CHAMPLAIN AVE 41.772994529 -87.60944567 null
Safety 311_All 5/27/2020 10:04:42 AM Tree Trim Request null Open 1035 W ALTGELD ST 41.926942016 -87.655064658 null
Safety 311_All 5/27/2020 10:04:41 AM 311 INFORMATION ONLY CALL null Completed 2111 W Lexington ST null
Safety 311_All 5/27/2020 10:04:38 AM Street Light Out Complaint null Open 6104 S AUSTIN 41.781313046 -87.77190468 null
Safety 311_All 5/27/2020 10:04:35 AM Sign Repair Request - All Other Signs null Open 405 E 91ST ST 41.729002146 -87.614023008 null
Safety 311_All 5/27/2020 10:04:35 AM Tree Debris Clean-Up Request null Open 2608 W 102ND ST 41.708263756 -87.687062483 null
Safety 311_All 5/27/2020 10:04:33 AM Rodent Baiting/Rat Complaint null Open 4815 W MEDILL AVE 41.923298537 -87.747156833 null
Name Data type Unique Values (sample) Description
address string 755,126 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 2,833,469 2014-01-13 00:00:00
2014-03-10 00:00:00

服务请求的创建日期。

latitude double 1,058,041 41.871831278
41.994896549

纬度。

longitude double 1,171,521 -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
!{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 BlockBlobService

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 + '"...')
blob_service = BlockBlobService(account_name = azure_storage_account_name, sas_token = azure_storage_sas_token,)
blobs = blob_service.list_blobs(container_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)
parquet_file=blob_service.get_blob_to_path(container_name, targetBlobName, filename)
In [4]:
# Read the local parquet file into Pandas data frame
import pyarrow.parquet as pq
import pandas as pd

appended_df = []
print('Reading the local parquet file into Pandas data frame')
df = pq.read_table(filename).to_pandas()
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
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.