我是python编程和数据挖掘的新手。我试图从.csv文件中读取数据并将它们存储为用于分析的字典列表。但是我的数据有一组值的多种替代方案。 这是我的数据样本
The screenshot of my data along with Highlighter
由于我的专栏燃料有燃气/电力,我的城市MPG为16/81。然而,当我把它读到我的词典列表中时,它不是一个很大的问题,但是如果我想计算一个平均值或总和,就会产生错误。
我希望在将数据读入Python时将这些列分开。
import csv
with open('mpg.csv') as f:
a = [{k: (v) for k, v in row.items()}
for row in csv.DictReader(f, skipinitialspace=True)]
print(a, '\n')
print(len(a)) # simply printing the data
print(a[0].keys()) # printing the Headers of the data
z = sum(float(d['City MPG']) for d in a) / len(a) # Error code
print(z)
错误为ValueError: could not convert string to float: '33/81
。
我理解错误。
我正在考虑在Map中插入这些值,但不确定代码。
答案 0 :(得分:0)
您可以拆分'/'
上的MPG字段,浮动它们,然后选择第一个[0]
,或选择第二个[1]
:
z = sum(float(d['City MPG'].split('/')[0]) for d in a) / len(a)
如果你想要第一个和第二个值的平均值(分别用于燃气和电力),可以这样做:
z = [d['City MPG'].split('/') for d in a]
city_mpg_gas, city_mpg_elec = [sum(float(values[i]) for values in z) / len(a)
for i in range(len(a))]
print('city_mpg_gas:', city_mpg_gas)
print('city_mpg_elec:', city_mpg_elec)
虽然我从来没有听说过一加仑电...... ;-)