初入数据分析大门,感觉需要补的知识太多太多。不太建议系统补齐各种知识,因为大概率会倒在半路上。

以项目为导向,梳理大概流程,对流程中所需的知识点进行大致学习,以后遇到知识盲点再回来补。

接下来我以股票分析为例来了解数据分析流程。

个人认为股票分析无非就分为获取数据数据处理数据可视化三个部分,依赖 Python 强大的第三方开源库,上手难度变得非常低。

所需知识

  • 基础

    • Python
  • 环境
    • anaconda
  • 数据获取
    • pandas_datareader
  • 数据处理
    • numpy
    • pandas
  • 数据可视化
    • matplotlib seaborn

目的

  • 分析股票走势
  • 多只股票的关系

Python 基本语法

推荐去看廖雪峰的 Python 教程,浅显易懂,上手很快。

安装 anaconda

Anaconda是一个包含180+的科学包及其依赖项的开源Python发行版本。

安装 anaconda,直接去anaconda 官网下载安装即可。

anaconda 安装成功后,会自带安装 Jupyter,jupyter 主要用于我们代码的编写和运行。

创建一个新文件夹 stock-market-analysis ,进入当前目录,启动 jupyter 。

# 启动 jupyter
conda notebook
复制代码

启动成功,在浏览器中打开 http://localhost:8888/tree) ,单击 new,创建一个新的 notebook 就可以开始愉快的玩耍了!

numpy

numpy 是一个用于科学计算的 Python 库。

基本用法

# 引入 numpy
import numpy as np
复制代码
# 创建一个长度为15,3乘5的二维数组
a = np.arange(15).reshape(3, 5)
# 打印a
a
复制代码
array([[ 0,  1,  2,  3,  4],[ 5,  6,  7,  8,  9],[10, 11, 12, 13, 14]])
复制代码
# 创建一个长度为15,间隔10,3乘5的二维数组
b = np.arange( 1, 150, 10 ).reshape(3, 5)
# 打印b
b
复制代码
array([[  1,  11,  21,  31,  41],[ 51,  61,  71,  81,  91],[101, 111, 121, 131, 141]])
复制代码
# 两个二维数组相加
a + b
复制代码
array([[  1,  12,  23,  34,  45],[ 56,  67,  78,  89, 100],[111, 122, 133, 144, 155]])
复制代码

去官网了解更多

pandas

pandas 是一个基于 numpy 强大的 Python 数据分析包,它提供了很高级的数据结构和大量处理数据的方法。最终目的是为了我们更好的理解和处理数据。

基本用法

pandas 提供了两种数据结构,Series 和 DataFrame。

import numpy as np
import pandas as pd
from pandas import Series, DataFrame
复制代码

Series

Series 类似于字典,可以根据索引查找对应值

# 创建一个长度为4,1到10的随机整数
Series(np.random.randint(1,10,4))
复制代码
0    4
1    2
2    3
3    1
dtype: int64
复制代码
# 指定index
s = Series(np.random.randint(1,10,4), index=['a','b','c','d'])
s
复制代码
a    4
b    5
c    5
d    8
dtype: int64
复制代码
# 根据 index 查找
s['a']
复制代码
4
复制代码

DataFrame

DataFrame 是二维的数据结构,可以用行列的方式表示,可以把它想象成一个 Excel 表。

# 生成值为时间的数组
dates = pd.date_range('20130101', periods=6)
dates
复制代码
DatetimeIndex(['2013-01-01', '2013-01-02', '2013-01-03', '2013-01-04','2013-01-05', '2013-01-06'],dtype='datetime64[ns]', freq='D')
复制代码
# 生成 index 为日期,列名为 ABCD 的 DataFrame
df = DataFrame(np.random.randint(1,10,24).reshape(6,4), index=dates, columns=list('ABCD'))
df
复制代码
A B C D
2013-01-01 4 3 5 3
2013-01-02 3 1 1 8
2013-01-03 6 1 8 6
2013-01-04 8 8 9 2
2013-01-05 1 5 1 8
2013-01-06 2 4 9 5

去官网了解更多

matplotlib seaborn

matplotlib 是 Python 非常重要的数据可视化库,而 seaborn 是基于 matplotlib 开发的可视化库,更为强大易用。

基本用法

import numpy as np
import pandas as pd
from pandas import Series, DataFrame
import matplotlib.pyplot as plt
import seaborn as sns
复制代码
# 创建一个 Series,1000个从1到100间隔均匀的数组
s = Series(np.linspace(1, 100, 1000))
复制代码
s.plot()
复制代码
<matplotlib.axes._subplots.AxesSubplot at 0x1a226a23c8>
复制代码

# 创建一个 DataFrame,1到10的随机整数,10乘4的二维数组,列名为 a,b,c,d
df = DataFrame(np.random.randint(1,10,40).reshape(10,4),columns=list("abcd"))
复制代码
df
复制代码
a b c d
0 3 6 8 9
1 2 6 9 9
2 8 9 2 9
3 7 4 5 4
4 7 9 5 8
5 9 9 3 3
6 5 2 3 1
7 1 8 3 7
8 3 1 7 2
9 2 1 9 7
# matpoltlib 画图
df.plot()
复制代码
<matplotlib.axes._subplots.AxesSubplot at 0x11fe2ab38>
复制代码

# 对每列进行求和
df_sum = df.sum()
# 指定柱状图
df_sum.plot(kind='bar')
复制代码
<matplotlib.axes._subplots.AxesSubplot at 0x1a22821668>
复制代码

# seaborn 画图
index = df_sum.index
values = df_sum.values
sns.barplot(index, values)
复制代码
<matplotlib.axes._subplots.AxesSubplot at 0x1a229041d0>
复制代码

去 matplotlib 官网了解更多

去 seaborn 官网了解更多

有了以上的一些基本知识就可开始分析股票了。

股票分析

股票分析的步骤:

  • 获取数据
  • 处理数据
  • 数据可视化
  • 分析数据
# basic
import numpy as np
import pandas as pd
from pandas import Series, DataFrame# get data
import pandas_datareader as pdr# visual
import matplotlib.pyplot as plt
import seaborn as sns# time
from datetime import datetime
复制代码
# pandas_datareader 这个库提供 API 来获取股票数据
# get_data_yahoo 代表数据源来自 yahoo,'BABA' 是阿里巴巴的股票代码
df = pdr.get_data_yahoo('BABA')
# 由于数据较多,我们只取头部的五条数据来看
# high 表示最高价,low 表示最低价,open 表示开盘价,close 表示收盘价,volume 表示交易量
df.head()
复制代码
High Low Open Close Volume Adj Close
Date
2014-09-19 99.699997 89.949997 92.699997 93.889999 271879400 93.889999
2014-09-22 92.949997 89.500000 92.699997 89.889999 66657800 89.889999
2014-09-23 90.480003 86.620003 88.940002 87.169998 39009800 87.169998
2014-09-24 90.570000 87.220001 88.470001 90.570000 32088000 90.570000
2014-09-25 91.500000 88.500000 91.089996 88.919998 28598000 88.919998
# 我们取五家从2015年1月1号至今的股票数据进行分析
# 'MSFT':微软, 'AAPL':苹果, 'AMZN':亚马逊, 'FB':脸书, 'GOOG':谷歌
start = datetime(2015,1,1)
company = ['MSFT', 'AAPL', 'AMZN', 'FB', 'GOOG']
top_df = pdr.get_data_yahoo(company, start=start)
复制代码
# 得到一个数据集合,这个数据集合是 pandas.core 数据结构
type(top_df)
复制代码
pandas.core.frame.DataFrame
复制代码
# 看一下他们最近几日的收盘价
top_df['Close'].tail()
复制代码
Symbols AAPL AMZN FB GOOG MSFT
Date
2018-10-30 213.300003 1530.420044 146.220001 1036.209961 103.730003
2018-10-31 218.860001 1598.010010 151.789993 1076.770020 106.809998
2018-11-01 222.220001 1665.530029 151.750000 1070.000000 105.919998
2018-11-02 207.479996 1665.530029 150.350006 1057.790039 106.160004
2018-11-05 201.589996 1627.800049 148.679993 1040.089966 107.510002
# 直接用 matplotlib 画它们的股价走势
top_df['Close'].plot()
复制代码
<matplotlib.axes._subplots.AxesSubplot at 0x1a1741f748>
复制代码

# 根据他们的股价走势,画出股价波动
top_df_dr = top_df['Close'].pct_change()
top_df_dr.plot()
复制代码
<matplotlib.axes._subplots.AxesSubplot at 0x1a173004a8>
复制代码

# 上面的估计波动图太密集,不容易开出问题,我们选亚马逊和谷歌的进行对比
# 利用 seaborn 画出亚马逊和谷歌的散点图
# 每个点对应的横坐标和纵坐标,分别对应谷歌和亚马逊当日的涨跌情况,如果都为负数说明当日股价均为下跌
sns.jointplot('AMZN', 'GOOG', top_df_dr)
复制代码
<seaborn.axisgrid.JointGrid at 0x1a172d8048>
复制代码

# 我们还可以利用强大的 seaborn 对五家公司进行相互对比
sns.pairplot(top_df_dr.dropna())
复制代码
<seaborn.axisgrid.PairGrid at 0x1a1786ada0>
复制代码

感谢阅读!

Python 股票分析入门相关推荐

  1. python股票分析入门_学习用Python分析股票数据(入门)

    学习使用python来分析股票,主要事涉及数据获取.数据可视化,以及探究数据中各项指标的含义及和关系.使用工具 pandas.numpy.datatime pandas-datareader 在线获取 ...

  2. Python 股票分析快速入门

    Python 股票分析快速入门 这段时间股市又开始火爆起来了,隐约这透着点大牛市气息,多年不用的股票账户也找回来了.然后就想着用python做下股票分析,尝试制作自己的分析脚本,本篇教程是自己的一些笔 ...

  3. python 量化分析 入门_【合辑·收藏】Python量化从入门到精通

    原标题:[合辑·收藏]Python量化从入门到精通 引言 自2018年9月27日发第一篇推文以来,公众号"Python金融量化"专注于分享Python在金融量化领域的实战应用,坚持 ...

  4. Python股票分析系列——基础股票数据操作(二).p4

    该系列视频已经搬运至bilibili: 点击查看 欢迎来到Python for Finance教程系列的第4部分.在本教程中,我们将基于Adj Close列创建烛台/ OHLC图,这将允许我介绍重新采 ...

  5. Python股票分析系列——系列介绍和获取股票数据.p1

    本系列转载自youtuber sentdex博主的教程视频内容 https://www.youtube.com/watch?v=19yyasfGLhk&index=4&list=PLQ ...

  6. Python股票分析系列——数据整理和绘制.p2

    Python股票分析系列--数据整理和绘制.p2 欢迎来到Python for Finance教程系列的第2部分. 在本教程中,我们将利用我们的股票数据进一步分解一些基本的数据操作和可视化. 我们将要 ...

  7. python股票分析系统代码_Python 代码学习,用于股票分析

    最近,一位常年研究股票系统的开发者 pythonstock 用 Python 写了一个股票分析系统,发布数天就获得了不少关注. 于是我们就推荐给大家,既能学习 python 又能练习炒股.但正如项目作 ...

  8. 用Python数据处理分析入门必备系列文章:环境安装

    最近有挺多小伙伴问我要入门 Python 的资料,还有小伙伴完全没有入门 Python 就直接购买了我的 pandas 专栏.因此我决定写几篇 Python 数据处理分析必备的入门知识系列文章,以帮助 ...

  9. python 股票分析库_GitHub - reference-project/stock-1: stock,股票系统。使用python进行开发。...

    pythonstock V1 项目简介 特别说明:股市有风险投资需谨慎,本项目只能用于Python代码学习,股票分析,投资失败亏钱不负责,不算BUG. PythonStock V1 是基于Python ...

最新文章

  1. C++ 笔记(12)— 判断(if/if...else/switch、条件运算符)
  2. 一步步带你做vue后台管理框架(三)——登录功能
  3. python 对象销毁_python对象销毁实例(垃圾回收)
  4. keras入门(三)搭建CNN模型破解网站验证码
  5. jquery技巧(持续更新。。)
  6. linux安装mysql字符_Linux下MySQL的彻底卸载和安装配置字符集
  7. Swift4.0复习特性、编译标志和检查API的可用性
  8. [Leetcode][程序员面试金典][面试题17.13][JAVA][恢复空格][动态规划][Trie][字符串哈希]
  9. 在服务器上远程使用tensorboard查看训练loss和准确率
  10. STM32----SysTick实现监控开机时长
  11. Noteexpress更新文献时总出现重复的文献----有人知道怎么解决吗?请多多指教!
  12. SYNwall:零配置物联网防火墙
  13. 2021-2022年数学建模资料汇总——数学模型篇
  14. 三星 安装程序无法将 配置为此计算机,三星手机怎么安装软件 三星手机无法安装软件解决办法...
  15. umijs 隐藏开发工具_使用UmiJS框架开发React应用
  16. 禁止百度转码和百度快照缓存的META声明
  17. Preempt_RT Linux技术文档(一)技术基础(中英文对照)
  18. 读书·2020(26本)
  19. ps cc2019 安装教程
  20. AUTOSAR架构中的配置文件

热门文章

  1. 利用axis调用webservice
  2. 原 C语言实现万年历程序,C语言实现万年历源码
  3. 四、Vue项目去哪儿网首页推荐和周末游组件并使用Axios获取数据
  4. Guitar Pro8最新版 学吉他打谱必备的APP
  5. AI 也有音乐细胞,流行乐古典乐都难不倒它
  6. windows 空会话 ipc$域控 SYSVOL 和NETLOGON共享
  7. stm32f407zgt6的2.2LCD实例1.2:LCD屏幕程序讲解之LCD驱动底层代码
  8. 监控服务器网卡上传和下载网速的脚本
  9. python tornado异步_python tornado异步性能测试
  10. 如何跳出令人窒息的职场死循环