python金融分析小知识(27)——如何通过python连接Wind(万得)数据库

Hello 大家好,我是一名新来的金融领域打工人,日常分享一些python知识,都是自己在学习生活中遇到的一些问题,分享给大家,希望对大家有一定的帮助!

今天要个大家讲的是一个十分重要的知识,在我们平时的工作中肯定会经常用到Wind数据库,大家应该都知道Wind数据库有一个excel插件可以使用,大家可以通过excel插件的相关功能来提取Wind数据库的数据:

但是在我平时使用的过程中,我更喜欢用python的强大的数据处理能力,所以我会通过python去获取Wind数据库的数据,今天我就给大家介绍如何通过python连接Wind数据库。

1. 修复python接口

首先我们通过Wind金融终端的界面,里面选择修复python接口,这样接下来我们就可以连接Wind数据库啦!

 

2.通过python连接Wind数据库 

我们首先需要导入相关的包,代码如下:

## 连接Wind接口
import pandas as pd 
from WindPy import w
w.start()

连接成功后,会打印出如下语句,如果你不是下面的情况,有可能是因为你的Wind没有python接口的权限:

 

3.代码生成器的使用 

在第二步连接上Wind数据库后,我们就可以写语句来获取Wind中的数据啦!我们都知道对于不同的平台这种API语句有很大的不同,在这里大家不用去学Wind的API语句,因为我们有一个神器:代码生成器

 

在进入代码生成器后是这样的页面:

 

这个时候我们可以像使用Wind的excel插件一样,在红色框区域内选择自己想要看的标的、想要看的指标等等,这里就不加赘述了。

在这里我举个例子,我来获取融资融券交易金额、万得全A(除科创板)成交额以及上证综指,我们通过代码生成器可以获得如下的获取数据的语句,请注意以下语句是通过代码生成器生成的:

## 获取融资融券交易金额
data = w.edb("M0075989", "2013-01-04", "2022-05-31","Fill=Previous")

## 获取万得全A(除科创板)成交额 单位元
data2 = w.wsd("881008.WI", "amt", "2013-01-04", "2022-05-30", "")

## 获取上证综指
data3 = w.edb("M0020188", "2013-01-04", "2022-05-31","Fill=Previous")

4.整理获取的数据 

我计算了每日融资融券交易金额占比万得全A成交额,代码如下,这里有一点需要注意:就是通过Wind获取得到的数据形式并不是一个常见的DataFrame形式,所以我们需要将其稍微进行转化一下:

## 获取融资融券交易金额
data = w.edb("M0075989", "2013-01-04", "2022-05-31","Fill=Previous")
df = pd.DataFrame(data=data.Data[0],index=data.Times,columns=['融资融券交易金额'])
## 获取万得全A(除科创板)成交额 单位元
data2 = w.wsd("881008.WI", "amt", "2013-01-04", "2022-05-30", "")
df2 = pd.DataFrame(data=data2.Data[0], index=data2.Times,columns=['万得全A(除科创板)成交额'])
df2 = df2['万得全A(除科创板)成交额'] / 100000000
result = pd.merge(df,df2,left_index=True,right_index=True)
result['融资融券交易金额占比万得全A成交额'] = result['融资融券交易金额'] / result['万得全A(除科创板)成交额']
## 获取上证综指
data3 = w.edb("M0020188", "2013-01-04", "2022-05-31","Fill=Previous")
df3 = pd.DataFrame(data=data3.Data[0],index=data3.Times,columns=['上证综合指数'])
## 组合数据
result = pd.merge(result,df3,left_index=True,right_index=True)
result

我们来看看结果:

 

5.可视化展示 

接下来我们将每日融资融券交易金额占比万得全A成交额进行可视化展示,并同时画出上证综指:

## 绘图
import matplotlib.pyplot as plt
%config InlineBackend.figure_format = 'retina'
plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
fig, ax = plt.subplots(figsize = (14,6))
ax.plot(result.index, result['融资融券交易金额占比万得全A成交额'], label = '融资融券交易金额占比万得全A成交额', color = 'firebrick')
ax.axhline(y=0.12,linestyle='--',color = 'firebrick', lw = 2.5)
ax.axhline(y=0.06,linestyle='--',color = 'firebrick', lw = 2.5)
ax2 = ax.twinx()
ax2.plot(result['上证综合指数'], label = '上证综合指数', color = 'darkorange')
lines_1, labels_1 = ax.get_legend_handles_labels()
lines_2, labels_2 = ax2.get_legend_handles_labels()
lines = lines_1 + lines_2
labels = labels_1 + labels_2
ax2.legend(lines, labels, loc='best', frameon=False)

效果如下图:

 

好啦今天的文章就分享到这里! 

 

 

 

 

来源:君子以自强不息python

物联沃分享整理
物联沃-IOTWORD物联网 » python金融分析小知识(27)——如何通过python连接Wind(万得)数据库

发表评论