#读取“计算机、通信和其他电子设备制造业”行业上市公司2014-2017年的
# 净利润数据“data2.xsx”,字段如下:
# 股票代码(Stkcd)、会计年度(Accper)、净利润(B002000101)
# 读取股票代码基本信息表“info.xlsx”,字段如下:
# 股票代码(Stkcd)、股票简称(Stknme)、行业名称(Nnindnme)
# 任务如下:
# 1.计算获得净利润增长率连续三年大于40%的上市公司股票,并返回结果
# 2.返回结构用一个数据框D来表示,其中index为上市公司股票简称,
# 字段为“2015”、“2016”、“2017”,值为当年的净利润增长率
def return_values():
import pandas as pd
dt=pd.read_excel('data2.xlsx') #获取数据
#选择满足2014—2017年都存在利润数据的上市公司股票代码,即存在4个会计年度
code=dt['Stkcd'].value_counts()
code=list (code[code==4].index)
#将股票基本信息表转化为序列,其中index为股票代码,值为股票名称
info=pd.read_excel('info.xlsx')
S=pd.Series(info.iloc[:,1].values,index=info.iloc[:,0].values)#预定义4个list,依次存放股票名称、2015年、2016年、2017年的净利润增长率
list1=[]
list2=[]
list3=[]
list4=[]
for t in range (len (code)):
d=dt.iloc[dt.iloc[:, 0] .values==code[t], 2].values
r=(d[1:]-d[0:-1])/d[0:-1]
if len(r[r>0.4])==3:
list1.append(S[code[t]])
list2.append(r[0])
list3.append(r[1])
list4.append(r[2])
#将净利润增长率数据定义为字典
D={'2015':list2, '2016':list3, '2017':list4}
#将字典转化为数据框,index为股票名称
D=pd.DataFrame(D, index=list1)
return D