第二课:Python基础速通(一)——环境搭建与核心数据结构
各位同学,欢迎来到第二课。
说实话,每次带新人入门,我最怕的就是环境配置这一步。明明代码逻辑没问题,结果卡在装包上,一卡就是半天。我自己当年也踩过这个坑——装Python的时候选了官网的原始版本,结果后面装科学计算库的时候,依赖冲突搞得我差点想砸电脑。
所以这节课,我直接带你用Anaconda。这是量化圈最主流的Python发行版,没有之一。你想想看,它把Python解释器、常用库、包管理器全打包好了,省去你一个个手动装的痛苦。
2.1 Anaconda安装:一步到位
Anaconda是什么?说白了就是一个「全家桶」。你装完它,就等于同时拥有了Python、Jupyter Notebook、以及200多个常用的数据科学库。
安装步骤:
- 去Anaconda官网下载对应系统的安装包(Windows/Mac/Linux都支持)
- 双击安装,一路默认选项即可
- 安装完成后,打开终端(或CMD),输入
conda --version验证
验证成功后,你会看到类似这样的输出:
conda 23.7.4
看到版本号,说明环境已经就绪。
2.2 Jupyter Notebook:量化分析的交互式利器
Jupyter Notebook是我在量化交易中最常用的工具。它不像传统IDE那样需要写完整脚本才能运行,而是可以一句一句地执行代码,实时看到结果。
启动方式:
# 在终端输入
jupyter notebook
命令执行后,浏览器会自动打开一个页面。你点右上角的「New」→「Python 3」,就能新建一个Notebook文件。
核心快捷键(记牢这3个):
Shift + Enter:运行当前单元格,并跳到下一个Ctrl + Enter:运行当前单元格,不跳转Esc + M:把当前单元格切换为Markdown模式(写注释用)
我在做策略回测时,习惯把数据加载、清洗、回测、可视化分别放在不同的单元格里。这样哪一步出问题,一眼就能定位到。嗯,这个习惯帮我省了不少排查时间。
2.3 变量与数据类型:量化数据的基石
Python的变量不需要提前声明类型。你直接赋值,它自动识别。这一点对量化交易来说特别友好——你从交易所API拿到数据,直接塞进变量就行,不用操心类型转换。
常见数据类型:
| 类型 | 示例 | 说明 |
|---|---|---|
| int(整数) | volume = 10000 |
成交量、持仓量 |
| float(浮点数) | price = 3.1415 |
价格、收益率 |
| str(字符串) | symbol = "BTC/USDT" |
交易对名称 |
| bool(布尔值) | is_market_open = True |
条件判断 |
# 实战示例:模拟获取行情数据
symbol = "ETH/USDT"
bid_price = 2345.60
ask_price = 2345.80
volume_24h = 1250000
print(f"交易对:{symbol}")
print(f"买一价:{bid_price},卖一价:{ask_price}")
print(f"24小时成交量:{volume_24h}")
Decimal 模块,或者直接保留两位小数。
2.4 列表:有序的数据容器
列表是量化交易中最常用的数据结构之一。你可以把它想象成一个「购物车」,什么都能往里装,而且顺序固定。
# 创建一个价格列表
prices = [3.25, 3.26, 3.24, 3.27, 3.28]
# 常用操作
prices.append(3.29) # 尾部追加
prices.insert(0, 3.23) # 头部插入
last_price = prices.pop() # 弹出最后一个元素
length = len(prices) # 获取长度
print(f"最新价格:{prices[-1]}")
print(f"最高价:{max(prices)}")
print(f"最低价:{min(prices)}")
列表切片(量化必备技能):
# 取最近3个价格
recent_3 = prices[-3:]
# 每隔一个取一个
every_other = prices[::2]
# 反转列表
reversed_prices = prices[::-1]
prices[-5:] 取最近5个收盘价来计算均值。切片操作比循环快得多,尤其是处理百万级数据时,性能差距很明显。
2.5 字典:键值对的映射关系
字典在量化交易中用来存储「有标签」的数据。比如一个交易对的完整信息,用字典存起来,比用列表清晰得多。
# 存储一个交易对的完整信息
symbol_info = {
"name": "BTC/USDT",
"bid": 50000.00,
"ask": 50001.50,
"volume_24h": 25000,
"high_24h": 51000,
"low_24h": 49000
}
# 访问数据
print(f"当前买一价:{symbol_info['bid']}")
print(f"24小时最高:{symbol_info['high_24h']}")
# 修改数据
symbol_info['bid'] = 50010.00
# 新增字段
symbol_info['change_pct'] = 2.5
# 遍历字典
for key, value in symbol_info.items():
print(f"{key}: {value}")
字典推导式(一行代码搞定复杂操作):
# 假设有多个交易对,提取所有买一价
symbols = ["BTC/USDT", "ETH/USDT", "SOL/USDT"]
bids = [50000, 2345, 150]
bid_dict = {sym: bid for sym, bid in zip(symbols, bids)}
print(bid_dict)
# 输出:{'BTC/USDT': 50000, 'ETH/USDT': 2345, 'SOL/USDT': 150}
2.6 本章知识体系总览
下面这张图,帮你把今天学的内容串起来。你想想看,从环境搭建到数据操作,其实就这三步:
说白了,今天这节课就是帮你把「工具箱」准备好。Anaconda是工作台,Jupyter是操作面板,变量和数据结构就是你的零件。零件用熟了,后面组装策略就快了。
公众号:蓝海资料掘金营,微信deep3321