Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Python 3.7总结数据?_Python_Python 3.x - Fatal编程技术网

如何使用Python 3.7总结数据?

如何使用Python 3.7总结数据?,python,python-3.x,Python,Python 3.x,我有一个CSV文件,我把它转换成字典。字典中的一行如下所示:- OrderedDict([('MVA', '10072672'), ('Code', 'F5'), ('Tbk Mnth', '01-Dec-16'), ('Branch', 'W0S'), ('Make', 'VOLKSWAGENRSA'), ('Status', 'RISK'), ('Price', '111200.27')]) 我试图对“价格”列中的值求和,但n=0。我做错了什么?另外,对不同代码求和的最有效方法是什么 im

我有一个CSV文件,我把它转换成字典。字典中的一行如下所示:-

OrderedDict([('MVA', '10072672'), ('Code', 'F5'), ('Tbk Mnth', '01-Dec-16'), ('Branch', 'W0S'), ('Make', 'VOLKSWAGENRSA'), ('Status', 'RISK'), ('Price', '111200.27')])
我试图对“价格”列中的值求和,但n=0。我做错了什么?另外,对不同代码求和的最有效方法是什么

import csv
linecount = 0
with open(r'C:\Users\anthony\Documents\Test\Data.csv') as file:
    reader = csv.DictReader(file)
    for row in reader:
        print(row)
        code = (row["Code"])
        if code == 'F5':
            linecount += 1

    print(linecount)



    n = sum([item['Price'] for item in reader])
    print(n)

一个问题是你不能重复读卡器两次

collections
模块中的
defaultdict
类便于对项目进行分组。 在这里,我们将
Price
s(为了精确起见转换为
Decimal
s)收集到一个列表的dict中,然后对它们进行求和

导入csv
输入小数
导入集合
#DefaultDict很方便,因为它们从来没有不存在的密钥;
#如果访问一个不存在的键,则构造函数(`list`here)
#被调用。
按代码定价=集合.defaultdict(列表)
打开(r'Data.csv')作为文件:
reader=csv.DictReader(文件)
对于读取器中的行:
price=row.get('price')
code=row.get('code'))
如果代码和价格:
价格按代码[代码]。追加(十进制。十进制(价格))
#此时,'prices_By_code'看起来大致类似
# {"5": [1, 2, 3], "8": [4, 5, 6]}
对于代码,按代码排序的价格(prices_by_code.items()):
打印(代码、总额(价格))

一个问题是不能重复读卡器两次

collections
模块中的
defaultdict
类便于对项目进行分组。 在这里,我们将
Price
s(为了精确起见转换为
Decimal
s)收集到一个列表的dict中,然后对它们进行求和

导入csv
输入小数
导入集合
#DefaultDict很方便,因为它们从来没有不存在的密钥;
#如果访问一个不存在的键,则构造函数(`list`here)
#被调用。
按代码定价=集合.defaultdict(列表)
打开(r'Data.csv')作为文件:
reader=csv.DictReader(文件)
对于读取器中的行:
price=row.get('price')
code=row.get('code'))
如果代码和价格:
价格按代码[代码]。追加(十进制。十进制(价格))
#此时,'prices_By_code'看起来大致类似
# {"5": [1, 2, 3], "8": [4, 5, 6]}
对于代码,按代码排序的价格(prices_by_code.items()):
打印(代码、总额(价格))

阅读器
是迭代器。通过对它进行迭代,您可以使用它的值。如果需要保留这些值,则必须将其存储在其他位置。最简单的方法是从迭代器创建一个列表,然后在列表上迭代

例如


然而,价格将是一个字符串,而不是浮动。因此,您需要将它们转换为浮点数。例如,
float(item['Price'])
reader
是一个迭代器。通过对它进行迭代,您可以使用它的值。如果需要保留这些值,则必须将其存储在其他位置。最简单的方法是从迭代器创建一个列表,然后在列表上迭代

例如


然而,价格将是一个字符串,而不是浮动。因此,您需要将它们转换为浮点数。例如:
float(item['Price'])

您已经使用循环到达了读卡器的末尾:
for reader中的行
,这就是为什么没有剩余数据的原因。您得到了什么错误?程序是否崩溃或输出错误?如果是后一种情况,你想要实现什么,你实际得到了什么?我认为您将
sum
放在了错误的位置,因为它无法访问
reader
数据,但请确认这一点。@gonczor OP提到了这个问题;它们得到n=0,因此输出错误。您已经使用循环到达了读卡器的末尾:
for row in reader
,这就是为什么没有剩余数据的原因。您得到了什么错误?程序是否崩溃或输出错误?如果是后一种情况,你想要实现什么,你实际得到了什么?我认为您将
sum
放在了错误的位置,因为它无法访问
reader
数据,但请确认这一点。@gonczor OP提到了这个问题;他们得到n=0,所以输出错误。当我运行代码时,我收到以下错误:-按代码[row[“code”]]排列的价格。追加(decimal.decimal(item[“Price”])名称错误:名称“item”未定义操作,我的意思是
行[“Price”]
。尝试过了!现在我收到了以下错误:prices_by_code[row[“code”]].append(decimal.decimal(row[“Price”])keyrorm:“Price”是否每一行实际上都有一个
Price
列?(修改代码以防止这种情况发生。)当我运行代码时,我收到以下错误:-prices by_code[row[“code”].append(decimal.decimal(item[“Price”]))名称错误:名称“item”未定义操作,我是指
行[“Price”]
。尝试过了!现在我收到以下错误:prices按代码[row[“code”]].append(decimal.decimal(row[“Price”])KeyError:“Price”是否每一行实际上都有一个
Price
列?(修改代码以防止出现这种情况。)
rows = list(reader)

for row in rows:
   ...

n = sum([item['Price'] for item in rows])