Python 分析 A 股基础入门:从零开始的量化投资之旅
前言:为什么用 Python 分析 A 股?
在数字化时代,传统的股票分析方法已经无法满足投资者的需求。Python 作为一门强大的编程语言,正在改变着金融投资的方式。
为什么选择 Python?
- 简单易学:语法简洁,适合编程初学者
- 丰富的库:拥有 Pandas、NumPy、Matplotlib 等强大的数据分析库
- 开源免费:无需昂贵的软件费用
- 社区活跃:大量的学习资源和解决方案
本文将带领您从零开始,学习如何使用 Python 进行 A 股分析,为您打开量化投资的大门。
第一章:环境搭建 - 准备您的分析工具
1.1 安装 Python
首先,您需要安装 Python 环境:
- 访问 Python 官方网站:https://www.python.org/
- 下载最新版本的 Python(建议 3.8 以上)
- 安装时勾选 'Add Python to PATH'
1.2 安装必要的库
打开命令提示符(Windows)或终端(Mac/Linux),输入以下命令:
pip install pandas numpy matplotlib tushare yfinance
库功能说明:
| 库名称 | 主要功能 | 应用场景 |
|---|---|---|
| pandas | 数据处理与分析 | 股票数据清洗、指标计算 |
| numpy | 数值计算 | 复杂数学运算、统计分析 |
| matplotlib | 数据可视化 | K 线图绘制、指标展示 |
| tushare | A 股数据接口 | 获取 A 股历史行情数据 |
| yfinance | 全球金融数据接口 | 补充 A 股数据、获取美股数据 |
1.3 获取 Tushare Token
Tushare 是一个免费的 A 股数据接口,需要注册账号获取 Token:
- 访问 Tushare 官网:https://tushare.pro/
- 注册账号并登录
- 在个人中心获取 Token
第二章:数据获取 - 从市场获取第一手资料
2.1 获取单只股票数据
让我们从获取贵州茅台(600519)的历史数据开始:
import tushare as ts
import pandas as pd
from datetime import datetime
# 设置 Tushare Token
ts.set_token('your_tushare_token_here')
pro = ts.pro_api()
# 获取贵州茅台数据
def get_stock_data(stock_code, start_date, end_date):
"""
获取股票历史数据
:param stock_code: 股票代码(如'600519')
:param start_date: 开始日期(格式'YYYYMMDD')
:param end_date: 结束日期(格式'YYYYMMDD')
:return: DataFrame 格式的股票数据
"""
# 转换为 Tushare 格式
ts_code = f"{stock_code}.SH" if stock_code.startswith('6') else f"{stock_code}.SZ"
try:
df = pro.daily(ts_code=ts_code, start_date=start_date, end_date=end_date)
# 数据预处理
df['trade_date'] = pd.to_datetime(df['trade_date'])
df.set_index('trade_date', inplace=True)
df = df.sort_index()
# 重命名列名
df.rename(columns={
'open': '开盘价',
'high': '最高价',
'low': '最低价',
'close': '收盘价',
'vol': '成交量',
'amount': '成交额'
}, inplace=True)
return df[['开盘价', '最高价', '最低价', '收盘价', '成交量', '成交额']]
except Exception as e:
print(f"获取数据失败:{e}")
return None
# 获取贵州茅台 2023-2025 年数据
df = get_stock_data('600519', '20230101', '20251231')
if df is not None:
print("数据获取成功!")
print(df.head()) # 显示前 5 行数据
2.2 数据结构解析
获取的数据包含以下字段:
| 字段名称 | 说明 | 单位 |
|---|---|---|
| 开盘价 | 当日开盘价格 | 元 |
| 最高价 | 当日最高价格 | 元 |


