Stock Analyzing

Run Settings
LanguageSwift
Language Version
Run Command
print("Stock analyzing") 楚天龙 低位9月30日,20.43, 11月3日 20.76 (20%) - 20.50可加仓
import baostock as bs import pandas as pd from manim import * import os # 定义一个 Manim 场景类 class DividendTableScene(Scene): def construct(self): # 使用 baostock 获取数据 df_dividend = self.get_dividend_data() if df_dividend is not None and not df_dividend.empty: display_fields = ["code", "dividOperateDate","dividCashStock"] # 确保所有需要的列都存在,只保留存在的列 actual_fields = [f for f in display_fields if f in df_dividend.columns] if not actual_fields: no_data_text = Text("所需的分红数据字段不存在。").scale(0.7) self.add(no_data_text) self.wait(3) return # 使用 pandas 选择并转换为列表,这是最安全的方式 # 确保数据类型是字符串,因为 Manim Table 需要字符串 table_data = df_dividend[actual_fields].astype(str).values.tolist() # 添加新的中文字段标题 headers_map = { "code": "名称", "dividOperateDate": "分红日期", "dividCashStock":"方式" } # 根据实际存在的列生成中文标题 headers = [headers_map.get(f, f) for f in actual_fields] table_data_with_header = [headers] + table_data # 创建 Manim Table 对象 table = Table( table_data_with_header, include_outer_lines=True, # 调整单元格对齐方式 # arrange_in_grid_config={"cell_alignment": CENTER}, # 调整字体大小以适应屏幕 element_to_mobject_config={"font_size": 20} ) # 将表格添加到场景中并播放动画 self.play(FadeIn(table)) self.wait(3) self.play(FadeOut(table)) else: no_data_text = Text("未能获取到分红数据或数据为空。").scale(0.7) self.add(no_data_text) self.wait(3) def get_dividend_data(self): #### 登陆系统 #### lg = bs.login() if lg.error_code != '0': print(f'login respond error_code:{lg.error_code}, error_msg:{lg.error_msg}') return None rs_list = [] code = "sh.600177" # 查询2015年至2017年除权除息信息 for year in [ "2025"]: rs_dividend = bs.query_dividend_data(code=code, year=year, yearType="report") while (rs_dividend.error_code == '0') & rs_dividend.next(): rs_list.append(rs_dividend.get_row_data()) result_dividend = pd.DataFrame(rs_list, columns=rs_dividend.fields) print(rs_dividend.fields) result_dividend["code"] = "上海银行" result_dividend.sort_values(by='dividOperateDate', ascending=False, inplace=True) # 重置索引,使索引从0开始连续 result_dividend.reset_index(drop=True, inplace=True) #### 登出系统 #### bs.logout() # 打印输出 (可选) # print(result_dividend) return result_dividend
Editor Settings
Theme
Key bindings
Full width
Lines