1、显示结果,保留两位小数
risk = round(last , 2)
2、读取dbf文件,选择数据
#python中安装一下dbfread模块
pip install dbfread
#导入dbfread模块中的DBF函数
from dbfread import DBF
table = DBF('4N_JJFEZB_20200522.dbf',encoding='GBK')
for record in table:
for field in record:
if field == '前十名占比':
fund_fezb = record[field]
3、读取Excel文件
import pandas as pd
df1 = pd.read_excel('20200522.xls', header=6) #取出整个表并从第6行导入
df1 = df1.set_index(df1['科目代码'], drop=True) #把“科目代码”列设置为主键
#只需要科目代码、科目名称、数量、成本、成本占比列数据
df = df1.iloc[:,[1, 4, 7, 8]]
4、将带有逗号的数据比如“87,809.01”,去掉逗号,再转成浮点数
#取出必要的固定信息
zcjz = float(df['科目名称']['净值(成本)'].replace(',',"")) #先取出需要的资产净值数据,再去掉逗号,转成浮点数
5、merge函数使用,左边指定、右边指定、how确认哪里为主
#用merge函数,按照左连接,指定为“科目名称”进行连接
data = pd.merge(df, df_all, left_on='科目名称', right_on='证券简称', how='left')
6、生成一个日期序列,可以是相同的日期
data['当前日期'] = pd.date_range(start='2020-05-22',end='2020-05-22', periods=len(data.index))
7、查看,按照dataframe中某一列数据排序的效果
data.sort_values(by='到期日期',ascending=True)
8、使用groupby函数分类并agg计算,生成一个dataframe,可以使用
data.groupby('Wind债券二级分类').agg(np.sum) #查看按照债券分类的情况
data.groupby('Wind债券二级分类').agg(np.sum)['成本']['国债'] + data.groupby('Wind债券二级分类').agg(np.sum)['成本']['政策银行债']
data.groupby('发行人最新评级').agg(np.sum)
data[data['发行人最新评级'] == 'AA+'].groupby('发行人中文名称').agg(np.sum).sort_values(by='成本占比', ascending=False)
9、得到结果,生成一个dataframe装入结果,可以用来导出
#注:先定义一下列,可以用list,再用pandas生成一个dataframe
col_over = ['产品名称','产品代码','资产净值']
生成一个三列一行的dataframe
data_over = pd.DataFrame(index=[0],columns=col_over)
导出周报
data_over.to_excel(excel_writer='周报.xlsx', index=False, encoding='utf-8')
10、项目小结
(1)先分析需求,再结合特征理顺设计思路和逻辑框架,最后落实程序编制和自动化实现。
(2)写代码,注释很重要;方便阅读、修改和更新。
(3)函数、功能等容易忘记,尽量抽丝剥茧记录核心,便于查阅。