我正在学习python,并且一项任务要求我们将csv文件中的数据输入到元组中,以便我们可以计算出数据的均值介质和模式。 如果不使用csv模块,最好的方法是什么。 到目前为止我已经
了 with open(fileInput, 'r') as f:
temps = []
for line in f:
temps.append((line.split(':'. 1)
print (temps)
这是通过查看这里的其他问题并尝试拼凑一些东西,但我已经碰壁了。
数据是这样的一堆温度:
Sydney, 23.6, 34.2, 23.4, 34.0, 32.1, 25.6, 25.5,
将它变成元组后,如何访问数据以找出我需要的东西。
我的代码现在看起来像这样
with open(fileInput, 'r') as f:
heights = []
for line in f:
line = line.split()
numbers = line.split(',')
heights.append((numbers[0], numbers[1:]))
print (heights)
现在,在计算平均值等时,我如何在方程式中使用这些列表/元组?
答案 0 :(得分:0)
这看起来像是一个家庭作业问题,所以我不会给你完整的解决方案,但这应该足以让你开始。
首先,这是一个基于问题中的行的小型测试数据文件。如果它包含一些像这样的测试数据,你的问题会更好,因为这样可以让人们更容易测试你的代码及其答案
<强> temps.txt 强>
Sydney, 23.6, 34.2, 23.4, 34.0, 32.1, 25.6, 25.5,
Melbourne, 13.6, 24.2, 13.4, 24.0, 22.1, 15.6, 15.5,
Darwin, 33.6, 44.2, 33.4, 44.0, 42.1, 35.6, 35.5,
该计划
filename = 'temps.txt'
all_temps = []
with open(filename, 'r') as f:
for line in f:
line = [s.strip() for s in line.split(',')]
city = line[0]
temps = [float(s) for s in line[1:] if s]
all_temps.append((city, temps))
for city, temps in all_temps:
print('city:{0}, temps:{1}'.format(city, temps))
<强>输出强>
city:Sydney, temps:[23.600000000000001, 34.200000000000003, 23.399999999999999, 34.0, 32.100000000000001, 25.600000000000001, 25.5]
city:Melbourne, temps:[13.6, 24.199999999999999, 13.4, 24.0, 22.100000000000001, 15.6, 15.5]
city:Darwin, temps:[33.600000000000001, 44.200000000000003, 33.399999999999999, 44.0, 42.100000000000001, 35.600000000000001, 35.5]
这一行:
line = [s.strip() for s in line.split(',')]
从逗号上的文件中分割行,将结果保存在列表中,然后我们扫描此列表中的字符串,从每个字符串中删除任何空格(空格,制表符,换行符等),将它们累积到一个列表中。
这一行:
temps = [float(s) for s in line[1:] if s]
从温度值创建一个新列表,将字符串转换为浮点数,这样我们就可以对它们进行算术运算(例如计算均值),因此我们可以用数字对它们进行排序(这对于找到中位数和模式)。
答案 1 :(得分:0)
既然你提到你正在学习Python,我建议你在解决问题之前先学习以下内容:
http://learnpythonthehardway.org/对于初学者来说是一个很好的资源。
然后你可以像这样构建元组列表:
[
('place1', [t11, t12, t13] ),
('place2', [t21, t22, t23] )
]
地名可以是字符串。将温度转换为浮点数可以进一步简化计算。
要计算平均值,中位数,模式等,可以使用列表理解。