Python 进阶教程
Python 进阶教程
首先一般而言,当前的 Python 内容实际上只需讨论 Python 3。Python 2 因为 众所周知的大问题 ,且已停止更新了。
Python 的一些官方网站
- python 官方网站:https://www.python.org/
- Anaconda:https://www.anaconda.com/ 、 https://anaconda.org/
- Jupyter nbviewer:https://nbviewer.org/
- Pycharm:https://www.jetbrains.com/zh-cn/pycharm/
Python 基础学习网站
Python 基础&进阶书籍
- 《Python编程:从入门到实践》
- 美国作者,这本书作为学习 Python 语言学习的入门书籍及中等提高类书籍非常合适。
- 个人认为比曾经绝大多数人推荐的挪威作者《Python 基础教程》(当时推荐的时候还是第 2 版)书要好读得多。
- 《量化投资以 Python 为工具》
- 不要被书籍的名字骗了,这本书讲述的内容是最最最基础的 Python 及金融知识应用,完全可以作为初学 Python 数据分析的低年级同学使用。
《Python 金融风险管理 FRM》
- 基础篇:没有看过,不做评价
- ※ 实战篇:推荐,既是学习金融衍生品初步知识的好书,又配套全了 Python 代码,适合在校学生学习使用 + 作为工具书备用。
《机器学习及 Python 应用》
- 作者是大名鼎鼎的陈强老师,曾写作《高级计量经济学及Stata应用》。
- 但是这本书很明显,是陈强老师所带学生写作的书,并不是特别地深入。
- To Be Continue…
Python爬虫:requests、Selenium+PhantomJS
requests
requests Example 1:Python爬取Konachan站图片
requests Example 2:Python爬取csgowallpaper站图片
Data Science:Numpy、Pandas、Scipy、Sympy
Numpy
numpy
主要用来处理矩阵或者列表类型的东西,熟练使用numpy
的前提是熟练 python 的数据结构。- Official Website:https://numpy.org/
- 教程:
Numpy-financial
- https://numpy.org/numpy-financial/latest/
- The financial functions in NumPy are deprecated and eventually will be removed from NumPy; see NEP-32 for more information. This package is the replacement for the deprecated NumPy financial functions.
- The importable name of the package is numpy_financial. The recommended alias is npf.
Numpy Example 1
#coding:utf-8 |
Pandas
- 个人认为,
pandas
是numpy
的进阶版,而掌握了pandas
后,基本上可以替代numpy
。 - Official Website:https://pandas.pydata.org/
Scipy
Scipy
基于numpy
,同时又扩展numpy
功能,也就是说能用Scipy
就用Scipy
。Scipy
主要功能:线性代数、数值分析、最优化、统计描述……- Official Website: https://scipy.org/
- Scipy Example 1: Numerical Methods in Finance
Sympy
SymPy
是一个符号计算的Python库。
Sympy Example 1
from sympy import * |
Visualization可视化:matplotlib、seaborn
Matplotlib
- Official Website:https://matplotlib.org/
Matplotlib Example 1
import numpy as np |
在markdown中插入svg格式的图片:详见:
https://stackoverflow.com/questions/13808020/include-an-svg-hosted-on-github-in-markdown
seaborn
Seaborn is a Python data visualization library based on matplotlib. It provides a high-level interface for drawing attractive and informative statistical graphics.
- Official Website:https://seaborn.pydata.org/
Machine Learning:Sklearn、Statsmodels、Linearmodels
Linear Regression 为两者的重合部分之一,不过需要注意的是 Statsmodels 包下,需要将 X 增加一列 1 以得到有截距项下的线性回归拟合,否则无线性回归截距项。预测(尤其是分 training set 和 test set 下)最好用 sklearn包。
Sklearn
- sklearn 包主要用于 Machine Learning
- Official User Guide:https://scikit-learn.org/stable/user_guide.html
Statsmodels
- Statsmodels 包主要用来 Time Series Analysis
- Official User Guide:https://www.statsmodels.org/stable/user-guide.html
linearmodels
- Kevin Sheppard 推出的 Python 包 linearmodels 可以用来做金融计量,简单的比如说 FamaMacbeth、GMM之类的方法
- 当然,这些可以试试去用 Stata 实现一下,详见 https://fintechprofessor.com/2017/12/10/fama-and-macbeth-1973-fastest-regression-in-stata/
- Kevin Sheppard 还推出了许多非常有用的包:
- Python: linearmodels、arch
- MATLAB: MFE Toolbox
- Official User Guide:https://bashtage.github.io/linearmodels/
Deep Learning:Keras、Tensorflow、Pytorch
Keras
Tensorflow
Pytorch
- 某三中一华(没一华,因为学校被拉黑了)风险管理部用 Pytorch 做宏观预测、预警工作。【Deep Learning & Reinforcement learning】
Python与量化投资:akshare、QuantLib
此处声明:不会推荐Tushare。
akshare
- Official User Guide:https://www.akshare.xyz/
QuantLib
- Official User Guide:https://www.quantlib.org/
- Quantlib 学习网站:
Python Examples
练习题1:写一个分组的函数
根据一个M*N的array,将每一行的数据,计算其20%, 40%, 60%, 80%分位数
计算每一行,每一组0-20%, 20%-40%, 40-60%,60-80%,80-100%的数的平均值
产生一个100*1000的array的随机数,调用上面的分组函数,输出结果。
np.random.seed(1234)
np.random.randn(100,1000)
import numpy as np |
或者更简洁的代码:
import numpy as np |
练习题2:写一个OLS回归的函数 (不能用包里面的自带函数)
计算OLS回归的系数(用矩阵的形式来写),t-值,R2
产生一个100*1的array的随机数当成y, 产生一个100*3的随机数当成x,输出系数,t-值和R2
np.random.seed(1234)
import numpy as np |
练习题3:三门问题
蒙提霍尔问题:https://zh.wikipedia.org/wiki/%E8%92%99%E6%8F%90%E9%9C%8D%E7%88%BE%E5%95%8F%E9%A1%8C
from numpy import random |
Python 遗留代码
1
求列表中1串最长的开始和结束的位置
输入的例子可以包括
test = [0 0 0 0 0 0 0 0 0 0 0 0 0]
test = [1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]
test = [0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1]
test = [0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1]
#coding:utf-8 |
2-1
class account: |
2-2
class account: |
3-1
# 1 |
3-2
#coding:utf-8 |
4:date-to-format
#coding:utf-8 |