日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python loadtxt_Python 数据科学入门2:Matplotlib

發(fā)布時間:2023/12/10 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python loadtxt_Python 数据科学入门2:Matplotlib 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

第七章 從文件加載數(shù)據(jù)

很多時候,我們想要繪制文件中的數(shù)據(jù)。 有許多類型的文件,以及許多方法,你可以使用它們從文件中提取數(shù)據(jù)來圖形化。 在這里,我們將展示幾種方法。 首先,我們將使用內(nèi)置的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

這里,我們打開樣例文件,包含以下數(shù)據(jù):

1,52,33,44,75,46,37,58,79,410,412345678910

接下來,我們使用csv模塊讀取數(shù)據(jù)。 csv讀取器自動按行分割文件,然后使用我們選擇的分隔符分割文件中的數(shù)據(jù)。 在我們的例子中,這是一個逗號。 注意:csv模塊和csv reader不需要文件在字面上是一個.csv文件。 它可以是任何具有分隔數(shù)據(jù)的簡單的文本文件。

一旦我們這樣做了,我們將索引為 0 的元素存儲到x列表,將索引為 1 的元素存儲到y(tǒng)列表中。 之后,我們都設(shè)置好了,準備繪圖,然后顯示數(shù)據(jù)。

雖然使用 CSV 模塊是完全正常的,但使用 NumPy 模塊來加載我們的文件和數(shù)據(jù),可能對我們更有意義。 如果你沒有 NumPy,你需要按下面的步驟來獲取它。 為了了解安裝模塊的更多信息,請參閱 pip 教程。 大多數(shù)人應(yīng)該都能打開命令行,并執(zhí)行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

結(jié)果應(yīng)該是相同的圖表。 稍后,當我們加載數(shù)據(jù)時,我們可以利用 NumPy 為我們做一些更多的工作,但這是教程未來的內(nèi)容。 就像csv模塊不需要一個特地的.csv一樣,loadtxt函數(shù)不要求文件是一個.txt文件,它可以是一個.csv,它甚至可以是一個 python 列表對象。

第八章 從網(wǎng)絡(luò)加載數(shù)據(jù)

除了從文件加載數(shù)據(jù),另一個流行的數(shù)據(jù)源是互聯(lián)網(wǎng)。 我們可以用各種各樣的方式從互聯(lián)網(wǎng)加載數(shù)據(jù),但對我們來說,我們只是簡單地讀取網(wǎng)站的源代碼,然后通過簡單的拆分來分離數(shù)據(jù)。

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像往常一樣導(dǎo)入,然后導(dǎo)入了numpy,然后是用于訪問互聯(lián)網(wǎng)的urllib,然后導(dǎo)入了matplotlib.dates作為mdates,它對于將日期戳轉(zhuǎn)換為 matplotlib 可以理解的日期很有用。

接下來,我們開始構(gòu)建我們的graph_data函數(shù)。在這里,我們首先定義包含股票數(shù)據(jù)的網(wǎng)址。之后,我們寫一些urllib代碼來訪問該 URL,然后使用.read讀取源代碼,之后我們繼續(xù)解碼該數(shù)據(jù)。如果你使用 Python 2,則不必使用decode。

然后,我們定義一個空列表,這是我們將要放置股票數(shù)據(jù)的地方,我們也開始使用split_source變量拆分數(shù)據(jù),以換行符拆分。

現(xiàn)在,如果你去看源代碼,用stock替換 URL 中的+stock+,像 AAPL 那樣,你可以看到大多數(shù)頁面數(shù)據(jù)確實是股票定價信息,但有一些頭信息我們需要過濾掉。為此,我們使用一些基本的過濾,檢查它們來確保每行有 6 個數(shù)據(jù)點,然后確保術(shù)語values不在行中。

現(xiàn)在,我們已經(jīng)解析了數(shù)據(jù),并做好了準備。我們將使用 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函數(shù),并將這六個元素解構(gòu)到六個變量。 這里的第一個參數(shù)是stock_data,這是我們加載的數(shù)據(jù)。 然后,我們指定delimiter(這里是逗號),然后我們指定我們確實想要在這里解包變量,不是一個變量,而是我們定義的這組變量。 最后,我們使用可選的converters參數(shù)來指定我們要轉(zhuǎn)換的元素(0),以及我們打算要怎么做。 我們傳遞一個名為bytespdate2num的函數(shù),它還不存在,但我們下面會編寫它。

第九章 時間戳的轉(zhuǎn)換

本教程的重點是將來自 Yahoo finance API 的日期轉(zhuǎn)換為 Matplotlib 可理解的日期。 為了實現(xiàn)它,我們要寫一個新的函數(shù),bytespdate2num。

def bytespdate2num(fmt, encoding='utf-8'): strconverter = mdates.strpdate2num(fmt) def bytesconverter(b): s = b.decode(encoding) return strconverter(s) return bytesconverter123456

此函數(shù)接受數(shù)據(jù),基于編碼來解碼數(shù)據(jù),然后返回它。

將此應(yīng)用于我們的程序的其余部分:

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,結(jié)果圖應(yīng)該看起來像這樣:

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的python loadtxt_Python 数据科学入门2:Matplotlib的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。