Pandas & NumPy Academy · Pelajaran

Membaca Fail CSV

Muatkan fail CSV dengan pd.read_csv, kawal pembatas, baris pengepala dan lajur indeks, kemudian pratonton hasilnya.

Pelajaran 1 daripada 413 langkah

Membaca Fail CSV ialah pelajaran Pandas & NumPy Academy percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Pandas & NumPy Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Pandas & NumPy Academy merangkumi sejumlah 4 pelajaran.

Mengapa CSV ialah Format Sejagat

CSV (Nilai Dipisahkan Koma) ialah format yang paling banyak digunakan untuk bertukar data berbentuk jadual. Format ini mudah dibaca manusia, disokong oleh setiap pangkalan data, hamparan, dan alat analitik, serta tidak memerlukan takrifan skema. pd.read_csv() ialah fungsi Pandas yang paling kerap dipanggil dalam analisis data kerana hampir setiap set data awam, eksport API, atau longgokan pangkalan data tersedia dalam CSV.

import pandas as pd

# Read a CSV file from disk
df = pd.read_csv('data/sales.csv')
print(df.shape)
print(df.head())

Panggilan asas read_csv()

Satu-satunya argumen yang diperlukan ialah laluan fail (rentetan atau objek Path). Secara lalai, Pandas menganggap baris pertama ialah pengepala (nama lajur), pembatasnya ialah koma, dan nilai disimpulkan kepada dtype yang sesuai. DataFrame yang terhasil mempunyai RangeIndex integer lalai. Sentiasa panggil df.info() sebaik sahaja selepas memuatkan data untuk mengesan isu inferens jenis.

import pandas as pd

df = pd.read_csv('products.csv')

# Equivalent with explicit defaults:
df = pd.read_csv('products.csv',
                 sep=',',
                 header=0,
                 index_col=None)

Mengawal Pembatas

Gunakan parameter sep= untuk menetapkan pembatas selain koma. Fail yang dipisahkan tab (TSV) menggunakan sep='\t'. Sesetengah eksport Eropah menggunakan noktah bertindih sebagai pemisah (sep=';') kerana koma digunakan sebagai pemisah perpuluhan. Hantar sep=None, engine='python' supaya Pandas mengesan pemisah secara automatik daripada kandungan fail.

import pandas as pd

# Tab-separated file
df_tsv = pd.read_csv('data.tsv', sep='\t')

# Semicolon-separated (common in Europe)
df_semi = pd.read_csv('data.csv', sep=';')

# Auto-detect separator
df_auto = pd.read_csv('data.txt', sep=None, engine='python')

Pengepala dan skiprows

Jika CSV tidak mempunyai baris pengepala, tetapkan header=None dan Pandas akan menetapkan nama lajur integer (0, 1, 2, ...). Berikan nama tersuai dengan names=['a', 'b', 'c']. Gunakan skiprows=n untuk melangkau n baris pertama (bagi metadata atau ulasan di bahagian atas fail). skiprows juga menerima senarai nombor baris tertentu untuk dilangkau.

import pandas as pd

# CSV with no header
df = pd.read_csv('noheader.csv', header=None,
                 names=['id', 'value', 'category'])

# Skip first 3 rows (e.g., metadata or comments)
df = pd.read_csv('report.csv', skiprows=3)

Menetapkan Lajur Indeks

index_col= menentukan lajur yang hendak digunakan sebagai indeks baris. Hantar nama lajur atau kedudukan integer. Menetapkan indeks yang bermakna (contohnya lajur tarikh atau ID unik) membolehkan capaian berasaskan label yang pantas dengan .loc dan diperlukan sebelum operasi siri masa. Hantar senarai untuk MultiIndex.

import pandas as pd

# Use 'date' column as row index
df = pd.read_csv('timeseries.csv', index_col='date', parse_dates=True)
print(df.index.dtype)  # datetime64[ns]

# Equivalent with column position
df2 = pd.read_csv('timeseries.csv', index_col=0, parse_dates=True)

Menghuraikan Tarikh Semasa Memuatkan

parse_dates=True memberitahu Pandas supaya cuba menukarkan indeks kepada datetime. Hantar senarai nama lajur kepada parse_dates=['col1', 'col2'] untuk menghuraikan lajur bukan indeks tertentu sebagai tarikh. Pandas akan cuba menggunakan format lazim secara automatik; untuk format luar biasa, gunakan date_format=. Menghuraikan tarikh semasa memuatkan data mengelakkan panggilan pd.to_datetime() berulang kemudian.

import pandas as pd

# Parse 'order_date' column as datetime
df = pd.read_csv('orders.csv',
                 parse_dates=['order_date'])
print(df['order_date'].dtype)  # datetime64[ns]

Memilih Lajur dengan usecols

usecols=['col1', 'col2'] hanya memuatkan lajur yang ditentukan dan mengabaikan semua lajur lain. Ini amat penting untuk fail CSV yang besar — Anda tidak perlu membaca fail yang mempunyai 200 lajur jika hanya memerlukan 5 lajur. Langkah ini mengurangkan masa I/O dan penggunaan memori dengan ketara. Hantar fungsi boleh panggil untuk memilih lajur berdasarkan corak nama.

import pandas as pd

# Load only 3 of potentially many columns
df = pd.read_csv('big_file.csv',
                 usecols=['user_id', 'event', 'timestamp'])
print(df.columns.tolist())  # ['user_id', 'event', 'timestamp']

Mengawal jenis data semasa pemuatan

Pandas membuat inferens jenis data, tetapi inferens ini boleh tersilap — lajur ID yang mengandungi rentetan berangka sepenuhnya boleh menjadi int64, atau lajur harga yang mempunyai nilai hilang boleh menjadi float64 tanpa diduga. Gunakan dtype={'col': str} untuk menetapkan jenis data. Cara ini juga lebih cekap: penetapan awal jenis data melangkau proses inferens dan boleh mempercepatkan pemuatan fail besar sebanyak 20-30%.

import pandas as pd

df = pd.read_csv('orders.csv', dtype={
    'order_id': str,      # keep as string (not int)
    'price': float,
    'quantity': 'int32'   # use smaller int
})

Mengendalikan nilai hilang semasa pemuatan

Secara lalai, Pandas mengenali banyak perwakilan nilai hilang: sel kosong, 'NA', 'NaN', 'N/A', 'null' dan sebagainya. Gunakan na_values=['?', '-', 'missing'] untuk menambah token tersuai. Gunakan keep_default_na=False untuk menyahdayakan senarai terbina dalam dan hanya menganggap nilai yang Anda tentukan sebagai hilang. Ini menghalang nilai rentetan yang sah seperti 'NA' (singkatan) daripada tersilap dianggap sebagai NaN.

import pandas as pd

df = pd.read_csv('survey.csv',
                 na_values=['?', '', 'N/A', 'none'])
print(df.isnull().sum())

nrows dan chunksize untuk fail besar

nrows=100 hanya memuatkan 100 baris pertama — sesuai untuk pemeriksaan skema pantas pada fail yang sangat besar. chunksize=10000 mengembalikan lelar TextFileReader yang menghasilkan DataFrames dengan 10000 baris setiap satu, sekali gus membolehkan pemprosesan secara bahagian bagi fail yang tidak muat dalam RAM. Pembacaan secara bahagian dibincangkan dengan lebih mendalam dalam pelajaran prestasi lanjutan.

import pandas as pd

# Quick peek at a large file
header_df = pd.read_csv('huge.csv', nrows=5)
print(header_df.dtypes)

# Chunked reading
for chunk in pd.read_csv('huge.csv', chunksize=50000):
    print(chunk.shape)  # process each chunk

Masalah lazim dengan read_csv

Berhati-hati terhadap isu lazim berikut: ralat pengekodan (gunakan encoding='utf-8' atau 'latin-1'), ruang pendahuluan dalam nama lajur (gunakan skipinitialspace=True), pemisah ribuan dalam nombor (gunakan thousands=','), dan koma perpuluhan dalam nombor Eropah (gunakan decimal=',' dan sep=';'). Jika diabaikan, setiap isu ini boleh menyebabkan lajur berangka ditukar secara senyap kepada objek.

import pandas as pd

# European format: semicolon sep, comma decimal, UTF-8
df = pd.read_csv('euro_data.csv',
                 sep=';',
                 decimal=',',
                 thousands='.',
                 encoding='utf-8',
                 skipinitialspace=True)

Semakan pantas

Uji pemahaman Anda tentang pembacaan fail CSV dengan Pandas daripada pelajaran ini.

Rumusan pelajaran

Dalam pelajaran ini, Anda telah mempelajari bahawa: pd.read_csv() ialah fungsi utama untuk memuatkan data berbentuk jadual dengan banyak parameter konfigurasi, sep, header, index_col, dan parse_dates mengawal cara fail ditafsirkan, serta usecols dan dtype meningkatkan prestasi dan keselamatan jenis data untuk fail besar. Seterusnya, kita akan membaca fail Excel dan JSON yang mempunyai parameter khusus mengikut format masing-masing.

Percuma untuk bermula

Pelajari Python dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
30
Pelajaran
120

Soalan Lazim

Adakah pelajaran “Membaca Fail CSV” percuma?

Ya — teks penuh “Membaca Fail CSV” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Pandas & NumPy Academy, tingkat taraf kepada CoddyKit PRO. Kursus Pandas & NumPy Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Membaca Fail CSV”?

Muatkan fail CSV dengan pd.read_csv, kawal pembatas, baris pengepala dan lajur indeks, kemudian pratonton hasilnya. Anda berlatih Pandas & NumPy Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Pandas & NumPy Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Pandas & NumPy Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.

Berapa lamakah pelajaran “Membaca Fail CSV” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Pandas & NumPy Academy ini?

Ya. Setiap pelajaran Pandas & NumPy Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Membaca Fail CSV
  2. Membaca Fail Excel dan JSON
  3. Menulis DataFrames ke Fail
  4. Membaca daripada URL dan StringIO
← Kembali ke Pandas & NumPy Academy