PANDAS

Pandas — Beginner ➜ Middle

Bu səhifə Pandas biliklərini praktik nümunələrlə toplayır: oxuma–yazma, seçim–filtrləmə, qruplaşdırma, pivot/crosstab, merge, datetime və s.

read_csv → head() filter / sort_values groupby / agg pivot_table / melt merge / join to_datetime / resample
Tip: `.str.lower` bir **metoddur** — həmişə `()` ilə çağır: df["col"].str.lower().

Layihə üçün virtual mühit yarat və Pandas quraşdır. (Təmiz mühit tövsiyə olunur.)

Terminal — venv / conda
$ project/
# venv
python -m venv .venv
.venv\Scripts\activate
pip install --upgrade pip    (Optional)
pip install pandas

# conda
# conda create -n pandas101 python=3.11 -y
# conda activate pandas101
# conda install pandas -y

python -c "import pandas as pd; print(pd.__version__)"

CSV, Excel, JSON, SQL-dən oxu və fayla yaz.

Python — IO
pandas_io.py
import pandas as pd

df = pd.read_csv("grocery-data.csv")
print(df.shape)           # (rows, cols)

xl = pd.read_excel("report.xlsx", sheet_name="Sales")
j  = pd.read_json("data.json")

# import sqlite3
# con = sqlite3.connect("db.sqlite")
# sql_df = pd.read_sql("SELECT * FROM sales", con)

df.to_csv("grocery-data_out.csv", index=False)

Cədvələ ümumi baxış, sütunlar, tiplər və statistik xülasə.

Python — Inspect
inspect.py
print(df.head(5))     # first 5
print(df.columns)     # column names
print(df.dtypes)      # data types
print(df.info())      # schema + nulls (auto-prints)
print(df.describe())  # numeric stats

loc/iloc ilə sətir-sütun seç, boolean masklarla filtrlə, sort et.

Python — Select/Filter
select_filter.py
# columns
price = df["Price"]
sub   = df[["Product", "Price"]]

# position vs label
first_row   = df.iloc[0]
subset_pos  = df.iloc[0:3, 0:2]
row_by_idx  = df.loc[5]
subset_lbl  = df.loc[0:5, ["Product", "Qty"]]

# boolean filtering
expensive   = df[df["Price"] > 5]
mask        = (df["Brand"] == "Natura") & (df["Qty"] >= 3)
filtered    = df[mask]

some_brands = df[df["Brand"].isin(["Mlek", "Baker"])]
mid_price   = df[df["Price"].between(3, 6)]
with_apple  = df[df["Product"].str.contains("apple", case=False, na=False)]

# sort
by_price     = df.sort_values("Price")
by_price_desc= df.sort_values("Price", ascending=False)

Hesablanmış sütunlar, şərti sütunlar, string və datetime əməliyyatları.

Python — Mutations
mutate.py
import numpy as np

df["Total"]   = df["Price"] * df["Qty"]
df["IsCheap"] = np.where(df["Price"] < 3, True, False)

# IMPORTANT: method call needs ()
df["Product"] = df["Product"].str.strip().str.lower()

df["Date"]  = pd.to_datetime(df["Date"], errors="coerce")
df["Month"] = df["Date"].dt.to_period("M")

Orta qiymətlər, çoxlu aqreqatlar, crosstab.

Python — GroupBy & Crosstab
groupby.py
# mean price per brand
brand_mean = df.groupby("Brand", as_index=False)["Price"].mean()

# multi aggregations
agg_df = (
    df.groupby("Brand")
      .agg(avg_price=("Price","mean"),
           total_qty=("Qty","sum"),
           items=("Product","nunique"))
      .reset_index()
)

# crosstab: Product x Brand
xt = pd.crosstab(df["Product"], df["Brand"])
print(xt)

Pivot cədvəlləri və uzun/eniş formalar.

Python — Pivot/Melt
reshape.py
pt = pd.pivot_table(
    df, index="Month", columns="Brand", values="Qty",
    aggfunc="sum", fill_value=0
)
long = pt.reset_index().melt(
    id_vars="Month", var_name="Brand", value_name="Qty"
)

Boş dəyərləri say/doldur, dublikatları təmizlə.

Python — Missing/Duplicates
quality.py
na_counts   = df.isnull().sum()
df["Price"] = df["Price"].fillna(df["Price"].median())
clean       = df.dropna(subset=["Product","Brand","Price"])

dups        = df.duplicated()
df_no_dups  = df.drop_duplicates(subset=["Product","Brand","Date"])

Digər cədvəllərlə birləşdirərək məlumatı zənginləşdir.

Python — Merge
merge.py
brands = pd.DataFrame({
    "Brand": ["Mlek", "Baker", "Natura"],
    "Country": ["PL", "AZ", "TR"],
})
merged = df.merge(brands, on="Brand", how="left")
print(merged.columns)

Aylıq toplam satışları çıxarmaq üçün resample istifadə et.

Python — Resample
datetime.py
df["Total"] = df["Price"] * df["Qty"]
monthly = (
    df.set_index("Date")
      .resample("M")["Total"]
      .sum()
      .to_frame("Total")
      .reset_index()
)
print(monthly.tail())

Brend üzrə toplam gəlir, TOP-3 məhsul və aylıq trend.

Python — Mini Project
mini_project.py
sales = df.dropna(subset=["Product","Brand","Price","Qty","Date"]).copy()
sales["Date"]  = pd.to_datetime(sales["Date"])
sales["Total"] = sales["Price"] * sales["Qty"]

# 1) Brand totals
brand_totals = (sales.groupby("Brand", as_index=False)["Total"]
                      .sum()
                      .sort_values("Total", ascending=False))
print(brand_totals.head())

# 2) Top-3 products
top3_products = (sales.groupby("Product", as_index=False)["Total"]
                       .sum()
                       .sort_values("Total", ascending=False)
                       .take([0,1,2]))
print(top3_products)

# 3) Monthly trend
monthly = (sales.set_index("Date").resample("M")["Total"].sum().reset_index())
print(monthly.tail())

  • Filter: Price 3–6 arası olan sətirlərin Qty ortasını hesabla.
  • Pivot: Brand × Product üçün Total dəyərləri ilə pivot cədvəl qur.
  • Datetime: Date → datetime çevir, aylıq satışları çıxart və ən çox olan ayı tap.
  • Merge: Brand → Country xəritəsi ilə merge edib ölkə üzrə toplam Total tap.
  • Missing: Boş Price dəyərlərini median ilə doldur; neçə dəyər dəyişdiyini say.

  • .str.lowerdoğrusu: .str.lower()
  • SettingWithCopyWarning: zəncirli indeksləmə əvəzinə .loc istifadə et.
  • Dtype-ları düz saxla: to_datetime, to_numeric.
  • Vectorization: mümkün olduqda apply əvəzinə vektor əməliyyatları.
Python — .loc fix
best_practices.py
# bad
subset = df[df["Brand"] == "Natura"]
# subset["Price"] = subset["Price"] * 1.1  # may warn

# good
df.loc[df["Brand"] == "Natura", "Price"] *= 1.1

Test üçün minimal CSV:

CSV — grocery-data.csv
/data/
Product,Brand,Price,Qty,Date
Milk,Mlek,4.5,2,2025-11-01
Bread,Baker,3.2,1,2025-11-02
Apple,Natura,2.0,6,2025-11-03
Apple,Natura,2.5,3,2025-11-04
Milk,Mlek,5.0,2,2025-11-05
Bread,Baker,3.2,4,2025-11-06
Python — Quick Cheats
cheats.py
df = pd.read_csv("grocery-data.csv")
df["Product"] = df["Product"].str.lower().str.strip()
df["Date"]    = pd.to_datetime(df["Date"])
df["Total"]   = df["Price"] * df["Qty"]

print(pd.crosstab(df["Product"], df["Brand"]))
print(df.groupby("Brand")["Price"].mean())
print(df.sort_values(["Brand","Price"], ascending=[True, False]).head())

# select rows
print(df[(df["Brand"]=="Natura") & (df["Qty"]>=3)][["Product","Qty","Total"]])
Elvin Babanlı
online • quick replies
×
Hi! I’m Elvin. Ask me anything about projects, stack, or your tasks.