test / Phantich_Data.py
0ewik's picture
Upload folder using huggingface_hub
34e621c verified
Raw History Blame Contribute Delete
5.08 kB
import pandas as pd
import re
from collections import Counter
# ==================================================
# ĐỌC DỮ LIỆU
# ==================================================
df = pd.read_csv(
"/workspace/challenge_1/rmit_hackathon_2026/data/train.csv"
)
# ==================================================
# THỐNG KÊ NGÔN NGỮ
# ==================================================
print("\n" + "=" * 50)
print("LANGUAGE DISTRIBUTION")
print("=" * 50)
language_counts = df["language"].value_counts()
print(language_counts)
print("\nTổng số ngôn ngữ:",
df["language"].nunique())
# ==================================================
# THỐNG KÊ LABEL
# ==================================================
print("\n" + "=" * 50)
print("LABEL DISTRIBUTION")
print("=" * 50)
label_counts = df["label"].value_counts()
print(label_counts)
print("\nTổng số label:",
df["label"].nunique())
# ==================================================
# THỐNG KÊ LABEL THEO NGÔN NGỮ
# ==================================================
print("\n" + "=" * 50)
print("LANGUAGE x LABEL")
print("=" * 50)
cross_table = pd.crosstab(
df["language"],
df["label"]
)
print(cross_table)
# ==================================================
# PHÁT HIỆN KÝ TỰ ĐẶC BIỆT
# ==================================================
special_pattern = r'[^a-zA-Z0-9\s]'
special_rows = []
all_special_chars = []
for idx, row in df.iterrows():
text = str(row["text"])
found_chars = re.findall(
special_pattern,
text
)
if found_chars:
unique_chars = sorted(
list(set(found_chars))
)
special_rows.append({
"id": row["id"],
"language": row["language"],
"label": row["label"],
"row_index": idx,
"special_char_count": len(found_chars),
"special_chars": " ".join(unique_chars),
"text": text
})
all_special_chars.extend(
found_chars
)
# ==================================================
# TÓM TẮT KÝ TỰ ĐẶC BIỆT
# ==================================================
print("\n" + "=" * 50)
print("SPECIAL CHARACTER SUMMARY")
print("=" * 50)
print("Tổng số dòng:",
len(df))
print("Dòng chứa ký tự đặc biệt:",
len(special_rows))
ratio = len(special_rows) / len(df)
print(
f"Tỷ lệ dòng có ký tự đặc biệt: {ratio:.2%}"
)
# ==================================================
# IN 10 DÒNG ĐẦU TIÊN CHỨA KÝ TỰ ĐẶC BIỆT
# ==================================================
print("\n" + "=" * 50)
print("FIRST 10 ROWS WITH SPECIAL CHARS")
print("=" * 50)
for row in special_rows[:10]:
print("\n--------------------")
print("ID:", row["id"])
print("Language:", row["language"])
print("Label:", row["label"])
print("Special Chars:",
row["special_chars"])
print("Count:",
row["special_char_count"])
# ==================================================
# THỐNG KÊ TẦN SUẤT KÝ TỰ ĐẶC BIỆT
# ==================================================
special_counter = Counter(
all_special_chars
)
freq_df = pd.DataFrame(
special_counter.items(),
columns=[
"character",
"frequency"
]
)
freq_df = freq_df.sort_values(
by="frequency",
ascending=False
)
print("\n" + "=" * 50)
print("TOP 30 SPECIAL CHARACTERS")
print("=" * 50)
print(
freq_df.head(30)
)
# ==================================================
# LƯU FILE 1:
# DANH SÁCH DÒNG CHỨA KÝ TỰ ĐẶC BIỆT
# ==================================================
special_df = pd.DataFrame(
special_rows
)
special_df.to_csv(
"special_character_rows.csv",
index=False,
encoding="utf-8-sig"
)
# ==================================================
# LƯU FILE 2:
# TẦN SUẤT KÝ TỰ ĐẶC BIỆT
# ==================================================
freq_df.to_csv(
"special_character_frequency.csv",
index=False,
encoding="utf-8-sig"
)
# ==================================================
# THỐNG KÊ ĐỘ DÀI PROMPT
# ==================================================
df["text_length"] = (
df["text"]
.astype(str)
.apply(len)
)
print("\n" + "=" * 50)
print("TEXT LENGTH")
print("=" * 50)
print(
df["text_length"].describe()
)
# ==================================================
# LƯU THỐNG KÊ NGÔN NGỮ
# ==================================================
language_counts.to_csv(
"language_distribution.csv",
header=["count"]
)
# ==================================================
# LƯU THỐNG KÊ LABEL
# ==================================================
label_counts.to_csv(
"label_distribution.csv",
header=["count"]
)
print("\n" + "=" * 50)
print("FILES SAVED")
print("=" * 50)
print("special_character_rows.csv")
print("special_character_frequency.csv")
print("language_distribution.csv")
print("label_distribution.csv")