我的Python心路历程 第十期 (10.5 股票实战之数据可视化曲线)

背景

今日我的Python心路历程是 股票实战之数据可视化曲线)

方案

首先,通过公司股票代码名称获取数据并存储在csv文件中,数据来源于雅虎金融。

#!/usr/bin/python
# coding=UTF-8

# 基本信息
import os
import numpy as np
import pandas as pd
from pandas import Series, DataFrame

# 股票数据读取
import pandas_datareader as pdr

# 可视化
import matplotlib.pyplot as plt
#import seaborn as sns
#%matplotlib inline

# time
from datetime import datetime



if __name__ == '__main__':
    main()

成功写入csv效果如下图所示:
在这里插入图片描述
在这里插入图片描述

最为关键的是,这样获取的数据中是以带Adj Close值的,但从通信打下载的日线数据中没有该值,为此而苦恼了很久呢。

其次,一些基本操作。

通过pandas读取csv数据。


效果如下图所示:
在这里插入图片描述

提取Date和Adj Close,并图形化显示。

        #提取DateAdj Close
        top_tech_dfAdj = pd.merge(top_tech_df['Date'], top_tech_df['Adj Close'], how='outer', left_index=True, right_index=True)
        print top_tech_dfAdj.head()

        #画全部
        top_tech_dfAdj.plot()
        plt.show()

打印结果如下图所示:
在这里插入图片描述

图形化结果如下图所示:
在这里插入图片描述

但奇怪的是横轴没有显示日期。
经过优化后,更新部分的代码为:

        #初始化x、y轴的list取值
        # X坐标,将str类型的数据转换为datetime.date类型的数据,作为x坐标(直接取top_tech_dfAdj['Date']在内部处理是无法识别,要求float类型)
        xs = [datetime.strptime(d, '%Y-%m-%d').date() for d in top_tech_dfAdj['Date']]
        ys = top_tech_dfAdj['Adj Close']

        #图表属性,坐标轴设置如下
        plt.title(comnames + "  Adj Close")    #中文就会有编译错误
        plt.xlabel("Date")
        plt.ylabel("Adj Close")
        ax = plt.gca()  # 表明设置图片的各个轴,plt.gcf()表示图片本身
        ax.xaxis.set_major_formatter(mdate.DateFormatter('%Y-%m-%d'))  # 横坐标标签显示的日期格式;注意,如果不加语句plt.gca().xaxis.set_major_formatter(mdate.DateFormatter('%Y-%m-%d')),则横坐标只显示年份
        ax.axes.set_xticks(xs)
        plt.plot(xs, ys)#, 'o-')  # o-会现实圆点,不加参数值默认是曲线
        plt.xticks(pd.date_range('2020-01-01', '2020-12-30', freq='10d'))   #横坐标日期范围及间隔
        plt.yticks(range(0, 20, 1))  #设置纵坐标,使用range()函数设置起始、结束范围及间隔步长


        plt.gcf().autofmt_xdate()  # 自动旋转日期标记
        plt.tight_layout()  #自动调整标签大小

        #显示
        plt.show()

日期出来了,但是密度和范围生效方式不理想,如下图所示:
在这里插入图片描述

显示所有日期,且间隔90天的代码为:

        plt.xticks(pd.date_range('2015-01-01', '2020-12-30', freq='90d'))   #横坐标日期范围及间隔

效果

效果图为:
在这里插入图片描述

如何才能做到x轴整个区间显示指定范围的呢?思考良久,找了很多资料也没有说法。暂时到这里吧,日后真的用到了再说,先假装这个是伪需求吧!

plt可视化编译报错的解决办法。

RuntimeError: Python is not installed as a framework. The Mac OS X backend will not be able to function correctly if Python is not installed as a framework. 

在报错的py文件中加入如下代码:

#Mac OS X:Python is not installed as a framework解决方案
**import matplotlib
matplotlib.use('TkAgg')**

添加位置见下图所示:
在这里插入图片描述

1、我的Python心路历程 第十期 (10.4 股票实战之可视化figure篇)
2、【数据分析可视化】股票市场分析实战之风险分析
3、使用Python的pandas-datareader包下载雅虎财经股价数据

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值