这2天有同学问我,如何计算个股的换手率。这里简单写一写
一、最简单的方法,直接用问财搞定

你不管需要哪一天的换手率,直接通过自然语句搞定,python中直接获取很方便。
这里简单提供下代码,一些同学对于列名有日期怎么处理有疑惑,怎么用通用的方式。
import pywencai
import pandas as pd
date = '20250812'
query = f'{date}换手率'
# 获取数据(自动包含股票代码和换手率)
df = pywencai.get(query=query)
# 列名处理(优先尝试带日期的列名)
turnover_col = None
possible_cols = [
f'换手率[{date}]', # 可能的列名格式1
f'换手率({date})', # 可能的列名格式2
'换手率' # 通用列名
]
for col in possible_cols:
if col in df.columns:
turnover_col = col
break
# 输出结果
if turnover_col:
# 获取股票代码和换手率
result = df[['股票代码', turnover_col]].copy()
# 重命名列(去掉日期后缀)
result.columns = ['股票代码', '换手率']
print(result)
else:
print("错误:未找到换手率列,可用列名为:")
print(df.columns.tolist())二、使用tushare, 其实获取也方便,前提是需要2000及以上积分。
import tushare as ts
ts.set_token('XXXXX') # 替换为实际token
pro = ts.pro_api()
df = pro.daily_basic(trade_date= '20250812', fields='ts_code,turnover_rate')
print(df)三、使用miniqmt
因为最近写miniqmt比较多,这里重点解释下
换手率 = (指定时间段内的成交量 / 流通总股本) × 100%
get_full_tick()获取get_instrument_detail()取 FloatVolume字段
使用 get_full_tick()提取当前或指定时间段的成交量(volume字段):
# 内置Python示例(MiniQMT环境)
tick = C.get_full_tick(["000001.SZ"])["000001.SZ"]
# 获取股票实时tick数据
vol = tick["volume"] # 当前成交量(单位:股)
调用 get_instrument_detail()读取总流通股本(FloatVolume):
info = C.get_instrument_detail("000001.SZ") # 获取股票详情
float_volume = info["FloatVolume"] # 流通总股本(单位:股)
将成交量除以流通股本并转换为百分比:
turnover_rate = round((vol / float_volume) * , ) # 保留2位小数
print(f"当前换手率:{turnover_rate}%")
如果想获取历史日期换手率, 通过日K获取成交量 ,只是 最新流通股本随着时间变化不准确,建议把历史数据 每天定时入库。
如果图方便,建议直接用问财或tushare数据搞定。
如果我的分享对你投资有所帮助,不吝啬给个点赞关注呗。