PythonStock(35)使用AKShare 做股票数据出来,几个月没有看AkShare已经从0.9.65升级到了v1.0.80了,之前遇到的函数调用问题也都解决了,持续把相关代码进行升级修改(代
Posted freewebsys
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PythonStock(35)使用AKShare 做股票数据出来,几个月没有看AkShare已经从0.9.65升级到了v1.0.80了,之前遇到的函数调用问题也都解决了,持续把相关代码进行升级修改(代相关的知识,希望对你有一定的参考价值。
前言
使用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
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
以上是关于PythonStock(35)使用AKShare 做股票数据出来,几个月没有看AkShare已经从0.9.65升级到了v1.0.80了,之前遇到的函数调用问题也都解决了,持续把相关代码进行升级修改(代的主要内容,如果未能解决你的问题,请参考以下文章
PythonStock(37)股票系统:Python股票系统发布V2.0版本,改个名字吧,叫Python全栈股票系统2.0,可以实现数据的抓取(akshare),统计分析,数据报表展示。
PythonStock(37)股票系统:Python股票系统发布V2.0版本,改个名字吧,叫Python全栈股票系统2.0,可以实现数据的抓取(akshare),统计分析,数据报表展示。
PythonStock(36)股票系统:解决历史数据问题,使用 ak.stock_zh_a_hist 获得历史相关数据,发现AK又更新到了v1.1.1版本,更新获得历史数据代码。
PythonStock(36)股票系统:解决历史数据问题,使用 ak.stock_zh_a_hist 获得历史相关数据,发现AK又更新到了v1.1.1版本,更新获得历史数据代码。