官⽹:https://www.akshare.xyz/ ⽐较全
pip install akshare
输入参数
名称 | 类型 | 描述 |
---|---|---|
symbol | str | symbol='603777'; 股票代码可以在 ak.stock_zh_a_spot_em() 中获取 |
period | str | period='daily'; choice of {'daily', 'weekly', 'monthly'} |
start_date | str | start_date='20210301'; 开始查询的日期 |
end_date | str | end_date='20210616'; 结束查询的日期 |
adjust | str | 默认返回不复权的数据; qfq: 返回前复权后的数据; hfq: 返回后复权后的数据 |
timeout | float | timeout=None; 默认不设置超时参数 |
# 使⽤历史东财⾏情数据 接⼝: stock_zh_a_hist()
import akshare as ak
import matplotlib.pyplot as plt
import pandas as pd
stock_zh_a_hist_df = ak.stock_zh_a_hist(symbol='603777',period='daily',start_date='20200101',end_date='20231211',adjust='')
# print(stock_zh_a_hist_df.info())
stock_zh_a_hist_df.index = stock_zh_a_hist_df['日期']
# print(stock_zh_a_hist_df)
stock_zh_a_hist_df.drop(columns='日期',inplace=True)
print(stock_zh_a_hist_df)
运行结果
# 使⽤新浪历史⾏情数据 接⼝: stock_zh_a_daily
# P.S. 建议切换为 stock_zh_a_hist 接⼝使⽤(该接⼝数据质量⾼, 访问⽆限制)
import akshare as ak
stock_zh_a_daily_qfq_df = ak.stock_zh_a_daily(symbol='sz000001', start_date='19910403',end_date='20231027',adjust='qfq')
print(stock_zh_a_daily_qfq_df)
运行结果
date open high low close volume amount
0 1991-04-03 0.39 0.39 0.39 0.39 100.0 5.000000e+03 \
1 1991-04-04 0.39 0.39 0.39 0.39 300.0 1.500000e+04
2 1991-04-05 0.38 0.38 0.38 0.38 200.0 1.000000e+04
3 1991-04-08 0.38 0.38 0.38 0.38 200.0 1.000000e+04
4 1991-04-09 0.38 0.38 0.38 0.38 400.0 1.900000e+04
... ... ... ... ... ... ... ...
7730 2023-10-23 10.59 10.60 10.43 10.50 53040448.0 5.570322e+08
7731 2023-10-24 10.54 10.61 10.44 10.55 76065269.0 8.015284e+08
7732 2023-10-25 10.51 10.54 10.36 10.38 141144968.0 1.470972e+09
7733 2023-10-26 10.31 10.42 10.30 10.41 59999147.0 6.219153e+08
7734 2023-10-27 10.38 10.48 10.33 10.45 91977136.0 9.575875e+08outstanding_share turnover
0 3.710000e+07 0.000003
# 实时⾏情数据 接⼝: stock_zh_b_spot_em
import akshare as ak
stock_zh_b_spot_em_df = ak.stock_zh_b_spot_em()
print(stock_zh_b_spot_em_df)
运行结果
序号 代码 名称 最新价 涨跌幅 涨跌额 成交量 成交额 振幅 最高
0 1 200020 深华发B 2.250 8.17 0.170 9007.0 1974548.19 11.54 2.270 \
1 2 900936 鄂资B股 0.918 4.08 0.036 10394.0 937158.00 4.99 0.919
2 3 900928 临港B股 0.587 3.71 0.021 3442.0 201319.00 8.48 0.600
3 4 200037 深南电B 1.830 2.81 0.050 2228.0 402855.96 4.49 1.840
4 5 200056 皇庭B 1.180 2.61 0.030 8423.0 982803.83 5.22 1.180
.. ... ... ... ... ... ... ... ... ... ...
109 110 900921 丹科B股 0.136 -2.16 -0.003 3094.0 41985.00 3.60 0.139
110 111 900917 海欣B股 0.319 -2.74 -0.009 9720.0 310375.00 3.66 0.326
111 112 900927 物贸B股 0.392 -3.69 -0.015 3211.0 126628.00 3.69 0.404
112 113 200054 建车B 3.380 -3.70 -0.130 150.0 50842.00 3.99 3.480
113 114 900932 陆家B股 0.316 -3.95 -0.013 42770.0 1343012.00 8.81 0.330... 量比 换手率 市盈率-动态 市净率 总市值 流通市值 涨速 5分钟涨跌
0 ... 7.19 0.88 35.23 1.60 6.371128e+08 229490631.0 -0.44 -0.44 \
1 ... 1.93 0.13 5.46 0.88 2.569277e+09 755697600.0 0.11 0.11
2 ... 3.30 0.27 10.64 0.62 1.480700e+09 75473367.0 0.34 0.00
3 ... 1.51 0.08 -26.40 0.71 1.103056e+09 482853636.0 0.00 0.55
4 ... 1.51 0.35 -1.92 0.81 1.427905e+09 287017314.0 0.00 0.00
.. ... ... ... ... ... ... ... ... ...
109 ... 3.17 0.16 -4.23 1.31 1.382473e+08 26355930.0 -0.73 -0.73
110 ... 1.04 0.21 16.46 0.69 3.850511e+08 149563336.0 0.00 0.00
111 ... 1.21 0.32 8.13 1.22 1.944214e+08 39131402.0 0.00 0.00
112 ... 0.89 0.05 -5.08 6.43 4.034875e+08 101400000.0 -0.29 -0.29
113 ... 3.27 0.39 9.79 0.49 1.520886e+09 347832576.0 0.32 0.0060日涨跌幅 年初至今涨跌幅
0 -3.85 -19.06
1 8.13 -13.56
2 -11.46 -33.75
3 -12.86 -29.34
4 28.26 -12.59
.. ... ...
109 0.74 -33.00
110 8.87 -2.45
111 -4.62 -9.68
112 -21.58 -31.44
113 -26.51 -59.90[114 rows x 23 columns]
# 获取实时数据
import akshare as ak
import matplotlib.pyplot as plt
import pandas as pd
import warnings
warnings.filterwarnings('ignore')
# pd.set_option('max_colwidth',200)
# pd.set_option('display.max_columns',None) # 显示最大
# pd.set_option('display.max_rows',None)
data1 = ak.stock_zh_a_spot_em()
print(data1)
运行结果 总共五千多行
# 获取历史行情
df = ak.stock_zh_a_hist(symbol='600519',period='daily', start_date='20150101',end_date='20230808',adjust='')
# print(df)
df.to_csv('600519历史行情.csv', index=False)
import matplotlib.pyplot as plt
# 可视化
plt.rcParams['font.family'] = ['SimHei']
plt.figure(figsize=(15,8))
# 通过rolling函数求5日收盘均价值
stock_zh_a_hist_df['收盘'].rolling(window=5).mean().plot(label='5日平均')
# 通过rolling函数求10日收盘均价值
stock_zh_a_hist_df['收盘'].rolling(window=10).mean().plot(label='10日平均')
# 通过rolling函数求20日收盘均价值
stock_zh_a_hist_df['收盘'].rolling(window=20).mean().plot(label='20日平均')
# 通过rolling函数求30日收盘均价值
stock_zh_a_hist_df['收盘'].rolling(window=30).mean().plot(label='30日平均')
stock_zh_a_hist_df['收盘'].rolling(window=60).mean().plot(label='60日平均')
plt.legend()
运行结果
# 4个价格和成交额⾛势图
import matplotlib.pyplot as plt
plt.rcParams['font.size'] = 15
plt.rcParams['font.sans-serif'] = ['SimHei']
# 注意不要设置主题⻛格,否则中⽂显示不了
# 使⽤DataFrame对象的plot()⽅法绘制折线图
stock_zh_a_hist_df[['开盘','收盘','最低','成交额']].plot(figsize=(15,8))
plt.show()
运行结果
# index_col=0 将日期列设置为索引列,
# parse_dates 会尝试将指定列解析为日期格式
df = pd.read_csv('600519历史行情.csv',index_col=0,parse_dates=True)
# print(df.info())
print(df)
运行结果
# 实时序列分析
plt.rcParams['font.family'] = ['SimHei']
# 5日均线
close_5roll = df['收盘'].rolling(window=5).mean().plot(label='5日均线')
# print(close_5roll)
# 10日均线
close_10roll = df['收盘'].rolling(window=10).mean().plot(label='10日均线')
# 20日均线
close_20roll = df['收盘'].rolling(window=20).mean().plot(label='20日均线')
# 60日均线
close_60roll = df['收盘'].rolling(window=60).mean().plot(label='60日均线')
plt.legend()
plt.show()
运行结果
# 绘制4个价格: 最高价 最低价 开盘价 收盘价
df[['开盘','收盘','最高','最低']].plot(figsize=(15,8))
plt.show()
运行结果
# 最高价 最低价 开盘价 收盘价 成交额
print(df[['开盘','收盘','最高','最低','成交额']])
运行结果
成交额和其他几个参数相比非常大,如果画图的化,其他几个参数几乎为0
df[['开盘','收盘','最高','最低','成交额']].plot(figsize=(15,8))
plt.show()
运行结果
# 最小最大化处理
df = df[['开盘','收盘','最高','最低','成交额']]
df_min_max = (df-df.min())/(df.max()-df.min())
print(df_min_max)
运行结果
df_min_max[['开盘','收盘','最高','最低','成交额']].plot()
plt.show()
运行结果
# 标注收盘价的最高点和最低点
plt.plot(df['收盘'])
plt.show()
运行结果
我想获取它的最低点和最高点,并且标注上最低点和最高点的日期和对应的值
plt.style.use('fivethirtyeight')
# 标注收盘价的最高点和最低点
plt.plot(df['收盘'])
# 股票最大值 最小值
close_max = df['收盘'].max()
close_min = df['收盘'].min()
# 最大值和最小值对应的日期
index_max = df['收盘'].idxmax(axis=0)
print(index_max)
index_min = df['收盘'].idxmin(axis=0)
print(index_min)
# print(index_max,index_min)
# 把整个标签拼接起来
show_min = '['+str(index_min.strftime('%Y-%m-%d'))+' '+str(close_min)+']'
print(show_min)
show_max = '['+str(index_max.strftime('%Y-%m-%d'))+' '+str(close_max)+']'
print(show_max)
# 进行标注
plt.annotate(show_min,xy=(index_min,close_min),xytext=(index_min,close_min+200),arrowprops=dict(facecolor='green')) # annotate 有箭头, 有两个位置标签,一个是箭头的,一个是文本的
plt.annotate(show_max,xy=(index_max,close_max),xytext=(index_max,close_max+200),arrowprops=dict(facecolor='red'))
plt.show()
运行结果