Pandas үндэс
NumPy массивууд тоон тооцоололд гайхалтай боловч бодит өгөгдөл ихэвчлэн хүснэгт хэлбэртэй — мөр, багана, толгой мөртэй. Pandas бол яг тийм хүснэгт өгөгдөлтэй ажиллахад зориулсан хамгийн алдартай Python library юм. Өгөгдлийн шинжилгээчдийн ашигладаг хамгийн чухал хэрэгсэл гэхэд хилсдэхгүй.
Series ба DataFrame
Pandas-ийн хоёр үндсэн өгөгдлийн бүтэц бол Series (нэг багана) ба DataFrame (хүснэгт) юм.
import pandas as pd
# Series — нэг баганатай өгөгдөл
оноонууд = pd.Series([85, 92, 78, 95, 60], name="оноо")
print(оноонууд)
# 0 85
# 1 92
# 2 78
# 3 95
# 4 60
# Name: оноо, dtype: int64
# DataFrame — хэд хэдэн баганатай хүснэгт
өгөгдөл = {
"нэр": ["Болд", "Сарнай", "Төгс", "Номин", "Эрдэнэ"],
"нас": [20, 22, 21, 23, 20],
"оноо": [85, 92, 78, 95, 60],
"хот": ["УБ", "УБ", "Дархан", "УБ", "Эрдэнэт"],
}
df = pd.DataFrame(өгөгдөл)
print(df)
Гаралт:
нэр нас оноо хот
0 Болд 20 85 УБ
1 Сарнай 22 92 УБ
2 Төгс 21 78 Дархан
3 Номин 23 95 УБ
4 Эрдэнэ 20 60 Эрдэнэт
Өгөгдөл шүүх ба сонгох
DataFrame-аас хэрэгтэй мэдээллийг шүүж авах нь өдөр тутмын хамгийн нийтлэг үйлдэл:
# Нэг багана сонгох
print(df["нэр"])
# Хэд хэдэн багана сонгох
print(df[["нэр", "оноо"]])
# Нөхцөл тавих — 80-аас дээш оноотой оюутнууд
сайн_оюутнууд = df[df["оноо"] > 80]
print(сайн_оюутнууд)
# УБ-д амьдарч 85-аас дээш оноотой
шүүсэн = df[(df["хот"] == "УБ") & (df["оноо"] >= 85)]
print(шүүсэн)
loc ба iloc ашиглан мөр сонгоно:
# iloc — дугаараар (integer location)
print(df.iloc[0]) # эхний мөр
print(df.iloc[1:3]) # 1, 2-р мөрүүд
# loc — индексийн шошгоор
print(df.loc[0, "нэр"]) # Болд
print(df.loc[:, ["нэр", "оноо"]]) # бүх мөрийн нэр, оноо
Статистик ба хураангуй
Pandas нь нэг командаар өгөгдлийн ерөнхий дүр зургийг гаргаж өгнө — энэ нь шинжилгээний эхний алхам:
# Ерөнхий мэдээлэл
print(df.info())
print(df.describe())
# Баганын статистик
print(f"Дундаж оноо: {df['оноо'].mean():.1f}")
print(f"Хамгийн өндөр: {df['оноо'].max()}")
print(f"Хамгийн бага: {df['оноо'].min()}")
print(f"Нийт оюутан: {len(df)}")
# Хотоор бүлэглэж дундаж оноо тооцох
print(df.groupby("хот")["оноо"].mean())
Гаралт:
хот
Дархан 78.0
УБ 90.7
Эрдэнэт 60.0
Name: оноо, dtype: float64
CSV файлтай ажиллах
Бодит өгөгдөл ихэвчлэн CSV файл хэлбэрээр ирдэг. Pandas нэг командаар уншиж, хадгалдаг:
# CSV унших
df = pd.read_csv("оюутнууд.csv", encoding="utf-8")
# Эхний 5 мөрийг харах
print(df.head())
# Сүүлийн 3 мөрийг харах
print(df.tail(3))
# Шинэ багана нэмэх
df["зэрэглэл"] = df["оноо"].apply(lambda x: "А" if x >= 90 else "В" if x >= 75 else "С")
# CSV-д хадгалах
df.to_csv("үр_дүн.csv", index=False, encoding="utf-8")
print("Файл хадгалагдлаа ✓")
Pandas-ийн чадавхи энэ хичээлд харуулснаас хавьгүй өргөн — гэхдээ Series, DataFrame, шүүлт, groupby, CSV уншиж бичих — эдгээрийг мэдэхэд өдөр тутмын шинжилгээний 80% ажлыг хийж чадна.
Дараагийн хичээлд:
Бодит өгөгдөл хэзээ ч цэвэр ирдэггүй — дутуу утга, буруу формат, давхардал байдаг. Өгөгдөл цэвэрлэх аргуудыг сурч, pandas-ийн dropna(), fillna(), drop_duplicates() зэрэг хэрэгслийг ашиглана.