IlmHamroh
Data Science va sun'iy intellekt/Malumot yigish2/12-dars17 daqiqa
Mundarija (22)

7.2-dars: Fayllar — CSV va Excel

7-QISM — MA'LUMOT YIG'ISH · 2-dars


1. Kirish va motivatsiya

CSV (Comma-Separated Values) va Excel — ma'lumot yig'ishning eng keng tarqalgan formatlari. Aksariyat ma'lumot (davlat statistikasi, hisobotlar, eksport) shu ikki formatda keladi. 3.3-darsda pd.read_csv asoslarini ko'rdik; endi chuqurroq: real fayllar tuzoqlari — turli ajratgich (;, \t), kodlash (encoding — utf-8, latin-1), yo'q qiymat belgilari ("-", "N/A"), sarlavha yo'q, ustun turlari. Excel esa qo'shimcha: bir nechta varaq (sheet), formulalar, birlashtirilgan kataklar. Bu darsda CSV va Excel o'qish/yozishning barcha muhim parametrlari. Nega muhim? (1) Eng keng — ma'lumotning ko'p qismi CSV/Excel; (2) Tuzoqlar — ajratgich, kodlash (real fayllar iflos); (3) Excel — varaqlar, formulalar. Bu dars CSV va Excel fayllarni o'rgatadi — real fayllar bilan ishlash.

CSV va Excel — eng keng formatlar: pd.read_csv (o'qish — sep, encoding, na_values, dtype; 3.3 chuqurroq), df.to_csv (yozish — index=False), pd.read_excel (Excel — sheet_name, varaqlar; openpyxl), ajratgich (sep=";" — vergul emas; \t tab), kodlash (encoding="utf-8"/latin-1), yo'q qiymat (na_values=["-", "N/A"]), sarlavha (header, names). Foydalanish: fayldan ma'lumot o'qish/yozish, real fayllar tuzoqlari. Bu 3.3 (CSV asoslari), 6.4 (tur), 7.4 (formatlar) bilan bog'liq. CSV va Excel — o'qish/yozish (parametrlar). CSV. Excel.

Real vaziyat. Data Scientist davlat statistikasidan CSV yuklab oldi. Muammo: pd.read_csv("data.csv") — xato (yoki bitta ustun); sabab: ajratgich ; (Yevropa — vergul o'nlik uchun), kodlash latin-1 (utf-8 emas — o'zbekcha harflar buziladi buzuq), yo'q qiymat "-" (NaN emas — matn). Hal: pd.read_csv("data.csv", sep=";", encoding="latin-1", na_values=["-"]) (ajratgich, kodlash, yo'q qiymat ko'rsatilgan). Va Excel hisobot: pd.read_excel("hisobot.xlsx", sheet_name="2024") (aynan 2024 varag'i). Data Scientist parametrlar bilan to'g'ri o'qidi (ajratgich, kodlash). CSV va Excel — real fayllar tuzoqlari.

Bu darsda CSV va Excel fayllarni o'rganamiz.

Bu darsda:

  • read_csv parametrlari (sep, encoding)
  • Yo'q qiymat va turlar (na_values, dtype)
  • to_csv (yozish)
  • Excel (read_excel, varaqlar)
  • Sarlavha va indeks
  • Fayl amaliyoti
  • Fayl tuzoqlari
  • Amaliy: CSV va Excel

ℹ Misollar real pandas bilan (Python 3.14, tempfile) ishlaydi.


2. Nazariya — chuqur tushuntirish

2.1. read_csv parametrlari (sep, encoding)

Asosiy parametrlar:

python
import pandas as pd

# sep — ajratgich (standart vergul; boshqa: ; yoki tab)
pd.read_csv("data.csv", sep=";")       # nuqta-vergul (Yevropa)
pd.read_csv("data.csv", sep="\t")      # tab (TSV)

# encoding — kodlash (o'zbekcha/maxsus harflar)
pd.read_csv("data.csv", encoding="utf-8")     # standart
pd.read_csv("data.csv", encoding="latin-1")   # eski/Yevropa

read_csv parametrlari (sep, encoding) — asosiy: sep= (ajratgich — standart vergul ,; boshqa: ";" nuqta-vergul (Yevropa — vergul o'nlik), "\t" tab (TSV)), encoding= (kodlash — "utf-8" standart (o'zbekcha OK); "latin-1"/"cp1251" eski/maxsus). Sabab: ajratgich noto'g'ri → bitta ustun (; bilan ajratilgan, , bilan o'qish — ajratmaydi); kodlash noto'g'ri → buziq harf (buzuq, belgi — utf-8 fayl latin-1 bilan; 3.3 buziq belgi); real fayllar turli (Yevropa ;, eski tizim latin-1). sep (ajratgich — bir ustun muammo), encoding (kodlash — buziq harf). read_csv — sep/encoding (ajratgich/kodlash). sep. encoding.

2.2. Yo'q qiymat va turlar (na_values, dtype)

Yo'q qiymat va tur:

python
import pandas as pd

# na_values — qaysi qiymatlar NaN (default: bo'sh, NaN, NA, null...)
pd.read_csv("data.csv", na_values=["-", "N/A", "yo'q", "?"])

# dtype — ustun turi (matn saqlash — telefon, kod)
pd.read_csv("data.csv", dtype={"telefon": str, "kod": str})

# parse_dates — sana ustunini datetime qilish
pd.read_csv("data.csv", parse_dates=["sana"])

Yo'q qiymat va turlar (na_values, dtype) — o'qishda: na_values= (qaysi qiymatlar NaN — standart bo'sh/NaN/NA/null; qo'shimcha ["-", "N/A", "yo'q", "?"]), dtype= (ustun turi — {"telefon": str} matn saqlash; kod/telefon son bo'lib nol yo'qolmasin), parse_dates= (sana ustun — datetime; 6.8). Sabab: yo'q qiymat turli ko'rinishda ("-", "N/A" — matn deb o'qiladi; NaN emas; na_values — NaN qil); tur (telefon "007..." — son bo'lsa nol yo'q; dtype=str); sana (parse_dates — o'qishda datetime). na_values (yo'q qiymat — NaN), dtype (tur — matn saqla), parse_dates (sana). Yo'q qiymat/turlar — na_values/dtype (o'qishda). na_values. dtype.

2.3. to_csv (yozish)

to_csv (yozish) — faylga saqlash: df.to_csv("chiqish.csv", index=False) — DataFrame'ni CSV'ga; index=False (indeks ustun yozilmasin — odatda keraksiz; muhim!), sep= (ajratgich), encoding="utf-8" (kodlash), na_rep="" (NaN o'rniga). Sabab: saqlash (tozalangan/qayta ishlangan — faylga; keyingi bosqich, ulashish); index=False (indeks — 0, 1, 2 ustun sifatida yoziladi (keraksiz); False — yozmas; eng ko'p unutiladigan). to_csv (yozish), index=False (indeks yo'q — muhim), encoding (kodlash). to_csv — yozish (index=False). to_csv. index=False.

2.4. Excel (read_excel, varaqlar)

Excel (read_excel, varaqlar) — bir necha varaq: pd.read_excel("fayl.xlsx", sheet_name="2024") (aynan varaq; sheet_name=0 birinchi; sheet_name=None — barcha varaq dict); df.to_excel("chiqish.xlsx", sheet_name="natija", index=False) (yozish); openpyxl (kutubxona — .xlsx uchun). Sabab: Excel bir necha varaq (sheet — CSV bitta jadval; Excel ko'p); sheet_name (qaysi varaq); formula (Excel — formula qiymati o'qiladi, formula emas), birlashtirilgan katak (muammo — NaN); ExcelFile (bir marta ochib, ko'p varaq). sheet_name (varaq), None (barcha — dict), openpyxl (kutubxona). Excel — read_excel (varaqlar; sheet_name). Excel. Varaq.

2.5. Sarlavha va indeks

Sarlavha va indeks (header, names) — ustun nomlari: header= (sarlavha qatori — standart 0 birinchi qator; header=None — sarlavha yo'q; header=2 — 3-qator sarlavha, yuqori tashla), names= (ustun nomlarini berish — names=["a", "b", "c"]; sarlavha yo'q fayl uchun), index_col= (qaysi ustun indeks — index_col=0 birinchi; index_col="id"), skiprows= (yuqori qatorlarni tashla — izoh/bo'sh; skiprows=3), usecols= (faqat kerak ustun — usecols=["a", "b"]). Sabab: real fayl sarlavha turli (yo'q — header=None; yuqorida izoh — skiprows; nomsiz — names); indeks (id ustun — index_col); kerak ustun (usecols — katta fayl). header (sarlavha qatori), names (nom berish), index_col (indeks), skiprows (tashla), usecols (kerak). Sarlavha/indeks — header/names/index_col (ustun nomlari). Sarlavha. header.

2.6. Fayl amaliyoti

Fayl amaliyoti: ko'r (avval faylni ochib ko'r — ajratgich?, kodlash?, sarlavha?, yo'q qiymat?; matn muharrir yoki head); read_csv (sep, encoding, na_values, dtype, parse_dates — moslab); tekshir (df.head(), df.dtypes, df.shape — to'g'ri o'qildimi); Excel (sheet_name — qaysi varaq; None barcha); yozish (to_csv(index=False)); audit (6.12 — o'qigach). Tuzoqlar: ajratgich (bir ustun), kodlash (buziq harf), yo'q qiymat (matn NaN emas), index unutish (yozishda), dtype (telefon nol yo'q). Amaliyot — ko'r, read_csv, tekshir, yozish. Fayl. Parametr.

2.7. Fayl tuzoqlari

Fayl asosiy tuzoqlari: ajratgich (;/\t fayl , bilan o'qish → bitta ustun (ajratmaydi); avval faylni ko'r — qanday ajratgich; sep=); kodlash (latin-1/cp1251 fayl utf-8 bilan → buziq harf (buzuq, belgi) yoki xato (UnicodeDecodeError); encoding= moslab; noaniq — chardet); yo'q qiymat ("-", "N/A", "yo'q" — matn deb (NaN emas; ustun object — son emas); na_values= ko'rsati); index yozish (to_csv() — indeks ustun sifatida (0,1,2; keraksiz; qayta o'qishda muammo); index=False); dtype yo'qotish (telefon/kod "007..." — son bo'lib nol yo'qoladi (007 → 7; ID buziladi); dtype=str); katta fayl (butun fayl — xotira (katta CSV — RAM; chunks — 7.10; usecols/dtype — kamaytir)); sarlavha (yuqorida izoh/bo'sh qator — sarlavha noto'g'ri; skiprows; sarlavha yo'q — header=None, names); Excel formula (formula qiymati o'qiladi (odatda OK); lekin birlashtirilgan katak — NaN (faqat birinchi); .ffill()); o'nlik belgi (Yevropa — vergul o'nlik (1,5 = 1.5); decimal=","; aks holda matn); BOM (utf-8-sig — Excel CSV boshida BOM belgi; encoding="utf-8-sig"). Sabab: real fayl ajratgich/kodlash/format nozik (Yevropa, eski tizim, iflos — xato o'qish). Yechim: faylni ko'r, sep/encoding/na_values moslab, index=False, dtype. Tuzoqlar — ajratgich, kodlash, yo'q qiymat, index.

2.8. CSV va Excel — real fayllar bilan ishlash

CSV va Excel asosiy g'oyasi — real fayllar bilan ishlash: CSV/Excel — ma'lumot yig'ishning eng keng formatlari (davlat statistika, hisobot, eksport); real fayllar iflos (turli ajratgich, kodlash, yo'q qiymat — tuzoqlar). pd.read_csv (o'qish — sep ajratgich (;/\t), encoding kodlash (utf-8/latin-1), na_values yo'q qiymat ("-"/"N/A"), dtype tur (telefon str), parse_dates sana; header/names/index_col/skiprows/usecols sarlavha/indeks), df.to_csv (yozish — index=False muhim), pd.read_excel (Excel — sheet_name varaq; None barcha; openpyxl). Foydalanish: fayldan ma'lumot o'qish/yozish (yig'ish — CSV/Excel), real fayllar tuzoqlari (ajratgich, kodlash — to'g'ri o'qish). Tuzoqlar: ajratgich (bir ustun), kodlash (buziq harf/xato), yo'q qiymat (matn NaN emas), index yozish (index=False), dtype (telefon nol yo'q), Excel birlashgan katak (NaN), o'nlik belgi (decimal=","), BOM (utf-8-sig). Bu 3.3 (CSV asoslari), 6.4 (tur — dtype), 6.1 (NaN — na_values), 7.4 (formatlar), 7.10 (katta fayl) bilan. CSV va Excel — real fayllar bilan ishlash (parametrlar; tuzoqlar). CSV. Excel. Parametr.


3. Tez ma'lumotnoma

python
import pandas as pd

# READ_CSV (barcha muhim parametr):
pd.read_csv("data.csv",
    sep=";",                      # ajratgich (, ; \t)
    encoding="utf-8",             # kodlash (utf-8, latin-1, utf-8-sig)
    na_values=["-", "N/A", "?"],  # yo'q qiymat → NaN
    dtype={"telefon": str},       # tur (matn saqla — nol)
    parse_dates=["sana"],         # sana → datetime
    decimal=",",                  # o'nlik belgi (Yevropa)
    skiprows=2,                   # yuqori qatorlarni tashla
    usecols=["a", "b"],           # faqat kerak ustun
    header=0)                     # sarlavha qatori (None — yo'q)

# TO_CSV (yozish):
df.to_csv("chiqish.csv", index=False, encoding="utf-8")   # index=False MUHIM

# EXCEL:
pd.read_excel("fayl.xlsx", sheet_name="2024")   # aynan varaq
pd.read_excel("fayl.xlsx", sheet_name=None)     # barcha varaq (dict)
df.to_excel("chiqish.xlsx", sheet_name="natija", index=False)

QOIDA: faylni ko'r · sep/encoding moslab · na_values · index=False · dtype

CSV va Excel xulosasi

CSV va Excel — eng keng formatlar (real fayllar iflos)
read_csv — sep (ajratgich), encoding (kodlash), na_values, dtype
to_csv — index=False (MUHIM — indeks yozilmasin)
Excel — read_excel (sheet_name — varaq; None — barcha)
Tuzoqlar — ajratgich (bir ustun), kodlash (buzuq harf)

4. Batafsil misollar

Misollar real pandas bilan (Python 3.14, tempfile) ishlaydi.

Misol 1 — read_csv (ajratgich, na_values)

python
"""read_csv parametrlari (real pandas/tempfile)."""

import tempfile
from pathlib import Path
import pandas as pd


def main() -> None:
    # nuqta-vergulli CSV (Yevropa), yo'q qiymat "-"
    csv_matn = "shahar;narx;yosh\nToshkent;120;5\nSamarqand;-;10\nBuxoro;80;-\n"
    yol = Path(tempfile.gettempdir()) / "test_ds72.csv"
    yol.write_text(csv_matn, encoding="utf-8")

    print("=== 1. Noto'g'ri (vergul bilan) ===")
    xato = pd.read_csv(yol)
    print(f"  ustunlar soni: {len(xato.columns)} (1 — ajratmadi!)")

    print("\n=== 2. To'g'ri (sep=';') ===")
    df = pd.read_csv(yol, sep=";", na_values=["-"])
    print(f"  ustunlar: {list(df.columns)}")

    print("\n=== 3. Yo'q qiymat (na_values) ===")
    print(f"  NaN soni: {int(df.isna().sum().sum())}")

    print("\n=== 4. Turlar ===")
    print(f"  narx turi: {df['narx'].dtype} (na_values — son)")
    yol.unlink()
    print("  ⭐ read_csv — sep, na_values")


if __name__ == "__main__":
    main()

Natijaning muhim qismi:

text
=== 1. Noto'g'ri (vergul bilan) ===
  ustunlar soni: 1 (1 — ajratmadi!)

=== 2. To'g'ri (sep=';') ===
  ustunlar: ['shahar', 'narx', 'yosh']

=== 3. Yo'q qiymat (na_values) ===
  NaN soni: 2

=== 4. Turlar ===
  narx turi: float64 (na_values — son)
  ⭐ read_csv — sep, na_values

Nima ko'rsatdi: 2.1, 2.2-bo'limlar.

Misol 2 — dtype (matn saqlash)

python
"""dtype: matn saqlash (real pandas/tempfile)."""

import tempfile
from pathlib import Path
import pandas as pd


def main() -> None:
    csv_matn = "id,telefon,narx\n007,00891234567,120\n042,00897654321,80\n"
    yol = Path(tempfile.gettempdir()) / "test_ds72b.csv"
    yol.write_text(csv_matn, encoding="utf-8")

    print("=== 1. dtype'siz (nol yo'qoladi) ===")
    xato = pd.read_csv(yol)
    print(f"  id: {xato['id'].tolist()} (007 → 7!)")

    print("\n=== 2. dtype=str (matn saqlash) ===")
    df = pd.read_csv(yol, dtype={"id": str, "telefon": str})
    print(f"  id: {df['id'].tolist()} (007 saqlandi)")

    print("\n=== 3. Telefon (nol muhim) ===")
    print(f"  telefon: {df['telefon'].tolist()}")

    print("\n=== 4. narx — son (dtype bermadi) ===")
    print(f"  narx turi: {df['narx'].dtype}")
    yol.unlink()
    print("  ⭐ dtype — matn saqlash (nol)")


if __name__ == "__main__":
    main()

Natijaning muhim qismi:

text
=== 1. dtype'siz (nol yo'qoladi) ===
  id: [7, 42] (007 → 7!)

=== 2. dtype=str (matn saqlash) ===
  id: ['007', '042'] (007 saqlandi)

=== 3. Telefon (nol muhim) ===
  telefon: ['00891234567', '00897654321']

=== 4. narx — son (dtype bermadi) ===
  narx turi: int64
  ⭐ dtype — matn saqlash (nol)

Nima ko'rsatdi: 2.2-bo'lim.

Misol 3 — to_csv va qayta o'qish

python
"""to_csv: yozish (real pandas/tempfile)."""

import tempfile
from pathlib import Path
import pandas as pd


def main() -> None:
    df = pd.DataFrame({"shahar": ["Toshkent", "Samarqand"], "narx": [120, 80]})
    yol = Path(tempfile.gettempdir()) / "test_ds72c.csv"

    print("=== 1. index=False (to'g'ri) ===")
    df.to_csv(yol, index=False)
    qayta = pd.read_csv(yol)
    print(f"  ustunlar: {list(qayta.columns)}")

    print("\n=== 2. index bilan (noto'g'ri) ===")
    df.to_csv(yol, index=True)
    qayta2 = pd.read_csv(yol)
    print(f"  ustunlar: {list(qayta2.columns)} (Unnamed: 0 — keraksiz!)")

    print("\n=== 3. Nega index=False ===")
    print("  indeks 0,1,2 — ustun sifatida yozilmasin")

    print("\n=== 4. Qayta o'qish ===")
    df.to_csv(yol, index=False)
    print(f"  toza: {list(pd.read_csv(yol).columns)}")
    yol.unlink()
    print("  ⭐ to_csv — index=False (muhim)")


if __name__ == "__main__":
    main()

Natijaning muhim qismi:

text
=== 1. index=False (to'g'ri) ===
  ustunlar: ['shahar', 'narx']

=== 2. index bilan (noto'g'ri) ===
  ustunlar: ['Unnamed: 0', 'shahar', 'narx'] (Unnamed: 0 — keraksiz!)

=== 3. Nega index=False ===
  indeks 0,1,2 — ustun sifatida yozilmasin

=== 4. Qayta o'qish ===
  toza: ['shahar', 'narx']
  ⭐ to_csv — index=False (muhim)

Nima ko'rsatdi: 2.3-bo'lim.

Misol 4 — Excel (varaqlar)

python
"""Excel: varaqlar (real pandas/openpyxl/tempfile)."""

import tempfile
from pathlib import Path
import pandas as pd


def main() -> None:
    yol = Path(tempfile.gettempdir()) / "test_ds72.xlsx"

    print("=== 1. Ikki varaqli Excel yozish ===")
    with pd.ExcelWriter(yol) as writer:
        pd.DataFrame({"narx": [120, 80]}).to_excel(writer, sheet_name="2023", index=False)
        pd.DataFrame({"narx": [130, 90]}).to_excel(writer, sheet_name="2024", index=False)
    print("  varaqlar: 2023, 2024")

    print("\n=== 2. Aynan varaq o'qish ===")
    df_2024 = pd.read_excel(yol, sheet_name="2024")
    print(f"  2024 narx: {df_2024['narx'].tolist()}")

    print("\n=== 3. Barcha varaq (None — dict) ===")
    hammasi = pd.read_excel(yol, sheet_name=None)
    print(f"  varaqlar: {list(hammasi.keys())}")

    print("\n=== 4. CSV vs Excel ===")
    print("  CSV — bitta jadval; Excel — ko'p varaq")
    yol.unlink()
    print("  ⭐ Excel — sheet_name (varaqlar)")


if __name__ == "__main__":
    main()

Natijaning muhim qismi:

text
=== 1. Ikki varaqli Excel yozish ===
  varaqlar: 2023, 2024

=== 2. Aynan varaq o'qish ===
  2024 narx: [130, 90]

=== 3. Barcha varaq (None — dict) ===
  varaqlar: ['2023', '2024']

=== 4. CSV vs Excel ===
  CSV — bitta jadval; Excel — ko'p varaq
  ⭐ Excel — sheet_name (varaqlar)

Nima ko'rsatdi: 2.4-bo'lim.


5. To'g'ri va noto'g'ri tushunishlar

Noto'g'ri fikr To'g'risi
"CSV doim vergul" Turli (; \t) — sep
"kodlash muhim emas" Buzuq harf (encoding)
"'-' = NaN" Matn (na_values)
"index yozilmasin bilinadi" index=False (unutiladi)
"telefon son" dtype=str (nol)
"Excel = CSV" Ko'p varaq (sheet_name)
"faylni ko'rmasdan o'qi" Avval ko'r (ajratgich)
"read_csv har doim ishlaydi" Parametrlar (real iflos)

6. Keng tarqalgan xatolar va yechimlari

1. Ajratgich (bir ustun)

python
pd.read_csv("data.csv")   # ; bilan fayl → 1 ustun                # ⚠️
pd.read_csv("data.csv", sep=";")   # to'g'ri ajratgich           # ✅

2. Kodlash (buzuq harf)

python
pd.read_csv("data.csv")   # latin-1 fayl → buzuq belgilar                  # ⚠️
pd.read_csv("data.csv", encoding="latin-1")   # to'g'ri          # ✅

3. Yo'q qiymat (matn)

python
pd.read_csv("data.csv")   # "-" matn (ustun object)              # ⚠️
pd.read_csv("data.csv", na_values=["-", "N/A"])   # NaN          # ✅

4. index yozish

python
df.to_csv("out.csv")   # indeks ustun (Unnamed: 0)                # ⚠️
df.to_csv("out.csv", index=False)   # index yo'q                 # ✅

5. dtype (nol yo'qoladi)

python
pd.read_csv("data.csv")   # "007" → 7 (ID buzildi)                # ⚠️
pd.read_csv("data.csv", dtype={"id": str})   # matn saqla        # ✅

6. Excel birlashgan katak

python
pd.read_excel("f.xlsx")   # birlashgan → NaN (faqat birinchi)     # ⚠️
df["ustun"].ffill()   # to'ldirish (oldingi)                     # ✅

7. O'nlik belgi (Yevropa)

python
pd.read_csv("data.csv")   # "1,5" matn (vergul o'nlik)            # ⚠️
pd.read_csv("data.csv", decimal=",")   # 1.5 son                 # ✅

7. Integratsiya — bu bilim qayerda kerak bo'ladi

  • 3.3-dars (o'tilgan): CSV asoslari
  • 6.4-dars (o'tilgan): Tur (dtype)
  • 6.1-dars (o'tilgan): NaN (na_values)
  • 7.4-dars: Saqlash formatlari
  • 7.10-dars: Katta fayllar (chunks)

8. Eng yaxshi amaliyotlar

  1. Faylni ko'r — avval (ajratgich, kodlash).

  2. sep/encoding — moslab.

  3. na_values — yo'q qiymat belgilari.

  4. dtype=str — telefon/kod (nol).

  5. index=False — yozishda (muhim).

  6. Excel — sheet_name (varaq).

  7. parse_dates — sana ustun.

  8. Tekshir — head, dtypes, shape.


9. Amaliy topshiriq

Vazifa 1: Bashorat qiling

python
1.  # read_csv nima?
2.  # sep nima?
3.  # encoding nima?
4.  # na_values nima?
5.  # dtype nega?
6.  # to_csv index?
7.  # read_excel nima?
8.  # sheet_name?
9.  # header nima?
10. # decimal nega?
11. # bir ustun sababi?
12. # nega faylni ko'r?
Javoblar
  1. CSV o'qish (DataFrame)
  2. Ajratgich (, ; \t)
  3. Kodlash (utf-8, latin-1)
  4. Yo'q qiymat → NaN
  5. Matn saqlash (nol)
  6. index=False (indeks yozilmasin)
  7. Excel o'qish
  8. Varaq (aynan/None)
  9. Sarlavha qatori
  10. O'nlik belgi (Yevropa vergul)
  11. Ajratgich noto'g'ri
  12. Ajratgich/kodlash bilish

Vazifa 2: Xatolarni tuzating

python
1.  pd.read_csv("data.csv")   # ; bilan

2.  pd.read_csv("data.csv")   # latin-1

3.  pd.read_csv("data.csv")   # "-"

4.  df.to_csv("out.csv")

5.  pd.read_csv("data.csv")   # "007"
Javoblar
python
1.  sep=";"

2.  encoding="latin-1"

3.  na_values=["-"]

4.  index=False

5.  dtype={"id": str}

Vazifa 3: read_csv

Modellang:

  1. sep
  2. encoding
  3. na_values
  4. dtype

Vazifa 4: Yozish va Excel

Modellang:

  1. to_csv index=False
  2. read_excel
  3. sheet_name
  4. Varaqlar

Vazifa 5: Sarlavha

Modellang:

  1. header
  2. names
  3. skiprows
  4. usecols

Vazifa 6: Integratsiya

Modellang:

  1. CSV (3.3)
  2. Tur (6.4)
  3. Formatlar (7.4)
  4. Katta fayl (7.10)

Vazifa 7: O'ylash

pd.read_csv("data.csv") oddiy ko'rinadi, lekin real fayllarda ko'p tuzoq bor: turli ajratgich, kodlash, yo'q qiymat. Ko'pincha faylni "ko'rmasdan" o'qishga urinish xatoga olib keladi. Nima uchun "faylni avval ko'r" tamoyili muhim, va nima uchun ma'lumot o'qish darslarda oson, real hayotda esa mashaqqatli?

Javob

Qisqa javob: read_csv oddiy, lekin real fayllar tuzoqli (ajratgich, kodlash, yo'q qiymat); faylni "ko'rmasdan" o'qish xato; "faylni avval ko'r" tamoyili muhim, ma'lumot o'qish darslarda oson (toza fayl), real hayotda mashaqqatli (iflos fayl), chunki: (1) darslar toza — o'quv fayllar tayyorlangan (bir ajratgich, utf-8, toza; read_csv darhol ishlaydi); real fayllar iflos (turli manba, tizim, til — ajratgich/kodlash/format har xil); (2) faylni ko'r — o'qishdan oldin faylni ochib ko'r (ajratgich?, kodlash?, sarlavha?, yo'q qiymat?; matn muharrir, head); ko'rmay — taxmin (noto'g'ri parametr — xato); (3) jim xato — noto'g'ri ajratgich → bir ustun (xato emas — jim; keyin tahlil noto'g'ri); kodlash → buziq harf (jim); (4) manba xilma-xil — fayl turli tizim (Yevropa ;, eski latin-1, Excel BOM; har biriga boshqa parametr). "Nega darslar oson, real mashaqqatli": (a) toza vs iflos (darslar — bir standart; real — har xil; tayyorlash 80% — 6-qism); (b) noaniqlik (real — format noma'lum; ko'rish/taxmin/sinov); (c) manba (real — turli manba, til, tizim; darslar — bir); (d) hujjatsiz (real fayl — izohsiz; qanday format — o'zi top). "Faylni qanday ko'rish": (1) matn muharrir (kichik fayl — ochib ko'r; ajratgich, kodlash); (2) head (birinchi qatorlar — pd.read_csv(nrows=5) yoki matn head); (3) file/chardet (kodlash aniqlash); (4) sinov (read_csv — xato/bir ustun → parametr moslab); (5) tekshir (df.head(), dtypes, shape — to'g'ri o'qildimi). "Amaliy": faylni ko'r → parametr (sep/encoding/na_values) → o'qi → tekshir → (kerak bo'lsa moslab). "Nega muhim": faylni ko'r (taxmin emas — jim xato oldini ol); real iflos (darslar toza — real mashaqqatli); tekshir. Saboqlar: real fayllar iflos (darslar toza); faylni ko'r (o'qishdan oldin — ajratgich/kodlash); jim xato (bir ustun/buziq harf — tekshir); ma'lumot o'qish — mashaqqatli (real — tuzoqlar). To'g'ri: faylni ko'r (avval — ajratgich/kodlash); parametr moslab; tekshir (jim xato); real iflos (sabr). Muvozanat: oddiy amal (read_csv) + real tuzoqlar (parametr, ko'rish — mashaqqat). Bu Data Science real ish asosiy (fayl — ko'r, moslab; real iflos; tekshir). CSV/Excel — faylni ko'r (real fayllar iflos; parametr; tekshir).

1. Nega faylni ko'r

  • Real iflos (turli ajratgich/kodlash)
  • Taxmin xato (ko'rmay — noto'g'ri parametr)
  • Jim xato (bir ustun/buziq harf — ogohlantirmaydi)
  • Manba xilma-xil (tizim, til — boshqa format)

2. Nega darslar oson, real mashaqqatli

  • Toza vs iflos (o'quv tayyorlangan; real har xil)
  • Noaniqlik (format noma'lum — ko'r/sinov)
  • Manba (turli tizim/til; darslar bir)
  • Hujjatsiz (real — izohsiz; o'zi top)

3. Darslar vs real

Darslar (toza) Real (iflos)
Bir standart Turli ajratgich/kodlash
read_csv darhol Parametr moslab
Hujjatli Noaniq (ko'r/sinov)

4. Faylni ko'rish

  1. Matn muharrir (ajratgich, kodlash)
  2. head (birinchi qatorlar)
  3. Sinov (read_csv — moslab)
  4. Tekshir (head, dtypes, shape)

5. Xulosa

  1. read_csv oddiy, lekin real fayllar iflos (tuzoqlar)
  2. Faylni avval ko'r (ajratgich/kodlash — taxmin emas)
  3. Jim xato (bir ustun/buziq harf — tekshir)
  4. Real mashaqqatli (darslar toza; sabr, moslab)

Nimani mustahkamlaydi: 2.6, 2.7-bo'limlar.


Xulosa

Bu darsda CSV va Excel fayllarni o'rgandik.

Eng muhim uch fikr:

  1. read_csv parametrlari. pd.read_csv — sep (ajratgich — ,/;/\t; noto'g'ri → bir ustun), encoding (kodlash — utf-8/latin-1/utf-8-sig; noto'g'ri → buziq harf), na_values (yo'q qiymat — ["-", "N/A"] → NaN), dtype (tur — {"telefon": str} nol saqla), parse_dates (sana — datetime), decimal="," (Yevropa o'nlik).

  2. Yozish va Excel. df.to_csv("out.csv", index=False) — index=False (indeks yozilmasin — eng ko'p unutiladigan; aks holda Unnamed: 0). pd.read_excel(fayl, sheet_name="2024") (aynan varaq; sheet_name=None — barcha varaq dict; openpyxl); Excel ko'p varaq (CSV — bitta). Sarlavha/indeks — header/names/index_col/skiprows/usecols.

  3. Real fayllar bilan. CSV/Excel — eng keng formatlar (real fayllar iflos — tuzoqlar). Faylni avval ko'r (ajratgich, kodlash — taxmin emas; jim xato oldini ol); ma'lumot o'qish darslarda oson (toza), real hayotda mashaqqatli (iflos — moslab). Tuzoqlar: ajratgich (bir ustun), kodlash (buziq harf/UnicodeDecodeError), yo'q qiymat (matn NaN emas), index yozish (index=False), dtype (telefon nol), Excel birlashgan katak (ffill), o'nlik belgi (decimal=","), BOM (utf-8-sig).

Keyingi darsda JSON va Parquet formatlarini o'rganamiz: JSON (pd.read_json, json — API/veb javob; ierarxik; 7.1 semi-structured), Parquet (ustunli format — katta ma'lumot, tez, siqiq; CSV'dan samaraliroq).

Ulashish:Telegram'da

Izohlar (0)

Izoh yozish uchun kiring.

  • Hozircha izoh yo'q. Birinchi bo'ling!