Navigatie overslaan

Chicago Safety Data

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

311-serviceaanvragen van de stad Chicago, waaronder historische gegevens over klachten met betrekking tot de voorschriften voor de afvalverwerking, gemelde kuilen in de weg en problemen met de straatverlichting

Alle openstaande klachten met betrekking tot de voorschriften voor de afvalverwerking die bij 311 zijn gemeld en alle aanvragen die zijn voltooid sinds 1 januari 2011. De Department of Streets and Sanitation (afdeling voor straten en afvalverwerking) onderzoekt en verhelpt gemelde overtredingen van de voorschriften voor afvalverwerking van Chicago. Bewoners kunnen een serviceaanvraag indienen voor overtredingen, zoals overvolle afvalcontainers en vuil in de steeg. 311 ontvangt soms dubbele klachten met betrekking tot de voorschriften voor de afvalverwerking. Aanvragen die zijn aangeduid als een dubbele aanvraag, bevinden zich in hetzelfde geografische gebied als een voorgaande aanvraag en zijn rond dezelfde tijd in het CSR-systeem (Customer Service Request) van 311 ingevoerd. Dubbele klachten worden in het statusveld aangeduid als ‘Open - Dup’ (Openstaand - dubbel) of ‘Completed - Dup’ (Voltooid - dubbel).

De Chicago Department of Transportation (CDOT) houdt toezicht op het opvullen van kuilen in de meer dan 4000 mijl aan wegen voor doorgaand verkeer en woonstraten in Chicago. De CDOT ontvangt meldingen van kuilen via het 311-callcenter en maakt gebruik van een computergestuurd kaart- en traceersysteem om de locaties van de kuilen te bepalen en op efficiënte wijze ploegen wegwerkers in te plannen. Eén telefonische melding bij 311 kan meerdere kuilreparaties genereren. Wanneer een ploeg wegwerkers aankomt bij een 311-kuil, vult deze gelijk de andere kuilen in het blok op. Kuilreparaties worden over het algemeen uitgevoerd binnen zeven dagen na de eerste melding van een kuil bij 311. Weersomstandigheden, met name vriestemperaturen en neerslag, zijn van invloed op de duur van de reparatie. Op dagen dat het weer meewerkt en het niet regent, kunnen ploegen wegwerkers enige duizenden kuilen vullen. Als er al een voorgaande aanvraag openstaat voor een buffer van vier adressen, krijgt de aanvraag de status Duplicate (Open) (Dubbel - openstaand). Als er bijvoorbeeld een bestaande CSR (klantenserviceaanvraag) is voor 6535 N Western en er een nieuwe aanvraag wordt ontvangen voor 6531 N Western (dat binnen vier adressen van de oorspronkelijke CSR ligt), krijgt de nieuwe aanvraag de status Duplicate (Open) (Dubbel - openstaand). Wanneer de straat is gerepareerd, wordt voor de oorspronkelijke aanvraag in CSR de status Completed (Voltooid) weergegeven en voor eventuele dubbele aanvragen de status ‘Duplicate (Closed)’ (Dubbel - gesloten). Een serviceaanvraag krijgt ook de status Completed wanneer het gemelde adres wordt onderzocht en er geen kuilen worden gevonden of als deze al zijn opgevuld. Als er een ander probleem met de straat wordt aangetroffen, zoals een ingezakt wegdek of een foutieve afsluiting van de voorzieningen, wordt dit doorgeleid naar de betreffende afdeling of aannemer.

Alle openstaande meldingen met Street Lights - All Out (Straatverlichting - alles uit) (wanneer drie of meer lampen zijn uitgevallen) die bij 311 zijn binnengekomen en alle aanvragen die zijn voltooid sinds 1 januari 2011. De Chicago Department of Transportation (CDOT) houdt toezicht op ongeveer 250.000 straatlampen die wegen voor doorgaand verkeer en woonstraten in Chicago verlichten. De CDOT voert reparaties uit en vervangt lampen bij meldingen van bewoners of als er straatverlichting uitvalt. Wanneer de CDOT een melding ontvangt met de status All Out (Alles uit) inspecteert de elektricien die de reparatie moet uitvoeren alle lampen in dat circuit (elk circuit bevat 8 tot 16 lampen) om er zeker van te zijn dat alle lampen goed werken. Als er binnen vier kalenderdagen een tweede aanvraag binnenkomt voor uitgevallen lampen in hetzelfde circuit, krijgt de laatste aanvraag automatisch de status Duplicate (Open) (Dubbel - openstaand). Omdat de elektricien van de CDOT alle lampen in een circuit inspecteert om na te gaan of ze allemaal werken, worden adressen met de status Duplicate (Open) (Dubbel - openstaand) automatisch bekeken en gerepareerd. Wanneer de straatlampen zijn gerepareerd, wordt voor de oorspronkelijke aanvraag in CSR de status Completed (Voltooid) en voor eventuele dubbele aanvragen de status Duplicate (Closed) (Voltooid - gesloten) weergegeven. Een serviceaanvraag krijgt ook de status Completed (Voltooid) wanneer de gemelde lampen in orde zijn en goed blijken te werken, wanneer het adres van de serviceaanvraag niet blijkt te bestaan of wanneer de lampen worden onderhouden door een aannemer. De gegevens worden dagelijks bijgewerkt.

Volume en retentie

Deze gegevensset wordt opgeslagen in de Parquet-indeling. De gegevensset wordt dagelijks bijgewerkt en bevat sinds 2018 in totaal ongeveer 1 miljoen rijen (80 MB).

Deze gegevensset bevat historische records die van 2011 tot en met 2018 zijn verzameld. U kunt in onze SDK gebruikmaken van parameterinstellingen om gegevens op te halen binnen een specifiek tijdsbereik.

Opslaglocatie

Deze gegevensset wordt opgeslagen in de Azure-regio US - oost. Het wordt aanbevolen om rekenresources in US - oost toe te wijzen voor affiniteit.

Aanvullende informatie

Deze gegevensset is afkomstig van het stadsbestuur van Chicago. U vindt meer informatie via de volgende koppelingen: Afvalverwerking, Kuilen, Straatverlichting.

Raadpleeg de informatie hier voor de voorwaarden voor het gebruik van deze gegevensset. Stuur een e-mail naar als u vragen hebt over de gegevensbron.

Mededelingen

AZURE OPEN GEGEVENSSETS WORDEN DOOR MICROSOFT ONGEWIJZIGD GELEVERD. MICROSOFT GEEFT GEEN GARANTIES, EXPLICIET OF IMPLICIET, ZEKERHEDEN OF VOORWAARDEN MET BETREKKING TOT HET GEBRUIK VAN DE GEGEVENSSETS. VOOR ZOVER IS TOEGESTAAN ONDER HET TOEPASSELIJKE RECHT, WIJST MICROSOFT ALLE AANSPRAKELIJKHEID AF VOOR SCHADE OF VERLIEZEN, WAARONDER GEVOLGSCHADE OF DIRECTE, SPECIALE, INDIRECTE, INCIDENTELE OF PUNITIEVE SCHADE DIE VOORTVLOEIT UIT HET GEBRUIK VAN DE GEGEVENSSETS.

Deze gegevensset wordt geleverd onder de oorspronkelijke voorwaarden dat Microsoft de brongegevens heeft ontvangen. De gegevensset kan gegevens bevatten die afkomstig zijn van 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 6/10/2021 3:13:46 AM Yard Waste Pick-Up Request null Open 9033 S MAY ST 41.729524431 -87.651652886 null
Safety 311_All 6/10/2021 3:12:22 AM Clean Vacant Lot Request null Open 8404 S MUSKEGON AVE 41.742566813 -87.555420789 null
Safety 311_All 6/10/2021 3:12:12 AM 311 INFORMATION ONLY CALL null Completed 2111 W Lexington ST null
Safety 311_All 6/10/2021 3:10:28 AM 311 INFORMATION ONLY CALL null Completed 2111 W Lexington ST null
Safety 311_All 6/10/2021 3:10:04 AM 311 INFORMATION ONLY CALL null Completed 2111 W Lexington ST null
Safety 311_All 6/10/2021 3:09:11 AM 311 INFORMATION ONLY CALL null Completed 2111 W Lexington ST 41.764413985 -87.591188006 null
Safety 311_All 6/10/2021 3:08:59 AM 311 INFORMATION ONLY CALL null Completed 2111 W Lexington ST 41.764413985 -87.591188006 null
Safety 311_All 6/10/2021 3:08:49 AM 311 INFORMATION ONLY CALL null Completed 2111 W Lexington ST 41.764413985 -87.591188006 null
Safety 311_All 6/10/2021 3:08:40 AM 311 INFORMATION ONLY CALL null Completed 2111 W Lexington ST 41.764413985 -87.591188006 null
Safety 311_All 6/10/2021 3:03:43 AM Clean Vacant Lot Request null Open 9033 S MAY ST 41.729524431 -87.651652886 null
Name Data type Unique Values (sample) Description
address string 807,613 2111 W Lexington ST
10510 W ZEMKE RD

Adres.

category string 99 311 INFORMATION ONLY CALL
Aircraft Noise Complaint

Het type serviceaanvraag.

dataSubtype string 1 311_All

‘311_Sanitation’, ‘311_Potholes’ of ‘311_Street_Lights’.

dataType string 1 Safety

‘Veiligheid’.

dateTime timestamp 4,023,056 2014-01-13 00:00:00
2014-03-10 00:00:00

Aanmaakdatum van de serviceaanvraag.

latitude double 1,103,993 41.871831278
41.994896549

Breedtegraad.

longitude double 1,199,976 -87.679846219
-87.887751654

Lengtegraad.

status string 5 Completed
Completed - Dup

Status van de serviceaanvraag waarmee wordt aangegeven of deze wel of niet is voltooid.

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.