本文介绍Pandas crosstab()和div()函数的用法。从Tushare获取股票的收盘价数据,计算每日收益率,接着判断每周各天涨跌的概率。
从Tushare中获取股票的收盘价,并做各种数据整理。
import numpy as np
import pandas as pd
import tushare as ts
pro=ts.pro_api()
df = pro.daily(ts_code='000725.SZ', start_date='20200813', end_date='20210813')
df=df[['trade_date','close']]
df['trade_date']=pd.to_datetime(df['trade_date'])
df=df.set_index('trade_date')
df=df.sort_index()
df['ret']=df.close.pct_change()
df=df.dropna()
df['positive']=np.where(df.ret>0,1,0)
df['week_day']=df.index.weekday
df
使用pd.crosstab构建一个交叉表,行使用week_day,列使用positive。函数会自动生成以date_week为分组,对positive的两个取值分别计数的表格。
xt=pd.crosstab(df.week_day,df.positive)
xt
DataFrame.div()函数其实是除法运算,表格的每个数据是被除数,第一个参数是除数,第二个参数是计算方向。
xt_pct=xt.div(xt.sum(1),0)
xt_pct