从包含多个值的字段中提取数据

时间:2017-06-06 02:07:55

标签: python python-3.x

我是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中插入这些值,但不确定代码。

1 个答案:

答案 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)

虽然我从来没有听说过一加仑电...... ;-)