Omitir navegación

San Francisco Safety Data

San Francisco 911 Fire 311 Public Safety

Llamadas de servicio a los bomberos y casos del número 311 en San Francisco.

Las llamadas de servicio a los bomberos incluyen todas las respuestas de una unidad de bomberos a las llamadas. Cada registro incluye el número de llamada, el número de incidente, la dirección, el identificador de la unidad, el tipo de llamada y la disposición. Todos los intervalos de tiempo relacionados están incluidos también. Puesto que este conjunto de datos se basa en respuestas y la mayoría de las llamadas implicaron a varias unidades, hay varios registros por cada número de llamada. Las direcciones están asociadas con un número de manzana, un cruce o un teléfono público, no una dirección específica.

En los casos del número 311 se incluyen aquellos que, por lo general, están asociados con un lugar o una cosa (por ejemplo, parques, calles o edificios) y que se crearon a partir del 1 de julio de 2008. No se incluyen los casos registrados por usuarios en relación con sus propias necesidades (por ejemplo, cuestiones fiscales de bienes inmuebles o negocios, o solicitudes de permiso de aparcamiento). Consulte el vínculo del programa para obtener más información.

Volumen y retención

Este conjunto de datos se almacena en formato Parquet. Se actualiza a diario y tiene alrededor de 6 millones de filas (400 MB) desde 2019.

Este conjunto de datos contiene registros históricos acumulados desde 2015 hasta la actualidad. Puede usar la configuración de parámetros de nuestro SDK para recuperar los datos de un intervalo de tiempo específico.

Ubicación de almacenamiento

Este conjunto de datos se almacena en la región Este de EE. UU. de Azure. Se recomienda asignar recursos de proceso de la misma región por afinidad.

Información adicional

Este conjunto de datos se alimenta con los datos de la administración pública de la ciudad de San Francisco. Puede consultar información más detallada en los vínculos siguientes: Llamadas a los bomberos, casos del número 311.

Consulte los términos de uso de este conjunto de datos aquí.

Notificaciones

MICROSOFT PROPORCIONA AZURE OPEN DATASETS “TAL CUAL”. MICROSOFT NO OFRECE NINGUNA GARANTÍA, EXPRESA O IMPLÍCITA, NI CONDICIÓN CON RESPECTO AL USO QUE USTED HAGA DE LOS CONJUNTOS DE DATOS. EN LA MEDIDA EN LA QUE LO PERMITA SU LEGISLACIÓN LOCAL, MICROSOFT DECLINA TODA RESPONSABILIDAD POR POSIBLES DAÑOS O PÉRDIDAS, INCLUIDOS LOS DAÑOS DIRECTOS, CONSECUENCIALES, ESPECIALES, INDIRECTOS, INCIDENTALES O PUNITIVOS, QUE RESULTEN DE SU USO DE LOS CONJUNTOS DE DATOS.

Este conjunto de datos se proporciona bajo los términos originales con los que Microsoft recibió los datos de origen. El conjunto de datos puede incluir datos procedentes de 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 911_Fire 6/10/2021 2:56:41 AM Potentially Life-Threatening Medical Incident null 700 Block of KIRKWOOD AVE 37.7291935618435 -122.374002352858 null
Safety 911_Fire 6/10/2021 2:56:41 AM Potentially Life-Threatening Medical Incident null 700 Block of KIRKWOOD AVE 37.7291935618435 -122.374002352858 null
Safety 911_Fire 6/10/2021 2:44:00 AM Non Life-threatening Medical Incident null 22ND ST/SAN BRUNO AV 37.7569521955649 -122.404732268578 null
Safety 911_Fire 6/10/2021 2:40:38 AM Non Life-threatening Medical Incident null 1100 Block of PACHECO ST 37.7506214678849 -122.472436852346 null
Safety 911_Fire 6/10/2021 2:15:55 AM Non Life-threatening Medical Incident null 800 Block of BUENA VISTA AVE 37.7693036365977 -122.442610806274 null
Safety 911_Fire 6/10/2021 2:15:24 AM Potentially Life-Threatening Medical Incident null 1100 Block of MISSION ST 37.7777903094248 -122.412834332128 null
Safety 911_Fire 6/10/2021 2:12:50 AM Non Life-threatening Medical Incident null 22ND ST/SAN BRUNO AV 37.7569521955649 -122.404732268578 null
Safety 911_Fire 6/10/2021 2:09:44 AM Potentially Life-Threatening Medical Incident null 100 Block of THRIFT ST 37.7174111105124 -122.457582606079 null
Safety 911_Fire 6/10/2021 2:09:44 AM Potentially Life-Threatening Medical Incident null 100 Block of THRIFT ST 37.7174111105124 -122.457582606079 null
Safety 911_Fire 6/10/2021 2:04:20 AM Non Life-threatening Medical Incident null 900 Block of SOUTH VAN NESS AVE 37.7579612754201 -122.416865021431 null
Name Data type Unique Values (sample) Description
address string 283,413 Not associated with a specific address
0 Block of 6TH ST

Dirección del incidente. Nota: La dirección y la ubicación se han generalizado a la manzana de la calle, un cruce o el lugar del teléfono público más próximo con el fin de proteger la privacidad de la persona que llamó.

category string 108 Street and Sidewalk Cleaning
Potentially Life-Threatening

Nombre legible del tipo de solicitud de servicio en el número 311 o del grupo de tipos de llamada para los avisos de incendio en el número 911.

dataSubtype string 2 911_Fire
311_All

“911_Fire” o “311_All”.

dataType string 1 Safety

“Safety”

dateTime timestamp 6,550,564 2020-10-19 12:28:08
2020-07-28 06:40:26

Fecha y hora de la solicitud de servicio o del aviso de incendio.

latitude double 1,647,832 37.777624238929
37.786117211838

Latitud de la ubicación, usando la proyección WGS84.

longitude double 1,585,922 -122.39998111124
-122.419854245692

Longitud de la ubicación, usando la proyección WGS84.

source string 9 Phone
Mobile/Open311

Mecanismo o vía por la que se recibió la solicitud de servicio. Normalmente, “Teléfono”, “Texto/SMS”, “Sitio web”, “Aplicación móvil”, “Twitter”, etc., pero los términos pueden variar de unos sistemas a otros.

status string 3 Closed
Open

Indicador de una sola palabra del estado actual de la solicitud de servicio. (Observación: GeoReport V2 solo admite “open” (abierta) y “closed” (cerrada))

subcategory string 1,271 Medical Incident
Bulky Items

Nombre legible del subtipo de solicitud de servicio para los casos del número 311 o del tipo de llamada para los avisos de incendio en el número 911.

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 SanFranciscoSafety

from datetime import datetime
from dateutil import parser


end_date = parser.parse('2016-01-01')
start_date = parser.parse('2015-05-01')
safety = SanFranciscoSafety(start_date=start_date, end_date=end_date)
safety = safety.to_pandas_dataframe()
ActivityStarted, to_pandas_dataframe Looking for parquet files... Reading them into Pandas dataframe... Reading Safety/Release/city=SanFrancisco/part-00125-tid-8598556649077331715-e7875271-3301-48fe-88c1-a6ce35841072-136781.c000.snappy.parquet under container citydatacontainer Done. ActivityCompleted: Activity=to_pandas_dataframe, HowEnded=Success, Duration=58673.14 [ms]
In [2]:
safety.info()
<class 'pandas.core.frame.DataFrame'> Int64Index: 361411 entries, 10 to 5821034 Data columns (total 11 columns): dataType 361411 non-null object dataSubtype 361411 non-null object dateTime 361411 non-null datetime64[ns] category 361409 non-null object subcategory 361411 non-null object status 231935 non-null object address 361411 non-null object latitude 361411 non-null float64 longitude 361411 non-null float64 source 231935 non-null object extendedProperties 117871 non-null object dtypes: datetime64[ns](1), float64(2), object(8) memory usage: 33.1+ 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=SanFrancisco"
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 SanFranciscoSafety

from datetime import datetime
from dateutil import parser


end_date = parser.parse('2016-01-01')
start_date = parser.parse('2015-05-01')
safety = SanFranciscoSafety(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=3754.51 [ms] ActivityCompleted: Activity=to_spark_dataframe, HowEnded=Success, Duration=3757.76 [ms]
In [2]:
display(safety.limit(5))
dataTypedataSubtypedateTimecategorysubcategorystatusaddresslatitudelongitudesourceextendedProperties
Safety911_Fire2015-11-07T19:49:04.000+0000Potentially Life-ThreateningMedical IncidentnullMISSION ST/23RD ST37.753836588542-122.418593946321nullnull
Safety911_Fire2015-08-06T05:23:02.000+0000AlarmAlarmsnull200 Block of 10TH ST37.773466489733-122.413546904215nullnull
Safety911_Fire2015-07-28T13:34:52.000+0000Potentially Life-ThreateningMedical IncidentnullHOWARD ST/MAIN ST37.790612669554-122.393407939021nullnull
Safety911_Fire2015-06-24T10:39:57.000+0000Non Life-threateningMedical Incidentnull200 Block of BRIDGEVIEW DR37.734209339882-122.397590096788nullnull
Safety911_Fire2015-06-22T15:58:28.000+0000AlarmAlarmsnull100 Block of POST ST37.788796325286-122.403991276137nullnull
In [1]:
# Azure storage access info
blob_account_name = "azureopendatastorage"
blob_container_name = "citydatacontainer"
blob_relative_path = "Safety/Release/city=SanFrancisco"
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 [18]:
# This is a package in preview.
from azureml.opendatasets import SanFranciscoSafety

from datetime import datetime
from dateutil import parser


end_date = parser.parse('2016-01-01')
start_date = parser.parse('2015-05-01')
safety = SanFranciscoSafety(start_date=start_date, end_date=end_date)
safety = safety.to_spark_dataframe()
In [19]:
# Display top 5 rows
display(safety.limit(5))
Out[19]:
In [1]:
# Azure storage access info
blob_account_name = "azureopendatastorage"
blob_container_name = "citydatacontainer"
blob_relative_path = "Safety/Release/city=SanFrancisco"
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.