-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsample.py
More file actions
61 lines (46 loc) · 1.82 KB
/
Copy pathsample.py
File metadata and controls
61 lines (46 loc) · 1.82 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import os
import sys
import csv
import time
import numpy as np
import pandas as pd
import config
def iterfile(filepath):
with open(filepath, 'r') as f:
for num, line in enumerate(f):
yield (num, line)
def iter_csv(csvfile, step=1):
fileiter = ((num, line) for num, line in enumerate(open(csvfile)))
_, line1 = fileiter.next()
headers = line1.strip().split(',')
stepiter = (line for num, line in fileiter if num % step == 0)
return headers, (line.strip().split(',') for line in stepiter)
def write_sample(infile, outfile, sample_rate):
headers, csviter = iter_csv(infile, sample_rate)
with open(outfile, 'w') as f:
writer = csv.writer(f)
writer.writerow(headers)
for line in csviter:
writer.writerow(line)
def parse_df(csvfile, sample_rate):
headers, iterator = iter_csv(csvfile, sample_rate)
sample = [line for line in iter_csv(csvfile, sample_rate)]
return pd.DataFrame(sample, columns=headers)
if __name__ == "__main__":
sample_rate = 1000 if len(sys.argv) < 2 else sys.argv[1]
num_samples = config.SIZE_TRAINING_DATA / sample_rate
csvfile = config.TRAINING_DATA_FILE if len(sys.argv) < 3 else sys.argv[2]
outfile = 'sample.csv' if len(sys.argv) < 4 else sys.argv[3]
sample_file = os.path.join(config.DATA_DIR, outfile)
print '-' * 80
print 'input file: {}'.format(csvfile)
print 'output file: {}'.format(sample_file)
print 'sampling at a rate of 1 for every {}'.format(sample_rate)
print '{} records will be written to the sample file'.format(num_samples)
print '-' * 80
start = time.time()
write_sample(csvfile, sample_file, sample_rate)
elapsed = time.time() - start
print 'time elapsed: {}'.format(elapsed)
# df = parse_df(csvfile, sample_rate)
# df.to_csv(sample_file)