Hoppa över navigering

Chicago Safety Data

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

311-tjänstbegäranden från Chicago, inklusive tidigare klagomål på renhållningen, rapporterade tjälskott och problem med gatubelysning

Alla öppna renhållningsklagomål till 311 och alla slutförda begäranden sedan 1 januari 2011. Gatukontoret undersöker och åtgärdar rapporterade brott mot Chicagos renhållningsföreskrifter. Invånarna kan begära åtgärder vid exempelvis överfulla sopcontainrar och skräp på gatorna. 311 tar ibland emot flera klagomål om renhållningen. Begäranden som har märkts som dubbletter finns i samma geografiska område som en tidigare begäran och har registrerats i CSR-systemet (Customer Service Request) vid ungefär samma tidpunkt. Duplicerade klagomål märks som detta i statusfältet, med antingen ”Öppen – Dup” eller ”Slutförd – Dup”.

Chicago Department of Transportation (CDOT) övervakar lagningen av tjälskott på cirka 650 mil med genomfartsleder och bostadsgator i Chicago. CDOT får rapporter om tjälskott via 311-samtal och använder ett datoriserat mappnings- och spårningssystem till att identifiera platserna för tjälskott och schemalägga personalen på ett effektivt sätt. Ett samtal till 311 kan generera flera tjälskottslagningar. När teamet anländer för att laga ett tjälskott, fyller man samtidigt igen alla andra tjälskott inom kvarteret. Tjälskottslagningar utförs vanligen inom sju dagar från den första rapporten till 311. Väderleksförhållanden, särskilt låga temperaturer och nederbörd, påverkar hur lång tid en lagning tar. Fina dagar när det inte är någon nederbörd kan man fylla igen flera tusen tjälskott. Om en tidigare begäran redan är öppen inom ett område på 4 adresser får begärandet statusen ”Dubblett (öppen)”. Om det t.ex. finns en befintlig CSR för 6535 N Western och en ny begäran tas emot för 6531 N Western (som ligger inom fyra adresser till den ursprungliga CSR:en) får det nya begärandet statusen ”Dubblett (öppen)”. När gatan är lagad blir CSR-statusen ”Slutförd” för det ursprungliga begärandet och ”Dubblett (stängd)” för eventuella duplicerade begäranden. En tjänstbegäran får också statusen ”Slutförd” när den rapporterade adressen har inspekterats utan att några tjälskott hittades, eller om de redan har fyllts igen. Om man upptäcker något annat problem på gatan, t.ex. ett jordras eller en vattenläcka, dirigeras ärendet till lämplig avdelning eller underleverantör.

Alla öppna rapporter om ”Gatubelysning – Alla trasiga” (ett strömavbrott med 3 eller flera belysningar) som gjorts till 311 och alla begäranden som har slutförts sedan 1 januari 2011. Chicago Department of Transportation (CDOT) övervakar cirka 250 000 gatubelysningar som lyser upp genomfartsleder och bostadsgator i Chicago. CDOT utför reparationer och byter ut glödlampor när invånarna rapporterar att gatubelysningen inte fungerar. När CDOT får en rapport om ”Alla trasiga” tittar den utsedda elektrikern som ska göra reparationen på all belysning i kretsen (varje krets består av 8–16 lampor) för att se att samtliga fungerar som de ska. Om man får in en ny rapport om släckt belysning i samma krets inom fyra kalenderdagar från den ursprungliga begäran, får det senaste begärandet automatiskt statusen ”Dubblett (öppen)”. Eftersom CDOT:s elektriker granskar alla lampor i kretsen för att se om de fungerar, kommer alla adresser med ”Dubblett (öppen)” automatiskt att observeras och repareras. När gatubelysningen är lagad blir CSR-statusen ”Slutförd” för det ursprungliga begärandet och ”Dubblett (stängd)” för eventuella duplicerade begäranden. En tjänstbegäran får även statusen ”Slutförd” när rapporterad belysning inspekteras men man upptäcker att den fungerar, när tjänstbegäran avser en adress som inte finns, eller när belysningen hanteras av en underleverantör. Datan uppdateras dagligen.

Volym och kvarhållning

Datamängden lagras i Parquet-format. Den uppdateras dagligen och innehåller cirka 1 miljon rader (80 MB) sammanlagt 2018.

Datamängden innehåller historiska poster som ackumulerats från 2011 till 2018. Du kan använda parameterinställningar i vår SDK till att hämta data inom ett specifikt tidsintervall.

Lagringsplats

Datamängden lagras i Azure-regionen Östra USA. Vi rekommenderar att beräkningsresurser tilldelas i Östra USA av tillhörighetsskäl.

Ytterligare Information

Den här datamängden hämtas från Chicagos myndigheter. Mer information finns på följande länkar: Renhållning, Tjälskott, Gatubelysning.

Du kan läsa om användningsvillkoren för denna datamängd här. Du kan skicka ett e-postmeddelande till om du har frågor om datakällan.

Meddelanden

MICROSOFT TILLHANDAHÅLLER AZURE OPEN DATASETS I BEFINTLIGT SKICK. MICROSOFT UTFÄRDAR INTE NÅGRA GARANTIER ELLER VILLKOR, UTTRYCKLIGA ELLER UNDERFÖRSTÅDDA, AVSEENDE ANVÄNDNINGEN AV DATAMÄNGDERNA. I DEN UTSTRÄCKNING DET ÄR TILLÅTET ENLIGT NATIONELL LAGSTIFTNING, FRISKRIVER MICROSOFT SIG FRÅN ALLT ANSVAR BETRÄFFANDE SKADOR OCH FÖRLUSTER, INKLUSIVE DIREKTA SKADOR, FÖLJDSKADOR, SÄRSKILDA SKADOR, INDIREKTA SKADOR, ELLER OFÖRUTSEDDA SKADOR FRÅN ANVÄNDNINGEN AV DATAMÄNGDERNA.

Datamängden tillhandahålls enligt de ursprungliga villkor som gällde när Microsoft tog emot källdatan. Datamängden kan innehålla data från 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 10/22/2020 3:13:19 AM 311 INFORMATION ONLY CALL null Completed 2111 W Lexington ST null
Safety 311_All 10/22/2020 3:12:10 AM 311 INFORMATION ONLY CALL null Completed 2111 W Lexington ST null
Safety 311_All 10/22/2020 3:11:25 AM 311 INFORMATION ONLY CALL null Completed 2111 W Lexington ST null
Safety 311_All 10/22/2020 3:10:21 AM Water On Street Complaint null Open 6357 S CAMPBELL AVE null 41.777538953 -87.685749291
Safety 311_All 10/22/2020 3:09:27 AM Street Light Out Complaint null Open 2400 N LONG AVE null 41.924141918 -87.761113142
Safety 311_All 10/22/2020 3:07:44 AM Building Violation null Open 5517 S HALSTED ST null 41.793356789 -87.644851317
Safety 311_All 10/22/2020 3:06:15 AM 311 INFORMATION ONLY CALL null Completed 2111 W Lexington ST null
Safety 311_All 10/22/2020 3:05:59 AM Wire Basket Request null Open 100 E 79TH ST null 41.751297498 -87.62113304
Safety 311_All 10/22/2020 2:59:47 AM 311 INFORMATION ONLY CALL null Completed 2111 W Lexington ST null
Safety 311_All 10/22/2020 2:59:39 AM Alley Light Out Complaint null Open 7830 S INDIANA AVE null 41.751950212 -87.620174407
Name Data type Unique Values (sample) Description
address string 813,483 2111 W Lexington ST
10510 W ZEMKE RD

Gatuadress.

category string 99 311 INFORMATION ONLY CALL
Aircraft Noise Complaint

Typ av tjänstbegäran.

dataSubtype string 1 311_All

”311_Sanitation”, ”311_Potholes” eller ”311_Street_Lights”.

dataType string 1 Safety

”Säkerhet”.

dateTime timestamp 3,610,730 2014-01-13 00:00:00
2014-03-10 00:00:00

Skapandedatum för tjänstbegäran.

latitude double 1,140,773 41.871831278
41.994896549

Latitud.

longitude double 1,280,209 -87.679846219
-87.887751654

Longitud.

status string 5 Completed
Completed - Dup

Status för tjänstbegärandet, som visar om det slutförts eller ej.

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.