Skip to content
Competition - Everyone Can Learn Python Scholarship
  • AI Chat
  • Code
  • Report
  • Everyone Can Learn Python Scholarship

    1️⃣ Python 🐍 - CO2 Emissions

    Now let's now move on to the competition and challenge.

    📖 Background

    You volunteer for a public policy advocacy organization in Canada, and your colleague asked you to help her draft recommendations for guidelines on CO2 emissions rules.

    After researching emissions data for a wide range of Canadian vehicles, she would like you to investigate which vehicles produce lower emissions.

    💾 The data I

    The data is based on seven years of CO2 emissions data for Canadian vehicles (source):

    • "Make" - The company that manufactures the vehicle.
    • "Model" - The vehicle's model.
    • "Vehicle Class" - Vehicle class by utility, capacity, and weight.
    • "Engine Size(L)" - The engine's displacement in liters.
    • "Cylinders" - The number of cylinders.
    • "Transmission" - The transmission type: A = Automatic, AM = Automatic Manual, AS = Automatic with select shift, AV = Continuously variable, M = Manual, 3 - 10 = the number of gears.
    • "Fuel Type" - The fuel type: X = Regular gasoline, Z = Premium gasoline, D = Diesel, E = Ethanol (E85), N = natural gas.
    • "Fuel Consumption Comb (L/100 km)" - Combined city/highway (55%/45%) fuel consumption in liters per 100 km (L/100 km).
    • "CO2 Emissions(g/km)" - The tailpipe carbon dioxide emissions in grams per kilometer for combined city and highway driving.

    The data comes from the Government of Canada's open data website.

    # Import the pandas and numpy packages
    import pandas as pd
    import numpy as np
    
    # Load the data
    cars = pd.read_csv('data/co2_emissions_canada.csv')
    
    # create numpy arrays
    cars_makes = cars['Make'].to_numpy()
    cars_models = cars['Model'].to_numpy()
    cars_classes = cars['Vehicle Class'].to_numpy()
    cars_engine_sizes = cars['Engine Size(L)'].to_numpy()
    cars_cylinders = cars['Cylinders'].to_numpy()
    cars_transmissions = cars['Transmission'].to_numpy()
    cars_fuel_types = cars['Fuel Type'].to_numpy()
    cars_fuel_consumption = cars['Fuel Consumption Comb (L/100 km)'].to_numpy()
    cars_co2_emissions = cars['CO2 Emissions(g/km)'].to_numpy()
    
    
    def replace_fuel_type(cars):
        #The fuel type: X = Regular gasoline, Z = Premium gasoline, D = Diesel, E = Ethanol (E85), N = natural gas.
        return cars["Fuel Type"].replace('X', 'Regular gasoline').replace('Z', 'Premium gasoline').replace('D', 'Diesel').replace('E', 'Ethanol').replace('N', 'Natural gas')
    
    # Preview the dataframe
    cars
    # Look at the first ten items in the CO2 emissions array
    cars_co2_emissions[:10]

    💪 Challenge I

    Help your colleague gain insights on the type of vehicles that have lower CO2 emissions. Include:

    1. What is the median engine size in liters?
    2. What is the average fuel consumption for regular gasoline (Fuel Type = X), premium gasoline (Z), ethanol (E), and diesel (D)?
    3. What is the correlation between fuel consumption and CO2 emissions?
    4. Which vehicle class has lower average CO2 emissions, 'SUV - SMALL' or 'MID-SIZE'?
    5. What are the average CO2 emissions for all vehicles? For vehicles with an engine size of 2.0 liters or smaller?
    6. Any other insights you found during your analysis?
    cars_sort_by_emission = cars.sort_values(by='CO2 Emissions(g/km)', ascending = True)

    1. What is the median engine size in liters?

    import numpy
    print(str(numpy.median(cars_engine_sizes)) + "L.")

    2. What is the average fuel consumption for regular gasoline (Fuel Type = X), premium gasoline (Z), ethanol (E), and diesel (D)?

    cars_by_fuel_type = cars[cars["Fuel Type"]!="N"].groupby(by="Fuel Type")["Fuel Consumption Comb (L/100 km)"].mean()
    pd.DataFrame(cars_by_fuel_type).sort_values(by="Fuel Consumption Comb (L/100 km)", ascending=True)

    3. What is the correlation between fuel consumption and CO2 emissions?

    print("The correlation between fuel consumption and emissions is " + str(np.round(cars["Fuel Consumption Comb (L/100 km)"].corr(cars["CO2 Emissions(g/km)"]), 2)))

    As we could expect, based on current fuel types, there is a direct impact in the CO2 emissions related to fuel consumption. The more fuel consumed, the more CO2 emissions.

    4. Which vehicle class has lower average CO2 emissions, 'SUV - SMALL' or 'MID-SIZE'?