In [5]:
import csv

%precision 2

with open('mpg.csv') as csvfile:
    mpg = list(csv.DictReader(csvfile))
    
mpg[:3] # The first three dictionaries in our list.


Out[5]:
[{'': '1',
  'class': 'compact',
  'cty': '18',
  'cyl': '4',
  'displ': '1.8',
  'drv': 'f',
  'fl': 'p',
  'hwy': '29',
  'manufacturer': 'audi',
  'model': 'a4',
  'trans': 'auto(l5)',
  'year': '1999'},
 {'': '2',
  'class': 'compact',
  'cty': '21',
  'cyl': '4',
  'displ': '1.8',
  'drv': 'f',
  'fl': 'p',
  'hwy': '29',
  'manufacturer': 'audi',
  'model': 'a4',
  'trans': 'manual(m5)',
  'year': '1999'},
 {'': '3',
  'class': 'compact',
  'cty': '20',
  'cyl': '4',
  'displ': '2',
  'drv': 'f',
  'fl': 'p',
  'hwy': '31',
  'manufacturer': 'audi',
  'model': 'a4',
  'trans': 'manual(m6)',
  'year': '2008'}]

In [6]:
import csv
%precision 2
with open('mpg.csv') as csvfile:
    mpg = list(csv.DictReader(csvfile))
mpg[:3]


Out[6]:
[{'': '1',
  'class': 'compact',
  'cty': '18',
  'cyl': '4',
  'displ': '1.8',
  'drv': 'f',
  'fl': 'p',
  'hwy': '29',
  'manufacturer': 'audi',
  'model': 'a4',
  'trans': 'auto(l5)',
  'year': '1999'},
 {'': '2',
  'class': 'compact',
  'cty': '21',
  'cyl': '4',
  'displ': '1.8',
  'drv': 'f',
  'fl': 'p',
  'hwy': '29',
  'manufacturer': 'audi',
  'model': 'a4',
  'trans': 'manual(m5)',
  'year': '1999'},
 {'': '3',
  'class': 'compact',
  'cty': '20',
  'cyl': '4',
  'displ': '2',
  'drv': 'f',
  'fl': 'p',
  'hwy': '31',
  'manufacturer': 'audi',
  'model': 'a4',
  'trans': 'manual(m6)',
  'year': '2008'}]

In [8]:
len(mpg)


Out[8]:
234

In [16]:
mpg[0].keys()


Out[16]:
dict_keys(['', 'year', 'model', 'class', 'cty', 'trans', 'hwy', 'displ', 'manufacturer', 'cyl', 'fl', 'drv'])

In [61]:
sum(float(d['cty']) for d in mpg)/len(mpg)


Out[61]:
16.86

In [62]:
mpg
mpg[0]["cty"]


Out[62]:
'18'

In [64]:
sum(float(d["hwy"]) for d in mpg)/len(mpg)


Out[64]:
23.44

In [70]:
cylinders = set(d["cyl"] for d in mpg)
cylinders


Out[70]:
{'4', '5', '6', '8'}

In [68]:
cars_types = set(d["manufacturer"] for d in mpg)
cars_types


Out[68]:
{'audi',
 'chevrolet',
 'dodge',
 'ford',
 'honda',
 'hyundai',
 'jeep',
 'land rover',
 'lincoln',
 'mercury',
 'nissan',
 'pontiac',
 'subaru',
 'toyota',
 'volkswagen'}

In [71]:
cylinders


Out[71]:
{'4', '5', '6', '8'}

In [72]:
models = set(d["model"] for d in mpg)
models


Out[72]:
{'4runner 4wd',
 'a4',
 'a4 quattro',
 'a6 quattro',
 'altima',
 'c1500 suburban 2wd',
 'camry',
 'camry solara',
 'caravan 2wd',
 'civic',
 'corolla',
 'corvette',
 'dakota pickup 4wd',
 'durango 4wd',
 'expedition 2wd',
 'explorer 4wd',
 'f150 pickup 4wd',
 'forester awd',
 'grand cherokee 4wd',
 'grand prix',
 'gti',
 'impreza awd',
 'jetta',
 'k1500 tahoe 4wd',
 'land cruiser wagon 4wd',
 'malibu',
 'maxima',
 'mountaineer 4wd',
 'mustang',
 'navigator 2wd',
 'new beetle',
 'passat',
 'pathfinder 4wd',
 'ram 1500 pickup 4wd',
 'range rover',
 'sonata',
 'tiburon',
 'toyota tacoma 4wd'}

In [75]:
manufacturers = set(d["manufacturer"] for d in mpg)
manufacturers


Out[75]:
{'audi',
 'chevrolet',
 'dodge',
 'ford',
 'honda',
 'hyundai',
 'jeep',
 'land rover',
 'lincoln',
 'mercury',
 'nissan',
 'pontiac',
 'subaru',
 'toyota',
 'volkswagen'}

In [79]:
avg_mpg_in_cty = sum(float(d["cty"]) for d in mpg)/len(mpg)
avg_mpg_in_cty


Out[79]:
16.86

In [83]:
avg_mpg_in_hwy = sum(float(d["hwy"]) for d in mpg)/len(mpg)
avg_mpg_in_hwy


Out[83]:
23.44

In [103]:
%precision 2
def Avg_Mpg():
    avg_mpg_in_cty = sum(float(d["cty"]) for d in mpg)/len(mpg)
    avg_mpg_in_hwy = sum(float(d["hwy"]) for d in mpg)/len(mpg)
    avg_mpg_in_cty
    avg_mpg_in_hwy
    if avg_mpg_in_cty > avg_mpg_in_hwy:
        print("The Avg Mpg in city is greater than in Highways {}".format(float(avg_mpg_in_cty)))
    else:          
        print("The Avg Mpg in Highways is greater than in City {}".format(float(avg_mpg_in_hwy)))

In [105]:
Avg_Mpg()


The Avg Mpg in Highways is greater than in City 23.44017094017094

In [131]:
class_of_vhl = set(d["class"] for d in mpg)
class_of_vhl
len(class_of_vhl)


Out[131]:
7

In [132]:
HwyMpgByClass = []

for vehicleclass in class_of_vhl:
    summpg = 0
    vclasscount = 0
    for d in mpg:
        if vehicleclass == d["class"]:
                summpg += float(d['hwy']) # add the hwy mpg
                vclasscount += 1 # increment the count
    HwyMpgByClass.append({vehicleclass, summpg / vclasscount}) # append the tuple ('class', 'avg mpg')

#HwyMpgByClass.sort(key=lambda x: x[1])
HwyMpgByClass


Out[132]:
7

In [135]:
vehicleclass = set(d['class'] for d in mpg) # what are the class types
vehicleclass

HwyMpgByClass = []

for t in vehicleclass: # iterate over all the vehicle classes
    summpg = 0
    vclasscount = 0
    for d in mpg: # iterate over all dictionaries
        if d['class'] == t: # if the cylinder amount type matches,
            summpg += float(d['hwy']) # add the hwy mpg
            vclasscount += 1 # increment the count
    HwyMpgByClass.append((t, summpg / vclasscount)) # append the tuple ('class', 'avg mpg')

HwyMpgByClass.sort(key=lambda x: x[1])
HwyMpgByClass


Out[135]:
[('pickup', 16.88),
 ('suv', 18.13),
 ('minivan', 22.36),
 ('2seater', 24.80),
 ('midsize', 27.29),
 ('subcompact', 28.14),
 ('compact', 28.30)]

In [136]:
class_vh = set(d["class"] for d in mpg)
class_vh


Out[136]:
{'2seater', 'compact', 'midsize', 'minivan', 'pickup', 'subcompact', 'suv'}

In [170]:
HwyMpgByClass = []

for c in class_vh:
    summpg=0
    vclasscount =0
    for d in mpg:
        if d["class"] == c:
            summpg += float(d["hwy"])
            vclasscount += 1 # increment the count
    HwyMpgByClass.append((c, summpg / vclasscount))
    #print("sum of " + str(summpg))
    #print(c + str(vclasscount))
    HwyMpgByClass.sort(key=lambda x: x[1])
HwyMpgByClass


Out[170]:
[('pickup', 16.88),
 ('suv', 18.13),
 ('minivan', 22.36),
 ('2seater', 24.80),
 ('midsize', 27.29),
 ('subcompact', 28.14),
 ('compact', 28.30)]

In [149]:
HwyMpgByClass = []
HwyMpgByClass.append((6,8,9))
HwyMpgByClass


Out[149]:
[(6, 8, 9)]

In [150]:
cylinders = set(d['cyl'] for d in mpg)
cylinders


Out[150]:
{'4', '5', '6', '8'}

In [178]:
CtyMpgByCyl =[]

for c in cylinders:
    summpg = 0
    cyltypecount = 0
    for d in mpg:
        if d["cyl"] == c:
            summpg += float(d["cty"])
            cyltypecount += 1
    #print(summpg)
    #print(cyltypecount)
    CtyMpgByCyl.append((c,summpg/cyltypecount))
    
print(CtyMpgByCyl)
CtyMpgByCyl.sort(key=lambda x: x[0])
CtyMpgByCyl[:]


[('5', 20.5), ('6', 16.21518987341772), ('4', 21.012345679012345), ('8', 12.571428571428571)]
Out[178]:
[('4', 21.01), ('5', 20.50), ('6', 16.22), ('8', 12.57)]

In [ ]:


In [ ]: