增加数据大小

2024-04-24 23:09:26 发布

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

我有一个以下给定格式的数据样本。我需要将数据的大小增加到大约1亿个条目。行的顺序无关紧要,最好是随机的行顺序。你知道吗

输入

004096f41eb8 00904bf131ad 40.0 820219 438869 820219 438869
004096f41eb8 00904bf469bd 40.0 820219 438869 820219 438869
00022d56dffe 00022dcbe817 962.0 820353 439280 820353 439280
00022dcbe817 00306511e9e0 540.0 820353 439280 820353 439280
00022dcbe817 00904b21787a 4250.0 820353 439280 820353 439280
00022dcbe817 00904b3b845a 1117.0 820353 439280 820353 439280
00022dcbe817 00904bc3be80 1117.0 820353 439280 820353 439280
00022dcbe817 00904bcd5f00 4250.0 820353 439280 820353 439280
00022dcbe817 00904bfebc7c 3737.0 820353 439280 820353 439280

如何增加数据的大小(手动增加1亿行是不可能的)。试着找到一些相关的样本,但没有找到。任何有用的建议或参考都会很好。你知道吗


Tags: 数据顺序格式条目手动建议样本
1条回答
网友
1楼 · 发布于 2024-04-24 23:09:26

从您的编写方式来看,我认为您试图找出如何生成用于测试(或类似)目的的随机数据。你知道吗

也就是说,查看您提供的要生成的示例数据的类型,看起来如下所示:

<hexadecimal> <hexadecimal> <float> <int> <int> <int> <int>

限制条件是十六进制的前导零最多为12位,浮点必须是单位大小。你知道吗

但是,如果以上是真的,那么要生成这种类型的数据,您可以按照以下推理方式进行操作(注意,这是一种幼稚的尝试!)

def generate_random_data():
   hex1 = '%012X' % random.randint(0,10000000000)
   hex2 = '%012X' % random.randint(0,10000000000)
   flt = float(random.randint(0,100000)) # change this value as required
   int1 = random.randint(0,1000000) 
   int2 = random.randint(0,1000000) 
   int3 = random.randint(0,1000000) 
   int4 = random.randint(0,1000000) 

   s = '%s %s %.1f %d %d %d %d' % (hex1.lower(), \
                                   hex2.lower(), \
                                   flt, \
                                   int1, \
                                   int2, \
                                   int3, \
                                   int4)
   return s

def generate_random_data_strings(n):
    for i in xrange(n):
        print generate_random_data()

如果这是正确的,那么只需调整到您想要的值的数量,并将其写入一个文件。但是,鉴于您提供的数据,我无法对您的值的最大值进行合理的论证,因此请根据需要进行更改。

示例运行

generate_random_data_strings(7)

样本输出

00005f8e93fc 000168ed5d44 9604.0 551625 674203 912016 143600
0000c104ecfa 0000f470720a 88605.0 636828 692739 388774 748867
00021f833e47 00001fad166f 45388.0 841076 93054 373244 356865
0001d8fe8c3c 0000f70e0e61 48101.0 566598 800563 978234 141179
000157f0f23a 00018bf2db0e 24763.0 485468 138221 722335 256191
000097d60fe9 0001550f6640 27414.0 153090 3736 761677 656677
0000675efc87 00003458055a 98721.0 736265 565842 697767 521413

编辑(生成纬度和经度的附加列)

int4下面添加以下内容(并正确缩进):

longitude = random.random() * math.pi * 2
latitude = math.acos(random.random() * 2 - 1)

然后将s修改为(并在插入的参数末尾插入纬度和经度,并将其用作精度http://en.wikipedia.org/wiki/Decimal_degrees的参考):

'%s %s %.1f %d %d %d %d %.6f %.6f'

相关问题 更多 >