Python / Pandas үндэс

Pandas үндэс

NumPy массивууд тоон тооцоололд гайхалтай боловч бодит өгөгдөл ихэвчлэн хүснэгт хэлбэртэй — мөр, багана, толгой мөртэй. Pandas бол яг тийм хүснэгт өгөгдөлтэй ажиллахад зориулсан хамгийн алдартай Python library юм. Өгөгдлийн шинжилгээчдийн ашигладаг хамгийн чухал хэрэгсэл гэхэд хилсдэхгүй.

Series ба DataFrame

Pandas-ийн хоёр үндсэн өгөгдлийн бүтэц бол Series (нэг багана) ба DataFrame (хүснэгт) юм.

python
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-аас хэрэгтэй мэдээллийг шүүж авах нь өдөр тутмын хамгийн нийтлэг үйлдэл:

python
# Нэг багана сонгох
print(df["нэр"])

# Хэд хэдэн багана сонгох
print(df[["нэр", "оноо"]])

# Нөхцөл тавих — 80-аас дээш оноотой оюутнууд
сайн_оюутнууд = df[df["оноо"] > 80]
print(сайн_оюутнууд)

# УБ-д амьдарч 85-аас дээш оноотой
шүүсэн = df[(df["хот"] == "УБ") & (df["оноо"] >= 85)]
print(шүүсэн)

loc ба iloc ашиглан мөр сонгоно:

python
# iloc — дугаараар (integer location)
print(df.iloc[0])       # эхний мөр
print(df.iloc[1:3])     # 1, 2-р мөрүүд

# loc — индексийн шошгоор
print(df.loc[0, "нэр"])         # Болд
print(df.loc[:, ["нэр", "оноо"]]) # бүх мөрийн нэр, оноо

Статистик ба хураангуй

Pandas нь нэг командаар өгөгдлийн ерөнхий дүр зургийг гаргаж өгнө — энэ нь шинжилгээний эхний алхам:

python
# Ерөнхий мэдээлэл
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 нэг командаар уншиж, хадгалдаг:

python
# 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() зэрэг хэрэгслийг ашиглана.