A股票实时数据分析

官⽹:https://www.akshare.xyz/ ⽐较全

        A股 ,即 ⼈⺠币普通股票 ,是由中国境内注册公司发⾏,在境内上市, 以⼈⺠币标明⾯值,供境内机构、组织或个⼈(2013年4⽉1⽇起,境内港澳台居⺠
可开⽴A股账户)以⼈⺠币认购和交易的 普通股股票
        B股的正式名称是⼈⺠币特种股票。它是以⼈⺠币标明⾯值,以外币认购和买卖,在境 内(上海、深圳)证券交易所上市交易的股票。
        H股⼜称境外上市外资股,是境内上市公司在境外发⾏上市的股份。
A股票实时数据分析_第1张图片

1. 要安装的模块 

pip install akshare 

2.获取股票历史数据 

官⽹实时和历史⾏情数据参考⽂献⼊⼝
A股票实时数据分析_第2张图片

2.1 使用历史东财行情数据

接⼝: stock_zh_a_hist()
⽬标地址: https://quote.eastmoney.com/concept/sh603777.html?from=classic(示例)
描述: 东⽅财富-沪深京 A 股⽇频率数据; 历史数据按⽇频率更新, 当⽇收盘价请在收盘后获取
限量: 单次返回指定沪深京 A 股上市公司、指定周期和指定⽇期间的历史⾏情⽇频率数据

输入参数

名称 类型 描述
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)

运行结果

A股票实时数据分析_第3张图片

# 使⽤新浪历史⾏情数据 接⼝: 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+08   

      outstanding_share  turnover  
0          3.710000e+07  0.000003  

2.3 实时行情数据

# 实时⾏情数据 接⼝: 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.00 

     60日涨跌幅  年初至今涨跌幅  
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)

运行结果 总共五千多行

A股票实时数据分析_第4张图片

# 获取历史行情

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)

3.可视化

3.1 时间序列分析 

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()

运行结果

A股票实时数据分析_第5张图片

3.2 4个价格和成交额走势图 

# 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()

运行结果 

A股票实时数据分析_第6张图片

# index_col=0 将日期列设置为索引列, 
# parse_dates 会尝试将指定列解析为日期格式
df = pd.read_csv('600519历史行情.csv',index_col=0,parse_dates=True)
# print(df.info())
print(df)

运行结果 

A股票实时数据分析_第7张图片

# 实时序列分析
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()

运行结果

A股票实时数据分析_第8张图片

# 绘制4个价格: 最高价 最低价 开盘价 收盘价 
df[['开盘','收盘','最高','最低']].plot(figsize=(15,8))
plt.show()

运行结果 

A股票实时数据分析_第9张图片

# 最高价 最低价 开盘价 收盘价 成交额
print(df[['开盘','收盘','最高','最低','成交额']])

运行结果

A股票实时数据分析_第10张图片

成交额和其他几个参数相比非常大,如果画图的化,其他几个参数几乎为0 

df[['开盘','收盘','最高','最低','成交额']].plot(figsize=(15,8))
plt.show()

运行结果

A股票实时数据分析_第11张图片

# 最小最大化处理
df = df[['开盘','收盘','最高','最低','成交额']]
df_min_max = (df-df.min())/(df.max()-df.min())
print(df_min_max)

运行结果 

A股票实时数据分析_第12张图片

df_min_max[['开盘','收盘','最高','最低','成交额']].plot()
plt.show()

运行结果

A股票实时数据分析_第13张图片

# 标注收盘价的最高点和最低点 

plt.plot(df['收盘'])
plt.show()

运行结果

A股票实时数据分析_第14张图片

我想获取它的最低点和最高点,并且标注上最低点和最高点的日期和对应的值 

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()

运行结果

A股票实时数据分析_第15张图片

你可能感兴趣的:(大数据,信息可视化,数据分析)