当前位置: 首页>>代码示例>>Python>>正文


Python Base.get_val_rank方法代码示例

本文整理汇总了Python中Base.Base.get_val_rank方法的典型用法代码示例。如果您正苦于以下问题:Python Base.get_val_rank方法的具体用法?Python Base.get_val_rank怎么用?Python Base.get_val_rank使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Base.Base的用法示例。


在下文中一共展示了Base.get_val_rank方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: StockDataStat

# 需要导入模块: from Base import Base [as 别名]
# 或者: from Base.Base import get_val_rank [as 别名]
class StockDataStat(object):
    
    def __init__(self,token=settings.token):
        self.token=settings.token
        self.ba=Base()
       # self.proc=StockDataProc()
    
    #对某些列进行计算后作为新的列加入df
    def _df_calcadd(self,df,colnams,new_colid,calc_op,calc_op_para={}):
        new_cols=calc_op(df[colnams],**calc_op_para)
        new_colnams=[n+new_colid for n in colnams]
        df[new_colnams]=new_cols
        return df
    
    def calc_cumsum(self,df,axis=0):
        return df.cumsum(axis=axis)
    
    def proc_df_addcumsum(self,df,colnams):
        new_colid='cum'
        calc_op=self.calc_cumsum
        return self._df_calcadd(df,colnams,new_colid,calc_op)
    
    def _calc_outliers_std(self,data,n=3,ismask=False):
        m,s=(np.mean(data),np.std(data))
        down,up=(m-n*s,m+n*s)
        if ismask:
            return np.logical_or(data<=down, data>=up)
        else:
            return data[np.logical_or(data<=down, data>=up)]
    
    def _calc_outliers_q(self,data,n=1.5,ismask=False):
        q31=np.percentile(data,[75])-np.percentile(data,[25])
        m=np.median(data)
        down,up=(m-n*q31,m+n*q31)
        if ismask:
            return np.logical_or(data<=down, data>=up)
        else:
            return data[np.logical_or(data<=down, data>=up)]
        
    
    def calc_outliers(self,data,isnorm=True,ismask=False):
        data=np.array(data)
        data = data[~np.isnan(data)]
        
        if isnorm:
            return self._calc_outliers_std(data,ismask=ismask)
        else:
            return self._calc_outliers_q(data,ismask=ismask)
        
        
        
    #按行或列计算df每列/行的变化率
    #计算方向是第一行/列比第二行的变化率,因此计算后最后一行数据会是空值
    #输入:
    #df--所有的值必须为nmumeric
    #axis--0,按照行的方向(vertical)计算变化率,1,按照列的方向(hori)计算变化率
    #drop_last--是否去掉最后一个空值的行/列,True去掉
    #返回:
    #变化率版本的df,如果df中有不为numeric的值,返回原df
    def proc_df_pct(self,df,axis=0,drop_last=True,periods=1):
        para=0.5*periods/abs(periods)
        try:
            df_perchange=df.pct_change(periods=periods,axis=axis)
        except TypeError:
            print '仅支持df中所有值全部为numeric格式'
            return df
            
        if drop_last:
            if axis==1:
                df_perchange=df_perchange.drop(df_perchange.columns[para-0.5],axis=axis)
            else:
                df_perchange=df_perchange.drop(df_perchange.index[para-0.5],axis=axis)
        return df_perchange
        
    def calc_valrank(self,vals,basedf):
        ranks=[]
        for v,i in zip(vals,basedf):
            if v:
                ranks=ranks+self.ba.get_val_rank(v,basedf[i])
            else:
                ranks=ranks+None
        return ranks
    
    
    def contrade_stat(self,df):
        size=df.shape[0]
        vol_total=df['volume'].mean()
        amt_total=df['amount'].mean()
        pchan_median=df['p_change'].median()
        pchan_mean=df['p_change'].mean()
        pchan_mad=df['p_change'].mad()
        
        #outlier分析
        #行业内outlier,和行业median比较
        outlier_mask=self.calc_outliers(df['p_change'],isnorm=False,ismask=True)
        if sum(outlier_mask)>0:
            pchan_outl=df.dropna().ix[outlier_mask]
            outliers=pchan_outl['p_change']
            #--outlier对于行业内差异的影响度:
            #------股票偏离median的值 除以 行业内所有股票偏离median的总和,再将所有outlier的占比相加
#.........这里部分代码省略.........
开发者ID:rainwu,项目名称:stockdata,代码行数:103,代码来源:StockDataStat.py


注:本文中的Base.Base.get_val_rank方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。