如何从长文件中打印最大值和最小值?

时间:2019-05-02 11:25:39

标签: python

因此,我在从文件中打印最大值和最小值时遇到问题,该文件有3000多行,如下所示:

3968 #number of lines  
2000-01-03, 3.738314  
2000-01-04, 3.423135  
2000-01-05, 3.473229  
...  
...  
2015-10-07, 110.779999  
2015-10-08, 109.50  
2015-10-09, 112.120003  

这是我当前的代码,我不知道如何使它工作,因为现在它只打印3968值,因为显然它是最大的,但我想从第二列中获得最大和最小的值(所有股票价格)。

def apple():
    stock_file = open('apple_USD.txt', 'r')
    data = stock_file.readlines()
    data = data[0:]
    stock_file.close()
    print(max(data))

5 个答案:

答案 0 :(得分:4)

您当前的代码偶然使用了字符串比较,因此会输出“正确的”输出。

考虑一下:

A.py

答案 1 :(得分:0)

您想使用true将第二列提取到一个float中,而忽略第一行。

false

答案 2 :(得分:0)

您当前的代码是将每个行作为字符串读取,然后查找列表的最大和最小行。您可以使用熊猫将文件读取为CSV并将其加载为数据框,然后对数据框进行最小,最大操作 希望以下回答您的问题

stocks = []
data=data[1:]
for d in data:
    stocks.append(float(d.split(',')[1]))
print(max(stocks))
print( min(stocks))

答案 3 :(得分:0)

我建议使用Pandas模块来处理表格数据并使用read_csv函数。为此目的进行了充分的文档记录,优化和非常受欢迎。您可以使用pippip install pandas进行安装。

我使用您的格式创建了一个哑文件,并将其存储在名为test.csv的文件中:

3968 #number of lines
2000-01-03, 3.738314
2000-01-04, 3.423135
2000-01-05, 3.473229
2015-10-07, 110.779999
2015-10-08, 109.50
2015-10-09, 112.120003

然后,要解析文件,您可以执行以下操作。 Names参数定义列的名称。 Skiprows允许您跳过第一行。

#import module    
import pandas as pd

#load file
df = pd.read_csv('test.csv', names=['date', 'value'], skiprows=[0])

#get max and min values
max_value = df['value'].max()
min_value = df['value'].min()

答案 4 :(得分:0)

或者您可以使用一种更简单的方式进行操作:列出价格,然后获取最大值和最小值。像这样:

#as the first line in your txt is not data
datanew=data[1:]

prices=[]
line_after=[]
for line in datanew:
    line_after=line.split(',')
    price=line_after[1]
    prices.append(float(price))
maxprice=max(prices)
minprice=min(prices)