数据分析项目-股票数据分析

目录

tushare财经数据接口包

需求:股票分析

数据处理

 使用tushare包获取某股票的历史行情数据

df的持久化存储 df.to_xxx()

 加载外部数据 pd.read_xxx()

将Unnamed: 0列进行删除

将date列的字符串类型的时间转换成时间序列类型

将date列作为源数据的行索引

数据分析

1.输出该股票所有收盘比开盘上涨3%以上的日期。

(收盘-开盘)/开盘 > 0.03

将满足需求的行数据获取(收盘比开盘上涨3%以上)

获取满足要求的日期

2.输出该股票所有开盘比前日收盘跌幅超过2%的日期。

3.假如我从2010年1月1日开始,每月第一个交易日买入1手(100支)股票,每年最后一个交易日卖出所有股票,到今天为止,我的收益如何?

需求:双均线策略制定

获取数据 

 计算并制定双均线

分析输出所有金叉日期和死叉日期

股票分析技术中的金叉和死叉

数据分析

将时间节点的金叉和死叉日期全部找出 

将金叉日期和死叉日期分别存储到两个Series中,将日期作为Series的索引,将0和1作为Series的value值

收益计算


tushare财经数据接口包

需求:股票分析

使用tushare包获取某股票的历史行情数据。

  • tushare财经数据接口包,基于该模块可以获取任意股票的历史交易数据
  • pip install tushare

数据处理

 使用tushare包获取某股票的历史行情数据

df = ts.get_k_data(code='600519',start='2010-01-10')

df的持久化存储 df.to_xxx()

#将df的数据存储到本地
df.to_csv('./maotai.csv')

 加载外部数据 pd.read_xxx()

#加载外部数据到df中:read_xxx()
df=pd.read_csv('./maotai.csv')
print(df.head())

 输出结果

   Unnamed: 0        date     open    close     high      low    volume    code
0           5  2010-01-11  104.400  102.926  105.230  102.422  24461.03  600519
1           6  2010-01-12  103.028  105.708  106.040  102.492  31063.40  600519
2           7  2010-01-13  104.649  103.022  105.389  102.741  37924.44  600519
3           8  2010-01-14  103.379  107.552  107.974  103.379  46454.64  600519
4           9  2010-01-15  107.533  108.401  110.641  107.533  45938.50  600519

将Unnamed: 0列进行删除

在drop系列的函数中

  • axis=0表示的行,1表示的是列
  • inplace=True将删除操作直接作用原始数据
#将Unnamed: 0列进行删除
df.drop(labels="Unnamed: 0",axis=1,inplace=True)  #inplace=True代表原列删掉 不保存
print(df.head())

 输出结果:Unnamed: 0已经没有了

         date     open    close     high      low    volume    code
0  2010-01-11  104.400  102.926  105.230  102.422  24461.03  600519
1  2010-01-12  103.028  105.708  106.040  102.492  31063.40  600519
2  2010-01-13  104.649  103.022  105.389  102.741  37924.44  600519
3  2010-01-14  103.379  107.552  107.974  103.379  46454.64  600519
4  2010-01-15  107.533  108.401  110.641  107.533  45938.50  600519

将date列的字符串类型的时间转换成时间序列类型

#将date列的字符串类型的时间转换成时间序列类型
df["date"]=pd.to_datetime(df["date"])
print(df["date"].dtype)

输出结果:date列已经变成了一个时间类型

datetime64[ns]

将date列作为源数据的行索引

#将date列作为源数据的行索引
df.set_index("date",inplace=True)
print(df.head())

输出结果:时间列作为了行索引

              open    close     high      low    volume    code
date                                                            
2010-01-11  104.400  102.926  105.230  102.422  24461.03  600519
2010-01-12  103.028  105.708  106.040  102.492  31063.40  600519
2010-01-13  104.649  103.022  105.389  102.741  37924.44  600519
2010-01-14  103.379  107.552  107.974  103.379  46454.64  600519
2010-01-15  107.533  108.401  110.641  107.533  45938.50  600519

数据分析

1.输出该股票所有收盘比开盘上涨3%以上的日期。

(收盘-开盘)/开盘 > 0.03

print((df['close']-df['open'])/df['open']>0.03)

 输出结果

date
2010-01-11    False
2010-01-12    False
2010-01-13    False
2010-01-14     True
2010-01-15    False
              ...  
2021-11-16    False

经验:在df的相关操作中如果一旦返回了布尔值,下一步马上将布尔值作为原始数据的行索引

将满足需求的行数据获取(收盘比开盘上涨3%以上)

# 发现布尔值可以作为df的行索引,可以直接取出true对应的行数据
df2=df.loc[(df['close'] - df['open']) / df['open'] > 0.03]
print(df2.head())

 输出结果:只保留了true的行

date                                                            
2010-01-14  103.379  107.552  107.974  103.379  46454.64  600519
2010-01-28  104.566  107.974  108.708  104.336  30267.52  600519
2010-04-21   91.573   94.458   94.579   90.431  63365.87  600519
2010-05-07   80.406   82.965   83.195   80.087  31254.76  600519
2010-05-21   82.576   85.645   85.894   81.982  27341.38  600519

Process finished with exit code 0

获取满足要求的日期

#获取满足要求的日期
print(df2.index)

输出结果

DatetimeIndex(['2010-01-14', '2010-01-28', '2010-04-21', '2010-05-07',
               '2010-05-21', '2010-08-02', '2010-08-30', '2010-10-20',
               '2010-11-10', '2010-11-23',
               ...
               '2021-05-25', '2021-07-28', '2021-08-02', '2021-08-10',
               '2021-08-24', '2021-09-01', '2021-09-17', '2021-09-24',
               '2021-09-27', '2021-10-13'],
              dtype='datetime64[ns]', name='date', length=172, freq=None)

Process finished with exit code 0

2.输出该股票所有开盘比前日收盘跌幅超过2%的日期。

  • (开盘 - 前日收盘) / 前日收盘 < -0.02
  • shift(n) 可以使该列整体移动n行,正数表示下移,负数表示上移
  • df['close'].shift(1)代表前日收盘的数

                
  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 消费类股票交易数据分析项目旨在通过对消费类股票交易数据的分析,挖掘出潜在的投资机会,提高投资收益。该项目的设计思路是基于Python编程语言,采用数据挖掘、机器学习等先进算法,结合大数据技术,从市场模式、行业趋势、公司绩效等多个角度出发,实现对消费类股票交易数据的深度挖掘和分析。 在具体实现上,首先需要收集、整合并清洗数据,这一步的数据来源包括股票市场的行情数据、上市公司的财务数据、市场研究机构的报告、社交媒体和新闻媒体等。然后根据需求,将数据分类和预处理,包括数据过滤、去噪、缺失值填充和数据变换等。 接着,根据目标设置和数据特征,使用不同的机器学习算法进行模型训练和预测,例如决策树、随机森林等。在算法选择和调优过程中,需要根据数据架构、特征分布、目标函数等多方面因素进行综合评估和比较。而且,在算法模型建立后,也需要进行模型评估和优化,避免模型过拟合或欠拟合。 最后,根据结果输出和可视化要求,将分析结果利用web界面、数据报表和图形化展示等形式展现出来,方便投资人员对市场趋势和股票表现进行综合判断和决策。 总之,消费类股票交易数据分析项目是一项复杂而富有挑战的工程,需要运用各种技术手段和策略,全面考虑市场环境和交易特征,为投资者提供更优质的决策支持。 ### 回答2: 消费类股票交易数据分析项目的设计与实现需要综合运用Python编程语言、数据分析工具和相关金融知识进行实现。 首先,需要收集和整合消费类股票的交易数据,可以通过使用数据API或者网络爬虫等方式进行获取。然后,需要对数据进行清洗和预处理,过滤掉异常数据以及统一时间戳等格式。 接着,需要对清洗后的数据进行数据分析和可视化的处理。可以使用Python的数据分析库例如Pandas、Numpy和Matplotlib等进行数据挖掘和分析。通过探索性数据分析(EDA)、时间序列分析、回归分析等等,可以得到消费类股票的涨跌情况、成交量、收盘价等数据变化趋势的信息。然后,可以使用可视化工具如Seaborn和Plotly等对数据进行图表展示,从而方便更直观地理解数据变化规律,并基于数据趋势做出投资决策的指导。 同时,也可以结合消费类股票的基本面分析,如盈利质量、营收增长、市值以及资产负债表等相关财务数据。以上分析和可视化将为基金管理人员、投资者等相关人士提供决策和预测依据。 最后,值得注意的是,消费类股票是波动较大的股票之一,因此需要采用适当的风险控制,例如资金管理、减少过于频繁的交易等等,在实践过程中正确处理风险与收益之间的平衡。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值