Spaces:
Paused
Paused
| """ | |
| Analyze new_data_selected.csv - thống kê triggers và tổng số rows. | |
| """ | |
| import csv | |
| from collections import Counter | |
| from pathlib import Path | |
| csv_file = Path(__file__).parent / "new_data_selected.csv" | |
| print("=" * 60) | |
| print("THỐNG KÊ FILE: new_data_selected.csv") | |
| print("=" * 60) | |
| # Đọc file CSV | |
| rows = [] | |
| trigger_columns = [] | |
| move_columns = [] | |
| with open(csv_file, 'r', encoding='utf-8') as f: | |
| reader = csv.DictReader(f) | |
| fieldnames = reader.fieldnames | |
| # Tìm các columns liên quan đến trigger và move | |
| trigger_columns = [col for col in fieldnames if col.startswith('trigger_')] | |
| move_columns = [col for col in fieldnames if col.startswith('move_')] | |
| print(f"\n📊 Tổng số rows: {len(list(reader))}") | |
| # Reset reader | |
| f.seek(0) | |
| reader = csv.DictReader(f) | |
| total_rows = 0 | |
| trigger_counts = Counter() | |
| for row in reader: | |
| total_rows += 1 | |
| # Đếm triggers (1 = có trigger đó) | |
| for col in trigger_columns: | |
| value = row.get(col, '0').strip() | |
| if value == '1' or value == '1.0': | |
| trigger_name = col.replace('trigger_', '') | |
| trigger_counts[trigger_name] += 1 | |
| print(f"\n📊 Tổng số rows (verified): {total_rows}") | |
| print(f"\n📋 Tổng số trigger columns: {len(trigger_columns)}") | |
| print(f"📋 Tổng số move columns: {len(move_columns)}") | |
| print(f"\n📈 Thống kê từng Trigger:") | |
| print(f" Tổng số triggers unique: {len(trigger_counts)}") | |
| print(f"\n Chi tiết số lượng từng trigger:") | |
| # Sort by count descending | |
| sorted_triggers = sorted(trigger_counts.items(), key=lambda x: x[1], reverse=True) | |
| for trigger_name, count in sorted_triggers: | |
| percentage = (count / total_rows) * 100 if total_rows > 0 else 0 | |
| print(f" - {trigger_name:30s}: {count:5d} rows ({percentage:5.2f}%)") | |
| # Thống kê rows có trigger | |
| rows_with_any_trigger = 0 | |
| rows_with_multiple_triggers = 0 | |
| rows_with_no_trigger = 0 | |
| # Reset để đếm rows | |
| f.seek(0) | |
| reader = csv.DictReader(f) | |
| for row in reader: | |
| trigger_count = sum(1 for col in trigger_columns if row.get(col, '0').strip() in ['1', '1.0']) | |
| if trigger_count == 0: | |
| rows_with_no_trigger += 1 | |
| elif trigger_count == 1: | |
| rows_with_any_trigger += 1 | |
| else: | |
| rows_with_multiple_triggers += 1 | |
| rows_with_any_trigger += rows_with_multiple_triggers # Tất cả rows có trigger | |
| print(f"\n📊 Thống kê tổng quan:") | |
| print(f" - Rows có trigger: {rows_with_any_trigger} ({rows_with_any_trigger/total_rows*100:.2f}%)") | |
| print(f" - Rows có 1 trigger: {rows_with_any_trigger - rows_with_multiple_triggers}") | |
| print(f" - Rows có nhiều triggers (>1): {rows_with_multiple_triggers}") | |
| print(f" - Rows không có trigger: {rows_with_no_trigger} ({rows_with_no_trigger/total_rows*100:.2f}%)") | |
| # List tất cả trigger columns | |
| print(f"\n📋 Danh sách tất cả trigger columns ({len(trigger_columns)}):") | |
| for i, col in enumerate(sorted(trigger_columns), 1): | |
| trigger_name = col.replace('trigger_', '') | |
| count = trigger_counts.get(trigger_name, 0) | |
| print(f" {i:2d}. {trigger_name:30s} ({count:5d} occurrences)") | |
| print("\n" + "=" * 60) | |