因此,我在从文件中打印最大值和最小值时遇到问题,该文件有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))
答案 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函数。为此目的进行了充分的文档记录,优化和非常受欢迎。您可以使用pip
与pip 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)