python loadtxt_Python 数据科学入门2:Matplotlib
第七章 從文件加載數據
很多時候,我們想要繪制文件中的數據。 有許多類型的文件,以及許多方法,你可以使用它們從文件中提取數據來圖形化。 在這里,我們將展示幾種方法。 首先,我們將使用內置的csv模塊加載CSV文件,然后我們將展示如何使用 NumPy(第三方模塊)加載文件。
import matplotlib.pyplot as pltimport csvx = []y = []with open('example.txt','r') as csvfile: plots = csv.reader(csvfile, delimiter=',') for row in plots: x.append(int(row[0])) y.append(int(row[1]))plt.plot(x,y, label='Loaded from file!')plt.xlabel('x')plt.ylabel('y')plt.title('Interesting GraphCheck it out')plt.legend()plt.show()123456789101112131415161718這里,我們打開樣例文件,包含以下數據:
1,52,33,44,75,46,37,58,79,410,412345678910接下來,我們使用csv模塊讀取數據。 csv讀取器自動按行分割文件,然后使用我們選擇的分隔符分割文件中的數據。 在我們的例子中,這是一個逗號。 注意:csv模塊和csv reader不需要文件在字面上是一個.csv文件。 它可以是任何具有分隔數據的簡單的文本文件。
一旦我們這樣做了,我們將索引為 0 的元素存儲到x列表,將索引為 1 的元素存儲到y列表中。 之后,我們都設置好了,準備繪圖,然后顯示數據。
雖然使用 CSV 模塊是完全正常的,但使用 NumPy 模塊來加載我們的文件和數據,可能對我們更有意義。 如果你沒有 NumPy,你需要按下面的步驟來獲取它。 為了了解安裝模塊的更多信息,請參閱 pip 教程。 大多數人應該都能打開命令行,并執行pip install numpy。
如果不能,請參閱鏈接中的教程。
一旦你安裝了 NumPy,你可以編寫如下代碼:
import matplotlib.pyplot as pltimport numpy as npx, y = np.loadtxt('example.txt', delimiter=',', unpack=True)plt.plot(x,y, label='Loaded from file!')plt.xlabel('x')plt.ylabel('y')plt.title('Interesting GraphCheck it out')plt.legend()plt.show()1234567891011結果應該是相同的圖表。 稍后,當我們加載數據時,我們可以利用 NumPy 為我們做一些更多的工作,但這是教程未來的內容。 就像csv模塊不需要一個特地的.csv一樣,loadtxt函數不要求文件是一個.txt文件,它可以是一個.csv,它甚至可以是一個 python 列表對象。
第八章 從網絡加載數據
除了從文件加載數據,另一個流行的數據源是互聯網。 我們可以用各種各樣的方式從互聯網加載數據,但對我們來說,我們只是簡單地讀取網站的源代碼,然后通過簡單的拆分來分離數據。
import matplotlib.pyplot as pltimport numpy as npimport urllibimport matplotlib.dates as mdatesdef graph_data(stock): stock_price_url = 'http://chartapi.finance.yahoo.com/instrument/1.0/'+stock+'/chartdata;type=quote;range=10y/csv' source_code = urllib.request.urlopen(stock_price_url).read().decode() stock_data = [] split_source = source_code.split('') for line in split_source: split_line = line.split(',') if len(split_line) == 6: if 'values' not in line: stock_data.append(line)1234567891011121314151617181920這里有很多步驟。首先,我們看到import。 pyplot像往常一樣導入,然后導入了numpy,然后是用于訪問互聯網的urllib,然后導入了matplotlib.dates作為mdates,它對于將日期戳轉換為 matplotlib 可以理解的日期很有用。
接下來,我們開始構建我們的graph_data函數。在這里,我們首先定義包含股票數據的網址。之后,我們寫一些urllib代碼來訪問該 URL,然后使用.read讀取源代碼,之后我們繼續解碼該數據。如果你使用 Python 2,則不必使用decode。
然后,我們定義一個空列表,這是我們將要放置股票數據的地方,我們也開始使用split_source變量拆分數據,以換行符拆分。
現在,如果你去看源代碼,用stock替換 URL 中的+stock+,像 AAPL 那樣,你可以看到大多數頁面數據確實是股票定價信息,但有一些頭信息我們需要過濾掉。為此,我們使用一些基本的過濾,檢查它們來確保每行有 6 個數據點,然后確保術語values不在行中。
現在,我們已經解析了數據,并做好了準備。我們將使用 NumPy:
date, closep, highp, lowp, openp, volume = np.loadtxt(stock_data, delimiter=',', unpack=True, # %Y = full year. 2015 # %y = partial year 15 # %m = number month # %d = number day # %H = hours # %M = minutes # %S = seconds # 12-06-2014 # %m-%d-%Y converters={0: bytespdate2num('%Y%m%d')})12345678910111213我們在這里所做的是,使用numpy的loadtxt函數,并將這六個元素解構到六個變量。 這里的第一個參數是stock_data,這是我們加載的數據。 然后,我們指定delimiter(這里是逗號),然后我們指定我們確實想要在這里解包變量,不是一個變量,而是我們定義的這組變量。 最后,我們使用可選的converters參數來指定我們要轉換的元素(0),以及我們打算要怎么做。 我們傳遞一個名為bytespdate2num的函數,它還不存在,但我們下面會編寫它。
第九章 時間戳的轉換
本教程的重點是將來自 Yahoo finance API 的日期轉換為 Matplotlib 可理解的日期。 為了實現它,我們要寫一個新的函數,bytespdate2num。
def bytespdate2num(fmt, encoding='utf-8'): strconverter = mdates.strpdate2num(fmt) def bytesconverter(b): s = b.decode(encoding) return strconverter(s) return bytesconverter123456此函數接受數據,基于編碼來解碼數據,然后返回它。
將此應用于我們的程序的其余部分:
import matplotlib.pyplot as pltimport numpy as npimport urllibimport matplotlib.dates as mdatesdef bytespdate2num(fmt, encoding='utf-8'): strconverter = mdates.strpdate2num(fmt) def bytesconverter(b): s = b.decode(encoding) return strconverter(s) return bytesconverterdef graph_data(stock): stock_price_url = 'http://chartapi.finance.yahoo.com/instrument/1.0/'+stock+'/chartdata;type=quote;range=10y/csv' source_code = urllib.request.urlopen(stock_price_url).read().decode() stock_data = [] split_source = source_code.split('') for line in split_source: split_line = line.split(',') if len(split_line) == 6: if 'values' not in line and 'labels' not in line: stock_data.append(line) date, closep, highp, lowp, openp, volume = np.loadtxt(stock_data, delimiter=',', unpack=True, # %Y = full year. 2015 # %y = partial year 15 # %m = number month # %d = number day # %H = hours # %M = minutes # %S = seconds # 12-06-2014 # %m-%d-%Y converters={0: bytespdate2num('%Y%m%d')}) plt.plot_date(date, closep,'-', label='Price') plt.xlabel('Date') plt.ylabel('Price') plt.title('Interesting GraphCheck it out') plt.legend() plt.show()graph_data('TSLA')12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849如果你繪制 TSLA,結果圖應該看起來像這樣:
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的python loadtxt_Python 数据科学入门2:Matplotlib的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电信wifi登录器
- 下一篇: 中boxplot函数的参数设置_如何在P