对于炒股的同学来说,必须会看懂数据才能避免入坑。今天小千就来教大家如何去使用Python分析股票数据,学到就是赚到。(小千提醒,股市有风险,请谨慎投资)

      这次的美股例子就选择了美国显卡制造商英伟达,其股票代码是NVDA,熟悉英伟达的人都知道他们的CEO老黄(Jensen Huang),老黄有两样东西很出名,一是那件能穿4个季度的皮衣,二是精湛的显卡刀法。英伟达在老黄带领下飞速发展,其股价也是一直飙升,所以选择这个股票也是在近几年美股中具有代表性的。

      首先还是导入各种库。

      这里有一个不太常见的库是yfinance,这是从Yahoo网站获取数据的一个库,其使用非常简单,不需要相关api,同时也是免费的,而市场上其他不少库都要api,很多还是收费的,同时还有很多限制,所以我们选用了yfinance作为数据来源。yfinance直接用pip安装即可,笔者用的是anaconda,但用了conda安装会失败,最好还是用pip安装。接下来是获取数据。

      yfinance下载的数据直接是pandas的dataframe格式,这里我们只要输入股票代码以及起止时间就可以了,后面的progress是进度条选项,最好关闭,否则下载好之后结果中会有一个进度条(影响也不大)。这里我们下载英伟达过去5年的股票数据,从2015年1月1日到2019年12月31日。这里有一个问题要注意,就是yfinance的数据获取时间是提前1天的,比如设置起始时间start='2015-01-02',但最终得到的股票数据时间是从2015年1月1日开始的, 同样截止时间end='2020-01-01'也就意味着数据的截止时间是2019年12月31日。下载之后的数据如下图所示。

      然后是数据处理。

      上面这些步骤内容较多,在这里详细说明一下。从下载得到的数据中,我们选取Adj Close这一列,其全称是adjusted close,意思是调整收盘价,这就是我们要用到的数据,将其改名为adj_close,然后用adj_close计算会计收益率(也称简单收益率),即simple returns,将其命名为s_r,方法是用后一天数据除以前一天数据,再减一,当然这里用dataframe的pct_change方法也可以,得到的结果是一样的。从前面图2中我们可以看到得到的数据的时间是以天为单位的,但这些日期并不连续,中间有部分间断,这是因为股票市场在周末等节假日不开盘,而这里我们为了利用cpi来计算会计收益率,要设计一个连续时间范围,所以这里生成了一个名为df_dates的变量,其时间范围是连续的,从2015年1月1日到2019年12月31日,让其和df合并,得到的数据如下图所示。这里面NaN(not a number)都是节假日不开盘的日期。

      因为要计算实际收益率,其中使用的cpi(onsumer price index,消费者物价指数)是以月为单位的,所以我们也要把df转换成以月为单位,为了避免在每月最后一天是非开盘日,所以首先用了fillna方法,方式是'ffill',即按照前一日数据来填充,然后用asfreq('M')方法来得出每月最后一日的数据。很多人会问,这个每月最后一日的数据有什么用,因为我们用到的cpi数据都是按月份来公布的,每月只有一个cpi数据,所以我们计算会计收益率时也要按照月份来算,而每月会计收益率就是用这个月的最后一个交易日的调整收盘价除以上个月的最后一个交易日的调整收盘价,然后再减一,和前面每日会计收益率的计算方法一样。然后用月份会计收益率和cpi来计算实际收益率。而我们这次所用到的cpi数据,其时间范围从2015年1月至2019年12月,总共5年,这个数据可以从很多网站下载,直接到网上搜索就行了。

      读取cpi数据之后通过cpi数据计算通货膨胀率,即inflation rate,我们把这一列命名为inf_rate,方法和会计收益率一样,接着再用通货膨胀率计算实际收益率(Real Rate of Return),方法是(1+会计收益率)/(1+通货膨胀率)-1,我们将其命名为r_r。最后得到的df数据如下图所示。

      最后就是数据可视化。

      这里我们只要4列数据,即除了cpi之外的其他4列数据。将其置于4个子图中,绘图直接用dataframe的plot方法即可,在这里我们选用了ggplot的绘图主题。得到的结果如下图所示。

      从这里我们也可以看到用pandas分析美股数据非常方便,但是只掌握pandas的使用方法还是不够的,我们还要具备相关的金融基础知识,尤其是计量经济学的相关基础,因此在分析股票数据时最好还要有一定的经济学基础。所以在我们平时的业务工作当中,除了必要的编程技能以外,掌握相关的理论知识也是很重要的。

      本文来自千锋教育,转载请注明出处。

©著作权归作者所有:来自51CTO博客作者戏精程序媛的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 前端教程之Intro.js轻松实现新手引导效果
  2. Spark 2.0介绍:Catalog API介绍和使用
  3. 如何用Python批量修改文件名?
  4. 下一代大数据处理平台Apache Beam成为Apache顶级项目
  5. Apache CarbonData 1.0.0发布及其新特性介绍
  6. 好用的大数据平台有哪些?
  7. 页面布局有哪些技巧?前端页面怎么写?
  8. 浅谈信息技术在石油行业数字化转型中的运用
  9. 如何预测您的用户即将流失?

随机推荐

  1. Android界面开发
  2. Android Handler机制4之Looper与Handler
  3. android Toast大全(五种情形)建立属于你自
  4. android 应用移植到ophone 平台需注意
  5. 设置TextView文字居中
  6. Android 音视频汇总
  7. Android内嵌H5(1)
  8. Android学习笔记(2)---android字体风格设置
  9. 关于linearLayout的中 android:layout_we
  10. Android中Activity启动模式详解