MobiSurvStd
MobiSurvStd: Mobility Surveys Standardized
MobiSurvStd is an easy-to-use Python command line interface to convert any French mobility survey (EMC², EGT, EMD, etc.) to a unique standardized format.
Mobility Surveys in France
In France, despite recent efforts by CEREMA to create a standard format for mobility surveys – with the EMC² surveys – various formats co-exist:
- EMC² (Enquête mobilité certifiée CEREMA): mobility surveys for many French territories (since 2018);
- EGT H2020 (Enquête Globale Transport, Île-de-France Mobilités): mobility survey for Île-de-France (2018–2020; incomplete due to COVID-19);
- EMP (Enquête mobilité des personnes, SDES): national mobility survey (2019).
Also surveys based on previous formats are still in use today:
- EDVM (Enquêtes Déplacements Villes Moyennes, CEREMA): mobility surveys for medium-size cities (until 2018);
- EDGT (Enquêtes Déplacements Grands Territoires, CEREMA): mobility surveys for periphery areas (until 2018);
- EGT 2010 (Enquête Globale Transport, Île-de-France Mobilités): previous version of the Île-de-France mobility survey;
- ENTD (Enquête nationale transports et déplacements, SDES): former national mobility survey (2008).
Why MobiSurvStd?
The existing formats all have the same drawbacks:
- Data are sorted in CSV files which are not always straightforward to read (Which separator? Which encoding? What are the variable datatypes?).
- Variable names and modalities are not always clear (e.g., in the EMC² format, variable “P2” represents the gender of the person, with modality 1 for a man and 2 for a woman).
- Joining two datasets is hard and not well documented (e.g., in the EMC² format, to join the persons with their household, the variables to use are “METH”, “ZFM” and “ECH” for the households and “DMET”, “ZFD” and “ECH” for the persons).
Additionally, when working with different territories / periods, it is often necessary to write a similar code multiple times due to the extistence of different formats.
MobiSurvStd solves all these issues by being able to convert all survey formats to a well-defined format.
Check TODO to see how MobiSurvStd can help you write fewer and cleaner codes.
How to use?
Install the library with
pip install mobisurvstd
Convert your survey to the standard format with
python -m mobisurvstd -i original_survey/ -o std_survey/
What about other countries?
MobiSurvStd covers only French mobility survey formats. If other countries have similar survey formats, they might be easily integrated into MobiSurvStd. If you found a format that could be integrated, feel free to open an issue on GitHub.
Issues and Contributions
If you think you found a bug, if you have a suggestion, or if you want to integrate a new format, feel free to open an issue on GitHub and even to open a Pull Request.
Why MobiSurvStd?
import polars as pl
pers = pl.read_csv("Csv/Fichiers_Standard/brest_2018_std_pers.csv", separator=";")
depl = pl.read_csv("Csv/Fichiers_Standard/brest_2018_std_depl.csv", separator=";")
print(
depl
.join(
pers,
left_on=["DMET", "ZFD", "ECH", "PER"],
right_on=["PMET", "ZFP", "ECH", "PER"]
)
.group_by("P2")
.agg(
(pl.col("D9") * pl.col("COEP")).sum()
/ pl.col("COEP").sum()
)
.sort("P2")
)
shape: (2, 2)
┌─────┬───────────┐
│ P2 ┆ D9 │
│ --- ┆ --- │
│ i64 ┆ f64 │
╞═════╪═══════════╡
│ 1 ┆ 18.145294 │
│ 2 ┆ 15.915749 │
└─────┴───────────┘
import polars
pers = pl.read_parquet("persons.parquet")
trips = pl.read_parquet("trips.parquet")
print(
trips
.join(pers, on="person_id")
.group_by("woman")
.agg(
(pl.col("travel_time") * pl.col("sample_weight_surveyed")).sum()
/ pl.col("sample_weight_surveyed").sum()
)
.sort("woman")
)
┌───────┬─────────────┐
│ woman ┆ travel_time │
│ --- ┆ --- │
│ bool ┆ f64 │
╞═══════╪═════════════╡
│ false ┆ 18.145294 │
│ true ┆ 15.915749 │
└───────┴─────────────┘
Glossary
Surveys
EMC²
-
TODO: Information on zoning system (including GT)
-
For each trips, the non-walking legs are recorded. MobiSurvStd reconstruct the walking legs using the access / egress walking time variables. This means that the leg travel time is known only for the walking legs (as it is not a recorded variable for the other legs).
-
Brest:
- The municipality of Daoulas is not included in the INSEE shapefile, despite the municipality being inside the perimeter.
- Some special locations are not defined in the shapefile but are used as origin / destination.
EMP
- Pas de représentativité régionale
- Une seule personne par ménage avec + d’infos (dont les déplacements)
- Type de car pas connu mais peut inclure voiture particulière, VUL et camping-car
- Troisième type de véhicules (58 voiturettes + 59 quads + 1 tricycle) pas lu
EGT 2020
- Pas de secteur de tirage ni de carreaux (mais coordonnées)
- Pas de type pour les “cars” (mais camping-cars et gros utilitaires exclus)
- Stationnement des motos pas lu car la documentation n’est pas bonne
main_mode_group
différent deMODP_H7
car pas même classification des groups, pas mêmes critèresstart_insee
andend_insee
are derived from leg’s coordinates, using INSEE data from 2025work_insee
andstudy_insee
are derived from coordinates, using INSEE data from 2025. There can be some mistakes (e.g., Puteaux when it should be Courbevoie)
Availability table
Households
EMC² | EMP2019 | EGT2020 | EGT2010 | |
---|---|---|---|---|
household id | ✅ | ✅ | ✅ | ✅ |
original_household id | ✅ | ✅ | ✅ | ✅ |
survey_method | ✅ | ✅ | ✅ | ✅ |
interview_date | ✅ | ✅ | ✅ | ✅ |
sample_weight | ✅ | ✅ | ✅ | ✅ |
home_lng | ✅ | ❌ | ✅ | ✅ |
home_lat | ✅ | ❌ | ✅ | ✅ |
home_special_location | ➖ | ❌ | ❌ | ❌ |
home_detailed_zone | ✅ | ❌ | ❌ | ✅ |
home_draw_zone | ✅ | ❌ | ❌ | ✅ |
home_insee | ✅ | ❌ | ✅ | ✅ |
home_dep | ✅ | ✅ | ✅ | ✅ |
home_dep_name | ✅ | ✅ | ✅ | ✅ |
home_nuts2 | ✅ | ✅ | ✅ | ✅ |
home_nuts2_name | ✅ | ✅ | ✅ | ✅ |
home_nuts1 | ✅ | ✅ | ✅ | ✅ |
home_nuts1_name | ✅ | ✅ | ✅ | ✅ |
household_type | ✅ | ✅ | ✅ | ✅ |
income_lower_bound | ❌ | ❌ | ✅ | ✅ |
income_upper_bound | ❌ | ❌ | ✅ | ✅ |
housing_type | ➖ | ❌ | ✅ | ✅ |
housing_status | ➖ | ✅ | ✅ | ✅ |
has_internet | ➖ | ❌ | ✅ | ✅ |
nb_cars | ➖ | ✅ | ✅ | ✅ |
nb_motorcycles | ➖ | ✅ | ✅ | ✅ |
nb_bicycles | ➖ | ✅ | ✅ | ✅ |
nb_standard_bicycles | ➖ | ✅ | ✅ | ✅ |
nb_electric_bicycles | ➖ | ✅ | ✅ | ✅ |
has_bicycle_parking | ➖ | ❌ | ✅ | ✅ |
nb_persons | ✅ | ✅ | ✅ | ✅ |
nb_persons_5plus | ✅ | ❌ | ✅ | ✅ |
nb_majors | ✅ | ✅ | ✅ | ✅ |
nb_minors | ✅ | ✅ | ✅ | ✅ |
Persons
EMC² | EMP2019 | EGT2020 | EGT2010 | |
---|---|---|---|---|
person_id | ✅ | ✅ | ✅ | ✅ |
household_id | ✅ | ✅ | ✅ | ✅ |
person_index | ✅ | ✅ | ✅ | ✅ |
original_person_id | ✅ | ✅ | ✅ | ✅ |
reference_person_link | ✅ | ✅ | ✅ | ✅ |
resident_type | ❌ | ➖ | ❌ | ✅ |
woman | ✅ | ✅ | ✅ | ✅ |
age | ✅ | ➖ | ✅ | ➖ |
age_class | ✅ | ✅ | ✅ | ✅ |
age_class_code | ✅ | ✅ | ✅ | ✅ |
education_level | ✅ | ➖ | ✅ | ✅ |
detailed_education_level | ✅ | ➖ | ✅ | ✅ |
professional_occupation | ✅ | ➖ | ✅ | ✅ |
detailed_professional_occupation | ✅ | ➖ | ✅ | ✅ |
secondary_professional_occupation | ➖ | ➖ | ✅ | ❌ |
pcs_group | ✅ | ➖ | ✅ | ✅ |
pcs_group_code | ✅ | ➖ | ✅ | ✅ |
pcs_category_code2020 | ❌ | ❌ | ❌ | ❌ |
pcs_category_code2003 | ➖ | ➖ | ✅ | ✅ |
work_only_at_home | ✅ | ➖ | ✅ | ✅ |
workplace_singularity | ❌ | ➖ | ✅ | ✅ |
work_lng | ✅ | ❌ | ✅ | ❌ |
work_lat | ✅ | ❌ | ✅ | ❌ |
work_special_location | ➖ | ❌ | ❌ | ❌ |
work_detailed_zone | ✅ | ❌ | ❌ | ✅ |
work_draw_zone | ✅ | ❌ | ❌ | ✅ |
work_insee | ✅ | ❌ | ✅ | ✅ |
work_insee_name | ✅ | ❌ | ✅ | ✅ |
work_dep | ✅ | ❌ | ✅ | ✅ |
work_dep_name | ✅ | ❌ | ✅ | ✅ |
work_nuts2 | ✅ | ❌ | ✅ | ✅ |
work_nuts2_name | ✅ | ❌ | ✅ | ✅ |
work_nuts1 | ✅ | ❌ | ✅ | ✅ |
work_nuts1_name | ✅ | ❌ | ✅ | ✅ |
work_commute_euclidean_distance_km | ➖ | ❌ | ✅ | ✅ |
has_car_for_work_commute | ➖ | ❌ | ❌ | ❌ |
telework | ➖ | ➖ | ❌ | ❌ |
work_car_parking | ➖ | ❌ | ✅ | ✅ |
work_bicycle_parking | ➖ | ❌ | ✅ | ✅ |
student_group | ➖ | ❌ | ✅ | ✅ |
student_category | ➖ | ❌ | ✅ | ✅ |
study_only_at_home | ➖ | ❌ | ✅ | ✅ |
study_lng | ✅ | ❌ | ✅ | ❌ |
study_lat | ✅ | ❌ | ✅ | ❌ |
study_special_location | ➖ | ❌ | ❌ | ❌ |
study_detailed_zone | ✅ | ❌ | ❌ | ✅ |
study_draw_zone | ✅ | ❌ | ❌ | ✅ |
study_insee | ✅ | ❌ | ✅ | ✅ |
study_insee_name | ✅ | ❌ | ✅ | ✅ |
study_dep | ✅ | ❌ | ✅ | ✅ |
study_dep_name | ✅ | ❌ | ✅ | ✅ |
study_nuts2 | ✅ | ❌ | ✅ | ✅ |
study_nuts2_name | ✅ | ❌ | ✅ | ✅ |
study_nuts1 | ✅ | ❌ | ✅ | ✅ |
study_nuts1_name | ✅ | ❌ | ✅ | ✅ |
study_commute_euclidean_distance_km | ➖ | ❌ | ✅ | ✅ |
has_car_for_study_commute | ➖ | ❌ | ❌ | ❌ |
study_car_parking | ➖ | ❌ | ✅ | ✅ |
study_bicycle_parking | ➖ | ❌ | ✅ | ✅ |
has_driving_license | ✅ | ➖ | ✅ | ✅ |
has_motorcycle_driving_license | ❌ | ➖ | ✅ | ✅ |
has_public_transit_subscription | ➖ | ➖ | ✅ | ✅ |
public_transit_subscription | ➖ | ❌ | ✅ | ✅ |
has_car_sharing_subscription | ❌ | ➖ | ✅ | ✅ |
car_sharing_subscription | ❌ | ➖ | ✅ | ❌ |
has_bike_sharing_subscription | ❌ | ➖ | ✅ | ✅ |
has_travel_inconvenience | ❌ | ➖ | ✅ | ✅ |
is_surveyed | ✅ | ✅ | ✅ | ✅ |
traveled_during_surveyed_day | ✅ | ➖ | ✅ | ❌ |
worked_during_surveyed_day | ➖ | ➖ | ✅ | ✅ |
nb_trips | ✅ | ➖ | ✅ | ✅ |
sample_weight_all | ✅ | ❌ | ✅ | ✅ |
sample_weight_surveyed | ➖ | ➖ | ✅ | ❌ |
Trips
EMC² | EGT2020 | |
---|---|---|
trip_id | ✅ | ✅ |
person_id | ✅ | ✅ |
household_id | ✅ | ✅ |
trip_index | ✅ | ✅ |
first_trip | ✅ | ✅ |
last_trip | ✅ | ✅ |
home_sequence_index | ✅ | ✅ |
original_trip_id | ✅ | ✅ |
origin_purpose | ✅ | ✅ |
origin_purpose_group | ✅ | ✅ |
origin_activity_duration | ✅ | ✅ |
destination_purpose | ✅ | ✅ |
destination_purpose_group | ✅ | ✅ |
destination_activity_duration | ✅ | ✅ |
origin_escort_purpose | ✅ | ❌ |
origin_escort_purpose_group | ✅ | ❌ |
destination_escort_purpose | ✅ | ❌ |
destination_escort_purpose_group | ✅ | ❌ |
origin_lng | ➖ | ✅ |
origin_lat | ➖ | ✅ |
origin_special_location | ➖ | ❌ |
origin_detailed_zone | ✅ | ❌ |
origin_draw_zone | ✅ | ❌ |
origin_insee | ✅ | ✅ |
origin_insee_name | ✅ | ✅ |
origin_insee_density | ✅ | ✅ |
origin_insee_aav_type | ✅ | ✅ |
origin_aav | ✅ | ✅ |
origin_aav_name | ✅ | ✅ |
origin_aav_category | ✅ | ✅ |
origin_dep | ✅ | ✅ |
origin_dep_name | ✅ | ✅ |
origin_nuts2 | ✅ | ✅ |
origin_nuts2_name | ✅ | ✅ |
origin_nuts1 | ✅ | ✅ |
origin_nuts1_name | ✅ | ✅ |
destination_lng | ➖ | ✅ |
destination_lat | ➖ | ✅ |
destination_special_location | ➖ | ❌ |
destination_detailed_zone | ✅ | ❌ |
destination_draw_zone | ✅ | ❌ |
destination_insee | ✅ | ✅ |
destination_insee_name | ✅ | ✅ |
destination_insee_density | ✅ | ✅ |
destination_insee_aav_type | ✅ | ✅ |
destination_aav | ✅ | ✅ |
destination_aav_name | ✅ | ✅ |
destination_aav_category | ✅ | ✅ |
destination_dep | ✅ | ✅ |
destination_dep_name | ✅ | ✅ |
destination_nuts2 | ✅ | ✅ |
destination_nuts2_name | ✅ | ✅ |
destination_nuts1 | ✅ | ✅ |
destination_nuts1_name | ✅ | ✅ |
departure_time | ✅ | ✅ |
arrival_time | ✅ | ✅ |
travel_time | ✅ | ✅ |
trip_date | ✅ | ✅ |
trip_weekday | ✅ | ✅ |
main_mode | ✅ | ✅ |
main_mode_group | ✅ | ✅ |
intermodality | ✅ | ✅ |
public_transit_access_mode | ✅ | ✅ |
public_transit_access_mode_group | ✅ | ✅ |
public_transit_egress_mode | ✅ | ✅ |
public_transit_egress_mode_group | ✅ | ✅ |
trip_euclidean_distance_km | ➖ | ✅ |
trip_travel_distance_km | ➖ | ❌ |
intra_municipality | ✅ | ✅ |
intra_aav | ✅ | ✅ |
intra_dep | ✅ | ✅ |
trip_perimeter | ➖ | ✅ |
nb_tour_stops | ➖ | ❌ |
nb_legs | ✅ | ✅ |
nb_legs_walking | ✅ | ✅ |
nb_legs_bicycle | ✅ | ✅ |
nb_legs_motorcycle | ✅ | ✅ |
nb_legs_car_driver | ✅ | ✅ |
nb_legs_car_passenger | ✅ | ✅ |
nb_legs_public_transit | ✅ | ✅ |
nb_legs_other | ✅ | ✅ |
Legs
EMC² | EGT2020 | |
---|---|---|
leg_id | ✅ | ✅ |
trip_id | ✅ | ✅ |
person_id | ✅ | ✅ |
household_id | ✅ | ✅ |
leg_index | ✅ | ✅ |
first_leg | ✅ | ✅ |
last_leg | ✅ | ✅ |
original_leg_id | ✅ | ✅ |
mode | ✅ | ✅ |
mode_group | ✅ | ✅ |
public_transit_line | ❌ | ✅ |
start_lng | ✅ | ✅ |
start_lat | ✅ | ✅ |
start_special_location | ➖ | ❌ |
start_detailed_zone | ✅ | ❌ |
start_draw_zone | ✅ | ❌ |
start_insee | ✅ | ✅ |
start_insee_name | ✅ | ✅ |
start_dep | ✅ | ✅ |
start_dep_name | ✅ | ✅ |
start_nuts2 | ✅ | ✅ |
start_nuts2_name | ✅ | ✅ |
start_nuts1 | ✅ | ✅ |
start_nuts1_name | ✅ | ✅ |
end_lng | ✅ | ✅ |
end_lat | ✅ | ✅ |
end_special_location | ➖ | ❌ |
end_detailed_zone | ✅ | ❌ |
end_draw_zone | ✅ | ❌ |
end_insee | ✅ | ✅ |
end_insee_name | ✅ | ✅ |
end_dep | ✅ | ✅ |
end_dep_name | ✅ | ✅ |
end_nuts2 | ✅ | ✅ |
end_nuts2_name | ✅ | ✅ |
end_nuts1 | ✅ | ✅ |
end_nuts1_name | ✅ | ✅ |
leg_travel_time | ➖ | ❌ |
leg_euclidean_distance_km | ➖ | ✅ |
leg_travel_distance_km | ➖ | ❌ |
car_type | ✅ | ✅ |
car_id | ✅ | ✅ |
nolicense_car | ➖ | ❌ |
nb_persons_in_vehicle | ✅ | ✅ |
nb_majors_in_vehicle | ✅ | ❌ |
nb_minors_in_vehicle | ✅ | ❌ |
nb_household_members_in_vehicle | ✅ | ✅ |
nb_non_household_members_in_vehicle | ✅ | ✅ |
in_vehicle_person_ids | ✅ | ✅ |
motorcycle_type | ✅ | ✅ |
motorcycle_id | ✅ | ✅ |
parking_location | ➖ | ✅ |
parking_type | ➖ | ✅ |
parking_search_time | ➖ | ❌ |
Cars
EMC² | EMP2019 | EGT2020 | EGT2010 | |
---|---|---|---|---|
car_id | ✅ | ✅ | ✅ | ✅ |
household_id | ✅ | ✅ | ✅ | ✅ |
car_index | ✅ | ✅ | ✅ | ✅ |
original_car_id | ✅ | ✅ | ✅ | ✅ |
type | ✅ | ❌ | ❌ | ✅ |
fuel_type | ✅ | ✅ | ✅ | ✅ |
fuel_type_group | ✅ | ✅ | ✅ | ✅ |
year | ✅ | ✅ | ✅ | ✅ |
tax_horsepower | ✅ | ✅ | ✅ | ✅ |
critair | ✅ | ✅ | ✅ | ✅ |
total_mileage | ❌ | ✅ | ❌ | ✅ |
total_mileage_lower_bound | ❌ | ✅ | ❌ | ✅ |
total_mileage_upper_bound | ❌ | ✅ | ❌ | ✅ |
annual_mileage | ❌ | ✅ | ❌ | ✅ |
annual_mileage_lower_bound | ❌ | ✅ | ✅ | ✅ |
annual_mileage_upper_bound | ❌ | ✅ | ✅ | ✅ |
ownership | ✅ | ❌ | ✅ | ✅ |
parking_location | ✅ | ✅ | ✅ | ✅ |
parking_type | ✅ | ✅ | ✅ | ✅ |
Motorcycles
EMC² | EMP2019 | EGT2020 | EGT2010 | |
---|---|---|---|---|
motorcycle_id | ✅ | ✅ | ✅ | ✅ |
household_id | ✅ | ✅ | ✅ | ✅ |
motorcycle_index | ✅ | ✅ | ✅ | ✅ |
original_motorcycle_id | ✅ | ✅ | ✅ | ✅ |
type | ✅ | ✅ | ❌ | ✅ |
fuel_type | ✅ | ❌ | ✅ | ✅ |
year | ✅ | ✅ | ✅ | ✅ |
thermic_engine_type | ✅ | ❌ | ✅ | ✅ |
cm3_lower_bound | ✅ | ✅ | ✅ | ✅ |
cm3_upper_bound | ✅ | ✅ | ✅ | ✅ |
kw_lower_bound | ✅ | ❌ | ❌ | ❌ |
kw_upper_bound | ✅ | ❌ | ❌ | ❌ |
annual_mileage | ❌ | ✅ | ❌ | ✅ |
annual_mileage_lower_bound | ❌ | ✅ | ✅ | ✅ |
annual_mileage_upper_bound | ❌ | ✅ | ✅ | ✅ |
parking_location | ✅ | ✅ | ✅ | ✅ |
parking_type | ✅ | ✅ | ✅ | ✅ |
Households
Sort order: household_id
Indexing
household_id
Unique identifier of the household.
- Type: UInt32
- Guarantees:
- Values range from 1 to the number of households.
original_household_id
Identifier of the household in the original data.
- Type: Struct whose fields depend on the survey
Surveying
survey_method
Method that was used to survey the household.
- Modalities:
"face_to_face"
: the household was surveyed during a face-to-face meeting"phone"
: the household was surveyed on the phone
- Guarantees:
- Values are either all null (undefined survey method) or all defined.
interview_date
Date at which the interview took place.
Note that this is not the date at which the reported trips (if any) took place. See TODO.
- Type: Date
sample_weight
Sample weight of the household.
The sum of the values is supposed to be approximately equal to the number of households in the survey area.
- Type: Float64
- Guarantees:
- Values are either all null (undefined survey method) or all defined.
- The value is non-negative.
Home location
home_lng
Longitude of home coordinates.
The accuracy depends on the survey type.
For EGT surveys, the coordinates are guaranteed to be within 100 meters of the actual location.
For other surveys, the coordinates represent the centroid of home_detailed_zone
(or the exact
coordinates defined by home_special_location
when it is non-null).
- Type: Float64
home_lat
Latitude of home coordinates.
See home_lng
for details on the accuracy of the value.
- Type: Float64
home_special_location
Identifier of the special location where the household is located.
- Type: UInt32
- Guarantees:
- The home special location intersects with the home detailed zone, draw zone, and INSEE zone (only checked if the locations and zones are known).
home_detailed_zone
Identifier of the detailed zone where the household is located.
- Type: UInt32
- Guarantees:
- Values are either all null or all defined.
- If
detailed_zones.parquet
exists, then the value is a validdetailed_zone_id
. - The home detailed zone intersects with the home draw zone and INSEE zone (only checked if the zones are known).
home_draw_zone
Identifier of the draw zone where the household is located.
- Type: UInt32
- Guarantees:
- Values are either all null or all defined.
- If
draw_zones.parquet
exists, then the value is a validdraw_zone_id
. - The home draw zone intersects with the home INSEE zone (only checked if the zones are known).
home_insee
INSEE code of the municipality where the household is located.
- Type: String
- Guarantees:
- Values are either all null or all defined.
- String is a valid INSEE code.
home_insee_name
Name of the municipality where the household is located.
- Type: String
home_dep
Département code of the household home.
- Type: String
- Guarantees:
- The value is a valid département code.
- If
home_insee
is not null, then the value is equal to the département of the home INSEE municipality.
home_dep_name
Name of the département of the household home.
- Type: String
- Guarantees:
- The value is consistent with
home_dep
.
- The value is consistent with
home_nuts2
NUTS 2 code of the household home.
In France, NUTS 2 corresponds to the 22 old administrative regions (and 5 overseas departments).
- Type: String
- Guarantees:
- The value is a valid NUTS 2 code.
- If
home_dep
is not null, then the value is equal to the NUTS 2 code corresponding to the home département.
home_nuts2_name
Name of the NUTS 2 region of the household home.
- Type: String
- Guarantees:
- The value is consistent with
home_nuts2
.
- The value is consistent with
home_nuts1
NUTS 1 code of the household home.
In France, NUTS 1 corresponds to the 13 administrative regions (and 1 overseas region).
- Type: String
- Guarantees:
- The value is a valid NUTS 1 code.
- If
home_nuts2
is not null, then the value is equal to the NUTS 1 code corresponding to the home NUTS 2.
home_nuts1_name
Name of the NUTS 1 region of the household home.
- Type: String
- Guarantees:
- The value is consistent with
home_nuts1
.
- The value is consistent with
Household characteristics
household_type
Type of household structure.
- Modalities:
"single:man"
: household with only one man"single:woman"
: household with only one woman"couple:no_child"
: couple with no child"couple:children"
: couple with at least one child"singleparent:father"
: singleparent family (man and at least one child)"singleparent:mother"
: singleparent family (woman and at least one child)"other"
: other type of household structure
- Guarantees:
- The value is compatible with the actual household structure (
nb_persons
,reference_person_link
, etc.).
- The value is compatible with the actual household structure (
income_lower_bound
Lower bound for the net income of the household, in euros.
- Type: UInt16
income_upper_bound
Upper bound for the net income of the household, in euros.
- Type: UInt16
- Guarantees:
- The value is not smaller than
income_lower_bound
.
- The value is not smaller than
Housing
housing_type
Type of the housing the household is living in.
- Modalities:
"house"
: an individual house"apartment"
: an apartment in a collective building"other"
: an other type of housing
housing_status
Type of ownership / renting for the housing.
- Modalities:
"owner:ongoing_loan"
: the household is owning the housing and is paying loans (“accédant à la propriété”)"owner:fully_repaid"
: the household is owning the housing and is not paying loans"owner:usufructuary"
: the household is usufructuary of the housing (“usufruitier”)"owner:unspecified"
: the household is owning the housing (without more specification)"tenant:public_housing"
: the household is a tenant inside a public housing"tenant:private"
: the household is a tenant inside a private-owned housing"tenant:unspecified"
: the household is a tenant (without more specification)"rent_free"
: the household is hosted for free"university_resident"
: the household is living inside a university residence"other"
: other type of ownership / renting
has_internet
Whether the household has internet access at home.
- Type: Boolean
Motorized vehicles
nb_cars
Number of cars owned by the household.
- Type: UInt8
- Guarantees:
- The number of cars for this household in
cars.parquet
is not larger than this value (but it can be smaller if the car details are not known for all cars).
- The number of cars for this household in
nb_motorcycles
Number of motorcycles owned by the household.
- Type: UInt8
- Guarantees:
- The number of motorcycles for this household in
motorcycles.parquet
is not larger than this value (but it can be smaller if the motorcycles details are not known for all motorcycles).
- The number of motorcycles for this household in
Bicycles
nb_bicycles
Number of bicycles (standard or electric) owned by the household.
- Type: UInt8
- Guarantees:
- When
nb_standard_bicycles
andnb_electric_bicycles
are specified, then we always havenb_bicycles = nb_standard_bicycles + nb_electric_bicycles
.
- When
nb_standard_bicycles
Number of standard bicycles (i.e., non-electric) owned by the household.
- Type: UInt8
nb_electric_bicycles
Number of electric bicycles owned by the household.
- Type: UInt8
has_bicycle_parking
Whether the household can park bicycles at home.
- Type: Boolean
Counts
nb_persons
Number of persons belonging to the household.
Note that persons below 5 year old are sometimes excluded from the surveys.
- Type: UInt8
- Guarantees:
- The value is not null.
- The value is positive.
- The value is equal to the number of persons in
persons.parquet
who belong to this household.
nb_persons_5plus
Number of persons in the household whose age is 6 or more.
- Type: UInt8
- Guarantees:
- The value is not smaller than the number of persons in this household whose age is 6 or more.
- The value is not larger than the number of persons in this household whose age is unknown or 6 or more.
nb_majors
Number of persons in the household whose age is 18 or more.
- Type: UInt8
- Guarantees:
- The value is not smaller than the number of persons in this household whose age is 18 or more.
- The value is not larger than the number of persons in this household whose age is unknown or 18 or more.
nb_minors
Number of persons in the household whose age is 17 or less.
- Type: UInt8
- Guarantees:
- The value is not smaller than the number of persons in this household whose age is 17 or less.
- The value is not larger than the number of persons in this household whose age is unknown or 17 or less.
Persons
Sort order: person_id
Indexing
person_id
Unique identifier of the person.
- Type: UInt32
- Guarantees:
- Values range from 1 to the number of persons.
household_id
Identifier of the household the person belongs to.
- Type: UInt32
- Guarantees:
- The value is not null.
- There exists a household with this
household_id
. - The values are stored in increasing order (i.e., the persons from households with a smaller id are shown first).
person_index
Index of the person within the household’s persons.
- Type: UInt8
- Guarantees:
- The value is not null.
- Values are unique within a household and range from 1 to the number of persons in the household.
- The values are stored in increasing order within a household (i.e., the persons with smaller indices are shown first).
original_person_id
Identifier of the person in the original data.
- Type: Struct whose fields depend on the survey
Demographic characteristics
reference_person_link
Link of the person relative to the reference person of the household.
- Modalities:
"reference_person"
: this person is the reference person of the household"spouse"
: this person is the spouse (husband or wife) of the reference person"child"
: this person is a child of the reference person"roommate_or_tenant"
: this person is a roommate or tenant in the household, with no family link to the reference person"other:relative"
: this person is a relative of the reference person (but not spouse or child)"other:non_relative"
: other link to the reference person (excluding relatives)
- Guarantees:
- If the values are not null for all persons within a household, then there is exactly
one person defined as the
"reference_person"
for this household.
- If the values are not null for all persons within a household, then there is exactly
one person defined as the
resident_type
Whether the person is living in the household home for most of the year.
- Modalities:
"permanent_resident"
: the person is living in the household for most of the year"mostly_weekends"
: the person is usually only living in the household during weekends (with another location during weekdays for work or study reasons)"mostly_weekdays"
: the person is usually only living in the household during weekdays (for work or study reasons)
woman
Whether the person is a woman.
- Type: Boolean
age
Age of the person.
- Type: UInt8
- Guarantees:
- The value is not larger than 125.
- Persons whose
reference_person_link
is"child"
are not older than the household reference person.
age_class
Age of the person in 7 classes.
- Modalities:
"17-"
: 17 or less"18-24"
: 18 to 24"25-34"
: 25 to 34"35-49"
: 35 to 49"50-64"
: 50 to 64"65-74"
: 65 to 74"75+"
: 75 or more
- Guarantees:
- The class is compatible with the value of
age
.
- The class is compatible with the value of
age_class_code
Age of the person in 7 classes.
Value 1 is for "17-"
, 2 is for "18-24"
, …, 7 is for "75+"
.
- Type: UInt8
- Guarantees:
- The value is consistent with
age_class
.
- The value is consistent with
education_level
Highest education level reached by the person.
Note that given the diversity of the surveys regarding this question, some modalities might have
different meanings depending on the survey (e.g., "primary"
can mean either that the person did
go to school after primary education or that their highest diploma earned is “Certificat d’études
primaires”).
Also see detailed_education_level
.
- Modalities:
"no_studies_or_no_diploma"
: the person did no go to school or did not get any diploma"primary"
: the person has stopped going to school after primary education (“école primaire”) or their highest diploma is “Certificat d’études primaires”"secondary:no_bac"
: the person has stopped going to school after middle-school (“collège”) or high-school (“lycée”) and did not get the baccalauréat"secondary:bac"
: the person has stopped going to school after high-school (“lycée”) with the baccalauréat diploma"higher:at_most_bac+2"
: the person has stopped going to school after at most 2 years of higher education"higher:at_least_bac+3"
: the person has stopped going to school after at least 3 years of higher education
detailed_education_level
Highest education level reached by the person, in detailed categories.
The modalities try to reproduce as best as possible the large diversity of the modalities observed in the surveys without having too many modalities and without losing too much information.
- Modalities:
"no_studies"
: the person did not go to school"no_diploma"
: the person did not get any diploma"primary:unspecified"
: the person has stopped going to school after primary education (“école primaire”), it is unknown whether they get the “Certificat d’études primaires”"primary:CEP"
: the person’s highest diploma is the “Certificat d’études primaires”"secondary:no_bac:college"
: the person has stopped going to school after middle-school (“collège”) or their highest diploma is “Brevet des collèges”"secondary:no_bac:CAP/BEP"
: the person’s highest diploma is “CAP”, “BEP”, or an equivalent diploma"secondary:bac:techno_or_pro"
: the person’s highest diploma is “Baccalauréat technologique”, “Baccalauréat professionnel”, or an equivalent diploma"secondary:bac:general"
: the person’s highest diploma is “Baccalauréat général”"secondary:bac:unspecified"
: the person’s highest diploma is “Baccalauréat” (without further specification)"higher:at_most_bac+2:DEUG"
: the person’s highest diploma is “DEUG” (BAC+2)"higher:at_most_bac+2:BTS/DUT"
: the person’s highest diploma is “BTS”, “DUT”, or an equivalent diploma (BAC+2)"higher:at_most_bac+2:paramedical_social"
: the person’s highest diploma is at BAC+2 level (“formation paramédical et social”)"higher:at_most_bac+2:unspecified"
: the person’s highest diploma is at BAC+2 level (unspecified diploma)"higher:at_least_bac+3:universite"
: the person’s highest diploma is at least BAC+3 in a university (“Licence”, “Maîtrise”, “Master”, “DEA”, “DESS”, “Doctorat”)"higher:at_least_bac+3:ecole"
: the person’s highest diploma is at least BAC+3 in a “Grande École”"higher:at_least_bac+3:unspecified"
: the person’s highest diploma is at least BAC+3 (without further specification)"higher:bac+3_or_+4"
: the person’s highest diploma is at level BAC+3 or BAC+4"higher:at_least_bac+5"
: the person’s highest diploma is at least BAC+5
Occupancy
professional_occupation
Professional status of the person.
Note these categories cannot represent some mixed situations (e.g., students with week-end jobs,
students in apprenticeship, retired people with small jobs).
Also see detailed_professional_occupation
and secondary_professional_occupation
for more
details.
- Modalities:
"worker"
: the person has a full-time or part-time job"student"
: the person is a student"other"
: other status
- Guarantees:
- The value is
"student"
if and only ifeducation_level
is"in_school"
- The value is
detailed_professional_occupation
Detailed professional status of the person.
- Modalities:
"worker:full_time"
: the person has a full-time job"worker:part_time"
: the person has a part-time job"worker:unspecified"
: the person has a job with no further specification"student:primary_or_secondary"
: the person is a student in primary or secondary education"student:higher"
: the person is a student in higher education (“enseignement supérieur”)"student:apprenticeship"
: the person is in apprenticeship training"other:unemployed"
: the person is unemployed, looking for a job"other:retired"
: the person is retired"other:homemaker"
: the person is not working and not looking for a job"other:unspecified"
: other unspecified situation
- Guarantees:
- The values are consistent with
professional_occupation
.
- The values are consistent with
secondary_professional_occupation
Secondary professional occupation of the person (if any).
This is useful for students with part-time student job or workers with continuous training (“formation continue”) for example.
- Modalities:
"work"
"education"
- Guarantees:
- The value is not
"work"
if"professional_occupation"
is"worker"
- The value is not
"education"
if"professional_occupation"
is"student"
- The value is not
Work status
pcs_group
Group of “Professions et Catégories Socioprofessionnelles” the person belongs to.
The groups are defined by
INSEE.
Some surveys follow the
INSEE 2003 definition,
while others follow the
2020 definition.
This means that the two last groups (“retraités” and
“autres_personnes_sans_activité_professionnelle”) might not be used for some surveys.
The detailed_professional_occupation
variable should be used instead if you need to access job
status.
Note that unemployed and retired people might still be assigned to the group corresponding to their
previous jobs.
- Modalities:
"agriculteurs_exploitants"
"artisans_commerçants_chefs_d'entreprise"
"cadres_et_professions_intellectuelles_supérieures"
"professions_intermédiaires"
"employés"
"ouvriers"
"retraités"
"autres_personnes_sans_activité_professionnelle"
- Guarantees:
- If the
professional_occupation
is"student"
, thenpcs_group
is null.
- If the
pcs_group_code
Code of the group of “Professions et Catégories Socioprofessionnelles” the person belongs to.
The codes follow the 2003 definition of the groups.
- Type: UInt8
- Guarantees:
- All values are between 1 and 8.
- The values are consistent with variable
pcs_group
(e.g., value is 5 if and only ifpcs_group
is"employés"
). - The value is null if and only if
pcs_group
is"no_answer"
or null.
pcs_category_code2020
Code of the category of “Professions et Catégories Socioprofessionnelles” the person belongs to.
This variable is used when the codes from the survey follow the INSEE 2020 definition.
- Type: UInt8
- Guarantees:
- Possible values: 10, 21, 22, 23, 31, 33, 34, 35, 37, 38, 42, 43, 44, 45, 46, 47, 47, 52, 53, 54, 55, 56, 62, 63, 64, 65, 67, 68, 69.
- If
pcs_group_code
is null, then the value is null. - If the value is not null, then its first digit is equal to the value of
pcs_group_code
.
pcs_category_code2003
Code of the category of “Professions et Catégories Socioprofessionnelles” the person belongs to.
This variable is used when the codes from the survey follow the INSEE 2003 definition.
- Type: UInt8
- Guarantees:
- Possible values: 10, 21, 22, 23, 31, 32, 36, 41, 46, 47, 48, 51, 54, 55, 56, 61, 66, 69, 71, 72, 73, 76, 81, 82.
- If
pcs_group_code
is null, then the value is null. - If the value is not null, then its first digit is equal to the value of
pcs_group_code
.
Workplace location
work_only_at_home
Whether the person works only at home.
- Type: Boolean
- Guarantees:
- If
professional_occupation
is not"worker"
, then the value is null.
- If
workplace_singularity
Whether the person has a unique, fixed workplace location.
- Modalities:
"unique:outside"
: the person has a unique workplace location, outside home"unique:home"
: the person is working only at home"variable"
: the person has multiple usual workplace location or no usual workplace location (e.g., moving from client to client)
- Guarantees:
- If
professional_occupation
is not"worker"
, then the value is null. - If
work_only_at_home
is true, then the value is"unique:home"
.
- If
work_lng
Longitude of the usual workplace.
The accuracy depends on the survey type.
For EGT surveys, the coordinates are guaranteed to be within 100 meters of the actual location.
For other surveys, the coordinates represent the centroid of work_detailed_zone
(or the exact
coordinates defined by work_special_location
when it is non-null).
- Type: Float64
work_lat
Latitude of the usual workplace.
See work_lng
for details on the accuracy of the value.
- Type: Float64
work_special_location
Identifier of the special location where the person usually works.
- Type: String
- Guarantees:
- If
professional_occupation
is not"worker"
, then the value is null. - The work special location intersects with the work detailed zone, draw zone, and INSEE zone (only checked if the zones are known).
- If
work_only_at_home
is true, then the value is null.
- If
work_detailed_zone
Identifier of the detailed zone where the person usually works.
- Type: String
- Guarantees:
- If
professional_occupation
is not"worker"
, then the value is null. - The work detailed zone intersects with the work draw zone and INSEE zone (only checked if the zones are known).
- If
work_only_at_home
is true, then the value is null.
- If
work_draw_zone
Identifier of the draw zone where the person usually works.
- Type: String
- Guarantees:
- If
professional_occupation
is not"worker"
, then the value is null. - The work draw zone intersects with the work INSEE zone (only checked if the zones are known).
- If
work_only_at_home
is true, then the value is null.
- If
work_insee
INSEE code of the municipality where the person usually works.
- Type: String
- Guarantees:
- If
professional_occupation
is not"worker"
, then the value is null. - String is a valid INSEE code.
- If
work_only_at_home
is true, then the value is null.
- If
work_insee_name
Name of the municipality where the person usually works.
- Type: String
- Guarantees:
- If
professional_occupation
is not"worker"
, then the value is null.
- If
work_dep
Département code of the usual workplace.
- Type: String
- Guarantees:
- The value is a valid département code.
- If
work_insee
is not null, then the value is equal to the département of the work INSEE municipality.
work_dep_name
Name of the département of the usual workplace.
- Type: String
- Guarantees:
- The value is consistent with
work_dep
.
- The value is consistent with
work_nuts2
NUTS 2 code of the usual workplace.
In France, NUTS 2 corresponds to the 22 old administrative regions (and 5 overseas departments).
- Type: String
- Guarantees:
- The value is a valid NUTS 2 code.
- If
work_dep
is not null, then the value is equal to the NUTS 2 code corresponding to the work département.
work_nuts2_name
Name of the NUTS 2 region of the usual workplace.
- Type: String
- Guarantees:
- The value is consistent with
work_nuts2
.
- The value is consistent with
work_nuts1
NUTS 1 code of the usual workplace.
In France, NUTS 1 corresponds to the 13 administrative regions (and 1 overseas region).
- Type: String
- Guarantees:
- The value is a valid NUTS 1 code.
- If
work_nuts2
is not null, then the value is equal to the NUTS 1 code corresponding to the work NUTS 2.
work_nuts1_name
Name of the NUTS 1 region of the usual workplace.
- Type: String
- Guarantees:
- The value is consistent with
work_nuts1
.
- The value is consistent with
Work commute
work_commute_euclidean_distance_km
Euclidean distance, in kilometers, between the person’s home location and usual work location.
- Type: Float64
- Guarantees:
- All values are non-negative.
- If
professional_occupation
is not"worker"
, then the value is null. - If
work_only_at_home
is false, then the value is zero.
has_car_for_work_commute
Whether the person has a car they can use to commute to work.
- Modalities:
"yes:full_commute"
: the person has a car that they use for the full trip"yes:partial_commute"
: the person has a car that they use for a part of the trip"yes:not_used"
: the person has a car that they could use to commute to work but they do not"yes:partial_or_not_used"
: the person has a car but it is not used or only for a part of the trip"yes:full_or_partial"
: the person has a car that they use partially or fully to commute to work"no"
: no
- Guarantees:
- If
professional_occupation
is not"worker"
, then the value is null. - If
work_only_at_home
is true, then the value is null.
- If
telework
Whether and frequency at which the person teleworks.
Note that persons who reported to only work at home (e.g., many farmers) are not considered to be telework each day (the value is null for them).
- Modalities:
"yes:weekly"
: the person teleworks at least once a week"yes:monthly"
: the person teleworks at least once a month"yes:occasionally"
: the person teleworks but only occasionally (less than once a month)"no"
: the person never telework
- Guarantees:
- If
professional_occupation
is not"worker"
, then the value is null. - If
work_only_at_home
is true, then the value is null.
- If
Workplace parking
work_car_parking
Whether the person has access to a car parking spot at the usual work location.
- Modalities:
"yes:reserved"
: the person has (or could have) a reserved car spot at work"yes:many_spots"
: the person can park their car at work because they are many spots available"yes:compatible_schedule"
: the person can park their car at work because their work schedule allow them to easily find spots"yes:unspecified"
: the person can park their car at work (no further specification)"no"
: the person cannot park their car at work"dont_know"
: the person does not know whether they can park their car at work
- Guarantees:
- If
professional_occupation
is not"worker"
, then the value is null. - If
work_only_at_home
is true, then the value is null.
- If
work_bicycle_parking
Whether the person has access to a bicycle parking spot at the usual work location.
- Modalities:
"yes:on_site:sheltered"
: the person has access to a sheltered bicycle parking at workplace"yes:on_site:unsheltered"
: the person has access to an unsheltered bicycle parking at workplace"yes:on_site"
: the person has access to a bicycle parking at workplace (unknown whether it is sheltered)"yes:nearby:sheltered"
: the person has access to a sheltered bicycle parking nearby work"yes:nearby:unsheltered"
: the person has access to an unsheltered bicycle parking nearby work"yes:nearby"
: the person has access to a bicycle parking nearby work (unknown whether it is sheltered)"no"
: the person does not have access to a bicycle parking at workplace or nearby work"no_answer"
: the person did not answer that question
- Guarantees:
- If
professional_occupation
is not"worker"
, then the value is null. - If
work_only_at_home
is true, then the value is null.
- If
Student status
student_group
Group indicating the current education level for students.
- Modalities:
"primaire"
: “maternelle” or primary school"collège"
: middle-school"lycée"
: high-school"supérieur"
: higher education
- Guarantees:
- If
professional_occupation
is not"student"
, then the value is null. - The values are consistent with
detailed_professional_occupation
("student:higher"
implies"supérieur"
;"student:primary_or_secondary"
implies"primaire"
,"collège"
, or"lycée"
;"student:apprenticeship"
implies"lycée"
or"supérieur"
).
- If
student_category
Category indicating the detailed current education level for students.
- Modalities:
"maternelle"
"primaire"
: “école primaire” excluding “maternelle”"collège:6e"
"collège:5e"
"collège:4e"
"collège:3e"
"collège:SEGPA"
"lycée:seconde"
"lycée:première"
"lycée:terminale"
"lycée:CAP"
: “lycée professionelle ou CFA, préparation du CAP”"supérieur:technique"
: “IUT / BTS”"supérieur:prépa1"
: “Classe préparatoire, première année”"supérieur:prépa2"
: “Classe préparatoire, deuxième année”"supérieur:BAC+1"
: Other higher education training, “niveau BAC+1”"supérieur:BAC+2"
: Other higher education training, “niveau BAC+2”"supérieur:BAC+3"
: Other higher education training, “niveau BAC+3”"supérieur:BAC+4"
: Other higher education training, “niveau BAC+4”"supérieur:BAC+5"
: Other higher education training, “niveau BAC+5”"supérieur:BAC+6&+"
: Other higher education training, “niveau BAC+6 et plus”
- Guarantees:
- If
professional_occupation
is not"student"
, then the value is null. - The values are consistent with
student_group
(e.g., ifstudent_category
is"collège:6e"
, thenstudent_group
is"collège"
).
- If
Study location
study_only_at_home
Whether the person studies only at home.
- Type: Boolean
- Guarantees:
- If
professional_occupation
is not"student"
, then the value is null.
- If
study_lng
Longitude of the usual study location.
The accuracy depends on the survey type.
For EGT surveys, the coordinates are guaranteed to be within 100 meters of the actual location.
For other surveys, the coordinates represent the centroid of study_detailed_zone
(or the exact
coordinates defined by study_special_location
when it is non-null).
- Type: Float64
study_lat
Latitude of the usual study_location.
See study_lng
for details on the accuracy of the value.
- Type: Float64
study_special_location
Identifier of the special location zone where the person usually studies.
- Type: String
- Guarantees:
- If
professional_occupation
is not"student"
, then the value is null. - The study special location intersects with the study detailed zone, draw zone, and INSEE zone (only checked if the zones are known).
- If
study_only_at_home
is true, then the value is null.
- If
study_detailed_zone
Identifier of the detailed zone where the person usually studies.
- Type: String
- Guarantees:
- If
professional_occupation
is not"student"
, then the value is null. - The study detailed zone intersects with the study draw zone and INSEE zone (only checked if the zones are known).
- If
study_only_at_home
is true, then the value is null.
- If
study_draw_zone
Identifier of the draw zone where the person usually studies.
- Type: String
- Guarantees:
- If
professional_occupation
is not"student"
, then the value is null. - The study draw zone intersects with the study INSEE zone (only checked if the zones are known).
- If
study_only_at_home
is true, then the value is null.
- If
study_insee
INSEE code of the municipality where the person usually studies.
- Type: String
- Guarantees:
- If
professional_occupation
is not"student"
, then the value is null. - String is a valid INSEE code.
- If
study_only_at_home
is true, then the value is null.
- If
study_insee_name
Name of the municipality where the person usually studies.
- Type: String
- Guarantees:
- If
professional_occupation
is not"student"
, then the value is null.
- If
study_dep
Département code of the usual study location.
- Type: String
- Guarantees:
- The value is a valid département code.
- If
study_insee
is not null, then the value is equal to the département of the study INSEE municipality.
study_dep_name
Name of the département of the usual study location.
- Type: String
- Guarantees:
- The value is consistent with
study_dep
.
- The value is consistent with
study_nuts2
NUTS 2 code of the usual study location.
In France, NUTS 2 corresponds to the 22 old administrative regions (and 5 overseas departments).
- Type: String
- Guarantees:
- The value is a valid NUTS 2 code.
- If
study_dep
is not null, then the value is equal to the NUTS 2 code corresponding to the study département.
study_nuts2_name
Name of the NUTS 2 region of the usual study location.
- Type: String
- Guarantees:
- The value is consistent with
study_nuts2
.
- The value is consistent with
study_nuts1
NUTS 1 code of the usual study location.
In France, NUTS 1 corresponds to the 13 administrative regions (and 1 overseas region).
- Type: String
- Guarantees:
- The value is a valid NUTS 1 code.
- If
study_nuts2
is not null, then the value is equal to the NUTS 1 code corresponding to the study NUTS 2.
study_nuts1_name
Name of the NUTS 1 region of the usual study location.
- Type: String
- Guarantees:
- The value is consistent with
study_nuts1
.
- The value is consistent with
Study commute
study_commute_euclidean_distance_km
Euclidean distance, in kilometers, between the person’s home location and usual study location.
- Type: Float64
- Guarantees:
- All values are non-negative.
- If
professional_occupation
is not"student"
, then the value is null. - If
study_only_at_home
is false, then the value is zero.
has_car_for_study_commute
Whether the person has a car they can use to commute to study.
- Modalities:
"yes:full_commute"
: the person has a car that they use for the full trip"yes:partial_commute"
: the person has a car that they use for a part of the trip"yes:not_used"
: the person has a car that they could use to commute to study but they do not"yes:partial_or_not_used"
: the person has a car but it is not used or only for a part of the trip"yes:full_or_partial"
: the person has a car that they use partially or fully to commute to study"no"
: no
- Guarantees:
- If
professional_occupation
is not"student"
, then the value is null. - If
study_only_at_home
is true, then the value is null.
- If
Study location parking
study_car_parking
Whether the person has access to a car parking spot at the usual study location.
- Modalities:
"yes:reserved"
: the person has (or could have) a reserved car spot at study"yes:many_spots"
: the person can park their car at study because they are many spots available"yes:compatible_schedule"
: the person can park their car at study because their study schedule allow them to easily find spots"no"
: the person cannot park their car at study"dont_know"
: the person does not know whether they can park their car at study
- Guarantees:
- If
professional_occupation
is not"student"
, then the value is null. - If
study_only_at_home
is true, then the value is null.
- If
study_bicycle_parking
Whether the person has access to a bicycle parking spot at the usual study location.
- Modalities:
"yes:on_site:sheltered"
: the person has access to a sheltered bicycle parking at study location"yes:on_site:unsheltered"
: the person has access to an unsheltered bicycle parking at study location"yes:on_site"
: the person has access to a bicycle parking at study location (unknown whether it is sheltered)"yes:nearby:sheltered"
: the person has access to a sheltered bicycle parking nearby study location"yes:nearby:unsheltered"
: the person has access to an unsheltered bicycle parking nearby study location"yes:nearby"
: the person has access to a bicycle parking nearby study location (unknown whether it is sheltered)"no"
: the person does not have access to a bicycle parking at or near study location"no_answer"
: the person did not answer that question
- Guarantees:
- If
professional_occupation
is not"student"
, then the value is null. - If
study_only_at_home
is true, then the value is null.
- If
Mobility
has_driving_license
Whether the person has a driving license (for car vehicles).
- Modalities:
"yes"
: the person has a driving license"no"
: the person does not have a driving license"in_progress"
: the person is taking driving lessons or learning through accompanied driving (“conduite accompagnée”)
- Guarantees:
- If the value is
"yes"
, then the person is not younger than 17. - If the value is
"in_progress"
, then the person is not younger than 15.
- If the value is
has_motorcycle_driving_license
Whether the person has a driving license for motorcycles.
- Modalities:
"yes"
: the person has a driving license for motorcycles"no"
: the person does not have a driving license for motorcycles"in_progress"
: the person is taking driving lessons
- Guarantees:
- If the value is
"yes"
, then the person is not younger than 17. - If the value is
"in_progress"
, then the person is not younger than 15.
- If the value is
has_public_transit_subscription
Whether the person owns a valid public-transit subscription.
Usually, the question asked is “did you have a valid public-transit subscription yesterday?” which means that the subscription was valid during the person’s surveyed trips.
- Type: Boolean
public_transit_subscription
Type of public-transit subscription that the person owns.
- Modalities:
"yes:free"
: the person owns a free public-transit subscription"yes:paid:with_employer_contribution"
, the person owns a paid public-transit subscription that is partially borne by the employer"yes:paid:without_employer_contribution"
, the person owns a paid public-transit subscription that is not borne by the employer"yes:paid"
: the person owns a paid public-transit subscription (with unspecified cost bearing)"yes:unspecified"
: the person owns a public-transit subscription with unspecified cost)"no"
: the person does not own a public-transit subscription
- Guarantees:
- The values are consistent with
has_public_transit_subscription
.
- The values are consistent with
has_car_sharing_subscription
Whether the person has a subscription for a car-sharing service (“autopartage”).
- Type: Boolean
car_sharing_subscription
Type of car-sharing service subscription that the person has.
- Modalities:
"yes:organized"
: the person has a car-sharing subscription for a short-term rental service proposed by a firm or a public organization (e.g., Citiz)"yes:peer_to_peer"
: the person has a car-sharing subscription for a peer-to-peer service (“partage entre particuliers”)"yes:unspecified"
: the person has a car-sharing subscription (no further details)"no"
: the person does not have a car-sharing subscription
- Guarantees:
- The values are consistent with
has_car_sharing_subscription
.
- The values are consistent with
has_bike_sharing_subscription
Whether the person has a subscription for a bike-sharing service (“vélo libre service”).
- Type: Boolean
has_travel_inconvenience
Whether the person has reported having travel inconveniences (e.g., wheelchair, blindness, pregnancy).
- Type: Boolean
Trip survey
is_surveyed
Whether the person was surveyed for their trips over a day (usually the previous day of the interview).
Note that a surveyed person might have no trip if they did not travel during that day.
- Type: Boolean
- Guarantees:
- The value is not null.
- When set to
false
, there is no trip and leg for this person.
traveled_during_surveyed_day
Whether the person performed at least one trip during the surveyed day (usually the day before the interview).
- Modalities:
"yes"
: the person did at least one trip"no"
: the person did not travel"away"
: the person was away from home during that day
- Guarantees:
- The value is null if and only if
is_surveyed
is false. - There is at least one trip defined for this person if the value is
"yes"
. - There is no trip defined for this person if the value is
"no"
or"away"
.
- The value is null if and only if
worked_during_surveyed_day
Whether the person worked during the surveyd day (usually the day before the interview).
- Modalities:
"yes:outside"
: the person worked outside from home"yes:home:usual"
: the person worked from home, as usual"yes:home:telework"
: the person teleworked"yes:home:other"
: the person worked from home for another reason than telework"yes:unspecified"
: the person worked (with no specification where)"no:weekday"
: the person never work during that weekday"no:reason"
: the person did not work exceptionally due to holidays, sickness, strike, or any other reason"no:unspecified"
: the person did not work, for unspecified reason
- Guarantees:
- If
professional_occupation
is not"worker"
, then the value is null. - If the value is
"yes:home:usual"
, thenwork_only_at_home
must be true. - If the value is
"no:weekday"
, then there is not trip with work purpose for that person (for"no:reason"
and"no:unspecified"
it might happen that the person went to work and realised that they could not work because of a strike for example). - If the value is
"yes:outside"
andis_surveyed
is true, then there is at least one trip with work purpose for that person.
- If
nb_trips
Number of trips that the person performed.
- Type: UInt8
- Guarantees:
- The value is null if and only if
is_surveyed
is false. - The value is equal to the number of trips in
trips.parquet
for the person. - If
traveled_during_surveyed_day
is"no"
or"away"
, then the value is zero. - If
traveled_during_surveyed_day
is"yes"
, then the value is positive.
- The value is null if and only if
Sample weights
sample_weight_all
Sample weight of the person among all the persons interviewed.
The sum of the values is supposed to be approximately equal to the number of persons in the survey area.
- Type: Float64
- Guarantees:
- The value is non-negative.
sample_weight_surveyed
Sample weight of the person among all the persons whose trips were surveyed.
The sum of the values is supposed to be approximately equal to the number of persons in the survey
area.
Note that the sum of sample_weight_surveyed
might differ from the sum of sample_weight_all
because the former usually excludes children below 5.
- Type: Float64
- Guarantees:
- The value is non-negative.
- If
is_surveyed
is false, then the value is null.
Trips
Sort order: trip_id
Indexing
trip_id
Unique identifier of the trip.
- Type: UInt32
- Guarantees:
- Values range from 1 to the number of trips.
person_id
Identifier of the person that performed the trip.
- Type: UInt32
- Guarantees:
- There exists a person with this
person_id
. - The value is not null.
- There exists a person with this
household_id
Identifier of the household of the person that performed the trip.
- Type: UInt32
- Guarantees:
- The value is not null.
- The value is equal to the
household_id
value of the person with idperson_id
.
trip_index
Index of the trip among the person’s trips.
Trips with smaller index are performed first.
- Type: UInt8
- Guarantees:
- Values are unique within a person and range from 1 to the number of trips performed by that person.
- The value is not null.
first_trip
Whether the trip is the first one of the person.
- Type: Boolean
- Guarantees:
- The value is not null.
- The value is
true
if and only iftrip_index
is 1.
last_trip
Whether the trip is the last one of the person.
- Type: Boolean
- Guarantees:
- The value is not null.
- The value is
true
if and only iftrip_index
is equal to the number of trips for this person.
home_sequence_index
The cumulative number of times that the person has started a trip from their home over the course of a day.
This variable is designed to identify sequences of trips that begin and end at home (“home-based tours”).
The value starts at 0 and increments by 1 each time a trip begins with
origin_purpose_group == "home"
.
Examples:
-
Trips:
home → work
→work → home
home_sequence_index
: 1, 1(One tour starting and ending at home.)
-
Trips:
home → work
→work → home
→home → leisure
→leisure → home
home_sequence_index
: 1, 1, 2, 2(Two distinct tours, both home-based.)
-
Trips:
work → home
→home → work
home_sequence_index
: 0, 1(The value is 0 if the first trip of the day is not from home.)
- Type: UInt8
- Guarantees:
- The value is equal to the cumulative number of times that the trip’s origin purpose group is
"home"
, over a person’s trips.
- The value is equal to the cumulative number of times that the trip’s origin purpose group is
original_trip_id
Identifier of the trip in the original data.
- Type: Struct whose fields depend on the survey
Purpose
origin_purpose
Purpose of the activity performed at the trip’s origin.
- Modalities:
"home:main"
: the person is at their usual home location"home:secondary"
: the person is at a secondary home"work:declared"
: the person is working at the usual workplace"work:telework"
: the person is working from home"work:secondary"
: the person is working at a secondary workplace"work:business_meal"
: the person is having a meal in a business context"work:other"
: the person is working at another place"work:professional_tour"
: the person is doing trips for a professional tour (“tournée professionnelle”)"education:childcare"
: the person (child) is at a daycare / nursery school"education:declared"
: the person is studying at their usual study location"education:other"
: the person is studying at a different location"shopping:daily"
: the person is shopping for daily needs (e.g., bread, newspaper)"shopping:weekly"
: the person is shopping for daily needs (e.g., groceries)"shopping:specialized"
: the person is shopping for occasional needs (e.g., bookstore, clothing)"shopping:mall"
: the person is doing shopping in a mall (“centre commercial”)"shopping:large_store"
: the person is doing shopping in a large store (“supermarché”, “hypermarché”)"shopping:small_store"
: the person is doing shopping in a small store (“petit et moyen commerce”)"shopping:market"
: the person is doing shopping in a market (“marché”)"shopping:pickup"
: the person is picking up purchases from online shopping (“drive”, “point relais”)"shopping:no_purchase"
: the person is visiting a store without doing any purchase"shopping:tour_no_purchase"
: the person is doing a tour of stores with buying anything"task:healthcare:hospital"
: the person is at a hospital for healthcare reasons"task:healthcare:doctor"
: the person is at a medical appointment (not in a hospital)"task:healthcare"
: other healthcare-related activities"task:procedure"
: the person is doing an administrative procedure or other procedure (apart from finding a job)"task:job_search"
: the person is finding a job"task:other"
: other task activity"leisure:sport_or_culture"
: the person is involved in sport, cultural, or associative activity"leisure:walk_or_driving_lesson"
: the person is doing a walk (“promenade”) or taking driving lessons"leisure:lunch_break"
: the person is having lunch before / after work"leisure:restaurant"
: the person is having diner outside home"leisure:visiting"
: the person is visiting relatives, friends, or any other person"leisure:visiting:parents"
: the person is visiting relatives"leisure:visiting:friends"
: the person is visiting friends"leisure:other"
: other leisure activity"escort:activity:drop_off"
: the person is dropping off someone to an activity"escort:activity:pick_up"
: the person is picking up someone from an activity"escort:transport:drop_off"
: the person is dropping off someone to a transportation mode"escort:transport:pick_up"
: the person is picking up someone from a transportation mode"escort:unspecified:drop_off"
: the person is dropping off someone (either to an activity or a transportation mode)"escort:unspecified:pick_up"
: the person is picking up someone (either from an activity or a transportation mode)"other"
: other purpose not in the list
- Guarantees:
- If the person’s
professional_occupation
is not"worker"
, then the purpose is not"work:declared"
- If the person’s
professional_occupation
is not"student"
, then the purpose is not"education:primary"
,"education:middle_school"
,"education:high_school"
, or"education:higher"
.
- If the person’s
origin_purpose_group
Purpose group of the activity performed at the trip’s origin.
- Modalities:
"home"
"work"
"education"
"shopping"
"task"
"leisure"
"escort"
"other"
- Guarantees:
- The values are consistent with
origin_purpose
. - If
origin_purpose
is not null, then the value is not null.
- The values are consistent with
origin_activity_duration
Duration of the activity performed at the trip’s origin, in minutes.
If this is the first trip of the day, the value is null. Otherwise, the value is equal to the difference between the departure time of this trip and the arrival time of the previous trip.
- Type: UInt16
- Guarantees:
- If
first_trip
istrue
, then the value is null. - The value is equal to the difference between
departure_time
for the current trip andarrival_time
for the previous trip.
- If
destination_purpose
Purpose of the activity performed at the trip’s destination.
Note that in most cases, the destination purpose should be equal to the origin purpose of the next trip (if any). Rare exceptions can occur when someone is moving to a different location while the activity is performed (e.g., for bus drivers). MobiSurvStd will show warning messages indicating how many trips does not match the constraint.
- Modalities:
- Same modalities as
origin_purpose
.
- Same modalities as
- Guarantees:
- Same guarantees as
origin_purpose
.
- Same guarantees as
destination_purpose_group
Purpose group of the activity performed at the trip’s destination.
- Modalities:
"home"
"work"
"education"
"shopping"
"task"
"leisure"
"escort"
"other"
- Guarantees:
- The values are consistent with
destination_purpose
. - If
destination_purpose
is not null, then the value is not null.
- The values are consistent with
destination_activity_duration
Duration of the activity performed at the trip’s destination, in minutes.
If this is the last trip of the day, the value is null.
Otherwise, the value is equal to the difference between the arrival time of the next trip and the
departure time of this trip (i.e., it is equal to the origin_activity_duration
value of the next
trip).
- Type: UInt16
- Guarantees:
- If
last_trip
istrue
, then the value is null. - The value is equal to the difference between
departure_time
for the next trip andarrival_time
for the current trip.
- If
Escorting
origin_escort_purpose
Purpose of the activity performed at the trip’s origin by the person who is escorted.
- Modalities:
- Same modalities as
origin_purpose
, excluding all the"escort:*"
purposes.
- Same modalities as
- Guarantees:
- If
origin_purpose_group
is not"escort"
, then the value is null.
- If
origin_escort_purpose_group
Purpose group of the activity performed at the trip’s origin by the person who is escorted.
- Modalities:
"home"
"work"
"education"
"shopping"
"task"
"leisure"
"other"
- Guarantees:
- The values are consistent with
origin_escort_purpose
.
- The values are consistent with
destination_escort_purpose
Purpose of the activity performed at the trip’s destination by the person who is escorted.
Note that in most cases, the destination escort purpose should be equal to the origin escort purpose of the next trip (if any). Rare exceptions can occur when someone is moving to a different location while the activity is performed (e.g., for bus drivers). MobiSurvStd will show warning messages indicating how many trips does not match the constraint.
- Modalities:
- Same modalities as
origin_purpose
, excluding all the"escort:*"
purposes.
- Same modalities as
- Guarantees:
- If
destination_purpose_group
is not"escort"
, then the value is null.
- If
destination_escort_purpose_group
Purpose group of the activity performed at the trip’s destination by the person who is escorted.
- Modalities:
"home"
"work"
"education"
"shopping"
"task"
"leisure"
"other"
- Guarantees:
- The values are consistent with
destination_escort_purpose
.
- The values are consistent with
Origin location
origin_lng
Longitude of the trip’s origin.
The accuracy depends on the survey type.
For EGT surveys, the coordinates are guaranteed to be within 100 meters of the actual location.
For other surveys, the coordinates represent the centroid of origin_detailed_zone
(or the exact
coordinates defined by origin_special_location
when it is non-null).
- Type: Float64
origin_lat
Latitude of the trip’s origin.
See origin_lng
for details on the accuracy of the value.
- Type: Float64
origin_special_location
Identifier of the special location of the trip’s origin.
- Type: UInt8
- Guarantees:
- The origin special location intersects with the origin detailed zone, draw zone, and INSEE zone (only checked if the zones are known).
origin_detailed_zone
Identifier of the detailed zone of the trip’s origin.
- Type: UInt8
- Guarantees:
- The origin detailed zone intersects with the origin draw zone and INSEE zone (only checked if the zones are known).
origin_draw_zone
Identifier of the draw zone of the trip’s origin.
- Type: UInt8
- Guarantees:
- The origin detailed zone intersects with the origin draw zone and INSEE zone (only checked if the zones are known).
origin_insee
INSEE code of the municipality of the trip’s origin.
- Type: String
- Guarantees:
- String is a valid INSEE code.
origin_insee_name
Name of the municipality of the trip’s origin.
- Type: String
origin_insee_density
Density category of the origin INSEE municipality.
Density categories are defined by INSEE.
- Modalities:
1
: “commune densément peuplée”2
: “centre urbain intermédiaire”3
: “ceinture urbaine”4
: “petite ville”5
: “bourg rural”6
: “rural à habitat dispersé”7
: “rural à habitat très dispersé”
origin_insee_aav_type
Category of the origin INSEE municipality within its “aire d’attraction des villes” (AAV).
The modalities follow the codes proposed by INSEE.
- Modalities:
11
: “Commune-centre”12
: “Autre commune du pôle principal”13
: “Commune d’un pôle secondaire”20
: “Commune de la couronne”30
: “Commune hors attraction des villes”
origin_aav
Code of the “aire d’attraction des villes” (AAV) of the trip’s origin.
- Type: String
origin_aav_name
Name of the “aire d’attraction des villes” (AAV) of the trip’s origin.
- Type: String
origin_aav_category
Category of the “aire d’attraction des villes” (AAV) of the trip’s origin.
- Modalities:
1
: Paris AAV2
: area with more than 700,000 inhabitants, excluding Paris (“aire de 700 000 habitants ou plus (hors Paris)”)3
: area between 200,000 and 700,000 inhabitants (“aire de 200 000 à moins de 700 000 habitants”)4
: area between 50,000 and 200,000 inhabitants (“aire de 50 000 à moins de 200 000 habitants”)5
: area with less than 50,000 inhabitants (“aire de moins de 50 000 habitants”)
origin_dep
Département code of the trip’s origin.
- Type: String
- Guarantees:
- The value is a valid département code.
- If
origin_insee
is not null, then the value is equal to the département of the origin INSEE municipality.
origin_dep_name
Name of the département of the trip’s origin.
- Type: String
- Guarantees:
- The value is consistent with
origin_dep
.
- The value is consistent with
origin_nuts2
NUTS 2 code of the trip’s origin.
In France, NUTS 2 corresponds to the 22 old administrative regions (and 5 overseas departments).
- Type: String
- Guarantees:
- The value is a valid NUTS 2 code.
- If
origin_dep
is not null, then the value is equal to the NUTS 2 code corresponding to the origin département.
origin_nuts2_name
Name of the NUTS 2 region of the trip’s origin.
- Type: String
- Guarantees:
- The value is consistent with
origin_nuts2
.
- The value is consistent with
origin_nuts1
NUTS 1 code of the trip’s origin.
In France, NUTS 1 corresponds to the 13 administrative regions (and 1 overseas region).
- Type: String
- Guarantees:
- The value is a valid NUTS 1 code.
- If
origin_nuts2
is not null, then the value is equal to the NUTS 1 code corresponding to the origin NUTS 2.
origin_nuts1_name
Name of the NUTS 1 region of the trip’s origin.
- Type: String
- Guarantees:
- The value is consistent with
origin_nuts1
.
- The value is consistent with
Destination location
destination_lng
Longitude of the trip’s destination.
See origin_lng
for details on the accuracy of the value.
- Type: Float64
destination_lat
Latitude of the trip’s destination.
See origin_lng
for details on the accuracy of the value.
- Type: Float64
destination_special_location
Identifier of the special location of the trip’s destination.
Note that in most cases, the destination special location should be equal to the origin special location of the next trip (if any). Rare exceptions can occur when someone is moving to a different location while the activity is performed (e.g., for bus drivers). MobiSurvStd will show warning messages indicating how many trips does not match the constraint.
- Type: UInt8
- Guarantees:
- The destination special location intersects with the destination detailed zone, draw zone, and INSEE zone (only checked if the zones are known).
destination_detailed_zone
Identifier of the detailed zone of the trip’s destination.
Note that in most cases, the destination detailed zone should be equal to the origin detailed zone of the next trip (if any). Rare exceptions can occur when someone is moving to a different location while the activity is performed (e.g., for bus drivers). MobiSurvStd will show warning messages indicating how many trips does not match the constraint.
- Type: UInt8
- Guarantees:
- The destination detailed zone intersects with the destination draw zone and INSEE zone (only checked if the zones are known).
destination_draw_zone
Identifier of the draw zone of the trip’s destination.
Note that in most cases, the destination draw zone should be equal to the origin draw zone of the next trip (if any). Rare exceptions can occur when someone is moving to a different location while the activity is performed (e.g., for bus drivers). MobiSurvStd will show warning messages indicating how many trips does not match the constraint.
- Type: UInt8
- Guarantees:
- The destination detailed zone intersects with the destination draw zone and INSEE zone (only checked if the zones are known).
destination_insee
INSEE code of the municipality of the trip’s destination.
Note that in most cases, the destination INSEE code should be equal to the origin INSEE code of the next trip (if any). Rare exceptions can occur when someone is moving to a different location while the activity is performed (e.g., for bus drivers). MobiSurvStd will show warning messages indicating how many trips does not match the constraint.
- Type: String
- Guarantees:
- String is a valid INSEE code.
destination_insee_name
Name of the municipality of the trip’s destination.
- Type: String
destination_insee_density
Density category of the destination INSEE municipality.
Density categories are defined by INSEE.
- Modalities:
1
: “commune densément peuplée”2
: “centre urbain intermédiaire”3
: “ceinture urbaine”4
: “petite ville”5
: “bourg rural”6
: “rural à habitat dispersé”7
: “rural à habitat très dispersé”
destination_insee_aav_type
Category of the destination INSEE municipality within its “aire d’attraction des villes” (AAV).
The modalities follow the codes proposed by INSEE.
- Modalities:
11
: “Commune-centre”12
: “Autre commune du pôle principal”13
: “Commune d’un pôle secondaire”20
: “Commune de la couronne”30
: “Commune hors attraction des villes”
destination_aav
Code of the “aire d’attraction des villes” (AAV) of the trip’s destination.
- Type: String
destination_aav_name
Name of the “aire d’attraction des villes” (AAV) of the trip’s destination.
- Type: String
destination_aav_category
Category of the “aire d’attraction des villes” (AAV) of the trip’s destination.
- Modalities:
1
: Paris AAV2
: area with more than 700,000 inhabitants, excluding Paris (“aire de 700 000 habitants ou plus (hors Paris)”)3
: area between 200,000 and 700,000 inhabitants (“aire de 200 000 à moins de 700 000 habitants”)4
: area between 50,000 and 200,000 inhabitants (“aire de 50 000 à moins de 200 000 habitants”)5
: area with less than 50,000 inhabitants (“aire de moins de 50 000 habitants”)
destination_dep
Département code of the trip’s destination.
- Type: String
- Guarantees:
- The value is a valid département code.
- If
destination_insee
is not null, then the value is equal to the département of the destination INSEE municipality.
destination_dep_name
Name of the département of the trip’s destination.
- Type: String
- Guarantees:
- The value is consistent with
destination_dep
.
- The value is consistent with
destination_nuts2
NUTS 2 code of the trip’s destination.
In France, NUTS 2 corresponds to the 22 old administrative regions (and 5 overseas departments).
- Type: String
- Guarantees:
- The value is a valid NUTS 2 code.
- If
destination_dep
is not null, then the value is equal to the NUTS 2 code corresponding to the destination département.
destination_nuts2_name
Name of the NUTS 2 region of the trip’s destination.
- Type: String
- Guarantees:
- The value is consistent with
destination_nuts2
.
- The value is consistent with
destination_nuts1
NUTS 1 code of the trip’s destination.
In France, NUTS 1 corresponds to the 13 administrative regions (and 1 overseas region).
- Type: String
- Guarantees:
- The value is a valid NUTS 1 code.
- If
destination_nuts2
is not null, then the value is equal to the NUTS 1 code corresponding to the destination NUTS 2.
destination_nuts1_name
Name of the NUTS 1 region of the trip’s destination.
- Type: String
- Guarantees:
- The value is consistent with
destination_nuts1
.
- The value is consistent with
Timing
departure_time
Departure time from origin, in number of minutes after midnight.
- Type: UInt16
- Guarantees:
- The value is larger than
departure_time
values of the person’s trips with a smallertrip_index
.
- The value is larger than
arrival_time
Arrival time at destination, in number of minutes after midnight.
- Type: UInt16
- Guarantees:
- The value is not smaller than
departure_time
. - The value is not larger than the
departure_time
values of the next trip (if any).
- The value is not smaller than
travel_time
Travel time of the trip, in minutes.
- Type: UInt16
- Guarantees:
- The value is equal to
arrival_time - departure_time
.
- The value is equal to
trip_date
Date at which the trip took place.
- Type: Date
- Guarantees:
- The value cannot be later than the household’s
interview_date
.
- The value cannot be later than the household’s
trip_weekday
Day of the week when the trip took place.
- Modalities:
"monday"
"tuesday"
"wednesday"
"thursday"
"friday"
"saturday"
"sunday"
- Guarantees:
- The value is consistent with
trip_date
.
- The value is consistent with
Transportation mode
main_mode
Main mode of transportation used for the trip.
In case of intermodality, there is no clear rule how the main mode is defined.
- Modalities:
"walking"
"bicycle:driver"
: driver of a bicycle (traditional or electric)"bicycle:driver:shared"
: driver of a bicycle (traditional or electric) from a shared service"bicycle:driver:traditional"
: driver of a traditional bicycle"bicycle:driver:traditional:shared"
: driver of a traditional bicycle from a shared service"bicycle:driver:electric"
: driver of an electric bicycle"bicycle:driver:electric:shared"
: driver of an electric bicycle from a shared service"bicycle:passenger"
: passenger on a (unspecified) bicycle"motorcycle:driver"
: driver of a motorcycle (unspecified size)"motorcycle:passenger"
: passenger on a motorcycle (unspecified size)"motorcycle:driver:moped"
: driver of a small motorcycle (< 50 cm³)"motorcycle:passenger:moped"
: passenger on a small motorcycle (< 50 cm³)"motorcycle:driver:moto"
: driver of a large motorcycle (≥ 50 cm³)"motorcycle:passenger:moto"
: passenger on a large motorcycle (≥ 50 cm³)"car:driver"
: driver of a car"car:passenger"
: passenger in a car"taxi"
: passenger in a taxi"VTC"
: passenger in a VTC"taxi_or_VTC"
: passenger in a taxi or VTC"public_transit:urban"
: passenger in a (unspecified) public-transit vehicle (in urban context)"public_transit:urban:bus"
: passenger in a bus"public_transit:urban:coach"
: passenger in a coach (“autocar”), excluding long-distance trips"public_transit:urban:tram"
: passenger in a tramway"public_transit:urban:metro"
: passenger in a metro"public_transit:urban:rail"
: passenger in an express rail service (e.g., RER)"public_transit:urban:TER"
: passenger in a TER"public_transit:urban:demand_responsive"
: passenger in a demand-responsive service"public_transit:interurban:coach"
: passenger in an interurban coach (“autocar”)"public_transit:interurban:TGV"
: passenger in a TGV"public_transit:interurban:intercités"
: passenger in an Intercités"public_transit:interurban:other_train"
: passenger in another train type"public_transit:school"
: passenger in a school transport line (“ramassage scolaire”)"reduced_mobility_transport"
: passenger in a specialized transport for persons with reduced mobility"employer_transport"
: passenger in a transport service provided by the employer"truck:driver"
: driver of a truck (“fourgon”, “camionnette”, “camion”)"truck:passenger"
: passenger of a truck (“fourgon”, “camionnette”, “camion”)"water_transport"
: waterway or maritime transport"airplane"
"wheelchair"
"personal_transporter:non_motorized"
: non-motorized personal transporter (“trottinette”, “skateboard”, “roller”, etc.)"personal_transporter:motorized"
: motorized personal transporter (“trottinette électrique”, “segway”, “solowheel”, etc.)"personal_transporter:unspecified"
: personal transporter (unspecified motorization)"other"
: other transport mode
- Guarantees:
- There is at least one leg with that mode for the trip.
main_mode_group
Mode group of the main mode of transportation used for the trip.
- Modalities:
"walking"
: walking, excluding wheelchair and personal transporter"bicycle"
: bicycle (traditional or electric, driver or passenger, personal or shared)"motorcycle"
: motorcycle (small and large, driver or passenger)"car_driver"
: car as a driver"car_passenger"
: car as a passenger (including taxi and VTC)"public_transit"
: any form of public transit (excluding employer transport)"other"
: all other modes
- Guarantees:
- The values are consistent with
main_mode
.
- The values are consistent with
intermodality
Whether the trip involved using two different modes of transportation.
Note that combining walking with another transportation mode is not classified as intermodality and combining various public-transit modes (e.g., bus then metro) is not either.
- Type: Boolean
- Guarantees:
- If the value is
true
, then there is at least two legs with differentmode_group
(excluding walking legs).
- If the value is
public_transit_access_mode
Mode of transportation used for the access part of the trip (for public-transit trip).
- Modalities:
- Same modalities as
main_mode
(excluding all public-transit modes).
- Same modalities as
- Guarantees:
- If
main_mode_group
is not"public_transit"
, then the value is null. - The value is equal to the
mode
of the first leg of the trip.
- If
public_transit_access_mode_group
Mode group of the transportation mode used for the access part of the trip (for public-transit trip).
- Modalities:
- Same modalities as
main_mode_group
(excluding"public_transit"
).
- Same modalities as
- Guarantees:
- If
main_mode_group
is not"public_transit"
, then the value is null. - The value is consistent with
public_transit_access_mode
.
- If
public_transit_egress_mode
Mode of transportation used for the egress part of the trip (for public-transit trip).
- Modalities:
- Same modalities as
main_mode
(excluding all public-transit modes).
- Same modalities as
- Guarantees:
- If
main_mode_group
is not"public_transit"
, then the value is null. - The value is equal to the
mode
of the last leg of the trip.
- If
public_transit_egress_mode_group
Mode group of the transportation mode used for the egress part of the trip (for public-transit trip).
- Modalities:
- Same modalities as
main_mode_group
(excluding"public_transit"
).
- Same modalities as
- Guarantees:
- If
main_mode_group
is not"public_transit"
, then the value is null. - The value is consistent with
public_transit_egress_mode
.
- If
Distances
trip_euclidean_distance_km
Euclidean distance between the trip’s origin and destination, in kilometers.
- Type: Float64
- Guarantees:
- All values are non-negative.
trip_travel_distance_km
Travel distance of the trip, in kilometers.
This is usually a distance on the road network. The details regardings how this value is computed depends on the surveys.
- Type: Float64
- Guarantees:
- All values are non-negative.
- The value is not small than
trip_euclidean_distance_km
.
intra_municipality
Whether the INSEE municipality of the trip’s origin is equal to the INSEE municipality of the trip’s destination.
- Type: Boolean
- Guarantees:
- If the value is
true
, thenorigin_insee
is equal todestination_insee
.
- If the value is
intra_aav
Whether the AAV of the trip’s origin is equal to the AAV of the trip’s destination.
- Type: Boolean
- Guarantees:
- If the value is
true
, thenorigin_aav
is equal todestination_aav
.
- If the value is
intra_dep
Whether the département of the trip’s origin is equal to the département of the trip’s destination.
- Type: Boolean
- Guarantees:
- If the value is
true
, thenorigin_dep
is equal todestination_dep
.
- If the value is
trip_perimeter
Perimiter in which the trip is taking place relative to the survey area.
- Modalities:
"internal"
: the trip is starting and ending within the survey area"crossing"
: the trip is either starting or ending within the survey area"external"
: the trip is not starting nor ending within the survey area
- Guarantees:
- The value must be consistent with the trip’s origin and destination (only checked when the zones are known).
Leg / stop counts
nb_tour_stops
Number of stops for trips representing tours.
- Type: UInt8
- Guarantees:
- If neither
origin_purpose
nordestination_purpose
is"work:professional_tour"
or"shopping:tour_no_purchase"
, then the value is null.
- If neither
nb_legs
Number of legs that this trip is composed of.
- Type: UInt8
- Guarantees:
- The value is not null.
- The value is positive.
- The value is equal to the number of legs in
legs.parquet
for that trip.
nb_legs_walking
Number of legs with mode group "walking"
in the trip.
- Type: UInt8
- Guarantees:
- The value is not null.
- The value is equal to the number of legs in the trip whose
mode_group
is"walking"
.
nb_legs_bicycle
Number of legs with mode group "bicycle"
in the trip.
- Type: UInt8
- Guarantees:
- The value is not null.
- The value is equal to the number of legs in the trip whose
mode_group
is"bicycle"
.
nb_legs_motorcycle
Number of legs with mode group "motorcycle"
in the trip.
- Type: UInt8
- Guarantees:
- The value is not null.
- The value is equal to the number of legs in the trip whose
mode_group
is"motorcycle"
.
nb_legs_car_driver
Number of legs with mode group "car_driver"
in the trip.
- Type: UInt8
- Guarantees:
- The value is not null.
- The value is equal to the number of legs in the trip whose
mode_group
is"car_driver"
.
nb_legs_car_passenger
Number of legs with mode group "car_passenger"
in the trip.
- Type: UInt8
- Guarantees:
- The value is not null.
- The value is equal to the number of legs in the trip whose
mode_group
is"car_passenger"
.
nb_legs_public_transit
Number of legs with mode group "public_transit"
in the trip.
For public-transit trips, the number of transfers is thus nb_legs_public_transit - 1
.
- Type: UInt8
- Guarantees:
- The value is not null.
- The value is equal to the number of legs in the trip whose
mode_group
is"public_transit"
.
nb_legs_other
Number of legs with mode group "other"
in the trip.
- Type: UInt8
- Guarantees:
- The value is not null.
- The value is equal to the number of legs in the trip whose
mode_group
is"other"
.
Legs
Sort order: leg_id
Indexing
leg_id
Unique identifier of the leg.
- Type: UInt32
- Guarantees:
- Values range from 1 to the number of legs.
trip_id
Identifier of the trip the leg is a part of.
- Type: UInt32
- Guarantees:
- There exists a trip with this
trip_id
. - The value is not null.
- There exists a trip with this
person_id
Identifier of the person that performed the leg.
- Type: UInt32
- Guarantees:
- The value is not null.
- The value is equal to the
person_id
value of the trip with idtrip_id
.
household_id
Identifier of the household of the person that performed the leg.
- Type: UInt32
- Guarantees:
- The value is not null.
- The value is equal to the
household_id
value of the person with idperson_id
.
leg_index
Index of the leg among the trip’s legs.
Legs with smaller index are performed first.
- Type: UInt8
- Guarantees:
- Values are unique within a trip and range from 1 to the number of legs in that trip.
- The value is not null.
first_leg
Whether the leg is the first one of the trip.
- Type: Boolean
- Guarantees:
- The value is not null.
- The value is
true
if and only ifleg_index
is 1.
last_leg
Whether the leg is the last one of the trip.
- Type: Boolean
- Guarantees:
- The value is not null.
- The value is
true
if and only ifleg_index
is equal to the number of legs in the trip.
original_leg_id
Identifier of the leg in the original data.
- Type: Struct whose fields depend on the survey
Transportation mode
mode
Mode of transportation used to perform the leg.
- Modalities:
- Same modalities as trip’s
main_mode
.
- Same modalities as trip’s
mode_group
Mode group of the mode of transportation used to perform the leg.
- Modalities:
"walking"
: walking, excluding wheelchair and personal transporter"bicycle"
: bicycle (traditional or electric, driver or passenger, personal or shared)"motorcycle"
: motorcycle (small and large, driver or passenger)"car_driver"
: car as a driver"car_passenger"
: car as a passenger (including taxi and VTC)"public_transit"
: any form of public transit (excluding employer transport)"other"
: all other modes
- Guarantees:
- The values are consistent with
mode
.
- The values are consistent with
public_transit_line
Local name of the public-transit line taken, for public-transit legs.
The way public-transit lines’ names are defined depends on the survey type.
- Type: String
- Modalities:
- If
mode_group
is not"public_transit"
, then the value is null.
- If
Start location
start_lng
Longitude of the leg’s start point.
The accuracy depends on the survey type.
For EGT surveys, the coordinates are guaranteed to be within 100 meters of the actual location.
For other surveys, the coordinates represent the centroid of start_detailed_zone
(or the exact
coordinates defined by start_special_location
when it is non-null).
- Type: Float64
start_lat
Latitude of the leg’s start point.
See start_lng
for details on the accuracy of the value.
- Type: Float64
start_special_location
Identifier of the special location corresponding to the leg start point.
- Type: UInt32
- Guarantees:
- The start special location intersects with the start detailed zone, draw zone, and INSEE zone (only checked if the zones are known).
start_detailed_zone
Identifier of the detailed zone corresponding to the leg start point.
- Type: UInt32
- Guarantees:
- The start detailed zone intersects with the start draw zone and INSEE zone (only checked if the zones are known).
start_draw_zone
Identifier of the draw zone corresponding to the leg start point.
- Type: UInt32
- Guarantees:
- The start detailed zone intersects with the start draw zone and INSEE zone (only checked if the zones are known).
start_insee
INSEE code of the municipality corresponding to the leg start point.
- Type: String
- Guarantees:
- String is a valid INSEE code.
start_insee_name
Name of the municipality corresponding to the leg start point.
- Type: String
start_dep
Département code of the leg start point.
- Type: String
- Guarantees:
- The value is a valid département code.
- If
start_insee
is not null, then the value is equal to the département of the start point INSEE municipality.
start_dep_name
Name of the département of the leg start point.
- Type: String
- Guarantees:
- The value is consistent with
start_dep
.
- The value is consistent with
start_nuts2
NUTS 2 code of the leg start point.
In France, NUTS 2 corresponds to the 22 old administrative regions (and 5 overseas departments).
- Type: String
- Guarantees:
- The value is a valid NUTS 2 code.
- If
start_dep
is not null, then the value is equal to the NUTS 2 code corresponding to the start point département.
start_nuts2_name
Name of the NUTS 2 region of the leg start point.
- Type: String
- Guarantees:
- The value is consistent with
start_nuts2
.
- The value is consistent with
start_nuts1
NUTS 1 code of the leg start point.
In France, NUTS 1 corresponds to the 13 administrative regions (and 1 overseas region).
- Type: String
- Guarantees:
- The value is a valid NUTS 1 code.
- If
start_nuts2
is not null, then the value is equal to the NUTS 1 code corresponding to the start point NUTS 2.
start_nuts1_name
Name of the NUTS 1 region of the leg start point.
- Type: String
- Guarantees:
- The value is consistent with
start_nuts1
.
- The value is consistent with
End location
end_lng
Longitude of the leg’s end point.
See start_lng
for details on the accuracy of the value.
- Type: Float64
end_lat
Latitude of the leg’s end point.
See start_lng
for details on the accuracy of the value.
- Type: Float64
end_special_location
Identifier of the special location corresponding to the leg end point.
Note that in most cases, the end special location should be equal to the start special location of the next leg in the trip (if any). Exceptions can occur when two special locations are so closed that the person walked very quickly from one to the other and did not report that as a dedicate leg. MobiSurvStd will show warning messages indicating how many legs does not match the constraint.
- Type: UInt32
- Guarantees:
- The end special location intersects with the end detailed zone, draw zone, and INSEE zone (only checked if the zones are known).
end_detailed_zone
Identifier of the detailed zone corresponding to the leg end point.
- Type: UInt32
- Guarantees:
- The end detailed zone intersects with the end draw zone and INSEE zone (only checked if the zones are known).
- The value is equal to the
start_detailed_zone
of the next leg (if any).
end_draw_zone
Identifier of the draw zone corresponding to the leg end point.
- Type: UInt32
- Guarantees:
- The end detailed zone intersects with the end draw zone and INSEE zone (only checked if the zones are known).
- The value is equal to the
start_draw_zone
of the next leg (if any).
end_insee
INSEE code of the municipality corresponding to the leg end point.
- Type: String
- Guarantees:
- String is a valid INSEE code.
- The value is equal to the
start_insee_zone
of the next leg (if any).
end_insee_name
Name of the municipality corresponding to the leg end point.
- Type: String
end_dep
Département code of the leg end point.
- Type: String
- Guarantees:
- The value is a valid département code.
- If
end_insee
is not null, then the value is equal to the département of the end point INSEE municipality.
end_dep_name
Name of the département of the leg end point.
- Type: String
- Guarantees:
- The value is consistent with
end_dep
.
- The value is consistent with
end_nuts2
NUTS 2 code of the leg end point.
In France, NUTS 2 corresponds to the 22 old administrative regions (and 5 overseas departments).
- Type: String
- Guarantees:
- The value is a valid NUTS 2 code.
- If
end_dep
is not null, then the value is equal to the NUTS 2 code corresponding to the end point département.
end_nuts2_name
Name of the NUTS 2 region of the leg end point.
- Type: String
- Guarantees:
- The value is consistent with
end_nuts2
.
- The value is consistent with
end_nuts1
NUTS 1 code of the leg end point.
In France, NUTS 1 corresponds to the 13 administrative regions (and 1 overseas region).
- Type: String
- Guarantees:
- The value is a valid NUTS 1 code.
- If
end_nuts2
is not null, then the value is equal to the NUTS 1 code corresponding to the end point NUTS 2.
end_nuts1_name
Name of the NUTS 1 region of the leg end point.
- Type: String
- Guarantees:
- The value is consistent with
end_nuts1
.
- The value is consistent with
Time and distance
leg_travel_time
Travel time spent for this leg, in minutes.
Usually, one can expect that the sum of leg_travel_time
for all the legs of a trip is not larger
than the travel_time
value of the trip.
In parctice, that constraint is not always satisfied due to miss-recorded travel times.
MobiSurvStd will show warning messages indicating how many trips does not match the constraint.
- Type: UInt32
- Guarantees:
- The value is positive.
- The sum of
leg_travel_time
for the legs of a trip is not larger than thetravel_time
value of the trip.
leg_euclidean_distance_km
Euclidean distance between the leg’s start and stop points, in kilometers.
- Type: Float64
- Guarantees:
- All values are non-negative.
leg_travel_distance_km
Travel distance of the leg, in kilometers.
This is usually a distance on the road network. The details regardings how this value is computed depends on the surveys.
- Type: Float64
- Guarantees:
- All values are non-negative.
- The value is not small than
leg_euclidean_distance_km
.
Car
car_type
Type of car used for the leg.
- Modalities:
"household"
: the car used for the leg is a car owned by the household, whose characteristics are reported incars.parquet
"other_household"
: the car used for the leg is a car owned by the household, whose characteristics have not been reported."rental"
: the car used for the leg is a rental car (“véhicule de location”)"company"
: the car used for the leg is a car lended by the person’s employer"shared"
: the car used for the leg is a car from a car-sharing service"other"
: other cases
- Guarantees:
- If
mode
is notcar:driver
orcar:passenger
, then the value is null. - If the value is
"other_household"
, then the household must have at least one car whose characteristics are unknown (i.e., household variablenb_cars
is larger than the number of cars with reported characteristics).
- If
car_id
Identifier of the car used to perform the leg.
- Type: UInt32
- Guarantees:
- The value is non-null if and only if
car_type
is"household"
. - There is a car with the corresponding identifier in
cars.parquet
. - The corresponding car is owned by the household of the person who performed the leg.
- The value is non-null if and only if
nolicense_car
Whether the car used for the leg was a no-license car (“voiture sans permis”).
- Type: Boolean
- Guarantees:
- If
mode
is notcar:driver
, then the value is null.
- If
Motorcycle
motorcycle_type
Type of motorcycle used for the leg.
- Modalities:
"household"
: the motorcycle used for the leg is a motorcycle owned by the household, whose characteristics are reported inmotorcycles.parquet
"other_household"
: the motorcycle used for the leg is a motorcycle owned by the household, whose characteristics have not been reported."rental"
: the motorcycle used for the leg is a rental motorcycle (“moto de location”)"company"
: the motorcycle used for the leg is a motorcycle lended by the person’s employer"shared"
: the motorcycle used for the leg is a motorcycle from a motorcycle-sharing service"other"
: other cases
- Guarantees:
- If
mode_group
is notmotorcycle
, then the value is null. - If the value is
"other_household"
, then the household must have at least one motorcycle whose characteristics are unknown (i.e., household variablenb_motorcycles
is larger than the number of motorcycles with reported characteristics).
- If
motorcycle_id
Identifier of the motorcycle used to perform the leg.
- Type: UInt32
- Guarantees:
- The value is non-null if and only if
motorcycle_type
is"household"
. - There is a motorcycle with the corresponding identifier in
motorcycles.parquet
. - The corresponding motorcycle is owned by the household of the person who performed the leg.
- The value is non-null if and only if
Vehicle Occupancy
nb_persons_in_vehicle
Number of persons that were present in the vehicle used.
- Type: UInt8
- Guarantees:
- The value is positive.
- If
mode
does not use a personal vehicle (car, motorcycle, bicycle, truck, personal transporter), then the value is null. - If
mode
is passenger related ("car:passenger"
,"motorcycle:passenger"
, etc.), then the value is at least 2.
nb_majors_in_vehicle
Number of majors (age ≥ 18) that were present in the vehicle used.
- Type: UInt8
- Guarantees:
- If
mode
does not use a personal vehicle (car, motorcycle, bicycle, truck, personal transporter), then the value is null. - The value is not larger than
nb_persons_in_vehicle
. - If the person is major, then the value is at least 1.
- If
nb_minors_in_vehicle
Number of minors (age < 18) that were present in the vehicle used.
- Type: UInt8
- Guarantees:
- If
mode
does not use a personal vehicle (car, motorcycle, bicycle, truck, personal transporter), then the value is null. - The value is not larger than
nb_persons_in_vehicle
. - If
nb_persons_in_vehicle
andnb_majors_in_vehicle
are non-null, then the value isnb_persons_in_vehicle - nb_majors_in_vehicle
. - If the person is minor, then the value is at least 1.
- If
nb_household_members_in_vehicle
Number of persons in the vehicle used that belong to the person’s household.
- Type: UInt8
- Guarantees:
- The value is positive.
- If
mode
does not use a personal vehicle (car, motorcycle, bicycle, truck, personal transporter), then the value is null. - The value is not larger than
nb_persons_in_vehicle
.
nb_non_household_members_in_vehicle
Number of persons in the vehicle used that do not belong to the person’s household.
- Type: UInt8
- Guarantees:
- If
mode
does not use a personal vehicle (car, motorcycle, bicycle, truck, personal transporter), then the value is null. - The value is not larger than
nb_persons_in_vehicle
. - If
nb_persons_in_vehicle
andnb_household_members_in_vehicle
are non-null, then the value isnb_persons_in_vehicle - nb_household_members_in_vehicle
.
- If
in_vehicle_person_ids
Identifiers of the person that were present in the vehicle for this leg.
- Type: List of UInt32
- Guarantees:
- If
mode
does not use a personal vehicle (car, motorcycle, bicycle, truck, personal transporter), then the value is null. - The list includes the id of the current person.
- The number of elements in the list is equal to
nb_household_members_in_vehicle
. - All values are valid ids of persons belonging to the same household as the current person.
- If
Parking
parking_location
Location type where the car was parked at the end of the leg.
- Modalities:
"stop_only"
: the car was only stopped temporarily and not parked"garage"
: the car was parked in a private garage"street"
: the car was parked in the street"parking_lot"
: the car was park in an parking lot (no further specification)"parking_lot:unsheltered"
: the car was park in an unsheltered parking lot"parking_lot:sheltered"
: the car was park in a sheltered parking lot"P+R"
: the car was park in a Park and Ride (P+R)"none"
: TODO"other"
: other parking location
- Guarantees:
- If
mode
does not use a personal vehicle (car, motorcycle, bicycle, truck, personal transporter), then the value is null.
- If
parking_type
Type of parking (paid or free) used to park the car.
- Modalities:
"forbidden"
: the car was parked in a forbidden location"free"
: the car was parked in a free location"paid"
: the car was parked in a paid location, the person paid"paid_by_other"
: the car was parked in a paid location, someone else paid"other"
: other types
- Guarantees:
- If
parking_location
is"stop_only"
,"none"
or null, then the value is null.
- If
parking_search_time
Time spent searching for a parking location, in minutes.
- Type: UInt32
- Guarantees:
- If
mode
does not use a personal vehicle (car, motorcycle, bicycle, truck, personal transporter), then the value is null.
- If
Cars
Sort order: car_id
Indexing
car_id
Unique identifier of the car.
- Type: UInt32
- Guarantees:
- Values range from 1 to the number of cars.
household_id
Identifier of the household which owns that car.
- Type: UInt32
- Guarantees:
- There exists a household with this
household_id
. - The value is not null.
- There exists a household with this
car_index
Index of the car among the household’s cars.
- Type: UInt8
- Guarantees:
- Values are unique within a household and range from 1 to the number of cars (whose characteristics are known) for that household.
- The value is not null.
original_car_id
Identifier of the car in the original data.
- Type: Struct whose fields depend on the survey
Characteristics
type
Type of car / vehicle.
- Modalities:
"passenger_car"
: a standard car (“véhicule de tourisme”)"recreational_car"
: “camping-car” and similar"utility_car"
: “véhicule utilitaire” (usually defined as having a payload larger than 800kg)"license_free_car"
: a car that does not require a driving license to be driven
fuel_type
Fuel type that the car is using.
- Modalities:
"thermic:petrol"
: “essence” (“sans plomb” or “super”)"thermic:diesel"
: “diesel”"thermic:gas"
: “gaz”"electric"
: “électrique”"hybrid:regular"
: “hybride non-rechargeable” (unspecified engine type)"hybrid:regular:petrol"
: “hybride non-rechargeable” (petrol engine)"hybrid:regular:diesel"
: “hybride non-rechargeable” (diesel engine)"hybrid:plug-in"
: “hybride rechargeable”"hybrid:unspecified"
: “hybride” (without additional details)"other"
fuel_type_group
Fuel type of the car in general groups.
- Modalities:
"thermic"
"electric"
"hybrid"
: hybrid car (regular or plug-in)"other"
- Guarantees:
- The value is consistent with
fuel_type
.
- The value is consistent with
year
Year during which the car was used for the first time.
- Type: UInt16
- Guarantees:
- The value is not earlier than 1900.
- The value is not in the future.
tax_horsepower
Tax horsepower of the car (“cheval fiscale CV”).
- Type: UInt16
critair
Crit’Air vignette of the car.
- Modalities:
"E"
: Vignette Crit’Air E"1"
: Vignette Crit’Air 1"2"
: Vignette Crit’Air 2"3"
: Vignette Crit’Air 3"4"
: Vignette Crit’Air 4"5"
: Vignette Crit’Air 5"N"
: Unclassified vehicle
- Guarantees:
- The vignette Crit’Air is compatible with the fuel type and age of the vehicle.
Usage
total_mileage
Total mileage of the car, in kilometers.
Note that, depending on the survey and the respondent, the value might not be very accurate.
- Type: UInt32
total_mileage_lower_bound
Lower bound for the total mileage of the car, in kilometers.
- Type: UInt32
- Guarantees:
- The value is not larger than
total_mileage
.
- The value is not larger than
total_mileage_upper_bound
Upper bound for the total mileage of the car, in kilometers.
- Type: UInt32
- Guarantees:
- The value is not small than
total_mileage_lower_bound
. - The value is not larger than
total_mileage
.
- The value is not small than
annual_mileage
Estimated annual mileage of the car, in kilometers.
Note that, depending on the survey and the respondent, the value might not be very accurate.
- Type: UInt32
annual_mileage_lower_bound
Lower bound for the estimated annual mileage of the car, in kilometers.
- Type: UInt32
- Guarantees:
- The value is not larger than
annual_mileage
.
- The value is not larger than
annual_mileage_upper_bound
Upper bound for the estimated annual mileage of the car, in kilometers.
- Type: UInt32
- Guarantees:
- The value is not small than
annual_mileage_lower_bound
. - The value is not larger than
annual_mileage
.
- The value is not small than
Ownership
ownership
Type of ownership for the car.
- Modalities:
"personal"
: the car is owned by the household"employer:full_availability"
: the car is owned by an employer of a household member and is made available for unlimited used (“voiture de fonction”)"employer:limited_availability"
: the car is owned by an employer of a household member and is made available for limited used (“voiture de service”)"shared"
: the car is shared between multiple households"leasing"
: the car is rented by the household over a long period of time"other"
: other type of ownership
Parking
parking_location
Type of location usually used to park the car overnight.
- Modalities:
"garage"
: the car is parked in a private garage"street"
: the car is parked in the street"parking_lot"
: the car is park in a parking lot"other"
: other parking location
parking_type
Type of parking (paid or free) usually used to park the car overnight.
- Modalities:
"forbidden"
: the car is parked in a forbidden location"free"
: the car is parked in a free location"paid"
: the car is parked in a paid location, the person paies"paid_by_other"
: the car is parked in a paid location, someone else paies"other"
: other types
- Guarantees:
- If
parking_location
is null, then the value is null.
- If
Motorcycles
Sort order: motorcycle_id
Indexing
motorcycle_id
Unique identifier of the motorcycle.
- Type: UInt32
- Guarantees:
- Values range from 1 to the number of motorcycles.
household_id
Identifier of the household which owns that motorcycle.
- Type: UInt32
- Guarantees:
- There exists a household with this
household_id
. - The value is not null.
- There exists a household with this
motorcycle_index
Index of the motorcycle among the household’s motorcycles.
- Type: UInt8
- Guarantees:
- Values are unique within a household and range from 1 to the number of motorcycles (whose characteristics are known) for that household.
- The value is not null.
original_motorcycle_id
Identifier of the motorcycle in the original data.
- Type: Struct whose fields depend on the survey
Characteristics
type
Type of motorcycle.
- Modalities:
"moped"
: small-size motorcycle, usually with limited speed (“cyclomoteur”)"scooter"
"motorbike"
: large-size motorcycle (“moto”)"motorized_tricycle"
: large-size motorcycle with three wheels (“3-roues motorisé”)"other"
: other type of motorcycle
fuel_type
Fuel type that the motorcycle is using.
- Modalities:
"thermic"
"electric"
"other"
year
Year during which the motorcycle was used for the first time.
- Type: UInt16
- Guarantees:
- The value is not earlier than 1900.
- The value is not in the future.
Thermic characteristics
thermic_engine_type
Type of engine for the thermic motorcycle.
- Modalities:
"two_stroke"
: “deux temps”"four_stroke"
: “quatre temps”
- Guarantees:
- If
fuel_type
is not"thermic"
, then the value is null.
- If
cm3_lower_bound
Lower bound for the cubic capacity (“cylindrée”) of the motorcycle in cm³ (for thermic motorcycles).
- Type: UInt16
- Guarantees:
- If
fuel_type
is not"thermic"
, then the value is null.
- If
cm3_upper_bound
Upper bound for the cubic capacity (“cylindrée”) of the motorcycle in cm³ (for thermic motorcycles).
- Type: UInt16
- Guarantees:
- If
fuel_type
is not"thermic"
, then the value is null. - The value is not smaller than
cm3_lower_bound
.
- If
Electric characteristics
kw_lower_bound
Lower bound for the energy power of the motorcycle in kilowatts (for electric motorcycles).
- Type: UInt16
- Guarantees:
- If
fuel_type
is not"electric"
, then the value is null.
- If
kw_upper_bound
Upper bound for the energy power of the motorcycle in kilowatts (for electric motorcycles).
- Type: UInt16
- Guarantees:
- If
fuel_type
is not"electric"
, then the value is null. - The value is not smaller than
kw_lower_bound
.
- If
Usage
annual_mileage
Estimated annual mileage of the motorcycle, in kilometers.
Note that, depending on the survey and the respondent, the value might not be very accurate.
- Type: UInt32
annual_mileage_lower_bound
Lower bound for the estimated annual mileage of the motorcycle, in kilometers.
- Type: UInt32
- Guarantees:
- The value is not larger than
annual_mileage
.
- The value is not larger than
annual_mileage_upper_bound
Upper bound for the estimated annual mileage of the motorcycle, in kilometers.
- Type: UInt32
- Guarantees:
- The value is not small than
annual_mileage_lower_bound
. - The value is not larger than
annual_mileage
.
- The value is not small than
Parking
parking_location
Type of location usually used to park the motorcycle overnight.
- Modalities:
"garage"
: the motorcycle is parked in a private garage"street"
: the motorcycle is parked in the street"parking_lot"
: the motorcycle is park in a parking lot"other"
: other parking location
parking_type
Type of parking (paid or free) usually used to park the motorcycle overnight.
- Modalities:
"forbidden"
: the motorcycle is parked in a forbidden location"free"
: the motorcycle is parked in a free location"paid"
: the motorcycle is parked in a paid location, the person paies"paid_by_other"
: the motorcycle is parked in a paid location, someone else paies"other"
: other types
- Guarantees:
- If
parking_location
is null, then the value is null.
- If