Pandas untuk Manipulasi Data
Pelajar akan memuatkan fail CSV ke dalam DataFrames, menapis baris, memilih lajur, mengendalikan nilai yang hilang, dan mengira statistik ringkasan.
Pandas untuk Manipulasi Data ialah pelajaran Machine Learning Academy percuma di CoddyKit. Ini ialah pelajaran 3 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 Machine Learning Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Machine Learning Academy merangkumi sejumlah 4 pelajaran.
Apakah Pandas dan Mengapa Menggunakannya?
Pandas mengendalikan data berbentuk jadual — baris dan lajur, seperti hamparan. DataFrame ialah tempat anda memuatkan dan membersihkan data mentah sebelum data itu sampai kepada model anda.
import pandas as pd
import numpy as np
# Create a DataFrame manually
df = pd.DataFrame({
'name': ['Alice', 'Bob', 'Carol', 'Dave'],
'age': [25, 30, 35, 28],
'salary': [50000, 70000, 90000, 60000],
'department': ['Engineering', 'Marketing', 'Engineering', 'Sales']
})
print(df)
print('\nShape:', df.shape) # (4, 4)Memuatkan Data daripada Fail CSV
Muatkan fail dalam satu baris menggunakan pd.read_csv(). Kemudian sentiasa periksanya: .head(), .info() dan .describe() mendedahkan bentuk, jenis dan nilai yang hilang dalam beberapa saat.
import pandas as pd
# Load a CSV
df = pd.read_csv('titanic.csv')
# First inspection
print(df.head()) # first 5 rows
print(df.tail(3)) # last 3 rows
print(df.info()) # column types + non-null counts
print(df.describe()) # count, mean, std, min, max for numeric cols
print(df.columns.tolist()) # column names
print(df.shape) # (891, 12)Memilih Lajur dan Baris
Pilih lajur dengan df['col'] dan tapis baris menggunakan syarat Boolean. Gunakan .loc[] untuk label dan .iloc[] untuk kedudukan. Letakkan setiap syarat dalam kurungan!
import pandas as pd
df = pd.read_csv('titanic.csv')
# Select columns
age = df['Age'] # Series
subset = df[['Age', 'Fare', 'Survived']] # DataFrame
# Filter rows with boolean conditions
survivors = df[df['Survived'] == 1]
first_class_women = df[(df['Pclass'] == 1) & (df['Sex'] == 'female')]
# Label-based selection (row label, column label)
print(df.loc[0, 'Name']) # first row, Name column
# Position-based selection
print(df.iloc[0, 0]) # first row, first columnMengendalikan Nilai yang Hilang
Data sebenar mempunyai ruang kosong, yang ditunjukkan sebagai NaN, dan kebanyakan model tidak dapat mengendalikannya. Dua pilihan anda: buang baris atau lajur, atau isikannya dengan nilai seperti median.
import pandas as pd
import numpy as np
df = pd.read_csv('titanic.csv')
# Detect missing values
print(df.isnull().sum()) # count NaN per column
print(df.isnull().mean() * 100) # % missing per column
# Drop columns with >50% missing
df_clean = df.dropna(thresh=len(df) * 0.5, axis=1)
# Fill numeric missing with median
df['Age'] = df['Age'].fillna(df['Age'].median())
# Fill categorical missing with most frequent
df['Embarked'] = df['Embarked'].fillna(df['Embarked'].mode()[0])Jenis Data dan Penukaran Jenis
Setiap lajur mempunyai dtype seperti int, float atau object (teks). Jenis yang salah menyebabkan pepijat senyap — nombor yang dibaca sebagai teks tidak boleh digunakan dalam pengiraan. Gunakan .astype() untuk menukarnya.
import pandas as pd
df = pd.read_csv('titanic.csv')
print(df.dtypes) # see all column dtypes
# Convert a column's dtype
df['Survived'] = df['Survived'].astype(bool)
df['Pclass'] = df['Pclass'].astype('category')
# Convert object column to numeric (coerce errors to NaN)
df['Fare'] = pd.to_numeric(df['Fare'], errors='coerce')
# Parse dates
# df['date'] = pd.to_datetime(df['date'])
print(df.dtypes)Menambah dan Mengubah Lajur
Kejuruteraan ciri bermaksud membina lajur baharu daripada lajur sedia ada. Menggabungkan SibSp dan Parch menjadi satu FamilySize sering membantu model belajar dengan lebih baik. Lihat kod.
import pandas as pd
df = pd.read_csv('titanic.csv')
# Create a new column from existing ones
df['FamilySize'] = df['SibSp'] + df['Parch'] + 1 # +1 for self
# Binary flag: is the passenger alone?
df['IsAlone'] = (df['FamilySize'] == 1).astype(int)
# Bin a continuous feature into categories
df['AgeGroup'] = pd.cut(df['Age'], bins=[0, 12, 18, 60, 100],
labels=['Child', 'Teen', 'Adult', 'Senior'])
print(df[['FamilySize', 'IsAlone', 'AgeGroup']].head())GroupBy: Mengagregat Mengikut Kategori
groupby() membahagikan data anda mengikut kategori, menggunakan fungsi seperti mean, kemudian menggabungkan hasilnya — sama seperti GROUP BY dalam SQL. Sangat sesuai untuk mengesan corak dengan pantas.
import pandas as pd
df = pd.read_csv('titanic.csv')
# Mean survival rate by class
survival_by_class = df.groupby('Pclass')['Survived'].mean()
print(survival_by_class)
# Pclass 1: ~0.63, Pclass 2: ~0.47, Pclass 3: ~0.24
# Multiple aggregations at once
summary = df.groupby('Pclass').agg(
passengers=('Survived', 'count'),
survival_rate=('Survived', 'mean'),
avg_fare=('Fare', 'mean')
)
print(summary)Menggabung dan Mencantum DataFrame
Perlukan data daripada dua sumber? pd.merge() mencantumkan DataFrame berdasarkan kunci yang dikongsi, sama seperti cantuman SQL. Gunakan pd.concat() untuk menyusun jadual menjadi lebih banyak baris atau lajur.
import pandas as pd
customers = pd.DataFrame({'id': [1, 2, 3], 'name': ['Alice', 'Bob', 'Carol']})
orders = pd.DataFrame({'id': [1, 1, 2], 'amount': [50, 30, 70]})
# Inner join on 'id'
merged = pd.merge(customers, orders, on='id', how='inner')
print(merged)
# Stack DataFrames with the same columns
df1 = pd.DataFrame({'A': [1, 2]})
df2 = pd.DataFrame({'A': [3, 4]})
combined = pd.concat([df1, df2], ignore_index=True)
print(combined)Statistik Ringkasan dan Kiraan Nilai
Sebelum pemodelan, kaji data anda: .describe() meringkaskan nombor dan .value_counts() mengira kategori. Sentiasa semak ketidakseimbangan kelas — keadaan ini boleh mengelirukan ketepatan.
import pandas as pd
df = pd.read_csv('titanic.csv')
# Numeric statistics
print(df['Age'].describe())
# count, mean, std, min, 25%, 50%, 75%, max
# Categorical distribution
print(df['Sex'].value_counts())
print(df['Pclass'].value_counts(normalize=True)) # proportions
# Correlation with target variable
correlations = df.corr()['Survived'].sort_values(ascending=False)
print(correlations)Menukar DataFrame kepada NumPy untuk scikit-learn
Langkah terakhir sebelum latihan: asingkan ciri (X) daripada sasaran (y), kemudian tukarkannya kepada NumPy menggunakan .to_numpy(). Kini scikit-learn mempunyai perkara yang tepat seperti yang dijangkakan.
import pandas as pd
from sklearn.model_selection import train_test_split
df = pd.read_csv('titanic.csv')
# Select numeric features only for simplicity
features = ['Pclass', 'Age', 'SibSp', 'Parch', 'Fare']
df_model = df[features + ['Survived']].dropna()
X = df_model[features].to_numpy() # shape (n, 5)
y = df_model['Survived'].to_numpy() # shape (n,)
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42, stratify=y
)
print('Train shape:', X_train.shape)
print('Test shape:', X_test.shape)Menyimpan dan Memuatkan Data yang Diproses
Selepas semua pembersihan itu, simpan hasil kerja anda supaya anda tidak perlu mengulanginya. df.to_csv() mudah digunakan; Parquet jauh lebih kecil dan pantas untuk set data yang besar.
import pandas as pd
df = pd.read_csv('titanic.csv')
# Save as CSV
df.to_csv('titanic_processed.csv', index=False)
# Save as Parquet (much faster for large files)
# df.to_parquet('titanic_processed.parquet', index=False)
# Load back
df_reloaded = pd.read_csv('titanic_processed.csv')
print('Reloaded shape:', df_reloaded.shape)Semakan Pantas
Uji pemahaman anda tentang konsep Pembelajaran Mesin dengan Python daripada pelajaran ini.
Imbas Kembali Pelajaran
Anda telah mempelajari cara mengurus data dengan Pandas: DataFrame memuatkan dan membersihkan jadual, dropna dan fillna mengendalikan nilai yang hilang, manakala groupby mendedahkan corak. Seterusnya: carta. 📊
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 “Pandas untuk Manipulasi Data” percuma?
Ya — teks penuh “Pandas untuk Manipulasi Data” 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 Machine Learning Academy, tingkat taraf kepada CoddyKit PRO. Kursus Machine Learning Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Pandas untuk Manipulasi Data”?
Pelajar akan memuatkan fail CSV ke dalam DataFrames, menapis baris, memilih lajur, mengendalikan nilai yang hilang, dan mengira statistik ringkasan. Anda berlatih Machine Learning 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 Machine Learning Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Machine Learning 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 3 daripada 4.
Berapa lamakah pelajaran “Pandas untuk Manipulasi Data” 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 Machine Learning Academy ini?
Ya. Setiap pelajaran Machine Learning 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
- Memasang Anaconda dan Jupyter Notebook
- Asas NumPy: Tatasusunan dan Operasi Matematik
- Pandas untuk Manipulasi Data
- Memvisualisasikan Data dengan Matplotlib dan Seaborn