04.DataFrame基礎(chǔ)操作鞏固-股票分析

4、DataFrame基礎(chǔ)操作鞏固-股票分析

需求:股票分析

  • 使用tushare包獲取某股票的歷史行情數(shù)據(jù)。
  • 輸出該股票所有收盤比開盤上漲3%以上的日期。
  • 輸出該股票所有開盤比前日收盤跌幅超過2%的日期。
  • 假如我從2010年1月1日開始,每月第一個交易日買入1手股票,每年最后一個交易日賣出所有股票,到今天為止,我的收益如 何?

(1)下載tushare財經(jīng)數(shù)據(jù)接口包

終端命令行執(zhí)行:

pip install tushare

(2)進(jìn)入官網(wǎng)https://tushare.pro/

注冊登錄后,進(jìn)入個人主頁,找到接口TOKEN,進(jìn)行復(fù)制,我們在下面將會用到。

image.png

(2)導(dǎo)入相關(guān)包

import tushare as ts
import pandas as pd
from pandas import DataFrame,Series
import numpy as np
import datetime as dt
import time
token='自己的上面復(fù)制的token'
ts.set_token(token)
pro = ts.pro_api()

(3)調(diào)用接口獲取股票的信息

注:更多接口方法可以在http://tushare.org/ 進(jìn)行查看

獲取茅臺的 每日股價信息

df = pro.daily(ts_code = '600519.SH',start_date='20000101')
df
image.png

(4)對股票信息按照時間進(jìn)行排序

# 排序 
# DataFrame.sort_values(by, axis=0, ascending=True, inplace=False, kind='quicksort', na_position='last')
# axis:{0 or ‘index’, 1 or ‘columns’}, default 0,默認(rèn)按照索引排序,即縱向排序,如果為1,則是橫向排序    
# by:str or list of str;如果axis=0,那么by="列名";如果axis=1,那么by="行名";  
# ascending:布爾型,True則升序,可以是[True,False],即第一字段升序,第二個降序  
# inplace:布爾型,是否用排序后的數(shù)據(jù)框替換現(xiàn)有的數(shù)據(jù)框  
# kind:排序方法,{‘quicksort’, ‘mergesort’, ‘heapsort’}, default ‘quicksort’。似乎不用太關(guān)心  
# na_position : {‘first’, ‘last’}, default ‘last’,默認(rèn)缺失值排在最后面

df.sort_values(axis = 0, by = 'trade_date',inplace=True)
df
image.png

(5) 將獲取的股票信息存儲到本地

# 通過調(diào)用 to_xxx 方法將數(shù)據(jù)存儲到本地
df.to_csv('./motai.csv')

(6)將本地存儲的文件讀入到df

df = pd.read_csv('./motai.csv')
df.head()
image.png

(7)需要得讀取出來的數(shù)據(jù)進(jìn)行處理

# drop 中 axis 為1表示刪除列,為0表示刪除行,inplace 為 True 表示覆蓋原有數(shù)據(jù)
df.drop(labels='Unnamed: 0',axis=1,inplace=True)
df.head()
image.png

(8)查看每一列的數(shù)據(jù)類型

df.info()
image.png

(9)將trade_date轉(zhuǎn)為時間類型

#將int類型轉(zhuǎn)為時間類型
df['trade_date'] = pd.to_datetime(df['trade_date'],format='%Y%m%d')
df.info()
image.png

(10)設(shè)置trade_date列為索引

df.set_index('trade_date',inplace=True)
df
image.png

(11)輸出該股票所有收盤比開盤上漲3%以上的日期。

#偽代碼:(收盤 - 開盤) / 開盤 > 0.03
(df['open'] - df['close']) / df['open'] > 0.03

#在分析的過程中,如果產(chǎn)生了boolean值,可以將boolean作為行索引,可以取出值為True的行數(shù)據(jù)
df.loc[(df['open'] - df['close']) / df['open'] > 0.03].index   #獲取到收盤比開盤上漲3%以上的日期
image.png

(12)輸出該股票所有開盤比前日收盤跌幅超過2%的日期。

# 偽代碼:(開盤 - 前日收盤) / 前日開盤 < 0.02
old = df['close'].shift(1)   #將收盤價整體下移一位
old.head()
image.png

(13)找到開盤價低于上一天收盤價2%以上的日期

(df['open'] - old) / old < -0.02
image.png

(14)將布爾值作為行索引

df.loc[(df['open'] - old) / old < -0.02].index  #獲取到符合條件的日期
image.png

(15)剩余需求

  • 假如我從2010年1月1日開始,每月第一個交易日買入1手股票,每年最后一個交易日賣出所有股票,到今天為止,我的收益如 何?
  • 分析
    • 時間節(jié)點(diǎn):2010-2021年
    • 一手股票:100支
    • 買:
      • 一個完整的年需要買入1200支股票
      • 一個完整的年需要賣出1200支股票
    • 買賣股票的單價:
      • 都使用開盤價

(16)截取df,從日期2010年1月,截取到2021年12月

# 對行索引進(jìn)去切片
new_df = df['2010-01':'2021-12']
new_df
image.png

(17)買股票:找到每個月的第一個交易日(捕獲到開盤價) --> 每個月的第一行數(shù)據(jù)。

# 根據(jù)月份從原始數(shù)據(jù)中提取指定的值
# 每個月的第一個交易日行數(shù)據(jù)
# resample('M') 把數(shù)據(jù)按照月份進(jìn)去切割
df_monthly = new_df.resample('M').first()   #數(shù)據(jù)是沒有錯的,索引有問題,不影響使用
df_monthly
image.png

(18)買入股票花費(fèi)的總金額

cost = df_monthly['open'].sum()*100
cost
image.png

(19)賣出股票掙到的錢

注:特殊情況:2021年買入的股票沒有賣出去

# resample('A')按照年份進(jìn)行切割
new_df.resample('A').last()
# 將2021年最后一行切出去
df_yearly = new_df.resample('A').last()[:-1]
df_yearly
image.png

(20)賣出股票到手的錢

resv = df_yearly['open'].sum()*1200
resv
image.png

(21) 計算出最后一年有幾個月:

len(df.loc['2021-01-01':].resample('M').last())
image.png

(22)最后在手中剩余的股票價值加到總收益中

#使用昨天的收盤價作為剩余股票的單價
last_monry = len(df.loc['2021-01-01':].resample('M').last()) * 100 * new_df['close'][-1]
last_monry
image.png

(23)計算總收益

resv + last_monry - cost
image.png

總結(jié):假如我從2010年1月1日開始,每月第一個交易日買入1手股票,每年最后一個交易日賣出所有股票,到今天為止,我的收益為846587元,收益還是很不錯的。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 三個交易所:上交所 深交所 港交所 A股在上交所、深交所進(jìn)行,港股在港交所 深交所又分主板、中小板、創(chuàng)業(yè)板 價格優(yōu)...
    狼舞花開閱讀 966評論 0 0
  • 本文為您介紹的是新手必學(xué)的知識點(diǎn),股票k線圖是炒股過程最為基礎(chǔ)的圖形,大多數(shù)股票分析這都是通過k線圖來研究股票的,...
    投資新手村閱讀 755評論 0 0
  • 一、權(quán)重股。權(quán)重股就是總股本巨大的上市公司股票,權(quán)重越大對股票指數(shù)的影響越大。所以會經(jīng)常出現(xiàn)指數(shù)漲個股不漲的現(xiàn)象;...
    秋天的霞閱讀 396評論 0 1
  • 股票入門基本知識 交易時間周一到周五,9點(diǎn)30分到11點(diǎn)30分;13點(diǎn)到15點(diǎn)。法定的公眾假期除外,如:春節(jié)、國慶...
    股票閱讀 1,801評論 0 0
  • 大家好,小活來為大家解答以上問題。股市入門基礎(chǔ)知識從零開始,股市入門很多人還不知道,現(xiàn)在讓我們一起來看看吧! 1、...
    小李股票吧閱讀 180評論 0 2

友情鏈接更多精彩內(nèi)容