# -*- coding: utf-8 -*-
"""
Created on Tue Nov 9 14:06:32 2021
@author: ThinkPad
"""
#【Python量化】
import pandas as pd
import numpy as np
import csv
import pyecharts
#画图
import matplotlib.pyplot as plt
#正确显示中文和负号
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
#处理时间
from dateutil.parser import parse
from datetime import datetime,timedelta
#获取本地数据
df=pd.read_csv(r'E:\量化之路\up_limit_data.csv')
#统计
df.iloc[:,1:].describe().round(2)
#涨停股价格区间
def dy_zh(data, cut_points, labels=None):
min_num = data.min()
max_num = data.max()
break_points = [min_num] + cut_points + [max_num]
if not labels:
labels = range(len(cut_points)+1)
else:
labels=[labels[i] for i in range(len(cut_points)+1)]
dataBin = pd.cut(data,bins=break_points,
labels=labels,include_lowest=True)
return dataBin
cut_points = [10,30,50,100]
labels=['10元以下', '10-30元','30-50元','50-100元','100元以上']
#调用函数dy_zh,增加新列
df['价格区间'] = dy_zh(df['close'], cut_points, labels)
#查看标签列,取值范围前面加上了序号,是便于后面生成表格时按顺序排列
#df.head()
#使用柱状图展示不同价格区间下涨停个股数量分布。
group_price=df.groupby('价格区间')['trade_date'].count()
plt.figure(figsize=(12,5))
colors=['#1f77b4','#ff7f0e','#2ca02c','#d62728','#9467bd','#8c564b']
fig=plt.bar(group_price.index,group_price.values,color=colors[:5]);
#自动添加标签
def autolabel(fig):
for f in fig:
h=f.get_height()
plt.text(f.get_x()+f.get_width()/2,1.02*h,
f'{int(h)}',ha='center',va='bottom')
autolabel(fig)
#涨停板排名
def plot_bar(group_data):
plt.figure(figsize=(16,5))
fig=plt.bar(group_data.index,group_data.values);
autolabel(fig)
plt.title('2016-2021涨停板排名前20',size=15);
group_name=df.groupby('name')['ts_code'].count().sort_values(ascending=False)[:20]
plot_bar(group_name)
#分别剔除ST、*ST和新股(N开头)
df_st=df[-(df.name.str.startswith('ST') | df.name.str.startswith('*ST')|df.name.str.startswith('N'))]
group_name_st=df_st.groupby('name')['ts_code'].count().sort_values(ascending=False)[:20]
plot_bar(group_name_st)
利用python获取股票涨停板数据
最新推荐文章于 2024-05-10 08:05:05 发布