#Using reduce get average MGP-CITY (miles per Gallon) from sample car data
from functools import reduce
car_data = ['MAKE,FUELTYPE,ASPIRE,4,BODY,DRIVE,CYLINDERS,HP,RPM,MPG-CITY,MPG-HWY,PRICE',\
'mercedes-benz,gas,std,2,convertible,RWD,eight,155,4750,16,18,35056', \
'jaguar,gas,std,4,sedan,RWD,six,176,4750,15,19,35550', \
'jaguar,gas,std,2,sedan,RWD,twelve,262,5000,13,17,36000', \
'bmw,gas,std,4,sedan,RWD,six,182,5400,15,20,36880', \
'porsche,gas,std,2,convertible,RWD,six,207,5900,17,25,37028', \
'mercedes-benz,gas,std,4,sedan,RWD,eight,184,4500,14,16,40960', \
'bmw,gas,std,2,sedan,RWD,six,182,5400,16,22,41315', \
'mercedes-benz,gas,std,2,hardtop,RWD,eight,184,4500,14,16,45400']
#Use a function to perform reduce
def getMPGCity( autoStr) :
if isinstance(autoStr, int) :
return autoStr
attList=autoStr.split(",")
if attList[9].isdigit() : #this will ignore header
return int(attList[9])
else:
return 0
total_mgp = reduce(lambda x,y : getMPGCity(x) + getMPGCity(y), car_data)
print 'Total MPG: {}'.format(total_mgp)
data_length_without_header = len(car_data)-1.0 # account for header line
print 'Total lines without header: {}'.format(data_length_without_header)
print 'Average MPG: {} '.format(total_mgp/data_length_without_header)
Output:
Total MPG: 120
Total lines without header: 8.0
Average MPG: 15.0
from functools import reduce
car_data = ['MAKE,FUELTYPE,ASPIRE,4,BODY,DRIVE,CYLINDERS,HP,RPM,MPG-CITY,MPG-HWY,PRICE',\
'mercedes-benz,gas,std,2,convertible,RWD,eight,155,4750,16,18,35056', \
'jaguar,gas,std,4,sedan,RWD,six,176,4750,15,19,35550', \
'jaguar,gas,std,2,sedan,RWD,twelve,262,5000,13,17,36000', \
'bmw,gas,std,4,sedan,RWD,six,182,5400,15,20,36880', \
'porsche,gas,std,2,convertible,RWD,six,207,5900,17,25,37028', \
'mercedes-benz,gas,std,4,sedan,RWD,eight,184,4500,14,16,40960', \
'bmw,gas,std,2,sedan,RWD,six,182,5400,16,22,41315', \
'mercedes-benz,gas,std,2,hardtop,RWD,eight,184,4500,14,16,45400']
#Use a function to perform reduce
def getMPGCity( autoStr) :
if isinstance(autoStr, int) :
return autoStr
attList=autoStr.split(",")
if attList[9].isdigit() : #this will ignore header
return int(attList[9])
else:
return 0
total_mgp = reduce(lambda x,y : getMPGCity(x) + getMPGCity(y), car_data)
print 'Total MPG: {}'.format(total_mgp)
data_length_without_header = len(car_data)-1.0 # account for header line
print 'Total lines without header: {}'.format(data_length_without_header)
print 'Average MPG: {} '.format(total_mgp/data_length_without_header)
Output:
Total MPG: 120
Total lines without header: 8.0
Average MPG: 15.0
No comments:
Post a Comment