2017-01-19 21 views
0

我有一個python腳本導入MatPlotLib並繪製股票價格。通過使用CSV作爲數據集的終端運行Python腳本

import sys 
import matplotlib.pyplot as plt 

vals = [float(line.split(',')[7]) for line in sys.stdin] 

plt.plot(vals) 
plt.title('Stock Price Data') 
plt.ylabel('Adjusted Closing Price') 
plt.xlabel('Trading Day') 
plt.show() 

我想通過導入一個名爲2015_goog_sorted.csv文件運行在終端這一腳本(這是2015年穀歌的股票價格,排序)如要排序的值。

我在Mac上使用的Atom

我在學習使用UNIX和終端命令的過程中來的,但我知道應該有一個比較簡單的方法來做到這一點。

感謝提前:)

+0

爲什麼不能在內存中讀取整個文件,並通過它遍歷 – Bobby

+0

可能是因爲我像三幾個月到編碼,我不知道我會怎麼做...哈哈。 能否詳細說明一下? –

+0

@ be-ns是'cat 2015_goog_sorted.csv | python your_program.py'你想要什麼? – Goyo

回答

0
1 import csv 
    2 
    3 with open('test.csv','r') as f: 
    4  a = csv.reader(f) 
    5  for row in a: 
    6   print(row) 

輸出

wirelessprv-10-194-17-39:python Bobby$ python3 te.py 
['1', '1', '1', '1'] 
['2', '2', '2', '2'] 

你可以做行

+0

這工作完美。謝謝! –

0

任何東西如果你只是想運行腳本,是,你可以硬編碼輸入文件的路徑:

import sys 
import matplotlib.pyplot as plt 
import csv 

with open('/path/to/2015_goog_sorted.csv', 'r') as f: 
    reader = csv.reader(f) 
    vals = [float(row[7]) for row in reader] 

plt.plot(vals) 
plt.title('Stock Price Data') 
plt.ylabel('Adjusted Closing Price') 
plt.xlabel('Trading Day') 
plt.show() 

,如果你想使用UNIX風格的管道輸入送你可以做到以下幾點:

import sys 
import matplotlib.pyplot as plt 
import csv 


reader = csv.reader(sys.stdin) 
vals = [float(row[7]) for row in reader] 

plt.plot(vals) 
plt.title('Stock Price Data') 
plt.ylabel('Adjusted Closing Price') 
plt.xlabel('Trading Day') 
plt.show()