一、初步想法
wind有一个很强大的库——EDB数据库,即经济数据库。Wind官方对它的介绍是:
经济数据库(EDB)整合了海量的宏观和行业数据,并配合强大的指标计算和图形功能,是目前很多经济学家、宏观分析师、策略分析师、行业研究员等必备的宏观和行业分析工具。EDB汇集了国内外权威数据发布机构的第一手数据资源,包括国民经济核算、国际收支、对外贸易、人口就业、财政金融、能源环境、价格水平等各国宏观经济数据专题,也包含包括价格、产量、销量、进出口量、产能、上市公司业务数据等行业数据专题。数据最早起始于1900年,频度跨越月、季、年度,既可以监测国内外国家和地区重点经济指标,又可以从专题角度进行国家间、行业间经济比较。EDB已成为国内外专家和学者分析和研究经济形势、行业影响的便捷工具。经济数据库包含中国宏观、地区宏观、海外宏观、行业数据、商品数据、利率数据、医药数据、三方数据八大类,目前共计800万条数据。我们每月都会定期更新及新增数据。八个指标体系兼容,用户可以自由选取指标,任意设置时间区间,自由提取;并提供图形制作、指标换算等多项功能。打开Excel,数据自动更新到最新。
这个数据库还是非常实用的,常用的利率、商品价格、行业数据等都可以方便的从这个数据库提取。
但是,在提取数据的时候(不管是从客户端还是EXCEL插件),都有一个很难受的问题,提取数据需要选择固定的起止日期,而且不能通过公式随时更新!!!这个bug让这么好用的数据库用起来非常不方便,特别是需要随时更新数据的时候得全部重新选择一遍,非常费时间。
但还好还好,Windpy可以解决这个问题!用Windpy导出数据的时候,还是可以通过设置日期参数来达到快速更新和导出的目的。
现在是Windpy—EDB数据库应用第一篇,主要完成了从EDB数据库导出指定经济数据,并可视化的任务。
二、思路和代码展示
(一)导入相关的库
(二)导出数据
先导出直接有的数据,以两个金价数据为例
def get_EDB_data(
EdbCode,
EdbName_list,
StartDate,
EndDate,
color_list,
ylabel1,
long_x = 10, # 图片的尺寸设置,默认是10,可以改
short_y = 6, # 图片的尺寸设置,默认是6, 可以改
need_to_show=True
):
# 1.数据导出
error_code, EDB_data = w.edb(EdbCode, StartDate, EndDate,"Fill=Previous",usedf=True) #导出价格
col=EdbName_list
EDB_data.columns=col
(三)可视化做图
把黄金价格走势做成折线图:
# 2.可视化做图
# 2.1 价格数据走势
plt.rcParams['figure.figsize'] = (long_x, short_y)
x = EDB_data.index
for index,EdbName in enumerate(EdbName_list):
y = EDB_data[EdbName_list[index]]
plt.plot(x, y,label=EdbName_list[index],
color=color_list[index], linestyle='-', markersize=5)
# 设置X,Y轴标签
plt.ylabel(ylabel1,fontsize = 14,loc="top")
# 设置图例
plt.legend(loc='best')
# plt.show()
# 设置图片标题并保存
plt.savefig('指标对比.png', bbox_inches='tight')
生成的图片如下:
(四)数据再处理,做成涨跌幅的对比折线图
数量级不一样,导致画出来的图不太好看趋势对比,所以把数据的涨跌幅计算出来,然后画成涨跌幅的折线图来看:
# 2.1 价格涨跌幅走势
EDB_data_increase = ((EDB_data - EDB_data.iloc[0,:]) / EDB_data.iloc[0,:])*100 #涨跌幅计算
plt.rcParams['figure.figsize'] = (long_x, short_y)
x2 = EDB_data_increase.index
for index,EdbName in enumerate(EdbName_list):
y2 = EDB_data_increase[EdbName_list[index]]
plt.plot(x2, y2,label=EdbName_list[index],
color=color_list[index], linestyle='-', markersize=5)
# 设置X,Y轴标签
plt.ylabel('涨跌幅:%',fontsize = 14,loc="top")
# 设置图例
plt.legend(loc='best')
# plt.show()
# 设置图片标题并保存
plt.savefig('指标涨跌幅对比.png', bbox_inches='tight')
生成的图片如下:
这样就能方便的看出来变化的趋势了~(ps:黄金的涨幅真的很喜人啊哈哈哈)
(五)函数调用
EdbCode = "S0035818,S0031645" #edb中的指标ID
EdbName_list = ['中国上金所黄金现货','伦敦现货黄金:美元计价'] #指标中文名称
StartDate = '20230301'
EndDate = '20240229'
color_list = [color1,color2,color3]
ylabel1 = '黄金价格'
get_EDB_data(EdbCode,EdbName_list,StartDate,EndDate,color_list,ylabel1)
三、总结
以上就是一个简单的运用Wind EDB数据库导出数据并进行数据分析、可视化的例子,这个可以和其他的Wind的库一起用,比如把指数数据和经济数据放在一起分析,具体的指数数据导出和分析的例子可以看这一篇《python+Windpy做金融数据分析》,之后应该也会出一个结合起来运用的例子,嘻嘻~
其他的应用也还将持续优化、更新,还有其他的分析实例也将再发出来~