• R语言数据分析案例-股票可视化分析


    一、数据整合的对象

    1. # Loading necessary libraries
    2. library(readxl)
    3. library(dplyr)
    4. # Reading the data from Excel files
    5. data_1 <- read_excel("yunnanbaiyao.xlsx")
    6. data_2 <- read_excel("冰山.xlsx")

    二、数据整合的代码

    数据集和代码​​​​​​​

    1. # Reading the data from Excel files
    2. data_1 <- read_excel("yunnanbaiyao.xlsx")
    3. data_2 <- read_excel("冰山.xlsx")
    4. # Assuming both data sets have the same structure
    5. # Combine the two datasets vertically
    6. combined_data <- bind_rows(data_1, data_2)

    由于数据特征名称不同,要处理:

    1. # View the combined data
    2. head(combined_data)
    3. # 检查原始数据集中是否有NA值
    4. sum(is.na(data_1))
    5. sum(is.na(data_2))
    6. # 检查列名以确保它们在两个数据集中是一致的
    7. colnames(data_1)
    8. colnames(data_2)
    9. # 调整data_2的列名以匹配data_1
    10. colnames(data_2) <- colnames(data_1)
    11. # 重新合并数据
    12. combined_data <- bind_rows(data_1, data_2)
    13. # 再次检查列名
    14. colnames(combined_data)

    任务二:统计分析

    一、统计分析的代码

    1. # 重新进行描述性统计分析
    2. print("描述性统计分析 - yunnanbaiyao")
    3. summary(combined_data[combined_data$"证券简称" == "yunnanbaiyao", ])
    4. print("描述性统计分析 - 冰山冷热")
    5. summary(combined_data[combined_data$"证券简称" == "冰山冷热", ])

    二、代码运行的结果及统计结论的分析

    日期:数据涵盖的时间范围是从2023-02-07到2023-07-07。

    证券代码:证券代码始终为538,这表明分析的数据集仅针对一支股票。

    前收、开盘、最高、最低、今收:

    这些股价相关的变量都有类似的统计范围,价格从50元左右到近60元。

    中位数和均值非常接近,这表明数据的分布相对对称,没有严重的偏斜。

    最高价和最低价的范围表明该股票在观察期间的波动范围。

    涨跌幅(%):

    涨跌幅变化范围从-5.28%到7.52%,这显示了股票在观察期间的波动性。

    中位数接近0(0.04%),意味着相对于前一交易日的收盘价,该股票的收盘价在中位数日期是几乎没有变化的。

    均值接近0,这暗示在所考察的时间段内,股票价格的上涨和下跌大致抵消。

    成交量(万股):

    成交量的最小值为203.1万股,最大值为2963.8万股,显示出交易量的显著波动。

    交易量的中位数572.3万股和均值637.3万股相比较高的最大值,表明有一些交易日的成交量非常高。

    成交金额(万元):

    成交金额的范围从10547万元到169013万元,与成交量的波动类似,表明有些交易日成交金额非常大。

    市盈率:市盈率从30.32到37.03变动,这反映了该股票价格相对于每股收益的比率在观察期内的变化。

    日期:数据覆盖的时间范围与之前的“云南白药”相同,从2023-02-07到2023-07-07。

    证券代码:证券代码始终为530,这表明分析的数据集仅针对一支股票。

    前收、开盘、最高、最低、今收:股价变量的范围大致在4.35元到5.78元之间,这与“云南白药”的股价范围相比较低,显示了它是一个较低价位的股票。

    中位数和均值非常接近,表明数据分布相对均衡,没有显著偏斜。

    股价的最大值和最小值之间的差异不大,这可能表明股票在该时间段内的价格波动较小。

    涨跌幅(%):涨跌幅的范围从-3.36%到4.78%,与“云南白药”相比,这个股票的价格波动性稍低。中位数为0%,均值为0.1147%,这表明在所考察的时间段内,股票价格的上涨和下跌大致平衡。

    成交量:成交量从482.4万股到9138.9万股不等,显示了交易量的显著波动。成交量的中位数和均值较低,可能表明在某些交易日,股票的交易活跃度不高。

    成交金额:成交金额的范围从995.2万元到50741.5万元,与成交量的波动相似,表明有些交易日的活跃度特别高。

    市盈率:市盈率从0到261.6变动,这是一个非常宽的范围,可能反映了投资者对于公司盈利能力预期的显著变化,或者是由于特定时期盈利数据的变化导致的市盈率计算出现极端值。

    任务三:数据可视化

    一、时间序列图

    (1)作时间序列图的代码

    1. # 加载所需的库
    2. # 设置图形布局为1行2列
    3. par(mfrow = c(2, 1))
    4. # 云南白药的时间序列图
    5. plot(data_1$'日期', data_1$'今收', type = "l", col = "blue", xlab = "日期", ylab = "今收价格", main = "云南白药的时间序列图")
    6. # 冰山冷热的时间序列图
    7. plot(data_2$'日期', data_2$'今收', type = "l", col = "red", xlab = "日期", ylab = "今收价格", main = "冰山的时间序列图")

    (2)生成的时间序列图

    (3)基于时间序列图进行的分析

    yunnanbaiyao的时间序列图分析:

    价格波动:yunnanbaiyao的股票价格在2月到4月期间相对稳定,在此之后价格出现了下降趋势。5月份之后,股价波动加大,显示出更多的上下波动。

    下降趋势:从图中可以看出,尽管有波动,但整体趋势是向下的,特别是在5月到7月期间,股价有明显的下降。

    冰山冷热的时间序列图分析:

    价格波动:与yunnanbaiyao相比,冰山冷热的股价波动较小,整体趋势是上升的。

    上升趋势:2月到7月期间,冰山冷热的股价显示出一种持续上升的趋势,特别是在4月到7月期间,股价持续攀升。

    对比分析:

    股价水平:云南白药的股价明显高于冰山冷热,这可能反映了两家公司市值和投资者对其业绩预期的不同。股价趋势:在给定期间内,云南白药和冰山冷热的股价趋势完全不同,云南白药呈现下跌趋势,而冰山冷热则呈现上升趋势。投资者情绪:云南白药的下降趋势可能反映了投资者对该公司前景的悲观情绪,而冰山冷热的上升趋势可能表明投资者对该公司的乐

    观看法。

    二、直方图

    (1)作直方图的代码

    1. # 设置图形布局为1行2列
    2. par(mfrow = c(1, 2))
    3. # 云南白药的直方图
    4. hist(data_1$'今收', col = "blue", xlab = "今收价格", ylab = "频率", main = "yunnanbaiyao的直方图", breaks = 30)
    5. # 冰山冷热的直方图
    6. hist(data_2$'今收', col = "red", xlab = "今收价格", ylab = "频率", main = "冰山的直方图", breaks = 30)

    (2)生成的直方图

    (3)基于直方图进行的分析

    yunnanbaiyao直方图分析:

    价格分布集中在54到56元之间,这表明大部分交易日的收盘价落在这个区间。

    价格分布较为紧凑,显示出相对较小的波动范围。

    存在一个明显的峰值区间,表明某一价格区间的频率特别高。

    冰山冷热直方图分析:

    价格分布集中在4.9到5.1元之间,这表明大部分交易日的收盘价落在这个较狭窄的区间。

    相比于yunnanbaiyao,冰山冷热的价格分布看起来更为分散,这可能意味着其价格波动性较大。

    直方图显示了几个较高的峰值,这可能表明某些价格区间的频率特别高,而其他区间较低,显示出价格分布的不均匀性。

    对比分析:

    两支股票的价格分布范围不同,yunnanbaiyao的价格区间更高,这与公司的市值和股票的定价有关。云南白药的价格分布相对集中,显示出价格较为稳定;而冰山冷热的价格分布则更为分散,显示出价格波动性较大。

    三、饼图

    (1)作饼图的代码

    1. par(mfrow = c(1, 2))
    2. # 为深圳华强的“今收”价格创建分类
    3. breaks_huaqiang <- seq(min(data_huaqiang$'今收'), max(data_huaqiang$'今收'), length.out = 5)
    4. data_huaqiang$price_category <- cut(data_huaqiang$'今收', breaks_huaqiang, include.lowest = TRUE)
    5. # 计算每个分类的频率
    6. price_counts_huaqiang <- table(data_huaqiang$price_category)
    7. # 绘制饼图
    8. pie(price_counts_huaqiang, col = rainbow(length(price_counts_huaqiang)), main = "深圳华强价格区间的饼图")
    9. # 添加图例
    10. legend("topright", legend = names(price_counts_huaqiang), fill = rainbow(length(price_counts_huaqiang)))
    11. # 为平安银行的“今收”价格创建分类
    12. breaks_pingan <- seq(min(data_pingan$'今收'), max(data_pingan$'今收'), length.out = 5)
    13. data_pingan$price_category <- cut(data_pingan$'今收', breaks_pingan, include.lowest = TRUE)
    14. # 计算每个分类的频率
    15. price_counts_pingan <- table(data_pingan$price_category)
    16. # 绘制饼图
    17. pie(price_counts_pingan, col = rainbow(length(price_counts_pingan)), main = "平安银行价格区间的饼图")
    18. # 添加图例
    19. legend("topright", legend = names(price_counts_pingan), fill = rainbow(length(price_counts_pingan)))

    (3)基于饼图进行的分析

    从yunnanbaiyao的饼图可以观察到:

    价格区间分为四个部分,每个部分代表一个特定的价格范围。最大的部分是价格区间(5.07, 5.36],这意味着大多数的“今收”价格落在这个区间。其他三个区间的占比较小,这表明“今收”价格较少地落在这些范围内。

    从冰山冷热的饼图可以观察到:

    价格区间同样分为四个部分,每部分对应不同的价格范围。最大的部分似乎是价格区间(4.77, 5.07],表明这个价格区间的频率最高。其他区间的分布较为均匀,但(4.48, 4.77]区间占据了较大的一部分,表明该价格区间内的“今收”价格出现的次数也相对较多。

    对比分析:

    对于yunnanbaiyao,高频价格区间集中在(5.07, 5.36],而对于冰山冷热,高频价格区间则集中在(4.77, 5.07]。这两张饼图显示,尽管两家公司的股票价格绝对值不同,但它们都有一个主要的价格区间,其中股票价格出现的频率最高。另外,这些饼图也体现了两个股票价格分布的不同特性,yunnanbaiyao的价格分布集中在一个较高的区间,而冰山冷热的价格则在一个较低的区间较为分散。

  • 相关阅读:
    一种KV存储的GC优化实践
    Reflect的使用
    翻译|使用 StatefulSet 运行数据库应用
    【老生谈算法】matlab实现蚁群算法解决旅行商问题——蚁群算法
    基于单片机的事务管理系统
    WebDAV之π-Disk派盘 + Xplore
    2024-06-02 问AI: 在大语言模型中,什么是multi agent?
    Vue学习笔记(六):监视属性
    [go学习笔记.第十六章.TCP编程] 2.项目-海量用户即时通讯系统
    Java String.substring()方法具有什么功能呢?
  • 原文地址:https://blog.csdn.net/m0_62638421/article/details/138765280