当前位置: 首页 > news >正文

分析基金情况fiddler+pyecharts

完成后是这样的:

image

2025年股市整体大涨,在26年1月临近过年之时,走势如同21年过年之际,本文通过抓TX理财通数据,画个图,分析一下情况;
其实我已经完成了调整,这里只是把数据简单记录一下;
可以看到X轴,我把日期调整为20210123周几这种形式,不知道为什么rotation之后,年的那块少显示了一分部,懒得调了,这配置项太多真的懒得去深究;
image
抓包数据如上,主要数据分别为日期,单位净值,自初识值后的涨幅(5即5%),累计净值,较昨日涨跌幅;
image
抓了四份数据,分别是几个基金21年过年前一阵子,和现在的情况;

from pyecharts.charts import Line
import pyecharts.options as opts
import datetime
import pandas as pd
from pyecharts.charts import Page
def get_need_data(data_dict: dict):"""从字典数据中,取出日期、每天的单位净值、每日涨跌幅由于抓包的数据,最前面的是最新的时期,所以需要反转列表,用pyecharts要列表数据给日期添加中文的周几,这样横坐标比较短"""# 获取单位净值列表data_1 = data_dict['net_value_list']net_value_list_1 = [i['i_net_value'] for i in data_1]net_value_list_1.reverse()# 获取日涨幅列表day_rise_list_1 = [i['i_1day_rise_rate'] for i in data_1]day_rise_list_1.reverse()# 获取累计净值列表cum_net_list_1 = [i['i_cumulative_net'] for i in data_1]cum_net_list_1.reverse()# 获取日期列表,添加中文的星期几date_list_1 = [i['i_date'] for i in data_1]date_list_1_format = []  # 放清洗好的日期列表数据# print(date_list_1)# 给每个日期添加星期几for i in range(len(date_list_1)):date_list_1[i] = datetime.datetime.strptime(date_list_1[i], "%Y%m%d")data = datetime.date(date_list_1[i].year, date_list_1[i].month, date_list_1[i].day)# date_list_1[i] = date_list_1[i].strftime("%Y-%m-%d %A") # 英文后缀,坐标太长放弃isoweekday = data.isoweekday()if isoweekday == 1:date_list_1[i] = date_list_1[i].strftime("%Y/%m/%d周一")elif isoweekday == 2:date_list_1[i] = date_list_1[i].strftime("%Y/%m/%d周二")elif isoweekday == 3:date_list_1[i] = date_list_1[i].strftime("%Y/%m/%d周三")elif isoweekday == 4:date_list_1[i] = date_list_1[i].strftime("%Y/%m/%d周四")elif isoweekday == 5:date_list_1[i] = date_list_1[i].strftime("%Y/%m/%d周五")date_list_1_format.append(date_list_1[i])# 反转列表date_list_1_format.reverse()return date_list_1_format, net_value_list_1, day_rise_list_1, cum_net_list_1

可选操作,写入到本地excel

# 将数据写入到本地Excel
def extract_data(data_list, name_list):excel_writer = pd.ExcelWriter("d:/基金情况.xlsx")for i, name in zip(data_list, name_list):temp_df = pd.DataFrame()a, b, c, d = get_need_data(i)temp_df["日期"] = atemp_df["单位净值"] = btemp_df["日涨幅"] = ctemp_df['累计净值'] = dtemp_df.to_excel(excel_writer, sheet_name=name, index=False)# 关闭writerexcel_writer.close()print("数据写入成功")# 执行写入到本地
# name_list = ["中欧2021", "华夏回报混合", "中欧2026", "汇添富"]
# data_list = [data_json_zosdxf, data_json_hxhbhh, data_json_zosdxf_2026, data_json_htf_2026]
# extract_data(data_list, name_list)

最后画一个图,我设想的是画一个可滚动下滑的大图,总共四个图,不搞Grid之类的并列两个图了;
pyecharts好久没用,很多配置项很容易忘记,我又去复习了一下;
注意pyecharts的page多图,很容易搞出点大小问题,所以需要用到一个配置文件json,在里面固定好每个图的大小,距上下左右距离,最主要的是给每个图自行设置一个chart_id,对应上json文件中的cid,就能固定好大小位置,数据变更的话,直接套JSON不用再手动调整;
这里我直接自己写了一个JSON,因为配置JSON文件很简单

image

def draw_one(data, title_name="基金分析",chart_id="pic1"):x_axis, net_value_list, day_rise_list, cum_net_list = get_need_data(data)cum_net_list = [float(i) for i in cum_net_list]  # 转换为浮点数relative_rate_list = [float(f"{(i / cum_net_list[0] - 1) * 100:.4}") for i in cum_net_list]# print(x_axis)# print(relative_rate_list)# print(cum_net_list)line = (Line(init_opts=opts.InitOpts(width="1200px", height="1000px",chart_id=chart_id)).add_xaxis(x_axis).add_yaxis("累计净值", cum_net_list, label_opts=opts.LabelOpts(is_show=True), yaxis_index=0).add_yaxis("相对元旦后涨跌幅", relative_rate_list, label_opts=opts.LabelOpts(is_show=True), yaxis_index=1).set_global_opts(title_opts=opts.TitleOpts(title=title_name),legend_opts=opts.LegendOpts(is_show=True),xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=90)  # 旋转90度, axistick_opts=opts.AxisOpts(is_show=False),  # 不显示小刻度splitline_opts=opts.SplitLineOpts(is_show=True)  # 不显示这块的网格线),yaxis_opts=opts.AxisOpts(name="累计净值", position="left",splitline_opts=opts.SplitLineOpts(is_show=False)),datazoom_opts=opts.DataZoomOpts(is_show=True, type_="inside"),  # 添加数据缩放tooltip_opts=opts.TooltipOpts(is_show=True, trigger='item', trigger_on='mousemove|click')))line.extend_axis(yaxis=opts.AxisOpts(name="相对元旦后涨跌幅", min_=0, max_=100, position="right",axislabel_opts=opts.LabelOpts(formatter="{value}%")))return line# 自己生成一份config.json文件
with open("D:/chart_config_money_2.json", "w", encoding="utf-8") as f:f.write("[")f.write('{"cid":"pic1","width":"1200px","height":"800px","top":"80px","left":"50px"}')f.write(",")f.write("\n")f.write('{"cid":"pic2","width":"1200px","height":"800px","top":"960px","left":"50px"}')f.write(",")f.write("\n")f.write('{"cid":"pic3","width":"1200px","height":"800px","top":"1840px","left":"50px"}')f.write(",")f.write("\n")f.write('{"cid":"pic4","width":"1200px","height":"800px","top":"2720px","left":"50px"}')f.write("]")
page = Page(layout=Page.DraggablePageLayout)
page.add(draw_one(data_json_zosdxf, "中欧2021", "pic1"))
page.add(draw_one(data_json_hxhbhh, "华夏回报混合", "pic2"))
page.add(draw_one(data_json_zosdxf_2026, "中欧2026", "pic3"))
page.add(draw_one(data_json_htf_2026, "汇添富", "pic4"))
# page.render("./基金分析.html")
page.save_resize_html(source="./基金分析.html",cfg_file=r"D:/chart_config_money_2.json",dest="./基金分析2.html")

一般情况下,直接render一个html,后面的save_resize_html,查看源码,可知是通过cfg_file的配置,更改source的html,最后写入到一个dest的html,当然两者可以是一个路径,就覆盖了;
已套现离场

http://www.jsqmd.com/news/326636/

相关文章:

  • 分形粗糙裂隙渗流模型。 分形理论。 界面粗糙度和细节随着分形维数的增加而增加。 水在裂隙中的流...
  • 单北斗GNSS在水库变形监测中的应用与维护方案分析
  • 大模型三国志:字节激进、阿里稳健、腾讯务实,开发者如何选择自己的AI赛道?2026年编程开发必看指南
  • 导师推荐9个降AIGC网站,千笔AI帮你彻底降AI率
  • 2026淮南本地生活团购代运营公司TOP5推荐:三十六行网络淮南分公司以全域运营实力登顶
  • 【背包问题】基于GA、PSO、ACO、GWO、SMA、HBA、IHBA 7种算法来解决0-1背包问题附Matlab代码
  • Web学习之用户认证
  • 【计算思维】蓝桥杯STEMA 科技素养考试真题及解析 4 - 实践
  • 程序猿必学!RAG系统性能提升秘籍:从-5%到+6%的数据工程魔法
  • 2025.1.31
  • Kimi AI 官网 - K2.5 上线
  • 基于Transformer的问答系统[python]-计算机毕业设计源码+LW文档
  • 基于Python的招聘数据分析及可视化[python]-计算机毕业设计源码+LW文档
  • 2026年市场热门的布袋除尘器品牌推荐榜单,除尘器花板/布袋除尘器/电磁脉冲阀/除尘器门盖,布袋除尘器产品推荐排行
  • 中石化加油卡回收怕被骗?京顺回收带你避开3大陷阱
  • 时间序列中因果推断
  • 【信号分解】VMD分解包络线,包络谱,中心频率,峭度值,能量熵,样本熵,模糊熵,排列熵,多尺度排列熵,近似熵,包络熵,频谱图,希尔伯特变换MATLAB代码,西储大学数据集
  • CentOS7安装Mysql5.7(ARM64架构) - 详解
  • 服务好的广州太赫兹足疗仪排名
  • 多模态与频域
  • 工业触摸屏:投影电容式触摸屏(PCAP)原理详解
  • 【无人机控制】无人机集群完成污染物云团的追踪与监测任务,无人机动力学模型、机间通信协议、电池续航限制、云团扩散模型附Matlab代码
  • 多项式综合例题
  • MultiGeometricSynergy-AIPrognosy: 基于仿射几何、复流形几何、微分几何与谱几何4维空间协同感知的机械故障诊断方法(Python)
  • 开源链动2+1模式商城小程序在深度分销数字化转型中的应用研究
  • 深入解析:ShardingSphere数据库中间件:入门与使用
  • 01-NET10简介与环境搭建
  • 【小程序毕设源码分享】基于springboot+Android的考试模拟系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • 【小程序毕设源码分享】基于springboot+Android的建筑工地施工项目管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • 全网最全8个降AI率平台 千笔AI助你高效降AIGC