lovebird25 / analyze_csv.py
Paul
update
5a450e1
"""
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)