【问题标题】:How to produce a pivoted time-series table from an unpivoted flat file如何从非透视平面文件生成透视时间序列表
【发布时间】:2019-11-17 05:29:01
【问题描述】:

我有一个未透视的时间序列平面文件。 它包含 t 天数内的每日收益 n 个因子。 过去,数据以易于在 Excel 中操作的格式提供:跨列的因子和行中的日期。但是,新的“未透视”格式现在正在生产中,我需要找到一个解决方案,以便能够绘制因子回报的时间序列。

源平面文件的格式:(只有 3 列)。

factor_name   DailyReturn  Date
factor1         0.0212    yyyymmdd
factor2         0.0472    yyyymmdd
factor n
...

作为我学习 Python 的一部分,并且考虑到它是公司的语言选择...我想在 Python 中进行这种文件操作。

输出应该类似于 (n

Date        factor1    factor 2  factor n...
yyyymmdd      0.0212   0.0472    -0.0408
etc

文件可以追溯到很久以前,应该有大约 n 列和数千行。 然后我应该能够将其导入 Excel 或使用 Python 绘制时间序列返回。

【问题讨论】:

    标签: python time-series flat-file


    【解决方案1】:

    -嘿-兔子。我们可以为您做到这一点,但由于您热衷于学习,最好将这个问题分解并让您先试一试。从实用的角度来看,最快的方法是将这个文件加载到 excel 中并在那里转置。但是编码也很有趣!

    第一步是加载数据,所以谷歌“python加载文件”。

    第二步是将这个平面文件数据转换成 python 数据结构。我会使用字典词典。另一个字典使用日期作为键。内部字典将使用因子名称作为键,值将是每日回报。与大多数问题一样,有很多方法,您也可以在这里使用 pandas,但以后可能会学习。

    遍历每一行并拆分字符串。谷歌“python 拆分字符串”。

    分割一行后,在外部字典中搜索该行的日期。如果它不存在,则添加一个带有内部字典的新条目:outerdict[date] = dict()。然后你可以将你的因素插入到这个内部字典中。外部字典 [日期] [因子] = 每日回报。

    最后一步是输出到 CSV。您将需要为此使用 csv 包。谷歌“python csv”。您将遍历外部字典中的所有键和值,这将为您提供日期作为键。谷歌“python循环字典”。内部字典有您的因素,您也可以循环访问这些因素,其中 key 是因素名称,value 是每日回报。

    可能令人困惑的是每个日期是否包含所有因素以及它们是否处于不同的顺序。不确定,必须查看您的数据集才能回答。

    我把它放在这里作为答案,因为在 cmets 中输入的文本太多了。但如果需要,我们可以稍后清理。

    如果你想用加载的数据在 python 中做更多的事情,只需使用我们创建的字典。

    【讨论】:

      【解决方案2】:

      我通过在 pandas 中使用 .unstack() 得到了我想要的。 这会将 3 列数据帧转换为标准的 n 行日期、x 列因素数据帧。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-04-24
        • 1970-01-01
        • 1970-01-01
        • 2018-10-05
        • 1970-01-01
        • 2011-09-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多