ナビゲーションをスキップする

Chicago Safety Data

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

公衆衛生規則に関連する過去の苦情、道路の穴の報告、街灯の問題など、シカゴ市の 311 サービス要求

311 に寄せられた公衆衛生規則に関連する対応中のすべての苦情と、2011 年 1 月 1 日以降に完了したすべての要求。 道路/公衆衛生局では、シカゴの公衆衛生規則に対する報告された違反を調査し、是正しています。 住民は、ゴミであふれたゴミ箱や路地のゴミなどの違反に対してサービスを要求できます。 311 では、公衆衛生規則に関連する重複する苦情を受けることがあります。 重複としてラベル付けされた要求は、以前の要求と同じ地域で発生し、311 のカスタマー サービス要求 (CSR) システムにほぼ同時に入力されたものです。 重複する苦情は、状態フィールドで “Open - Dup” または “Completed - Dup” としてラベル付けされます。

シカゴ運輸局 (CDOT) では、シカゴの 4,000 マイル以上の幹線道路と住宅街の道路にできた穴の補修を監督しています。 CDOT は 311 コール センターを通じて穴の報告を受けると、コンピューター化されたマッピングおよび追跡システムを使用して穴の場所を特定し、作業チームのスケジュールを効率的に設定します。 311 への 1 つのコールで複数の穴の修復を行うことができます。 到着した作業チームは、311 に報告された穴を修復するときに、そのブロック内の他のすべての穴を補修します。 通常、穴の修復は、311 に穴が最初に報告されてから 7 日以内に完了します。 気象条件 (特に極寒の気温と降雨) が、修復に要する時間に影響します。 天候に恵まれ、雨が降らない日には、複数の作業チームが数千個の穴を補修できます。 4 つの住所のバッファーに対して以前の要求が既に開かれている場合、要求の状態が “Duplicate (Open)” になります。 たとえば、6535 N Western に対する既存の CSR があり、(元の CSR の 4 つの住所に含まれる) 6531 N Western に対する新しい要求を受け取った場合、その新しい要求の状態が “Duplicate (Open)” になります。 道路が修復されると、CSR の状態は、元の要求では “Completed” になり、重複する要求では “Duplicate (Closed)” になります。 報告された住所を調査しても穴が見つからないか、既に補修されている場合にも、サービス要求の状態が “Completed” になります。 “陥没” や “ユーティリティの切断の失敗” など、道路で別の問題が見つかった場合は、適切な部門または請負業者に送られます。

311 に寄せられた “Street Lights - All Out” (3 つ以上の街灯の故障) に関する対応中のすべての報告と、2011 年 1 月 1 日以降に完了したすべての要求。シカゴ運輸局 (CDOT) では、シカゴの幹線道路と住宅街を照らす約 250,000 個の街灯を管理しています。 CDOT では、街灯の故障に関する住民の報告に対し、修理と電球交換を行っています。 CDOT が “All Out” の報告を受けるたびに、修理に割り当てられた電気技師がその回路のすべての街灯 (回路ごとに 8 から 16 個の街灯があります) を調べて、すべて正常に機能していることを確認します。 元の要求から 4 暦日以内に、同じ回路の街灯の故障に関する別の要求が行われた場合、その最新の要求の状態が自動的に “Duplicate (Open)” になります。 CDOT の電気技師は回路内のすべての街灯を調べて、すべて機能していることを確認するため、“Duplicate (Open)” のすべての住所が自動的に点検され、修理されることになります。 街灯が修理されると、CSR の状態は、元の要求では “Completed” になり、重複する要求では “Duplicate (Closed)” になります。 報告された街灯を調査したときに、街灯が適切に修理され、機能していることがわかった場合、サービス要求が存在しない住所に対するものである場合、または請負業者によって街灯のメンテナンスが行われている場合にも、サービス要求の状態が “Completed” になります。 データは毎日更新されます。

ボリュームとデータ保持期間

このデータセットは Parquet 形式で保存されています。 毎日更新されており、2018 年時点で合計約 100 万行 (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 source extendedProperties latitude longitude
Safety 311_All 6/17/2021 2:13:20 AM Aircraft Noise Complaint null Completed 10510 W ZEMKE RD null
Safety 311_All 6/17/2021 2:10:52 AM 311 INFORMATION ONLY CALL null Completed 2111 W Lexington ST null
Safety 311_All 6/17/2021 2:08:20 AM 311 INFORMATION ONLY CALL null Completed 2111 W Lexington ST null
Safety 311_All 6/17/2021 1:59:05 AM 311 INFORMATION ONLY CALL null Completed 2111 W Lexington ST null
Safety 311_All 6/17/2021 1:56:42 AM 311 INFORMATION ONLY CALL null Completed 2111 W Lexington ST null
Safety 311_All 6/17/2021 1:52:03 AM 311 INFORMATION ONLY CALL null Completed 2111 W Lexington ST null
Safety 311_All 6/17/2021 1:49:56 AM 311 INFORMATION ONLY CALL null Completed 2111 W Lexington ST null
Safety 311_All 6/17/2021 1:45:45 AM 311 INFORMATION ONLY CALL null Completed 2111 W Lexington ST null
Safety 311_All 6/17/2021 1:39:55 AM 311 INFORMATION ONLY CALL null Completed 2111 W Lexington ST null
Safety 311_All 6/17/2021 1:38:52 AM Street Light Out Complaint null Open 4110 N KEYSTONE AVE null 41.955877712 -87.729883261
Name Data type Unique Values (sample) Description
address string 807,613 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

“Safety”。

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

サービス要求の作成日。

latitude double 1,103,993 41.871831278
41.994896549

緯度。

longitude double 1,199,976 -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.