Beispiel #1
0
def GetNetProfitGrowth(stockcode):
    file=os.getcwd()+'\\market_data\\'+'业绩预测.csv'
    #print(file)
    df=pd.read_csv(file,index_col=0)
    df['growth']=df['range'].str.extract('(\d+|-\d+)',expand=True).astype('float')
    #print(df)
    if int(stockcode) in list(df.index.values):
        growth=df.at[int(stockcode),'growth']
        if type(growth)==np.float64:
            #print(growth/100)
            return growth/100
        else:
            #print(growth[0]/100)
            return growth[0]/100
    else:
        stockname=ssa.get_stockname(stockcode)
        file=os.getcwd()+'\\stock_financial\\'+stockcode+stockname+'incomestatements.csv'
        df=pd.read_csv(file,index_col=0)
        #print(df)
        TermType={'1-3月':1,'1-6月':2,'1-9月':3,'度':4}
        i=len(df.columns)-1
        CurrentTerm=df.columns[i]
        LastTerm=str(int(CurrentTerm[:4])-1)+CurrentTerm[4:]
        if LastTerm not in df.columns:
            LastTerm=str(int(CurrentTerm[:4])-1)+'年度'
        if ssa.get_stock_type(stockcode)=='金融类': #金融类与非金融类股票的净利润项目名称不同,故要作区别对待。
            NetProfitName='(一)归属于母公司所有者的净利润'#'五、净利润'
        else:
            NetProfitName='归属于母公司所有者的净利润'#'四、净利润'
        CurrentProfit=float(df.at[NetProfitName,CurrentTerm].replace(',',''))/TermType[CurrentTerm[5:]]*4
        #print(CurrentTerm,CurrentProfit)
        LastProfit=float(df.at[NetProfitName,LastTerm].replace(',',''))/TermType[LastTerm[5:]]*4
        #print(LastTerm,LastProfit)
        #print(CurrentProfit/LastProfit-1)
        return CurrentProfit/LastProfit-1
Beispiel #2
0
def GetInventoryRate(stockcode): #获取存货比率
    stockname=ssa.get_stockname(stockcode)
    file1=os.getcwd()+'\\stock_financial\\'+stockcode+stockname+'balancesheet.csv'
    file2=os.getcwd()+'\\stock_financial\\'+stockcode+stockname+'incomestatements.csv'

    df1=pd.read_csv(file1,index_col=0)
    df2=pd.read_csv(file2,index_col=0)

    if '现金及存放同业款项'  in df1.index.values: #若是金融企业,没有存货,返回none
        return None,None

    s_ch=df1.loc['存货'].str.replace(',','').fillna('0').astype(float)/100000000
    s_yysr=df2.loc['一、营业收入'].str.replace(',','').fillna('0').astype(float)/100000000 #获取营业收入
    s_yysr_new_index=[]
    for index in s_yysr.index.values: #将季度营业收入转变为年度营业收入
        if '1-3月' in index:
            s_yysr[index]=s_yysr[index]*4
            s_yysr_new_index.append(index[0:4]+'-03-31')
        if '1-6月' in index:
            s_yysr[index]=s_yysr[index]/2*4
            s_yysr_new_index.append(index[0:4]+'-06-30')
        if '1-9月' in index:
            s_yysr[index]=s_yysr[index]/3*4
            s_yysr_new_index.append(index[0:4]+'-09-30')
        if '年度' in index:
            s_yysr_new_index.append(index[0:4]+'-12-31')
    s_yysr=pd.Series(s_yysr.values,index=s_yysr_new_index)
    InventoryRate=s_ch/s_yysr*100
    labels=list(InventoryRate.index.values)
    data=list(InventoryRate.values)
    #print(labels,data)
    return labels,data
Beispiel #3
0
 def GET(self,stockcode):
     labels,data1,data2=sn.GetAssets(stockcode)
     title=ssa.get_stockname(stockcode)+'(%s)'%stockcode+'-资产负债情况'
     legend1='总资产'
     legend2='净资产'
     yAxesLabel='(亿元)'
     render=web.template.render('templates')
     return render.showassets(title,labels,data1,data2,legend1,legend2,yAxesLabel)
Beispiel #4
0
 def GET(self,stockcode):
     labels,data1,data2=sn.GetROE(stockcode)
     title=ssa.get_stockname(stockcode)+'(%s)'%stockcode+'-资产收益率'
     legend1='总资产收益率'
     legend2='净资产收益率'
     yAxesLabel='(%)'
     render=web.template.render('templates')
     return render.ShowROE(title,labels,data1,data2,legend1,legend2,yAxesLabel)
Beispiel #5
0
 def GET(self,stockcode):
     labels,data1,data2=sn.GetIncomeProfit(stockcode)
     title=ssa.get_stockname(stockcode)+'(%s)'%stockcode+'-营收情况'
     legend1='营业收入'
     legend2='净利润'
     yAxesLabel='(亿元)'
     render=web.template.render('templates')
     return render.ShowIncomeProfit(title,labels,data1,data2,legend1,legend2,yAxesLabel)
Beispiel #6
0
 def GET(self,stockcode):
     labels,data=sn.GetReceivablesRate(stockcode)
     title=ssa.get_stockname(stockcode)+'(%s)'%stockcode+'-应收账款比率'
     #print(labels,data)
     #legend=''
     yAxesLabel='(%)'
     render=web.template.render('templates')
     return render.ShowReceivablesRate(title,labels,data,yAxesLabel)
Beispiel #7
0
 def GET(self,stockcode):
     labels,data1,data2=sn.GetPosition(stockcode)
     title=ssa.get_stockname(stockcode)+'(%s)'%stockcode+'-供应链地位'
     legend1='经营性资产'
     legend2='经营性负债'
     yAxesLabel='(亿元)'
     render=web.template.render('templates')
     return render.ShowPosition(title,labels,data1,data2,legend1,legend2,yAxesLabel)
Beispiel #8
0
 def GET(self,stockcode):
     labels,data=sn.GetAssetsSource(stockcode)
     title=ssa.get_stockname(stockcode)+'(%s)'%stockcode+'-资产来源'
     print(labels,data)
     #legend=''
     yAxesLabel='(亿元)'
     render=web.template.render('templates')
     return render.ShowAssetsSource(title,labels,data,yAxesLabel)
Beispiel #9
0
def GetAssetsSource(stockcode): #获取最近一期的资产来源
    stockname=ssa.get_stockname(stockcode)
    file=os.getcwd()+'\\stock_financial\\'+stockcode+stockname+'balancesheet.csv'
    print (file)
    df=pd.read_csv(file,index_col=0)
    if '现金及存放同业款项' in df.index.values: #对金融类和非金融类要作区分
        df2=df.loc[['向中央银行借款',
        '同业及其他金融机构存放款项',
        '短期借款',
        '拆入资金',
        '交易性金融负债',
        '衍生金融负债',
        '卖出回购金融资产款',
        '吸收存款',
        '代理买卖证券款',
        '代理承销证券款',
        '应付帐款',
        '应付票据',
        '预收款项',
        '预收保费',
        '应付手续费及佣金',
        '应付分保帐款',
        '应付职工薪酬',
        '应交税费',
        '应付利息',
        '代理业务负债',
        '预计负债',
        '应付赔付款',
        '应付保单红利',
        '保户储金及投资款',
        '未到期责任准备金',
        '未决赔款准备金',
        '寿险责任准备金',
        '长期健康险责任准备金',
        '长期借款',
        '应付债券',
        '独立帐户负债',
        '递延所得税负债',
        '其他负债',
        '实收资本(或股本)',
        '资本公积',
        '减:库存股',
        '盈余公积',
        '一般风险准备',
        '未分配利润',
        '少数股东权益',
        '外币报表折算差额',
        '非正常经营项目收益调整'], df.columns[-1]].str.replace(',','').fillna('0').astype(float)/100000000
    else:
        df2=df.loc[['短期借款','交易性金融负债','应付票据','应付账款','预收款项',
                 '应付职工薪酬','应交税费','应付利息','应付股利','其他应付款',
                 '应付关联公司款','一年内到期的非流动负债','其他流动负债',
                 '长期借款','应付债券','长期应付款','专项应付款','预计负债',
                 '递延所得税负债','其他非流动负债','实收资本(或股本)','资本公积','盈余公积',
                 '未分配利润','少数股东权益','外币报表折算价差','非正常经营项目收益调整'],
            df.columns[-1]].str.replace(',','').fillna('0').astype(float)/100000000
    return list(df2.index.values),list(df2.values)
Beispiel #10
0
 def GET(self,stockcode):
     labels,data1,data2,data3=sn.GetNetCashFlowSum(stockcode)
     title=ssa.get_stockname(stockcode)+'(%s)'%stockcode+'-资产收益率'
     legend1='经营性现金净额'
     legend2='筹资性现金净额'
     legend3='投资性现金净额'
     yAxesLabel='(亿元)'
     render=web.template.render('templates')
     return render.ShowNetCashFlowSum(title,labels,data1,data2,data3,legend1,legend2,legend3,yAxesLabel)
Beispiel #11
0
 def GET(self,stockcode):
     labels,data=sn.GetInventoryRate(stockcode)
     title=ssa.get_stockname(stockcode)+'(%s)'%stockcode+'-存货比率'
     #print(labels,data)
     #legend=''
     yAxesLabel='(%)'
     render=web.template.render('templates')
     if labels==None:
         return '金融类企业,无法计算存货比率!'
     else:
         return render.ShowInventoryRate(title,labels,data,yAxesLabel)
Beispiel #12
0
def GetTradePosition(stockcode):
    stockname=ssa.get_stockname(stockcode)
    file=os.getcwd()+'\\stock_financial\\'+stockcode+stockname+'balancesheet.csv'
    df0=pd.read_csv(file,index_col=0).fillna('0')
    df1=df0.loc[['应收票据','应收账款','预付款项','应付票据','应付账款','预收款项']].applymap(ssa.str_to_float)
    #print(df1)
    s_jyxzc=sum(df1[df1.columns[-1]][['应收票据','应收账款','预付款项']])#经营性资产
    #print(s_jyxzc)
    s_jyxfz=sum(df1[df1.columns[-1]][['应付票据','应付账款','预收款项']])#经营性负债
    #print (s_jyxfz)
    return s_jyxfz/s_jyxzc
Beispiel #13
0
def GetNetInvestmentCashSum(stockcode):
    stockname=ssa.get_stockname(stockcode)
    file=os.getcwd()+'\\stock_financial\\'+stockcode+stockname+'cashflow.csv'
    df=pd.read_csv(file,index_col=0).fillna('0')
    sr=df.loc['投资活动产生的现金流量净额']
    ls=[]
    for i in range(len(sr.index)):
        if i>0 and sr.index[i][5:]!='1-3月' and sr.index[i-1][5:]!='度':
            ls.append(float(sr[sr.index[i]].replace(',',''))-float(sr[sr.index[i-1]].replace(',','')))
        else:
            ls.append(float(sr[sr.index[i]].replace(',','')))
    return sum(ls)
Beispiel #14
0
def GetAssetsStructure(stockcode): #获取最近一期的资产结构
    stockname=ssa.get_stockname(stockcode)
    file=os.getcwd()+'\\stock_financial\\'+stockcode+stockname+'balancesheet.csv'
    print (file)
    df=pd.read_csv(file,index_col=0)
    if '现金及存放同业款项' in df.index.values: #对金融类和非金融类要作区分
        df2=df.loc[['现金及存放同业款项',
            '货币资金',
            '存放中央银行款项',
            '结算备付金',
            '贵金属',
            '拆出资金',
            '交易性金融资产',
            '衍生金融资产',
            '买入返售金融资产',
            '应收利息',
            '应收保费',
            '应收代位追偿款',
            '应收分保帐款',
            '应收分保未到期责任准备金',
            '应收分保未决赔款准备金',
            '应收分保寿险责任准备金',
            '应收分保长期健康险责任准备金',
            '保户质押贷款',
            '定期存款',
            '发放贷款及垫款',
            '存出保证金',
            '代理业务资产',
            '应收款项',
            '预付款项',
            '可供出售金融资产',
            '持有至到期投资',
            '长期股权投资',
            '存出资本保证金',
            '投资性房地产',
            '存货',
            '固定资产',
            '在建工程',
            '无形资产',
            '长期待摊费用',
            '固定资产清理',
            '独立帐户资产',
            '递延所得税资产',
            '其他资产'], df.columns[-1]].str.replace(',','').fillna('0').astype(float)/100000000
    else:
        df2=df.loc[['货币资金','交易性金融资产','应收票据','应收账款','预付款项',
             '其他应收款','应收关联公司款','应收利息','应收股利','存货',
             '一年内到期的非流动资产','其他流动资产','可供出售金融资产',
             '长期应收款','长期股权投资','投资性房地产','固定资产','在建工程',
             '工程物资','固定资产清理','生产性生物资产','无形资产','开发支出',
             '商誉','长期待摊费用','递延所得税资产','其他非流动资产'],
            df.columns[-1]].str.replace(',','').fillna('0').astype(float)/100000000
    return list(df2.index.values),list(df2.values)
Beispiel #15
0
def GetAssets(stockcode): #获取历年总资产与净资产
    stockname=ssa.get_stockname(stockcode)
    file=os.getcwd()+'\\stock_financial\\'+stockcode+stockname+'balancesheet.csv'
    #print (file)
    df=pd.read_csv(file,index_col=0)
    if '现金及存放同业款项' in df.index.values: #略有文字不一致,导致对金融类和非金融类要作区分
        s_zzc=df.loc['资产总计'].str.replace(',','').fillna('0').astype(float)/100000000#总资产
        s_jzc=df.loc['所有者权益(或股东权益)合计'].str.replace(',','').fillna('0').astype(float)/100000000#净资产
    else:    
        s_zzc=df.loc['资产总计'].str.replace(',','').fillna('0').astype(float)/100000000#总资产
        s_jzc=df.loc['所有者权益(或股东权益)合计'].str.replace(',','').fillna('0').astype(float)/100000000#净资产
    l_index=list(s_zzc.index.values) #报告期列表
    l_zzc=list(s_zzc.values) #总资产列表
    l_jzc=list(s_jzc.values) #净资产列表
    return l_index,l_zzc,l_jzc
Beispiel #16
0
def GetIncomeGrowth(stockcode):
    stockname=ssa.get_stockname(stockcode)
    file=os.getcwd()+'\\stock_financial\\'+stockcode+stockname+'incomestatements.csv'
    df=pd.read_csv(file,index_col=0)
    #print(df)
    TermType={'1-3月':1,'1-6月':2,'1-9月':3,'度':4}
    i=len(df.columns)-1
    CurrentTerm=df.columns[i]
    LastTerm=str(int(CurrentTerm[:4])-1)+CurrentTerm[4:]
    if LastTerm not in df.columns:
        LastTerm=str(int(CurrentTerm[:4])-1)+'年度'
    IncomeName='一、营业收入'
    CurrentIncome=float(df.at[IncomeName,CurrentTerm].replace(',',''))/TermType[CurrentTerm[5:]]*4
    #print(CurrentTerm,CurrentProfit)
    LastIncome=float(df.at[IncomeName,LastTerm].replace(',',''))/TermType[LastTerm[5:]]*4
    return CurrentIncome/LastIncome-1
Beispiel #17
0
def GetPosition(stockcode): #获取供应链地位
    stockname=ssa.get_stockname(stockcode)
    file=os.getcwd()+'\\stock_financial\\'+stockcode+stockname+'balancesheet.csv'
    print (file)
    df=pd.read_csv(file,index_col=0)
    if '现金及存放同业款项' in df.index.values: #对金融类和非金融类要作区分
        df2=df.loc[['吸收存款','发放贷款及垫款']].fillna('0').applymap(ssa.str_to_float)/100000000
        s_jyxzc=df2.loc['发放贷款及垫款'] #经营性资产
        s_jyxfz=df2.loc['吸收存款'] #经营性负债
    else:
        df2=df.loc[['应收票据','应收账款','预付款项',
                 '应付票据','应付账款','预收款项']].fillna('0').applymap(ssa.str_to_float)/100000000
        s_jyxzc=df2.loc['应收票据']+df2.loc['应收账款']+df2.loc['预付款项']#经营性资产
        s_jyxfz=df2.loc['应付票据']+df2.loc['应付账款']+df2.loc['预收款项']#经营性负债
    labels=list(s_jyxzc.index.values) #报告期
    data1=list(s_jyxzc.values) #经营性资产
    data2=list(s_jyxfz.values) #经营性负债
    return labels,data1,data2
Beispiel #18
0
def GetNetProfit(stockcode):
    stockname=ssa.get_stockname(stockcode)
    file=os.getcwd()+'\\stock_financial\\'+stockcode+stockname+'incomestatements.csv'
    df=pd.read_csv(file,index_col=0)    
    #print(df)
    i=len(df.columns)-1
    while i>=0:
        if '年度' in df.columns[i]:
            LastYear=df.columns[i]
            #print(LastYear)
            break
        i-=1
    if ssa.get_stock_type(stockcode)=='金融类': #金融类与非金融类股票的净利润项目名称不同,故要作区别对待。
        NetProfitName='(一)归属于母公司所有者的净利润'#'五、净利润'
    else:
        NetProfitName='归属于母公司所有者的净利润'#'四、净利润'
    #print(df.loc[NetProfitName])
    NetProfit=float(df.at[NetProfitName,LastYear].replace(',',''))
    return NetProfit
Beispiel #19
0
def GetROE(stockcode): #获取资产收益率
    stockname=ssa.get_stockname(stockcode)
    file1=os.getcwd()+'\\stock_financial\\'+stockcode+stockname+'balancesheet.csv'
    file2=os.getcwd()+'\\stock_financial\\'+stockcode+stockname+'incomestatements.csv'

    df1=pd.read_csv(file1,index_col=0)
    df2=pd.read_csv(file2,index_col=0)

    if '现金及存放同业款项' in df1.index.values: #略有文字不一致,导致对金融类和非金融类要作区分
        s_zzc=df1.loc['资产总计'].str.replace(',','').fillna('0').astype(float)/100000000#总资产
        s_jzc=df1.loc['所有者权益(或股东权益)合计'].str.replace(',','').fillna('0').astype(float)/100000000#净资产
    else:    
        s_zzc=df1.loc['资产总计'].str.replace(',','').fillna('0').astype(float)/100000000#总资产
        s_jzc=df1.loc['所有者权益(或股东权益)合计'].str.replace(',','').fillna('0').astype(float)/100000000#净资产

    if '五、净利润'  in df2.index.values: #金融企业与非金融企业,净利润的项目序号不一样,应区别获取
        s_jlr=df2.loc['五、净利润'].str.replace(',','').fillna('0').astype(float)/100000000
    else:
        s_jlr=df2.loc['四、净利润'].str.replace(',','').fillna('0').astype(float)/100000000

    s_jlr_new_index=[]
    for index in s_jlr.index.values: #将季度净利润转变为年度净利润
        if '1-3月' in index:
            s_jlr[index]=s_jlr[index]*4
            s_jlr_new_index.append(index[0:4]+'-03-31')
        if '1-6月' in index:
            s_jlr[index]=s_jlr[index]/2*4
            s_jlr_new_index.append(index[0:4]+'-06-30')
        if '1-9月' in index:
            s_jlr[index]=s_jlr[index]/3*4
            s_jlr_new_index.append(index[0:4]+'-09-30')
        if '年度' in index:
            s_jlr_new_index.append(index[0:4]+'-12-31')
    s_jlr=pd.Series(s_jlr.values,index=s_jlr_new_index)

    ROA=s_jlr/s_zzc*100 #总资产收益率
    ROE=s_jlr/s_jzc*100 #净资产收益率

    labels=list(ROA.index.values)
    data1=list(ROA.values)
    data2=list(ROE.values)
    return labels,data1,data2
Beispiel #20
0
def GetTotalLevel(stockcode):
    try:
        stockname=ssa.get_stockname(stockcode)
        #print(stockcode,stockname)
        StockPrice=GetStockPrice(stockcode)
        #print('股价:',StockPrice)
        shares=GetShares(stockcode)
        #print('总股本:',shares)
        NetProfit=GetNetProfit(stockcode)
        EPS=NetProfit/shares
        #print('每股收益:',EPS)
        NetProfitGrowth=GetNetProfitGrowth(stockcode)
        #print('净利润增长率:',NetProfitGrowth*100)
        IncomeGrowth=GetIncomeGrowth(stockcode)
        #print('营业收入增长率:',IncomeGrowth*100)
        InterValue=iv(NetProfitGrowth,EPS,0.07,15)
        #print('估值:',InterValue)
        #计算安全边际
        SecurityLevel=graduation(InterValue/StockPrice*100)
        #print('股价安全度:',SecurityLevel)
        #计算成长性
        GrowthLevel=graduation(NetProfitGrowth*100)
        #print('利润成长:',GrowthLevel)
        #计算营业能力
        IncomeLevel=graduation(IncomeGrowth*100)
        #print('营收增长:',IncomeLevel)
        #计算现金能力
        NetIncomeCashSum=GetNetIncomeCashSum(stockcode)
        #print('累计经营现金净额:',NetIncomeCashSum)
        NetInvestmentCashSum=GetNetInvestmentCashSum(stockcode)
        #print('累计投资现金净额:',NetInvestmentCashSum)
        CashLevel=graduation(NetIncomeCashSum/abs(NetInvestmentCashSum)*100)
        #print('运营现金:',CashLevel)
        #计算供应链地位
        TradePosition=GetTradePosition(stockcode)
        TradePositionLevel=graduation(TradePosition*100)
        #print('供应链地位:',TradePositionLevel)
        return stockcode,stockname,SecurityLevel,GrowthLevel,IncomeLevel,CashLevel,TradePositionLevel
    except:
        return None,None,None,None,None,None,None
Beispiel #21
0
def GetIncomeProfit(stockcode): #获取营业状况
    stockname=ssa.get_stockname(stockcode)
    file=os.getcwd()+'\\stock_financial\\'+stockcode+stockname+'incomestatements.csv'
    df=pd.read_csv(file,index_col=0)

    s_yysr=df.loc['一、营业收入'].str.replace(',','').fillna('0').astype(float)/100000000 #获取营业收入
    s_yysr_new_index=[]
    for index in s_yysr.index.values: #将季度营业收入转变为年度营业收入
        if '1-3月' in index:
            s_yysr[index]=s_yysr[index]*4
            s_yysr_new_index.append(index[0:4]+'-03-31')
        if '1-6月' in index:
            s_yysr[index]=s_yysr[index]/2*4
            s_yysr_new_index.append(index[0:4]+'-06-30')
        if '1-9月' in index:
            s_yysr[index]=s_yysr[index]/3*4
            s_yysr_new_index.append(index[0:4]+'-09-30')
        if '年度' in index:
            s_yysr_new_index.append(index[0:4]+'-12-31')
    s_yysr=pd.Series(s_yysr.values,index=s_yysr_new_index)

    if '五、净利润'  in df.index.values: #金融企业与非金融企业,净利润的项目序号不一样,应区别获取
        s_jlr=df.loc['五、净利润'].str.replace(',','').fillna('0').astype(float)/100000000
    else:
        s_jlr=df.loc['四、净利润'].str.replace(',','').fillna('0').astype(float)/100000000

    for index in s_jlr.index.values: #将季度营业收入转变为年度营业收入
        if '1-3月' in index:
            s_jlr[index]=s_jlr[index]*4
        if '1-6月' in index:
            s_jlr[index]=s_jlr[index]/2*4
        if '1-9月' in index:
            s_jlr[index]=s_jlr[index]/3*4
        
    labels=list(s_yysr.index.values)
    data1=list(s_yysr.values)
    data2=list(s_jlr.values)
    return labels,data1,data2
Beispiel #22
0
def GetReceivablesRate(stockcode): #获取应收账款比率
    stockname=ssa.get_stockname(stockcode)
    file1=os.getcwd()+'\\stock_financial\\'+stockcode+stockname+'balancesheet.csv'
    file2=os.getcwd()+'\\stock_financial\\'+stockcode+stockname+'incomestatements.csv'

    df1=pd.read_csv(file1,index_col=0)
    df2=pd.read_csv(file2,index_col=0)

    if '现金及存放同业款项' in df1.index.values: #对金融类和非金融类要作区分,计算应收账款
        df3=df1.loc[['应收利息','应收保费','应收代位追偿款','应收分保帐款','应收分保未到期责任准备金','应收分保未决赔款准备金',
                     '应收分保寿险责任准备金','应收分保长期健康险责任准备金','应收款项']].fillna('0').applymap(ssa.str_to_float)/100000000
        s_yszk=df3.loc['应收利息']+df3.loc['应收保费']+df3.loc['应收代位追偿款']+df3.loc['应收分保帐款']+ \
                df3.loc['应收分保未到期责任准备金']+df3.loc['应收分保未决赔款准备金']+df3.loc['应收分保寿险责任准备金']+ \
                df3.loc['应收分保长期健康险责任准备金']+df3.loc['应收款项']
    else:
        s_yszk=df1.loc['应收账款'].str.replace(',','').fillna('0').astype(float)/100000000

    s_yysr=df2.loc['一、营业收入'].str.replace(',','').fillna('0').astype(float)/100000000 #获取营业收入
    s_yysr_new_index=[]
    for index in s_yysr.index.values: #将季度营业收入转变为年度营业收入
        if '1-3月' in index:
            s_yysr[index]=s_yysr[index]*4
            s_yysr_new_index.append(index[0:4]+'-03-31')
        if '1-6月' in index:
            s_yysr[index]=s_yysr[index]/2*4
            s_yysr_new_index.append(index[0:4]+'-06-30')
        if '1-9月' in index:
            s_yysr[index]=s_yysr[index]/3*4
            s_yysr_new_index.append(index[0:4]+'-09-30')
        if '年度' in index:
            s_yysr_new_index.append(index[0:4]+'-12-31')
    s_yysr=pd.Series(s_yysr.values,index=s_yysr_new_index)
    ReceivableRate=s_yszk/s_yysr*100
    labels=list(ReceivableRate.index.values)
    data=list(ReceivableRate.values)
    #print(labels,data)
    return labels,data
Beispiel #23
0
        #print('累计投资现金净额:',NetInvestmentCashSum)
        CashLevel=graduation(NetIncomeCashSum/abs(NetInvestmentCashSum)*100)
        #print('运营现金:',CashLevel)
        #计算供应链地位
        TradePosition=GetTradePosition(stockcode)
        TradePositionLevel=graduation(TradePosition*100)
        #print('供应链地位:',TradePositionLevel)
        return stockcode,stockname,SecurityLevel,GrowthLevel,IncomeLevel,CashLevel,TradePositionLevel
    except:
        return None,None,None,None,None,None,None


    
if __name__=='__main__':
    stockcode=input('请输入股票代码:')#'000858'
    stockname=ssa.get_stockname(stockcode)
    print(stockcode,stockname)
    StockPrice=GetStockPrice(stockcode)
    label0='股价:'+str('{:.2f}'.format(StockPrice))+'元'
    print(label0)
    shares=GetShares(stockcode)
    label1='总股本:'+str('{:.2f}'.format(shares/100000000))+'亿'
    print(label1)
    NetProfit=GetNetProfit(stockcode)
    EPS=NetProfit/shares
    label2='每股收益:'+str('{:.2f}'.format(EPS))+'元'
    print(label2)
    NetProfitGrowth=GetNetProfitGrowth(stockcode)
    label3='净利润增长率:'+str('{:.2f}'.format(NetProfitGrowth*100))+'%'
    print(label3)
    IncomeGrowth=GetIncomeGrowth(stockcode)
Beispiel #24
0
def GetNetCashFlowSum(stockcode): #获取累计经营、投资和筹资累计现金流
    stockname=ssa.get_stockname(stockcode)
    file=os.getcwd()+'\\stock_financial\\'+stockcode+stockname+'cashflow.csv'
    df6=pd.read_csv(file,index_col=0).fillna('0').applymap(ssa.str_to_float) #之所以是df6,是因为从ssa中复制的代码,为尽量偷懒,故延用
    
    s_tzxjje=df6.loc['投资活动产生的现金流量净额']/100000000#投资现金净额
    #以下换算成季度数据
    s_tzxjje_value=[]
    s_tzxjje_index=[]
    s_tzxjje_lj_value=[]#计算累计额
    s_tzxjje_lj_index=[]
    for i in range(len(s_tzxjje)):
        if i>0 and  '年度' in s_tzxjje.index[i] and '1-9月' in s_tzxjje.index[i-1] and s_tzxjje.index[i][:5]==s_tzxjje.index[i-1][:5]:
            s_tzxjje_value.append(s_tzxjje[i]-s_tzxjje[i-1])
            s_tzxjje_index.append(s_tzxjje.index[i][:4]+'-12-31')
        elif '1-9月' in s_tzxjje.index[i] and '1-6月' in s_tzxjje.index[i-1] and s_tzxjje.index[i][:5]==s_tzxjje.index[i-1][:5]:
            s_tzxjje_value.append(s_tzxjje[i]-s_tzxjje[i-1])
            s_tzxjje_index.append(s_tzxjje.index[i][:4]+'-09-30')
        elif '1-6月' in s_tzxjje.index[i] and '1-3月' in s_tzxjje.index[i-1] and s_tzxjje.index[i][:5]==s_tzxjje.index[i-1][:5]:
            s_tzxjje_value.append(s_tzxjje[i]-s_tzxjje[i-1])
            s_tzxjje_index.append(s_tzxjje.index[i][:4]+'-06-30')
        else:
            s_tzxjje_value.append(s_tzxjje[i])
            s_tzxjje_index.append(s_tzxjje.index[i][:4]+'-03-31')
        s_tzxjje_lj_value.append(sum(s_tzxjje_value))#计算累计额
        s_tzxjje_lj_index.append(s_tzxjje_index[i])
    s_tzxjje_new=pd.Series(s_tzxjje_value,index=s_tzxjje_index)
    s_tzxjje_new.name=s_tzxjje.name
    s_tzxjje_lj_new=pd.Series(s_tzxjje_lj_value,index=s_tzxjje_lj_index)
    s_tzxjje_lj_new.name=s_tzxjje.name

    s_czxjje=df6.loc['筹资活动产生的现金流量净额']/100000000#筹资现金净额
    #以下换算成季度数据
    s_czxjje_value=[]
    s_czxjje_index=[]
    s_czxjje_lj_value=[]#计算累计额
    s_czxjje_lj_index=[]
    for i in range(len(s_czxjje)):
        if i>0 and  '年度' in s_czxjje.index[i] and '1-9月' in s_czxjje.index[i-1] and s_czxjje.index[i][:5]==s_czxjje.index[i-1][:5]:
            s_czxjje_value.append(s_czxjje[i]-s_czxjje[i-1])
            s_czxjje_index.append(s_czxjje.index[i][:4]+'-12-31')
        elif '1-9月' in s_czxjje.index[i] and '1-6月' in s_czxjje.index[i-1] and s_czxjje.index[i][:5]==s_czxjje.index[i-1][:5]:
            s_czxjje_value.append(s_czxjje[i]-s_czxjje[i-1])
            s_czxjje_index.append(s_czxjje.index[i][:4]+'-09-30')
        elif '1-6月' in s_czxjje.index[i] and '1-3月' in s_czxjje.index[i-1] and s_czxjje.index[i][:5]==s_czxjje.index[i-1][:5]:
            s_czxjje_value.append(s_czxjje[i]-s_czxjje[i-1])
            s_czxjje_index.append(s_czxjje.index[i][:4]+'-06-30')
        else:
            s_czxjje_value.append(s_czxjje[i])
            s_czxjje_index.append(s_czxjje.index[i][:4]+'-03-31')
        s_czxjje_lj_value.append(sum(s_czxjje_value))#计算累计额
        s_czxjje_lj_index.append(s_czxjje_index[i])

    s_czxjje_new=pd.Series(s_czxjje_value,index=s_czxjje_index)
    s_czxjje_new.name=s_czxjje.name
    s_czxjje_lj_new=pd.Series(s_czxjje_lj_value,index=s_czxjje_lj_index)
    s_czxjje_lj_new.name=s_czxjje.name

    s_jyxjje_0=df6.loc['经营活动产生的现金流量净额']/100000000#未经年度换算的经营现金净额,因尽量偷懒,复制的ssa中的代码
    #以下换算成季度数据
    s_jyxjje_0_value=[]
    s_jyxjje_0_index=[]
    s_jyxjje_0_lj_value=[]#计算累计额
    s_jyxjje_0_lj_index=[]

    for i in range(len(s_jyxjje_0)):
        if i>0 and  '年度' in s_jyxjje_0.index[i] and '1-9月' in s_jyxjje_0.index[i-1] and s_jyxjje_0.index[i][:5]==s_jyxjje_0.index[i-1][:5]:
            s_jyxjje_0_value.append(s_jyxjje_0[i]-s_jyxjje_0[i-1])
            s_jyxjje_0_index.append(s_jyxjje_0.index[i][:4]+'-12-31')
        elif '1-9月' in s_jyxjje_0.index[i] and '1-6月' in s_jyxjje_0.index[i-1] and s_jyxjje_0.index[i][:5]==s_jyxjje_0.index[i-1][:5]:
            s_jyxjje_0_value.append(s_jyxjje_0[i]-s_jyxjje_0[i-1])
            s_jyxjje_0_index.append(s_jyxjje_0.index[i][:4]+'-09-30')
        elif '1-6月' in s_jyxjje_0.index[i] and '1-3月' in s_jyxjje_0.index[i-1] and s_jyxjje_0.index[i][:5]==s_jyxjje_0.index[i-1][:5]:
            s_jyxjje_0_value.append(s_jyxjje_0[i]-s_jyxjje_0[i-1])
            s_jyxjje_0_index.append(s_jyxjje_0.index[i][:4]+'-06-30')
        else:
            s_jyxjje_0_value.append(s_jyxjje_0[i])
            s_jyxjje_0_index.append(s_jyxjje_0.index[i][:4]+'-03-31')
        s_jyxjje_0_lj_value.append(sum(s_jyxjje_0_value))#计算累计额
        s_jyxjje_0_lj_index.append(s_jyxjje_0_index[i])
            
    s_jyxjje_0_new=pd.Series(s_jyxjje_0_value,index=s_jyxjje_0_index)
    s_jyxjje_0_new.name=s_jyxjje_0.name
    s_jyxjje_0_lj_new=pd.Series(s_jyxjje_0_lj_value,index=s_jyxjje_0_lj_index)
    s_jyxjje_0_lj_new.name=s_jyxjje_0.name


    #整理数据以便输出
    labels=list(s_jyxjje_0_lj_new.index.values) #x刻度
    data1=list(s_jyxjje_0_lj_new.values) #经营性现金净额
    data2=list(s_czxjje_lj_new.values) #筹资性现金净额
    data3=list(s_tzxjje_lj_new.values) #投资性现金净额
    
    return labels,data1,data2,data3