如何对导入的csv数据进行数学运算?

2024-06-16 12:03:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我读了一个csv文件('空气.csv')并执行了一些操作以除去头(不重要)。然后,我使用dB_a.append(row[1])将这列csv数据放入一个数组中,我可以稍后绘制该数组。在

这个数据是dB数据,我想用简单的等式p=10^(dB/10)将它转换成幂。我是Python新手,所以我不太了解数组、列表等中的操作是如何工作的。我想我需要做一些事情来遍历整个数据集,这是我在for循环中的尝试,但是我仍然收到错误。有什么建议吗?在

谢谢你!在

frequency_a=[]
dB_a=[]

a = csv.reader(open('Air.csv'))

for row in itertools.islice(a, 18, 219):
       frequency_a.append(row[0])
       dB_a.append(row[1])
       #print(frequency_a)
       print(dB_a)

for item in dB_a:
    power_a = 10**(dB_a/10)
    print(power_a)

Tags: 文件csv数据infordb绘制数组
2条回答

以@edjaras发布的答案为基础。在

power_a = [10*(db/10) for db in dB_a] 不正确,因为这除以10,然后再乘以相同的。在

它应该是: power_a = [10**(db/10) for db in dB_a]

积分仍然归@Ed Jaras所有

注: 如果你想知道这(列表中的某物)是什么,那就是一个列表理解。它们是python允许的非常优雅的构造。在

基本的意思是[…将这个元素添加到结果中。。对于..我的元素。。在..列表..]中。在

如果你愿意,你甚至可以添加条件句。在

如果你想了解更多,我建议你看看: http://www.secnetix.de/olli/Python/list_comprehensions.hawk

附加: @k-schneider:你可能在一个字符串上做数值运算(除法、幂等),这是因为当导入csv时,字段可以作为字符串导入。 要确保使用的是整数,可以通过执行以下操作将db转换为字符串: str(db)

在for循环中,item是迭代器,因此需要使用它。所以不是:

power_a = 10**(dB_a/10)

使用:

^{pr2}$

使用这些数据创建新列表的更好方法是:

power_a = [10**(db/10) for db in dB_a]

编辑:注释中指出的另一个问题是,值是字符串。csv文件本质上是一个文本文件,因此是字符串的集合,而不是整数。您可以使用int(db)float(db)将它们转换为数值,这取决于您使用的是整数还是浮点数。在

编辑2:正如@J.Meijers所指出的,我使用的是乘法而不是求幂——这已经在答案中得到了修正。在

相关问题 更多 >