PythonStock(35)使用AKShare 做股票数据出来,几个月没有看AkShare已经从0.9.65升级到了v1.0.80了,之前遇到的函数调用问题也都解决了,持续把相关代码进行升级修改

本文介绍了在Python股票项目中遇到的AKShare库版本升级问题,以及如何过滤股票数据,只保留特定类型的股票。作者首先升级了AKShare到最新版本1.0.80,并修改了股票查询逻辑,只选择600、6006、601、000、001、002开头且不包含ST的股票。此外,还讨论了数据处理中的细节,如删除老数据、设置数据索引等。最后,提到了使用SQLAlchemy时主键获取方法的变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言


使用Python开发一个web股票项目。
【github项目地址】:
https://github.com/pythonstock/stock
【知乎专栏地址】:
https://zhuanlan.zhihu.com/pythonstock
【docker hub地址下载】:
https://hub.docker.com/r/pythonstock/pythonstock
【相关stock资料分类】:
http://blog.csdn.net/freewebsys/article/category/7076584
主要使用开发语言是python。
使用的lib库是pandas,tushare,TensorFlow,tornado等。

本文的原文连接是: https://blog.csdn.net/freewebsys/article/details/108191889

1,关于AKShare 的调用问题


自己做了记录,之前的有些库调用有问题。
上次已经升级到了0.9.65 了,但是最近一看直接发布了 1.0.80 了,差了N多个版本。
我找之前的版本都翻了好几页。
果然升级是王道。代码要有维护的人,感谢 akshare,维护着这么多api。

https://yanghuaiyuan.blog.csdn.net/article/details/117434589

2,升级 akshare 库


安装需要执行:

 pip3 install akshare  --upgrade
 apt-get install -y nodejs

升级直接执行:

pip3 install --upgrade akshare 

这样就能升级到最新的 1.0.80 了。

3,修改股票查询过滤逻辑


600开头的股票是上证A股,属于大盘股,其中6006开头的股票是最早上市的股票,
6016开头的股票为大盘蓝筹股;900开头的股票是上证B股;
000开头的股票是深证A股,001、002开头的股票也都属于深证A股,
其中002开头的股票是深证A股中小企业股票;200开头的股票是深证B股;
300开头的股票是创业板股票;400开头的股票是三板市场股票。

过滤包括:600,6006,601,000,001,002,且不包括ST的股票数据。
def stock_a(code):
    # print(code)
    # print(type(code))
    # 上证A股  # 深证A股
    if code.startswith('600') or code.startswith('6006') or code.startswith('601') or code.startswith('000') or code.startswith('001') or code.startswith('002'):
        return True
    else:
        return False
# 过滤掉 st 股票。
def stock_a_filter_st(name):
    # print(code)
    # print(type(code))
    # 上证A股  # 深证A股
    if name.find("ST") == -1:
        return True
    else:
        return False

...  
# 股票列表
    data = ak.stock_zh_a_spot_em()
    # print(data.index)
    # 解决ESP 小数问题。
    # data["esp"] = data["esp"].round(2)  # 数据保留2位小数
    print(data)
    data.columns = ['index', 'code','name','latest_price','quote_change','ups_downs','volume','turnover','amplitude','high','low','open','closed','quantity_ratio','turnover_rate','pe_dynamic','pb']

    data = data.loc[data["code"].apply(stock_a)].loc[data["name"].apply(stock_a_filter_st)]
    try:
        # 删除老数据。
        del_sql = " DELETE FROM .`stock_zh_ah_name`  "
        common.insert(del_sql)
    except Exception as e:
        print("error :", e)

    #del data['index']
    data.set_index('code', inplace=True)
    data.drop('index', axis=1, inplace=True)
    print(data)

    # 删除index,然后和原始数据合并。
    common.insert_db(data, "stock_zh_ah_name", True, "`code`")

最后展示数据:

在这里插入图片描述
同时发现 api
https://docs.sqlalchemy.org/en/12/core/internals.html?highlight=get_primary_keys#sqlalchemy.engine.default.DefaultDialect.get_primary_keys

get_primary_keys 不能使用了,使用 get_pk_constraint 来判断是否有主键。

4,总结


解决了每日的数据,然后看看其他 akshare的数据接口如何使用。
下次研究龙虎榜。

本文的原文连接是:
https://blog.csdn.net/freewebsys/article/details/81665552

博主地址是:https://blog.csdn.net/freewebsys

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值