001—pandas 合并基金收益率数据表

pandas 案例大全


思路

1.用 pd.concat 将这三个数据连接在一起,同时指定每个数据的 key,这样就形成了多索引。接着按索引进行分组,就基本得到了需求数据的结构。
2.再增加“月度胜率”列,其中只间超额收益率有数据,其他行设置为空字符串。
3.最后用 style 的 format 将其他列设置为百分号格式。


代码展示:

1.引入库

代码如下(示例):

import pandas as pd

2.读入数据

代码如下(示例):

import pandas as pd

df1 = pd.DataFrame({'1月':[0.1,0.05,0.3],
                    '2月':[0.2,0.1,0.4],
                    '3月':[0.01,-0.1,0.3],
                    '4月':[0.01,-0.05,-0.2]},
                   index=['2021年','2022年','2023年']
                  )

df2 = pd.DataFrame({'1月':[0.05,0.1,0.2],
                    '2月':[0.1,0.05,0.3],
                    '3月':[0.05,0.1,0.2],
                    '4月':[0.05,0.05,-0.3]},
                   index=['2021年','2022年','2023年']
                  )

df3 = df1 - df2
display(df1, df2, df3)

在这里插入图片描述

3.过程代码

(
    pd.concat([df1, df2, df3],
              keys='基金收益率 基准收益率 超额收益率'.split()
             )
    .groupby(level=[1, 0])
    .max()
    .assign(月度胜率=lambda d:
            d.apply(lambda s:
                   (
                       f'{sum(s>0)/len(s):.2%}'
                       if '超额收益率' in s.name
                       else ''
                   ),
                    axis=1)
           )
    .style
    .format('{:.2%}', subset=df1.columns)
)

在这里插入图片描述

总结

这段代码的主要目的是:

  1. 使用 pd.concat 将三个数据框(df1、df2、df3)连接成一个新的数据框,并为每个数据框添加一个层次化的索引,分别为
    ‘基金收益率’、‘基准收益率’ 和 ‘超额收益率’。
  2. 使用 groupby 方法,按照索引的第二层(level=1)和第一层(level=0)进行分组。
  3. 对每个分组使用 max 方法,计算每组中的最大值,这儿随便给了一个聚合函数,最小值其实也可以。
  4. 使用 assign 方法,添加一个新的列 ‘月度胜率’,该列的值是每组中超额收益率大于0的比例,格式化为百分比。
  5. 使用 style 属性对数据框进行样式化,使用 format 方法将数据框中的所有元素格式化为百分比,但仅在列为 df1
    的列(即其他列)上应用这个格式。

这些代码用于处理基金数据,包括基金收益率、基准收益率和超额收益率,然后计算每月的最大值和月度胜率,并以格式化的方式呈现这些结果。

  • 41
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花花 Show Python

你的打赏会让我有创作的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值