python股票分析系列_Python股票分析系列——基础股票数据操作(二).p4
該系列視頻已經搬運至bilibili:?點擊查看
歡迎來到Python for Finance教程系列的第4部分。在本教程中,我們將基于Adj Close列創建燭臺/ OHLC圖,這將允許我介紹重新采樣和其他一些數據可視化概念。
名為燭臺圖的OHLC圖表是一種將開盤價Open,最高價High,最低價Low和收盤價Close數據全部集中在一個很好的格式中的圖表。另外,它使得漂亮的顏色,并記住我告訴你關于美觀的圖表?
在之前的教程中已經涉及到了這一點:
importdatetime as dtimportmatplotlib.pyplot as pltfrom matplotlib importstyleimportpandas as pdimportpandas_datareader.data as web
style.use('ggplot')
df= pd.read_csv('tsla.csv', parse_dates=True, index_col=0)
不幸的是,即使創建OHLC數據,直接從Pandas制作燭臺圖也不是內置的。未來我確信這個圖表類型將會被提供,但現在不是。沒關系,we can make it!首先,我們需要import兩個新的庫:
from matplotlib.finance importcandlestick_ohlcimport matplotlib.dates as mdates
第一個導入是來自matplotlib的OHLC圖形類型,第二個導入是特殊的mdates類型,它大多只是一個屁股疼痛,但這是matplotlib圖形的日期類型。pandas會自動為你處理,但就像我說的那樣,我們沒有燭臺的奢侈品。
首先,我們需要適當的OHLC數據。我們目前的數據確實有OHLC的價值,除非我錯了,特斯拉從來沒有分裂過,但是你永遠不會這么幸運。因此,我們將創建我們自己的OHLC數據,這也將允許我們展示另一個來自Pandas的數據轉換:
df_ohlc = df['Adj Close'].resample('10D').ohlc()
我們在這里所做的是創建一個基于df ['Adj Close']列的新數據框,重新封裝10天的窗口,并且重采樣是一個ohlc(開高低關閉)。我們也可以用.mean()或.sum()做10天的平均值或10天的總和。請記住,這10天的平均值是10天的平均值,而不是平均值。由于我們的數據是每日數據,因此將其重新采樣為10天的數據會顯著縮小數據的大小。這是你可以如何規范化多個數據集。有時,您可能會在每個月的一個月中記錄一次每月記錄的數據,每個月末記錄的其他數據,以及最終每周記錄一些數據。您可以每個月對該數據幀重新采樣到月末,并有效地將其標準化!如果你喜歡的話,這是更高級的熊貓功能,你可以從熊貓系列中了解更多。
我們想要繪制燭臺數據以及體積數據。我們不必重新采樣數據,但我們應該,因為它與我們的10D定價數據相比太細致。
df_volume = df['Volume'].resample('10D').sum()
我們在這里使用金額,因為我們確實想知道在這10天內交易的總量,但您也可以使用平均值。現在如果我們這樣做:
print(df_ohlc.head())
我們得到:
open high low close
Date2010-06-29 23.889999 23.889999 15.800000 17.459999
2010-07-09 17.400000 20.639999 17.049999 20.639999
2010-07-19 21.910000 21.910000 20.219999 20.719999
2010-07-29 20.350000 21.950001 19.590000 19.590000
2010-08-08 19.600000 19.600000 17.600000 19.150000
這是預期的,但是,我們現在要將這些信息移動到matplotlib中,并將日期轉換為mdates版本。由于我們只是要在Matplotlib中繪制列,所以我們實際上不希望日期成為索引,所以我們可以這樣做:
df_ohlc = df_ohlc.reset_index()
現在的日期只是一個普通的專欄。接下來,我們要轉換它:
df_ohlc ['Date'] = df_ohlc ['Date']。map(mdates.date2num)
現在我們要設置這個數字:
fig =plt.figure()
ax1= plt.subplot2grid((6,1),(0,0),rowspan = 5,colspan = 1)
ax2= plt.subplot2grid((6,1),(5,0),rowspan = 1,colspan = 1,sharex =ax1)
ax1.xaxis_date()
除了ax1.xaxis_date()之外,您已經看到過的所有內容。這對我們來說就是將軸從原始的生成號碼轉換為日期。
現在我們可以繪制燭臺圖:
candlestick_ohlc(ax1,df_ohlc.values,width = 2,colorup ='g')
然后做量:
ax2.fill_between(df_volume.index.map(mdates.date2num),df_volume.values,0)
fill_between函數將繪制x,y,然后填充/之間的內容。在我們的例子中,我們選擇0。
plt.show()
完整代碼:
importdatetime as dtimportmatplotlib.pyplot as pltfrom matplotlib importstylefrom matplotlib.finance importcandlestick_ohlcimportmatplotlib.dates as mdatesimportpandas as pdimportpandas_datareader.data as web
style.use('ggplot')
df= pd.read_csv('tsla.csv', parse_dates=True, index_col=0)
df_ohlc= df['Adj Close'].resample('10D').ohlc()
df_volume= df['Volume'].resample('10D').sum()
df_ohlc.reset_index(inplace=True)
df_ohlc['Date'] = df_ohlc['Date'].map(mdates.date2num)
ax1= plt.subplot2grid((6,1), (0,0), rowspan=5, colspan=1)
ax2= plt.subplot2grid((6,1), (5,0), rowspan=1, colspan=1, sharex=ax1)
ax1.xaxis_date()
candlestick_ohlc(ax1, df_ohlc.values, width=5, colorup='g')
ax2.fill_between(df_volume.index.map(mdates.date2num), df_volume.values, 0)
plt.show()
在接下來的幾個教程中,我們將留下可視化位,稍微討論一下獲取數據和處理數據。
總結
以上是生活随笔為你收集整理的python股票分析系列_Python股票分析系列——基础股票数据操作(二).p4的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: K8S—理论知识
- 下一篇: 说两个我深藏多年的秘密!