《大数据财务分析——基于Python》课后习题答案.docx

上传人:zf 文档编号:30802019 上传时间:2024-01-28 格式:DOCX 页数:47 大小:369.19KB
下载 相关 举报
《大数据财务分析——基于Python》课后习题答案.docx_第1页
第1页 / 共47页
《大数据财务分析——基于Python》课后习题答案.docx_第2页
第2页 / 共47页
《大数据财务分析——基于Python》课后习题答案.docx_第3页
第3页 / 共47页
《大数据财务分析——基于Python》课后习题答案.docx_第4页
第4页 / 共47页
《大数据财务分析——基于Python》课后习题答案.docx_第5页
第5页 / 共47页
点击查看更多>>
下载资源
资源描述

《大数据财务分析——基于Python》课后习题答案.docx

《《大数据财务分析——基于Python》课后习题答案.docx》由会员分享,可在线阅读,更多相关《《大数据财务分析——基于Python》课后习题答案.docx(47页珍藏版)》请在冰豆网上搜索。

《大数据财务分析——基于Python》课后习题答案.docx

第一章Python基础快速入门

Part1:

单项选择题

1.下面哪个数据类型表示整数(B)

A:

char B:

int

C:

float D:

list

该题选B。

选项A不是python的数据类型,C为小数格式,D为列表。

2.下面(C)不是推荐的变量名。

A:

a B:

banana

C:

list D:

my-score

该题选C。

变量命名需要便于理解和阅读,选项a缺乏含义,不易于阅读;选项c与列表名相同,容易混淆;选项d为非法命名。

3.下列代码的执行结果是(B)

A:

1 B:

3

C:

8 D:

4

该题选B,列表ls包括三个列表格式的元素。

Part2:

多项选择题

1.下面说法正确的是(ABC)

A、int函数可以将字符串转为整数但对字符串也有要求,如果字符串内有小数就不能直接转为整数

B、str函数可以将数字转为字符串

C、len函数可以统计字符串的长度

D、strip函数可以进行字符替换 用于移除字符串头尾指定的字符序列

该题选ABC,strip函数适用于头尾字符删除。

2.下面说法错误的是(BCD)

A、Python代码是逐行编写的

B、Python可以通过/进行注释应该是通过#注释

C、Python中缩进不重要 缩进会影响代码的运行逻辑

D、for语句是判断语句是循环语句而不是判断语句

B:

使用/不能用于注释,该字符通过‘Ctr+/’,用于单行和多行注释方式,前提是选中需要注释的代码,注释通常则使用#或'''''';

C:

缩进决定代码是否运行错误,很重要;

D:

判断语句一般为ifelse。

Part3:

判断题

1.列表的索引序号从1开始。

该题答案为错误。

索引序号从0开始。

Part4:

代码练习题

1.使用for循环语句计算从1加到10000的值。

num=0

foriinrange(10001):

  num+=i

print(num)

2.通过if判断语句、for循环语句和range()函数批量打印出1到100内的奇数。

foriinrange(1,101):

  ifi%2==1:

    print(i)

3.请提取a=’2020-07-2510:

53’中的年月日信息。

 

#方法一:

a='2020-07-2510:

53'

a=a.split('')[0]

print(a)

#方法二:

a='2020-07-2510:

53'

year=a[:

4]

month=a[5:

7]

day=a[8:

10]

print('年份为:

'+year,'月份为:

'+month,'日期为:

'+day)

4.请用2种方法清除a='   华能信托是家好公司   '两旁的空格。

 

a='华能信托是家好公司'

#方法1

result1=a.strip()

print(result1)

#方法2

result2=a.replace('','')

print(result2)

5.请提取列表a=['丁一','王二','张三','李四','赵五']中奇数序号的姓名。

a=['丁一','王二','张三','李四','赵五']

foriinrange(len(a)):

  ifi%2==0:

    print(a[i])

6.公司A在2016—2020年的净利润分别为2.5,2.8,3.1,2.9,3.3亿元,净资产分别为10,11,13,13.5,14亿元,通过print()函数打印输出2020年公司A的净资产收益率(ROE)。

#方法一:

ROE_2020=3.3/14

print(ROE_2020)

#方法二:

ROE=3.3/14

print('{}%'.format(round(ROE*100,2)))

#方法三:

ROE=3.3/14

print(str(round(ROE*100,2))+'%')

7.假设公司A是贵州茅台,通过字符串拼接得到它的完整股票代码:

600519.SH。

(上交所上市的股票代码后缀名为“.SH”,深交所为“.SZ”。

ID='600519'

Exchange='.SH'

Name=ID+Exchange

print(Name)

8.分别创建两个名为“net_profit”和“net_equity”的列表,列表元素分别为第6题中的5年净利润和5年净资产。

 

net_profit=[2.5,2.8,3.1,2.9,3.3]

net_equity=[10,11,13,13.5,14]

9.根据第8题中的两个列表计算得到2016—2020年每年的ROE,把结果放入新列表“ROE”中,并依次打印输出该列表中的所有元素。

 

#方法一:

ROE=[]

foriinrange(len(net_profit)):

  roe=net_profit[i]/net_equity[i]

  ROE.append(roe)

  print(roe)

   

#方法二:

ROE=[net_profit[i]/net_equity[i]foriinrange(len(net_profit))]

print(ROE)

10.选取第9题列表“ROE”中2018年的指标;选取5年中第2年到第4年的指标。

print(ROE[2])

print(ROE[1:

4])

11.公司A在2020年的收入为100亿元,资产总额为30亿元,首先计算总资产周转率,然后用if判断语句,如果公司A的总资产周转率大于2,则打印输出“总资产周转率为:

xx,指标较好”,否则,打印输出“总资产周转率为:

xx,指标较差”。

#方法一:

TAT=round(100/30,2)

ifTAT>2:

  print('总资产周转率为:

'+str(TAT)+',指标较好')

else:

  print('总资产周转率为:

'+str(TAT)+',指标较差')

#方法二:

TAT=round(100/30,2)

ifTAT>2:

  print('总资产周转率为:

{},指标较好'.format(TAT))

else:

  print('总资产周转率为:

{},指标较差'.format(TAT))

 

12.给定一个包含6位股票代码的列表stock=[‘600519',’000725',’600031'],通过for循环语句和if判断语句判断列表中每个代码是来自上交所还是深交所,并加上相应的后缀名“.SH”或“.SZ”,得到的新列表命名为“stockcode”。

(提示:

上交所的股票代码通常是6开头,深交所的股票代码通常是0开头。

) 

stock=['600519','000725','600031']

stockcode=[]

foriinstock:

  ifi[0]=='6':

    stockcode.append(i+'.SH')

  else:

    stockcode.append(i+'.SZ')

print(stockcode)

13.假设从财经网站获取了部分公司名称列表['贵州茅台','五粮液','泸州老窖'],以及这些公司对应的毛利率[‘0.75’,‘0.66’,’0.58’],使用str()函数分别把公司名称和对应的毛利率拼接成字符串(格式为“xx公司的毛利率为xx”)并依次输出结果。

 

name=['贵州茅台','五粮液','泸州老窖']

GP=[0.75,0.66,0.58]

foriinrange(len(name)):

  result=name[i]+'公司的毛利率为:

'+str(GP[i])

  print(result)

14.假设从财经网站获取了部分公司名称列表['贵州茅台''五粮液''泸州老窖'],以及这些公司对应的毛利率[0'.75'0'.66'0'.58'],注意获取到的毛利率格式为字符串类型。

依次判断各家公司的毛利率是否大于0.6,大于则输出“xx公司的毛利率优秀”,否则输出“xx公司的毛利率正常”。

name=['贵州茅台','五粮液','泸州老窖']

GP=['0.75','0.66','0.58']

foriinrange(len(name)):

  iffloat(GP[i])>0.6:

    print(name[i]+'公司的毛利率优秀')

  else:

    print(name[i]+'公司的毛利率正常')

15.创建一个名为transcode的函数,实现输入股票的6位数字代码可自动输出股票的完整代码(即包含上交所后缀名“.SH”或深交所后缀名“.SZ”)。

使用该封装好的函数批量判断列表stock=[‘600519',‘000725', ‘600031']并输出结果。

(提示:

上交所的股票代码通常是6开头,深交所的股票代码通常是0开头。

deftranscode(code):

  ifcode[0]=='6':

    print(code+'.SH')

  else:

    print(code+'.SZ')

     

stock=['600519','000725','600031']

foriinstock:

  transcode(i)

第二章通过Python接口快速获取财务数据

Part1:

单项选择题

1.使用tushare获取利润表中营业总收入的输出变量为(C)

A:

oth_b_income B:

total_profi

C:

total_revenue D:

operate_profit

2.使用tushare获取经营活动产生的现金流量净额的输出变量为(A)

A:

n_cashflow_act B:

free_cashflow

C:

n_cashflow_inv_act D:

n_cash_flows_fnc_act

3.使用tushare获取交易性金融资产的输出变量为(B)

A:

intan_assets B:

trad_asset

C:

acct_payable D:

lt_eqt_invest

Part2:

多项选择题

1.以下属于获取资产负债表输入参数的是(ABC)

A、ts_code

B、Period

C、Fields

D、Date

2.以下为tushare可用的接口是(BD)

A、Balance资产负债表的接口是balancesheet,该选项不完整

B、stock_company上市公司基本信息接口

C、stk_audit

D、fina_mainbz主营业务构成接口

B:

上市公司基本信息接口

D:

主营业务构成接口

A、C为拼写错误选项

Part3:

判断题

1.在获取宏观数据时,获取GDP数据的开始季度为必选参数,结束季度为可选参数。

错误,均非必选参数。

Part4:

代码练习题

1.参照2.2.4小节内容,利用Tushare接口获取中信特钢(000708.SZ)、抚顺特钢(600399.SH)、方大特钢(600507.SH)2018至2020年三张报表的数据,并另存为excel文件。

importtushareasts

pro=ts.pro_api('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')

#需要获取数据的公司名称、股票代码、年份

comps=['中信特钢','抚顺特钢','方大特钢']

codes=['000708.SZ','600399.SH','600507.SH']

years=[2020,2019,2018]

#循环获取语句

foriinrange(len(comps)):

  foryearinyears:

    df_balance=pro.balancesheet(ts_code=codes[i],period=str(year)+'1231')

    df_income=pro.income(ts_code=codes[i],period=str(year)+'1231')

    df_cash=pro.cashflow(ts_code=codes[i],period=str(year)+'1231')

    #保存为表格

    df_balance.to_excel(comps[i]+'_资产负债表_'+str(year)+'年.xlsx')

    df_income.to_excel(comps[i]+'_利润表_'+str(year)+'年.xlsx')

    df_cash.to_excel(comps[i]+'_现金流量表_'+str(year)+'年.xlsx')

2.参照2.3.1小节内容,利用Tushare接口获取抚顺特钢(600399.SH)基本信息、管理层信息、财务审计意见(2016年至2020年)以及主营业务构成(分别按地区和业务)。

df=pro.stock_company(ts_code='600399.SH',fields='ts_code,chairman,reg_capital,introduction,employees,main_business,business_scope')

df#JupyterNotebook中输入变量名打印,Pycharm中需输入print(df)

df=pro.stk_managers(ts_code='600399.SH')

df#JupyterNotebook中输入变量名打印,Pycharm中需输入print(df)

audit=pro.fina_audit(ts_code='600519.SH',start_date='20160101',end_date='20210101')

print(audit)

df=pro.fina_mainbz(ts_code='600399.SH',period='20201231',type='P')

df#JupyterNotebook中直接输入变量名打印,Pycharm中需要输入print(df)

df=pro.fina_mainbz(ts_code='600399.SH',period='20201231',type='D')

df#JupyterNotebook中直接输入变量名打印,Pycharm中需要输入print(df)

3.参照2.3.2小节内容,利用Tushare接口获取抚顺特钢(600399.SH)所属行业、地域和上市时间信息。

df_fstg=pro.stock_basic(ts_code='600399.SH',fields='ts_code,symbol,name,area,industry,list_date') 

df_fstg

4.参照2.3.3小节内容,利用Tushare接口获取‘上证A指’指数2021年上半年的行情数据。

(提示,先利用index_basic接口获得指数代码)。

df=pro.index_basic(name='上证A指')

df#JupyterNotebook中直接输入变量名打印,Pycharm中需要输入print(df)

 5.参照2.3.4小节内容,利用Tushare接口获取2020年一整年的LIBOR拆借利率数据(提示:

相关接口为pro.libor)。

df=pro.libor(start_date='20200101',end_date='20201201')

df#JupyterNotebook中直接输入变量名打印,Pycharm中需要输入print(df)

第三章财务数据分析利器--Pandas库

Part1:

单项选择题

1.以下不为常用创建DataFrame的方法是(C)

A:

通过列表创建   B:

通过字典创建

C:

通过字符串创建 D:

通过外部导入excel

该题选C。

常用的创建方法为列表法、字典法、空DF法、导入法等。

2.对名为data的dataframe进行数据筛选时,获取多列二维表格的方法是(C)

A:

a=data['c1'] series一维 B:

b=data[['c1']]只有一列

C:

c=data[['c1','c3']]     D:

d=data.iloc[1,1]写法不对

该题选C。

A:

为一维数组

B:

获取单列dataframe

D:

错误写法

3.根据列对数据进行排序时,要对c2列进行降序排序,应输入ascending=(A)

A:

False B:

True

C:

Up D:

Down

该题选A。

对数据进行排序时,使用False代表降序、True代表升序。

Pandas-Part2:

多项选择题

1.以下为Dataframe常用的拼接方法是(ABC)

A、merge()函数

B、concat()函数

C、append()函数

D、extend()函数

该题选ABC。

前三项为DF常用拼接方法,选项D用于在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)

2.在多个筛选条件时,可用的连接符号是(CD)

A、+

B、And

C、&

D、|

该题选CD。

在对DF筛选时多个条件的拼接符号通常为&或|

Pandas-Part3:

判断题

1.使用merge函数进行两个Dataframe合并时,默认的合并是取并集。

错误。

默认的合并是取交集,若要取并集,需要设置how参数。

Pandas-Part4:

代码练习题

1.pandas入门-创建二维表格

(1)通过列表,创建如下DataFrame。

0

1

2

0

10

20

30

1

40

50

60

(2)通过设置行、列索引的列表创建方式,创建如下DataFrame。

人均收入

人均支出

中国

8000

6000

韩国

7000

5000

美国

6500

4000

(3)通过创建一个空DataFrame,然后列表添加的方式,创建如下DataFrame。

日期

分数

0

2

92

1

4

95

2

6

100

(4)修改上一小题的列名为date和score。

答:

(1)

importpandasaspd

a=pd.DataFrame([[10,20,30],[40,50,60]])

(2)

a=pd.DataFrame([[8000,6000],[7000,5000],[6500,4000]],columns=['人均收入','人均支出'],index=['中国','韩国','美国'])

(3)

a=pd.DataFrame()#创建一个空DataFrame

date=[2,4,6]

score=[92,95,100]

a['日期']=date

a['分数']=score

(4)

a=pd.DataFrame()#创建一个空DataFrame

date=[2,4,6]

score=[92,95,100]

a['日期']=date

a['分数']=score

#方法1

a.columns=['date','score']

#方法2

a=a.rename(columns={'日期':

'date','分数':

'score'})

#方法3

a.rename(columns={'日期':

'date','分数':

'score'},inplace=True)

2.pandas基础操作1-数据选取(5分)

已知如下表格数据,为3人的日常生活缴费情况:

(1)根据列筛选数据

查看3人的房租情况,此外,查看3人的水费和房租的情况

importpandasaspd

df=pd.DataFrame([[10,20,30],[40,50,60],[70,80,90]],columns=['水费','电费','房租'],index=['丁一','王二','张三'])

a=df['房租']#也可以写成a=df[['房租']]

print(a)

b=df[['水费','房租']]

print(b)

(2)根据行筛选数据

查看第2到3行的数据,此外,查看最后一行的数据。

importpandasaspd

df=pd.DataFrame([[10,20,30],[40,50,60],[70,80,90]],columns=['水费','电费','房租'],index=['丁一','王二','张三'])

a=df[1:

3]#也可以写成a=df.iloc[1:

3],或者df.iloc[1,2]

print(a)

b=df.iloc[-1]#本题因为行数不多,也可以写成df.iloc[2]

print(b)

(3)按照区块来选取数据

查看丁一和王二的水费和房租情况

importpandasaspd

df=pd.DataFrame([[10,20,30],[40,50,60],[70,80,90]],columns=['水费','电费','房租'],index=['丁一','王二','张三'])

a=df.iloc[0:

2][['水费','房租']]

print(a)

(4)iloc函数同时选择行和列

查看王二的电费情况

importpandasaspd

df=pd.DataFrame([[10,20,30],[40,50,60],[70,80,90]],columns=['水费','电费','房租'],index=['丁一','王二','张三'])

a=df.iloc[1]['电费']#或者写成a=df.iloc[1][['电费']]

print(a)

(5)iloc函数和loc函数的主要区别

简介iloc函数和loc函数的主要区别

iloc是根据数字进行索引,而loc是根据名称进行索引

3.pandas基础操作2-

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 公务员考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1