首页 > 解决方案 > Python 生成合成数据

问题描述

Python版本:2.7

将创建一个合成数据文件,该文件可以包含 1000 万到 10 亿条记录 (CSV)。但是,必须满足某些条件。首先是有前缀的对象(下面的例子),这些对象也有一定数量的元素,不能超过。

这意味着(对象:'time',前缀:'ti',元素数:2)-> 元素数,例如 1 和 0。记录可能如下所示:'ti_1 和 ti_2'。有几个对象具有不同数量的元素,并且所有对象应该相互连接到一个用逗号分隔的记录。因此,我们将拥有一条记录,依此类推,直到例如 1000 万条记录已满。但是,每条记录必须是唯一的。

我写了一个小程序,但数据是多余的。

class SyntheticData(object):
    # Prefix and number element
    columns = [
        ('fo_', 20),
        ('dc_', 48373),
        ('vt_', 150),
        ('gb_', 24289),
        ('le_', 3393),
        ('br_', 3),
        ('ct_', 444),
        ('sr_', 175),
        ('mk_', 32103),
        ('pr_', 21675),
        ('tm_', 52),
        ('ou_', 170066),
        ('pr_', 400),
        ('lc_', 70),
        ('pe_', 2),
        ('nc_', 3370),
        ('sg_', 119907),
        ('fu_', 400),
        ('rt_', 1596),
        ('va_', 1)
    ]
    column_separator = ';'
    number_of_columns = len(columns)

    def create_facts_data(self):
        number_of_rows = 2
        filename = 'factdata.csv'
        f = open(filename, 'w')

        # header = self.column_separator.join(self.columns[col][0] for col in range(self.number_of_columns)) + '\n'
        # f.write(header)

        for row_number in xrange(number_of_rows):
            row = ''
            for column_index in range(self.number_of_columns - 1):
                row += self.columns[column_index][1]
                row += str(((row_number) % self.columns[column_index][2]) + 1)
                row += self.column_separator
            row += str(1)
            row += '\n'
            f.write(row)
        f.close()

笔记:

只能使用python2.7,不能使用库。

标签: pythonpython-2.7

解决方案


推荐阅读