最近发现PYTHON与TABLEAU的组合简直就是我们数据分析爱好者的绝佳工具组合。最近对大类资产配置这个问题产生了较大的兴趣,笔者就使用python作为数据获取、数据处理的工具,同时采用tableau作为数据展现的工具简单分析了8大类资产近5年多的价格走势,也许会对当下大类资产配置决策提供一些参考依据。这8大类资产包括:

小麦

大豆

新华富时A50指数

原油

黄金

美元指数

道琼斯指数

数据获取

数据来源,直接爬取investing.com网站公布的各大类资产日行情数据,以黄金为例python源代码如下:

#首先需要安装selenium以及chrome驱动

from selenium import webdriver

def crawlMainIndex():

'''

在INVESTING.COM网站下下载最新的常见指数行情

'''

driver=webdriver.Chrome()

#爬取黄金指数行情

mainIndexDownloader(driver,'gold','http://cn.investing.com/commodities/gold-historical-data')

#此处省略爬取其它指数行情...

driver.quit()

def mainIndexDownloader(driver,indextype,url):

'''

根据xpath定位交易日、收盘价、开盘价、最高价、最低价、成交量、日涨幅等日行情数据

最后保存到数据库当中,为了可以每天增量下载,这里直接使用django的持久化框架。

'''

time.sleep(1)

driver.get(url)

time.sleep(1)

i = 1

while True:

quotes = driver.find_elements_by_xpath('//*[@id="curr_table"]/tbody/tr[%d]/td' % i)

if len(quotes) == 0:

break

#mainIndexQuote类直接映射为mysql数据库当中cron_mainindexquote表

data = mainIndexQuote(

tradeday=dateConverter(quotes[0].text),

closeprice=quotes[1].text,

openprice=quotes[2].text,

highprice=quotes[3].text,

lowprice=quotes[4].text,

tradevol=quotes[5].text,

chgpcnt=quotes[6].text.replace('%', ''),

type=indextype

)

existList = mainIndexQuote.objects.filter(tradeday=dateConverter(quotes[0].text)).filter(type=indextype)

#判断是否数据库当中已经存在,不存在则插入

if len(existList) == 0:

#持久化,保存在数据库当中

data.save()

i += 1

数据处理

想要分析抓取下来的8类资产价格走势,必须要解决以下几个问题:

不同品种的交易日期并不完全相同,放到一起展示,存在不对齐现象,即缺失值,必须对缺失值进行处理

不同交易品种,价格分布的区间不一样,需要进行规一化处理

由于数据库当中表的存储方式为长表,需要转换为宽表,具体原理请参见笔者的另一篇简书笔记Python数据分析之重塑reshaping与交叉表pivot table(1)

python语言当中的数据分析包pandas为解决上述数据分析过程当中的常见问题提供了非常便捷的方法,对应的源代码如下,可以看出上述三个问题,只需要两行代码

import pandas as pd

def analyseMainIndex():

'''

根据历史数据抓取的各主要指数行情,分析大类资产栩置情况

:return:

'''

with engine.connect() as conn, conn.begin():

df = pd.read_sql_table('cron_mainindexquote', conn)

#由于数据库当中表的存储方式为长表,需要转换为宽表,具体原理请参见笔者的另一篇简书笔记

#http://www.jianshu.com/p/e7ac9a0f5e6c

df1=df.pivot(index='tradeday', columns='type', values='closeprice')

#使用后向填充,作为缺失值处理方式,当然也可以使用前期填充,修改bfill参数值即可

#通过使用lambda匿名函数可以将不同大类资产的价格规范化为[0,1]区间,方便合并展示

df2=df1.fillna(method='bfill').apply(lambda x: (x - np.min(x)) / (np.max(x) - np.min(x)))

#将处理后的规范化的数据直接存储到CSV文件当中,当然此处也可以直接保存到数据库当中

df2.to_csv(r'd:\temp\normalization.csv')

数据展现

数据可视化的意义在于,让人在信息爆炸时代快速、直观地获取自已关注的信息。通过tableau直连前面已经清理整理好的csv数据文件之后,几秒钟之内即可绘制出8类资产价格走势图。效果如下:

8类资产近5年价格走势.png

从上图中可以发现,在这八大类资产当中,小麦、大豆、铜、石油都处于近5年来的相对价格低位,而美元指数、道指、已经处于5年内价格高位,正所谓,人往高处走,水往低处流,那是不是说近5年来的相对低位的资产种类看多就会因为被低估而比较安全呢?至少从近期来看,结论似乎是对的,但相信答案没有那么简单。

工行网银交易截图

图片发自简书App

提出问题,收集数据,学习原理,尝试回答问题,正是数据分析的迷人之处。

python分析数据走势_python数据分析应用 - 近5年八类资产价格走势分析相关推荐

  1. python分析数据走势_Python数据分析及可视化实例之个股走势预测(26)

    1.项目背景: 仅仅用来练手,个股走势如果真预测准确了,都就改行当操盘手了,哈哈! 但话又说回来,如果把数据曲线特征提取出来,再进行对比异常判断,也是可以的. 数据源,请关注微信公众号:海豹战队,回复 ...

  2. python分析数据图片_python数据分析常用图大集合

    以下默认所有的操作都先导入了numpy.pandas.matplotlib.seaborn import numpy as np import pandas as pd import matplotl ...

  3. python显示数据长度_Python数据分析之初识可视化

    一.数据可视化概述 数据可视化是在整个数据分析非常重要的一个辅助工具,可以清晰的理解数据,从而调整我们的分析方法. - 能将数据进行可视化,更直观的呈现 - 使数据更加客观.更具说服力 例如下面两个图 ...

  4. python分析数据走势图_python对股市进行数据分析-tushare篇

    数据准备 TuShare是一个免费.开源的python财经数据接口包.主要实现对股票等金融数据从数据采集.清洗加工 到 数据存储的过程,能够为金融分析人员提供快速.整洁.和多样的便于分析的数据,为他们 ...

  5. python分析股票数据 彤_Python数据分析:股票数据

    最近股市比较火,我7月初上车了,现在已经下了.中间虽然吃了点肉,但下车的时候都亏进去了,最后连点汤都没喝着. 这篇文章我们就用它python 对股票数据做个简单的分析.数据集是从1999年到2016年 ...

  6. python案例分析大学生薪资_Python数据分析实战:解密数据分析师的薪资和需求

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:CPDA数据说 喜欢的朋友欢迎关注小编,除了分享技术文章之外还有很多 ...

  7. python足球数据可视化_NBA数据分析_python可视化数据分析_可视化数据分析工具_可视化分析工具-帆软...

    夺冠没含金量!python和BI可视化分析,湖人赢在这点上. 在经历了很多很多之后,湖人队终于获得了总冠军,众望所归. 如果科比还在的话,一定也很自豪吧,毕竟上一次夺冠还是10年前. 那问题来了,为什 ...

  8. python分析微博粉丝_python数据分析微博热门

    接上篇,这一篇将从技术层面讲讲是如何实现的.阅读本文您将会了解如何用python爬取微博的评论以及如何用python word_cloud库进行数据可视化. 准备工作 为什么要用m站地址?因为m站可以 ...

  9. python 股票分析常用库_Python数据分析常用库有哪些?Python学习!

    Python为什么受欢迎?因为Python简单.易懂.好用,是一门高级的编程语言;除此之外,Python提供了大量的第三方库,开箱即用,方便.免费,非常适合从事数据分析领域的工作. 大家也都知道,Py ...

最新文章

  1. 在SpringMVC中使用@RequestBody注解处理json时,报出HTTP Status 415的解决方案
  2. puppet安装常遇见的问题
  3. matlab 涡轮流量计_秦皇岛卫生级流量计定制
  4. Go命令行库Cobra的使用
  5. Angular Component之间的事件通知机制
  6. python-循环语句基础知识
  7. java excel odbc_Java:无法使用JDBC ODBC更新Excel
  8. mysql 事件的作用_MySQL 事件
  9. MYSQL-查询过去7天的数据 当天没有值的赋予默认值0或者其他
  10. 矩阵特征值的一些特点
  11. windows server 2008R2下安装nginx
  12. Quorum企业以太坊搭建区块链记录系列
  13. python爬取歌词_利用Python网络爬虫抓取网易云歌词
  14. easyCMDB安装 ops版本和挂在U盘
  15. python random模块点餐程序_python之random模块
  16. 人民银行招聘考试计算机类真题,中国人民银行招聘计算机类笔试试题大全(多套试题包含答案,考友经验分享试题分析,最全整理资料).doc...
  17. 旋转矩阵、变换矩阵,李群(Lie Group)、李代数(Lie Algebra)及扰动模型
  18. android手机微信输入蓝色字体,终于,微信可以设置彩色昵称了!
  19. javascript 弹出对话框
  20. 分布式与集群的区别是什么?

热门文章

  1. 使用Power BI Desktop可视化分析冠状病毒数据
  2. java 执行ssis包_在SSIS包中使用CHECKPOINT重新启动包执行
  3. sql 生成csv数据_创建包含SQL Server数据的动态生成的CSV文件
  4. sql server 快照_SQL Server复制:配置快照和事务复制
  5. Jmeter接口测试---加解密
  6. Codeforces Round #519 by Botan Investments翻车记
  7. Thrift-java实例
  8. odbc数据源的配置
  9. PostgreSQL高可用性、负载均衡、复制与集群方案介绍
  10. TeeChart.Pro.v7.06在BDS2006中的安装(For Win32)