-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathanalyze_csv.py
More file actions
74 lines (62 loc) · 3.04 KB
/
analyze_csv.py
File metadata and controls
74 lines (62 loc) · 3.04 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
62
63
64
65
66
67
68
69
70
71
72
73
74
#!/usr/bin/env python3
import csv
import math
from collections import Counter
# Read CSV file
with open('virtual_vector_cosin_store.csv', 'r') as f:
reader = csv.reader(f)
rows = list(reader)
print('=== ANALISI CSV ===')
print(f'Numero totale righe: {len(rows)}')
print(f'Numero colonne header: {len(rows[0])}')
print(f'\nPrime 10 colonne header: {rows[0][:10]}')
print(f'Ultime 5 colonne header: {rows[0][-5:]}')
if len(rows) > 1:
print(f'\n=== ANALISI DATI ===')
print(f'Numero valori nella seconda riga (escluso Command): {len(rows[1])-1}')
print(f'Dovrebbero essere 360 coppie Radiant/Laser = 720 valori')
print(f'\nPrimi 10 valori riga 2: {rows[1][:10]}')
print(f'Ultimi 5 valori riga 2: {rows[1][-5:]}')
print(f'\n=== VERIFICA FORMATO RADIANT/LASER ===')
r2 = rows[1]
print(f'Numero totale valori riga 2: {len(r2)}')
print(f'Command: {r2[-1]}')
# Check if format is Radiant/Laser pairs
if len(r2) >= 6:
print(f'\nVerifica formato (primi 6 valori):')
print(f'Radiant0 (atteso ~0.0): {float(r2[0]):.6f}')
print(f'Laser0: {float(r2[1]):.6f}')
print(f'Radiant1 (atteso ~{math.pi/180:.6f}): {float(r2[2]):.6f}')
print(f'Laser1: {float(r2[3]):.6f}')
print(f'Radiant2 (atteso ~{2*math.pi/180:.6f}): {float(r2[4]):.6f}')
print(f'Laser2: {float(r2[5]):.6f}')
print(f'\n=== CONFRONTO RIGHE ===')
if len(rows) > 3:
r2_vals = [float(x) for x in rows[1][:20]]
r3_vals = [float(x) for x in rows[2][:20]]
r_last_vals = [float(x) for x in rows[-1][:20]]
print(f'Riga 2 e 3 sono uguali (primi 20 valori)? {r2_vals==r3_vals}')
print(f'Riga 2 e ultima sono uguali (primi 20 valori)? {r2_vals==r_last_vals}')
print(f'\nValori riga 2 (primi 10): {r2_vals[:10]}')
print(f'Valori riga 3 (primi 10): {r3_vals[:10]}')
print(f'Valori ultima riga (primi 10): {r_last_vals[:10]}')
print(f'\n=== STATISTICHE DATI ===')
data_rows = rows[1:]
print(f'Numero righe dati: {len(data_rows)}')
commands = [row[-1] for row in data_rows]
cmd_counts = Counter(commands)
print(f'\nComandi trovati:')
for cmd, count in cmd_counts.items():
print(f' {cmd}: {count}')
print(f'\n=== VERIFICA VARIABILITA DATI ===')
if len(data_rows) >= 3:
# Extract Laser values (every other value starting from index 1)
r1_laser = [float(data_rows[0][i]) for i in range(1, min(11, len(data_rows[0])), 2)]
r2_laser = [float(data_rows[1][i]) for i in range(1, min(11, len(data_rows[1])), 2)]
r3_laser = [float(data_rows[2][i]) for i in range(1, min(11, len(data_rows[2])), 2)]
print(f'Riga 1 primi 5 valori Laser: {r1_laser[:5]}')
print(f'Riga 2 primi 5 valori Laser: {r2_laser[:5]}')
print(f'Riga 3 primi 5 valori Laser: {r3_laser[:5]}')
# Check if they are different
print(f'\nRiga 1 e 2 Laser diversi? {r1_laser[:5] != r2_laser[:5]}')
print(f'Riga 2 e 3 Laser diversi? {r2_laser[:5] != r3_laser[:5]}')