Ignorar Navegação

NYC Taxi & Limousine Commission - For-Hire Vehicle (FHV) trip records

NYC TLC Taxi FHV

Os registos de corridas de Veículos de Aluguer (For-Hire Vehicle, “FHV”) incluem campos que registam o número de licença da central, a data e hora da recolha e o ID da localização da zona do táxi (ficheiro de forma abaixo). Estes registos são gerados a partir das submissões de Registos de Corridas de FHV realizadas pelas centrais.

Volume e Retenção

Este conjunto de dados é armazenado no formato Parquet. À data de 2018, existem aproximadamente 500 milhões de linhas (5 GB).

Este conjunto de dados contém registos históricos acumulados de 2009 a 2018. Pode utilizar as definições de parâmetros no nosso SDK para obter os dados num intervalo de tempo específico.

Localização do Armazenamento

Este conjunto de dados é armazenado na região do Azure E.U.A. Leste. A alocação de recursos de computação nos E.U.A. Leste é recomendada por questões de afinidade.

Informações adicionais

Comissão de Táxis e Limusinas (TLC) de Nova Iorque:

Os dados foram recolhidos e fornecidos à Comissão de Táxis e Limusinas (TLC) de Nova Iorque por fornecedores de tecnologia autorizados ao abrigo dos Programas Taxicab e Livery Passenger Enhancement (TPEP/LPEP). Os dados das corridas não foram criados pela TLC, a qual não assume qualquer responsabilidade pela exatidão desses dados.

Estão disponíveis informações adicionais sobre os Dados de Registos de Corridas da TLC aqui e aqui.

Avisos

A MICROSOFT DISPONIBILIZA OS CONJUNTOS DE DADOS ABERTOS DO AZURE TAL COMO ESTÃO. A MICROSOFT NÃO FAZ GARANTIAS, EXPRESSAS OU IMPLÍCITAS, NEM CONDIÇÕES RELATIVAMENTE À SUA UTILIZAÇÃO DOS CONJUNTOS DE DADOS. ATÉ AO LIMITE MÁXIMO PERMITIDO PELA LEGISLAÇÃO LOCAL, A MICROSOFT REJEITA QUALQUER RESPONSABILIDADE POR DANOS OU PERDAS, INCLUINDO DIRETOS, CONSEQUENCIAIS, ESPECIAIS, INDIRETOS, INCIDENTAIS OU PUNITIVOS, QUE RESULTEM DA SUA UTILIZAÇÃO DOS CONJUNTOS DE DADOS.

Este conjunto de dados é disponibilizado de acordo com os termos originais em que a Microsoft recebeu os dados de origem. O conjunto de dados pode incluir dados obtidos junto da 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

dispatchBaseNum pickupDateTime dropOffDateTime puLocationId doLocationId srFlag puYear puMonth
B03157 6/30/2019 11:59:57 PM 7/1/2019 12:07:21 AM 264 null null 2019 6
B01667 6/30/2019 11:59:56 PM 7/1/2019 12:28:06 AM 264 null null 2019 6
B02849 6/30/2019 11:59:55 PM 7/1/2019 12:14:10 AM 264 null null 2019 6
B02249 6/30/2019 11:59:53 PM 7/1/2019 12:15:53 AM 264 null null 2019 6
B00887 6/30/2019 11:59:48 PM 7/1/2019 12:29:29 AM 264 null null 2019 6
B01626 6/30/2019 11:59:45 PM 7/1/2019 12:18:20 AM 264 null null 2019 6
B01259 6/30/2019 11:59:44 PM 7/1/2019 12:03:15 AM 264 null null 2019 6
B01145 6/30/2019 11:59:43 PM 7/1/2019 12:11:15 AM 264 null null 2019 6
B00887 6/30/2019 11:59:42 PM 7/1/2019 12:34:21 AM 264 null null 2019 6
B00821 6/30/2019 11:59:40 PM 7/1/2019 12:02:57 AM 264 null null 2019 6
Name Data type Unique Values (sample) Description
dispatchBaseNum string 1,144 B02510
B02764

O número de Licença de Central TLC da central que pediu a viagem

doLocationId string 267 265
132

Zona de Táxi da TLC onde a viagem terminou.

dropOffDateTime timestamp 57,110,352 2017-07-31 23:59:00
2017-10-15 00:44:34

A data e a hora do fim da corrida.

pickupDateTime timestamp 111,270,396 2016-08-16 00:00:00
2016-08-17 00:00:00

A data e a hora da recolha da viagem.

puLocationId string 266 79
161

Zona de Táxi da TLC onde a viagem começou.

puMonth int 12 1
12
puYear int 5 2018
2017
srFlag string 44 1
2

Indica que a corrida foi parte de uma corrente de viagem partilhada oferecida por uma empresa de Serviços de Aluguer de Grande Volume (por exemplo, Uber Pool, Lyft Line). Para as corridas partilhadas, o valor é 1. Para as viagens não partilhadas, este campo é nulo.

OBSERVAÇÃO: Relativamente à maioria das empresas de Serviços de Aluguer de Grande Volume, só são sinalizadas deslocações partilhadas que foram pedidas E corresponderam a outro pedido de viagem partilhada ao longo da jornada. Contudo, a Lyft (números de licenças base B02510 + B02844) também sinaliza viagens nas quais foram pedidas viagens partilhadas, mas em que nenhum outro passageiro correspondeu com êxito para essa partilha. Por esse motivo, os registos de corridas com SR_Flag=1 dessas duas bases poderão significar OU uma primeira viagem numa corrente de viagem partilhada OU uma corrida na qual foi pedida uma viagem partilhada, mas nunca houve correspondência para a mesma. Os utilizadores devem contar com uma contagem excessiva de viagens partilhadas bem-sucedidas realizadas pela Lyft.

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 NycTlcFhv

from datetime import datetime
from dateutil import parser


end_date = parser.parse('2018-06-06')
start_date = parser.parse('2018-05-01')
nyc_tlc = NycTlcFhv(start_date=start_date, end_date=end_date)
nyc_tlc_df = nyc_tlc.to_pandas_dataframe()
ActivityStarted, to_pandas_dataframe ActivityStarted, to_pandas_dataframe_in_worker Target paths: ['/puYear=2018/puMonth=5/', '/puYear=2018/puMonth=6/'] Looking for parquet files... Reading them into Pandas dataframe... Reading fhv/puYear=2018/puMonth=5/part-00087-tid-3759768514304694104-985150ea-1bd1-4f3d-b368-27cbe0c377b0-12952.c000.snappy.parquet under container nyctlc Reading fhv/puYear=2018/puMonth=6/part-00171-tid-3759768514304694104-985150ea-1bd1-4f3d-b368-27cbe0c377b0-13036.c000.snappy.parquet under container nyctlc Done. ActivityCompleted: Activity=to_pandas_dataframe_in_worker, HowEnded=Success, Duration=737522.49 [ms] ActivityCompleted: Activity=to_pandas_dataframe, HowEnded=Success, Duration=737620.1 [ms]
In [2]:
nyc_tlc_df.info()
<class 'pandas.core.frame.DataFrame'> Int64Index: 25142904 entries, 0 to 21089615 Data columns (total 6 columns): dispatchBaseNum object pickupDateTime datetime64[ns] dropOffDateTime datetime64[ns] puLocationId object doLocationId object srFlag object dtypes: datetime64[ns](2), object(4) memory usage: 1.3+ GB
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 = "nyctlc"
folder_name = "fhv"
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 NycTlcFhv

from datetime import datetime
from dateutil import parser


end_date = parser.parse('2018-06-06')
start_date = parser.parse('2018-05-01')
nyc_tlc = NycTlcFhv(start_date=start_date, end_date=end_date)
nyc_tlc_df = nyc_tlc.to_spark_dataframe()
ActivityStarted, to_spark_dataframe ActivityStarted, to_spark_dataframe_in_worker ActivityCompleted: Activity=to_spark_dataframe_in_worker, HowEnded=Success, Duration=27284.71 [ms] ActivityCompleted: Activity=to_spark_dataframe, HowEnded=Success, Duration=27288.78 [ms]
In [2]:
display(nyc_tlc_df.limit(5))
dispatchBaseNumpickupDateTimedropOffDateTimepuLocationIddoLocationIdsrFlagpuYearpuMonth
B028002018-05-08T13:31:30.000+00002018-05-08T13:57:23.000+000042237120185
B028002018-05-08T13:31:30.000+00002018-05-08T13:48:36.000+000033261null20185
B028002018-05-08T13:31:38.000+00002018-05-08T13:59:23.000+000016497120185
B028002018-05-08T13:31:41.000+00002018-05-08T13:38:35.000+0000144211120185
B028002018-05-08T13:31:43.000+00002018-05-08T13:44:23.000+000018648120185
In [1]:
# Azure storage access info
blob_account_name = "azureopendatastorage"
blob_container_name = "nyctlc"
blob_relative_path = "fhv"
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 [29]:
# This is a package in preview.
from azureml.opendatasets import NycTlcFhv

from datetime import datetime
from dateutil import parser


end_date = parser.parse('2018-06-06')
start_date = parser.parse('2018-05-01')
nyc_tlc = NycTlcFhv(start_date=start_date, end_date=end_date)
nyc_tlc_df = nyc_tlc.to_spark_dataframe()
In [30]:
# Display top 5 rows
display(nyc_tlc_df.limit(5))
Out[30]:
In [1]:
# Azure storage access info
blob_account_name = "azureopendatastorage"
blob_container_name = "nyctlc"
blob_relative_path = "fhv"
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'))