Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.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 从CSV文件添加值_Python - Fatal编程技术网

Python 从CSV文件添加值

Python 从CSV文件添加值,python,Python,我开始学习python,并且正在努力学习语法 我有一个简单的CSV文件,看起来像这样 0.01,10,20,0.35,40,50,60,70,80,90,100 2,22,32,42,52,62,72,82,92,102,112 3,33,43,53,63,5647,83,93,103,113,123 我想查找csv文件中所有数据的最高值和最低值,但每行的第一个值除外 所以这里的答案实际上是 highestValue=5647 lowestValue=0.35 因为查看的数据如下(它忽略了每

我开始学习python,并且正在努力学习语法

我有一个简单的CSV文件,看起来像这样

0.01,10,20,0.35,40,50,60,70,80,90,100
2,22,32,42,52,62,72,82,92,102,112
3,33,43,53,63,5647,83,93,103,113,123
我想查找csv文件中所有数据的最高值和最低值,但每行的第一个值除外

所以这里的答案实际上是

highestValue=5647
lowestValue=0.35
因为查看的数据如下(它忽略了每行的第一个值)

我希望我的代码适用于任何行长度

我真的不得不承认我在挣扎,但以下是我尝试过的。我通常编写PHP,所以这对我来说是全新的。这个简单的任务我已经做了一天了,搞不懂。例如,我想我对术语“列表”感到困惑

import numpy

test_data_file = open ("Anaconda3JamesData/james_test_3.csv","r")
test_data_list = test_data_file.readlines()
test_data_file.close()

for record in test_data_list:
    all_values = record.split(',')
    maxvalue = np.max(numpy.asfarray(all_values[1:])

print (maxvalue)
有了测试数据(这个问题顶部显示的CSV文件),我希望答案是

highestValue=5647
lowestValue=0.35

在循环中,每次都覆盖
maxvalue
,因此只从最后一行获取最大值,而不是整个文件。您需要与以前的最大值进行比较

maxvalue = None
for record in test_data_list:
    all_values = record.split(',')
    if maxvalue is None:
        maxvalue = np.max(numpy.asfarray(all_values[1:])
    else:
        maxvalue = max(maxvalue, np.max(numpy.asfarray(all_values[1:]))

如果您使用的是numpy,则可以将csv文件作为using读取,然后使用数组的和方法


[:,1:][/code>部件正在使用。它的意思是取所有的行(第一个
[:,
部分),对于每一行,取除第一列以外的所有行(第一个
1::
部分)。这不适用于Python的内置列表

这个问题不需要numpy的强大功能。一个简单的CSV阅读器就足够了:

with open("Anaconda3JamesData/james_test_3.csv") as infile:
    r = csv.reader(infile)
    rows = [list(map(float, line))[1:] for line in r]
max(map(max, rows))
# 5647.0
min(map(min, rows))
# 0.35

我认为这个任务不需要使用
numpy
。首先,这是:

test_data_file = open ("Anaconda3JamesData/james_test_3.csv","r")
test_data_list = test_data_file.readlines()
test_data_file.close()

for record in test_data_list:
可以简化为:

with open("Anaconda3JamesData/james_test_3.csv","r") as test_data_file:
    for record in test_data_file:
我们可以使用列表理解来读取所有值:

with open("Anaconda3JamesData/james_test_3.csv","r") as test_data_file:
    values = [float(val) for line in test_data_file for val in line.split(",")[1:]]
现在包含所有相关数字,因此我们只需执行以下操作:

highest_value = max(values)
lowest_value = min(values)

这里有一个
pandas
解决方案,可以提供所需的结果:

import pandas as pd
df = pd.read_csv('test1.csv', header=None)
# df:
#    0     1   2      3   4     5   6   7    8    9    10
# 0  0.01  10  20   0.35  40    50  60  70   80   90  100
# 1  2.00  22  32  42.00  52    62  72  82   92  102  112
# 2  3.00  33  43  53.00  63  5647  83  93  103  113  123

df = df.iloc[:, 1:] 
print("Highest value: {}".format(df.values.max()))
print("Lowest value: {}".format(df.values.min()))
#Output:
Highest value: 5647.0
Lowest value: 0.35

你应该用它来阅读csv。@Boris的确如此,但对于这样一个简单的问题,它是不必要的。
highest_value = max(values)
lowest_value = min(values)
import pandas as pd
df = pd.read_csv('test1.csv', header=None)
# df:
#    0     1   2      3   4     5   6   7    8    9    10
# 0  0.01  10  20   0.35  40    50  60  70   80   90  100
# 1  2.00  22  32  42.00  52    62  72  82   92  102  112
# 2  3.00  33  43  53.00  63  5647  83  93  103  113  123

df = df.iloc[:, 1:] 
print("Highest value: {}".format(df.values.max()))
print("Lowest value: {}".format(df.values.min()))
#Output:
Highest value: 5647.0
Lowest value: 0.35