创建Python管道以转换数据

2024-10-02 20:44:03 发布

您现在位置:Python中文网/ 问答频道 /正文

大家好

我对Python没有太多经验,我想问您是否可以帮助我如何用Python构建管道。首先将csv文件(无流数据)导入Python并转换此数据文件,以便在机器学习分析中使用转换后的数据

一段时间以来,我一直在使用生成股票市场交易策略代码的软件。 该软件结合了不同的指标。在开始构建策略之前,必须手动将指标数设置为1到5之间。 对于1个指示符,日志文件只包含一列指示符。如果Python代码能够识别数据文件中使用的指示符数量并转换所有数据,那就太好了。 例如,我将指示器的数量设置为3。生成过程后,日志文件如下所示:

GSB_ID          Indic. 1 ID     Indic. 2 ID     Indic. 3 ID
125783-x8nh6    DMIMinus        AdaptiveMovAvg  DMIMinus
042610-UuLxc    DMIMinus        GSB_Highest     ADXR
544959-uZimb    ADXR            AvgTrueRange    DMIMinus
204155-NxrYo    AdaptiveMovAvg  GSB_Highest     GSB_Highest

第1列显示策略名称。 第2列至第4列显示所使用的3个指示器。通常每个策略有3个不同的指标,但有时同一指标会被多次使用。例如,第一行显示的策略:dmimission在此策略中使用了两次

转换管道: 对于每一个策略(行),我希望看到使用指标的次数。我想将显示的日志文件转换为如下内容:

GSB_ID AdaptiveMovAvg ADXR AvgTrueRange DMIMinus GSB_Highest
125783-x8nh6    1   0   0   2   0
042610-UuLxc    0   1   0   1   1
544959-uZimb    0   1   1   1   0
204155-NxrYo    1   0   0   0   2

因此,对于第一行中的策略:AdaptiveMovAvg使用一次(1),Dminus使用两次(2)

有关数据的更多信息: 日志文件最多可包含100000个策略(行)。 该软件最多可以使用100个不同的指示器,因此转换后将得到100个不同的列。有时会添加新的指标,所以一些灵活性会更好

如果您能帮助我正确地使用Python进行设置,我将不胜感激。提前谢谢

祝您一切顺利,再次感谢您的帮助, 沙龙


Tags: 文件数据代码id管道数据文件指标策略
1条回答
网友
1楼 · 发布于 2024-10-02 20:44:03

你可以这样做:

from collections import Counter
def read_and_transform_log_file():
    all_indicators = set()
    data = []

    with open("logfile.txt", "r") as input_data:
        input_data.readline()
        for line in input_data:
            strategy, *indicators = line.strip().split()
            indicators = Counter(indicators)
            all_indicators.update(indicators.keys())
            data.append((strategy, indicators))

    all_indicators = list(all_indicators)
    with open("output.txt", "w") as output:
        print("\t".join(["GSB_ID"] + all_indicators), file=output)
        for strategy, indicators in data:
            row = [strategy] + [str(indicators.get(x, 0)) for x in all_indicators]
            print("\t".join(row), file=output)

哪个输出

GSB_ID  ADXR    DMIMinus    AdaptiveMovAvg  GSB_Highest AvgTrueRange
125783-x8nh6    0   2   1   0   0
042610-UuLxc    1   1   0   1   0
544959-uZimb    1   1   0   0   1
204155-NxrYo    0   0   1   2   0

相关问题 更多 >