• 四只股票的收盘价可视化


    关注 码龄 粉丝数 原力等级 -- 被采纳 被点赞 采纳率 2401_85251860 2024-06-07 18:52 采纳率: 5% 浏览 7 首页/ 编程语言 / 四只股票的收盘价可视化 python学习方法 ```python import tushare as ts import pandas as pd import matplotlib.pyplot as plt #导入matplotlib库 # 设置token ts.set_token('82afad45cf53ba410fa43b3248da47aa2e5ad5d8e9dbe9889bfd4df1') # 指定日期范围 start_date = '20221201' end_date = '20231201' # 股票代码列表 codes = ['300322', '002446', '300552', '300098'] # 创建空的数据字典,键是股票代码,值是DataFrame stock_data = {code: pd.DataFrame() for code in codes} for code in codes: df = ts.pro.daily(ts_code=f'{code}.SZ', start_date=start_date, end_date=end_date) df['trade_date'] = df['trade_date'].dt.strftime('%Y%m%d') df.to_excel(f'{code.replace(".", "")}-{code.lower()}.xls', index=False) #② 对300322.SZ的统计描述性分析: # 加载300322.SZ的数据 df_300322 = pd.read_excel("300322-300322.xls") # 统计描述性分析 stats = df_300322['close'].describe() print(stats) #③ 数据可视化: import pandas as pd # 绘制300322.SZ的收盘价和交易量 df_300322.plot(kind='line', y='close', title='300322.SZ 收盘价', legend=True) df_300322['vol'].plot(kind='bar', title='300322.SZ 交易量', legend=True) plt.tight_layout() plt.show() # 创建子图 fig, axs = plt.subplots(nrows=2, ncols=1, sharex=True) df_300322.plot(ax=axs, y='close', legend=True, title='300322.SZ 收盘价') axs.bar(df_300322['trade_date'], df_300322['vol'], title='300322.SZ 交易量') #④ 四只股票的收盘价可视化: import seaborn as sns # 将所有股票的收盘价加载到DataFrame中,假设其他股票数据已保存 stocks_data = pd.concat([pd.read_excel(f"{code.replace('.', '-')}-{code}.xls")['close'] for code in codes]) # 绘制到一个图的四个子图 sns.lineplot(data=stocks_data, dashes=True, palette='tab10', hue=codes) plt.tight_layout() plt.xlabel('Date') plt.ylabel('Close Price') plt.title('Four Stocks Close Prices') plt.legend(title='Stock Code', loc='upper left') ``` 展开全部 收起 写回答 好问题 0 提建议 追加酬金 关注问题 微信扫一扫 点击复制链接 分享 邀请回答 编辑 收藏 删除 结题 收藏 举报 追加酬金 (90%的用户在追加酬金后获得了解决方案) 当前问题酬金 ¥ 0 (可追加 ¥500) ¥ 15¥ 20¥ 50¥ 100¥ 200 支付方式 扫码支付 二维码出错 点击刷新 支付金额 15 元 提供问题酬金的用户不参与问题酬金结算和分配 支付即为同意 《付费问题酬金结算规则》 结题 再想想 删除 再等等

    1条回答 默认 最新

    • 阿里嘎多学长 2024-06-07 18:52
      关注

      以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


      您提供的代码已经涵盖了大部分您需要的功能,包括使用tushare库获取股票数据、进行描述性统计分析、绘制单只股票的收盘价和交易量图表,以及准备将四只股票的收盘价数据合并在一个图表中展示。以下是对您代码的一些补充和改进:

      1. 获取股票数据并保存为Excel文件:您已经实现了这一部分。

      2. 对300322.SZ股票的收盘价进行描述性统计分析:您已经使用describe()方法进行了描述性统计。

      3. 绘制300322.SZ的收盘价和交易量的图表:您使用了matplotlib库来绘制线图和柱状图。注意,您的代码中尝试在一个子图上绘制线图和柱状图,这通常不是一个好的实践,因为它们会共享y轴,可能导致混淆。您应该为收盘价和交易量分别创建两个子图。

      4. 将四只股票的收盘价数据合并,并在一个图表中用四个子图分别展示每只股票的收盘价变化趋势:您已经使用了seaborn库来准备绘制这些股票的收盘价。但是,您需要确保所有的股票数据都被正确地加载和合并。

      以下是一些改进后的代码示例:

      # 3. 绘制300322.SZ的收盘价和交易量的图表
      plt.figure(figsize=(10, 8))
      plt.subplot(2, 1, 1)  # 创建子图,2行1列的第1个
      df_300322['close'].plot(title='300322.SZ 收盘价')
      plt.subplot(2, 1, 2)  # 2行1列的第2个
      df_300322['vol'].plot(kind='bar', title='300322.SZ 交易量')
      plt.tight_layout()
      plt.show()
      
      # 4. 四只股票的收盘价可视化:
      # 确保所有股票数据都已加载
      stocks_data = pd.DataFrame()
      for code in codes:
          temp_df = pd.read_excel(f"{code.replace('.', '-')}-{code.lower()}.xls")
          temp_df['stock_code'] = code  # 添加股票代码作为列,以便区分
          stocks_data = pd.concat([stocks_data, temp_df[['trade_date', 'close', 'stock_code']]])
      
      # 重新设置索引并排序
      stocks_data.set_index('trade_date', inplace=True)
      stocks_data.sort_index(inplace=True)
      
      # 使用seaborn绘制四只股票的收盘价
      plt.figure(figsize=(14, 10))
      sns.lineplot(data=stocks_data, x='trade_date', y='close', hue='stock_code', style='stock_code', markers=True, dashes=False)
      plt.xlabel('Date')
      plt.ylabel('Close Price')
      plt.title('Four Stocks Close Prices')
      plt.legend(title='Stock Code', loc='upper left')
      plt.grid(True)
      plt.show()
      

      参考资料

      请注意,您需要确保您的tushare token是有效的,并且您已经安装了所有必要的库。如果您需要进一步的帮助或有任何问题,请随时提问。

      展开全部

      评论 编辑记录
      编辑
      预览

      报告相同问题?

    • 相关阅读:
      java中的IO流之序列化与反序列化(对象数据和文件的读写交互)
      【Pandas数据分析5】数据清洗
      机器人微控制器编程(CoCube)-深度融合
      uniapp实现移动端的视频图片轮播组件
      关于Kali部署OneForAll,不能运行问题
      通过一个具体的例子理解 npm 的 peerDependency
      JAVA中的垃圾回收器(1)
      内网渗透——隧道代理
      C#是否应该限制链式重载的设计模式?
      CURL
    • 原文地址:https://ask.csdn.net/questions/8115553