Python Tutorial Pandas: DataFrame, Rentang Tanggal & Penggunaannya
โก Ringkasan Cerdas
Pandas adalah perangkat lunak sumber terbuka. Python Pustaka untuk memanipulasi data tabular. Pustaka ini menyediakan struktur Series dan DataFrame, rentang tanggal, alat bantu inspeksi, serta operasi slice, drop, concatenate, sort, dan rename yang ditunjukkan sepanjang panduan ini.
Apa itu Panda? Python?
Panda adalah pustaka sumber terbuka yang memungkinkan Anda melakukan manipulasi dan analisis data di Python, mencakup tabel numerik dan deret waktu. Ini menyediakan cara mudah untuk membuat, memanipulasi, dan mengolah data, dan dibangun di atas JumlahPyOleh karena itu, NumPy harus ada agar Pandas dapat beroperasi.
Mengapa menggunakan Panda?
Ilmuwan data memanfaatkan Pandas di Python untuk keuntungan berikut:
- Menangani data yang hilang dengan mudah
- Metode ini menggunakan Series untuk data satu dimensi dan DataFrame untuk data multidimensi.
- Ini memberikan cara yang efisien untuk membagi data
- Ini memberikan cara yang fleksibel untuk menggabungkan, menggabungkan, atau membentuk ulang data
- Ini mencakup perangkat analisis deret waktu yang canggih.
Singkatnya, Pandas menyediakan struktur data yang ampuh dan mudah digunakan, serta cara untuk mengoperasikannya dengan cepat, itulah sebabnya Pandas menjadi andalan sebagian besar pengembang. Python analisis data kerja.
Cara Menginstal Pandas
Pandas disertakan dengan Anaconda dan sebagian besar layanan notebook terkelola, jadi biasanya sudah terinstal. Jika impor gagal, salah satu perintah di bawah ini akan menambahkannya. Lingkungan yang dibangun di Cara memasang TensorFlow juga mengandung Panda.
- pip:
pip install pandas - Anakonda:
conda install -c anaconda pandas - Di dalam a Jupyter buku catatan sel:
import sys !conda install --yes --prefix {sys.prefix} pandas
Apa itu Bingkai Data Pandas?
Pandas DataFrame adalah struktur data berlabel dua dimensi yang kolomnya dapat menyimpan berbagai tipe data. Ini adalah cara standar untuk menyimpan data dalam format tabel: baris menyimpan observasi dan kolom memberi nama informasi. Misalnya, harga pompa cor beton mini bisa berupa nama kolom dan 2, 3, 4 bisa berupa nilai harga.
Data frame sudah dikenal luas oleh para ahli statistik dan praktisi data lainnya. Gambar di bawah menunjukkan bentuk tersebut โ indeks baris berlabel di sisi samping dan kolom bernama di bagian atas.
Apa itu Seri?
Series adalah struktur data satu dimensi. Ia dapat menyimpan tipe data apa pun, seperti bilangan bulat, bilangan pecahan, atau string, dan berguna ketika Anda ingin melakukan komputasi atau mengembalikan array satu dimensi. Secara definisi, Series tidak dapat memiliki banyak kolom; untuk kasus tersebut, gunakan struktur DataFrame.
Konstruktor Pandas Series menerima parameter-parameter berikut:
- Tanggal: dapat berupa daftar, kamus, atau nilai skalar.
pd.Series([1., 2., 3.])
0 1.0 1 2.0 2 3.0 dtype: float64
Anda dapat menambahkan indeks dengan indexIni memberi nama pada baris, dan panjangnya harus sama dengan ukuran kolom.
pd.Series([1., 2., 3.], index=['a', 'b', 'c'])
Di bawah ini Anda membuat Pandas Series dengan nilai yang hilang di baris ketiga. Nilai yang hilang di Python ditampilkan sebagai NaN, dan np.nan dari NumPy menciptakan satu secara artifisial.
pd.Series([1,2,np.nan])
Keluaran
0 1.0 1 2.0 2 NaN dtype: float64
Buat Bingkai Data Pandas
Anda dapat mengkonversi array NumPy menjadi DataFrame dengan pd.DataFrame()Sebaliknya juga dimungkinkan: untuk mengkonversi DataFrame kembali menjadi array, gunakan np.array(), atau df.to_numpy(), yang direkomendasikan oleh dokumentasi Pandas saat ini.
## Numpy to pandas import numpy as np h = [[1,2],[3,4]] df_h = pd.DataFrame(h) print('Data Frame:', df_h) ## Pandas to numpy df_h_n = np.array(df_h) print('Numpy array:', df_h_n) Data Frame: 0 1 0 1 2 1 3 4 Numpy array: [[1 2] [3 4]]
Kamus berfungsi sama baiknya sebagai input untuk pd.DataFrame().
dic = {'Name': ["John", "Smith"], 'Age': [30, 40]}
pd.DataFrame(data=dic)
| Usia | Nama | |
|---|---|---|
| 0 | 30 | John |
| 1 | 40 | Smith |
Data Rentang Panda
Pandas memiliki API yang mudah digunakan untuk membuat rentang tanggal, yang menjadi indeks dari deret waktu. Pemanggilan tersebut berbentuk seperti ini:
pd.date_range(start, periods, freq):
- Parameter pertama adalah tanggal mulai
- Parameter kedua adalah jumlah periode (opsional jika tanggal akhir ditentukan)
- Parameter terakhir adalah frekuensi: hari
D, bulanMdan tahunY
## Create date # Days dates_d = pd.date_range('20300101', periods=6, freq='D') print('Day:', dates_d)
Keluaran
Day: DatetimeIndex(['2030-01-01', '2030-01-02', '2030-01-03', '2030-01-04', '2030-01-05', '2030-01-06'], dtype='datetime64[ns]', freq='D')
# Months dates_m = pd.date_range('20300101', periods=6, freq='M') print('Month:', dates_m)
Keluaran
Month: DatetimeIndex(['2030-01-31', '2030-02-28', '2030-03-31', '2030-04-30','2030-05-31', '2030-06-30'], dtype='datetime64[ns]', freq='M')
Catatan versi: bulan alias M Kode yang digunakan di atas sudah usang sejak Pandas 2.2 dan dihapus di Pandas 3.0. Pada rilis terbaru, lewati freq='ME' untuk akhir bulan; indeks yang dihasilkan identik.
Memeriksa Data
Anda dapat memeriksa bagian awal atau akhir dari sebuah dataset dengan head() or tail() dipanggil pada DataFrame, seperti yang ditunjukkan oleh contoh Pandas di bawah ini.
Langkah 1) Buat urutan acak dengan NumPy. Urutan tersebut memiliki 4 kolom dan 6 baris.
random = np.random.randn(6,4)
Langkah 2) Kemudian Anda membuat DataFrame menggunakan Pandas.
penggunaan dates_m sebagai indeks, sehingga setiap baris diberi nama yang sesuai dengan tanggal, dan beri nama 4 kolom dengan columns argumen.
# Create data with date df = pd.DataFrame(random, index=dates_m, columns=list('ABCD'))
Karena np.random.randn() Jika dijalankan tanpa bibit, angka Anda akan berbeda dari yang tercetak di sini. Hubungi np.random.seed(0) Pertama, jika Anda ingin mereproduksi kumpulan data yang tetap.
Langkah 3) Menggunakan fungsi kepala
df.head(3)
| A | B | C | D | |
|---|---|---|---|---|
| 2030-01-31 | 1.139433 | 1.318510 | -0.181334 | 1.615822 |
| 2030-02-28 | -0.081995 | -0.063582 | 0.857751 | -0.527374 |
| 2030-03-31 | -0.519179 | 0.080984 | -1.454334 | 1.314947 |
Langkah 4) Menggunakan fungsi ekor
df.tail(3)
| A | B | C | D | |
|---|---|---|---|---|
| 2030-04-30 | -0.685448 | -0.011736 | 0.622172 | 0.104993 |
| 2030-05-31 | -0.935888 | -0.731787 | -0.558729 | 0.768774 |
| 2030-06-30 | 1.096981 | 0.949180 | -0.196901 | -0.471556 |
Langkah 5) Salah satu cara terbaik untuk mendapatkan petunjuk tentang data tersebut adalah... describe()Laporan ini menyajikan jumlah, rata-rata, standar deviasi, nilai minimum, nilai maksimum, dan persentil dari dataset.
df.describe()
| A | B | C | D | |
|---|---|---|---|---|
| menghitung | 6.000000 | 6.000000 | 6.000000 | 6.000000 |
| berarti | 0.002317 | 0.256928 | -0.151896 | 0.467601 |
| std | 0.908145 | 0.746939 | 0.834664 | 0.908910 |
| menit | -0.935888 | -0.731787 | -1.454334 | -0.527374 |
| 25% | -0.643880 | -0.050621 | -0.468272 | -0.327419 |
| 50% | -0.300587 | 0.034624 | -0.189118 | 0.436883 |
| 75% | 0.802237 | 0.732131 | 0.421296 | 1.178404 |
| max | 1.139433 | 1.318510 | 0.857751 | 1.615822 |
Irisan Data
Pengiris (slicing) mengambil sebagian baris atau kolom dari DataFrame. Anda dapat menggunakan nama kolom untuk mengekstrak data.tract satu kolom, seperti yang ditunjukkan contoh Pandas di bawah ini.
## Slice ### Using name df['A'] 2030-01-31 -0.168655 2030-02-28 0.689585 2030-03-31 0.767534 2030-04-30 0.557299 2030-05-31 -1.547836 2030-06-30 0.511551 Freq: M, Name: A, dtype: float64
Untuk memilih beberapa kolom, Anda memerlukan tanda kurung ganda. [[..,..]]Pasangan pertama berarti Anda ingin memilih kolom; pasangan kedua menyatakan kolom mana yang akan dikembalikan.
df[['A', 'B']]
| A | B | |
|---|---|---|
| 2030-01-31 | -0.168655 | 0.587590 |
| 2030-02-28 | 0.689585 | 0.998266 |
| 2030-03-31 | 0.767534 | -0.940617 |
| 2030-04-30 | 0.557299 | 0.507350 |
| 2030-05-31 | -1.547836 | 1.276558 |
| 2030-06-30 | 0.511551 | 1.572085 |
Anda dapat memotong baris dengan titik dua. Kode di bawah ini mengembalikan tiga baris pertama.
### using a slice for row
df[0:3]
| A | B | C | D | |
|---|---|---|---|---|
| 2030-01-31 | -0.168655 | 0.587590 | 0.572301 | -0.031827 |
| 2030-02-28 | 0.689585 | 0.998266 | 1.164690 | 0.475975 |
| 2030-03-31 | 0.767534 | -0.940617 | 0.227255 | -0.341532 |
The loc Accessor memilih kolom berdasarkan nama. Seperti biasa, nilai sebelum koma mewakili baris dan nilai setelahnya mewakili kolom, dan tanda kurung diperlukan untuk memilih lebih dari satu kolom.
## Multi col df.loc[:,['A','B']]
| A | B | |
|---|---|---|
| 2030-01-31 | -0.168655 | 0.587590 |
| 2030-02-28 | 0.689585 | 0.998266 |
| 2030-03-31 | 0.767534 | -0.940617 |
| 2030-04-30 | 0.557299 | 0.507350 |
| 2030-05-31 | -1.547836 | 1.276558 |
| 2030-06-30 | 0.511551 | 1.572085 |
Ada metode lain untuk memilih beberapa baris dan kolom. iloc[] menggunakan posisi bilangan bulat alih-alih nama kolom, sehingga kode di bawah ini mengembalikan DataFrame yang sama seperti di atas.
df.iloc[:, :2]
| A | B | |
|---|---|---|
| 2030-01-31 | -0.168655 | 0.587590 |
| 2030-02-28 | 0.689585 | 0.998266 |
| 2030-03-31 | 0.767534 | -0.940617 |
| 2030-04-30 | 0.557299 | 0.507350 |
| 2030-05-31 | -1.547836 | 1.276558 |
| 2030-06-30 | 0.511551 | 1.572085 |
Jatuhkan Kolom
Anda dapat menghapus kolom dengan df.drop(), menyampaikan nama-nama tersebut columns argumen.
df.drop(columns=['A', 'C'])
| B | D | |
|---|---|---|
| 2030-01-31 | 0.587590 | -0.031827 |
| 2030-02-28 | 0.998266 | 0.475975 |
| 2030-03-31 | -0.940617 | -0.341532 |
| 2030-04-30 | 0.507350 | -0.296035 |
| 2030-05-31 | 1.276558 | 0.523017 |
| 2030-06-30 | 1.572085 | -0.594772 |
Rangkaian
Anda dapat menggabungkan dua DataFrame dengan pd.concat()Pertama, buatlah kedua bingkai tersebut.
import numpy as np df1 = pd.DataFrame({'name': ['John', 'Smith','Paul'], 'Age': ['25', '30', '50']}, index=[0, 1, 2]) df2 = pd.DataFrame({'name': ['Adam', 'Smith' ], 'Age': ['26', '11']}, index=[3, 4])
Kemudian gabungkan semuanya.
df_concat = pd.concat([df1,df2]) df_concat
| Usia | nama | |
|---|---|---|
| 0 | 25 | John |
| 1 | 30 | Smith |
| 2 | 50 | paul |
| 3 | 26 | Adam |
| 4 | 11 | Smith |
Jatuhkan Duplikat
Ketika sebuah dataset berisi informasi duplikat, drop_duplicates() adalah cara mudah untuk mengecualikan baris yang berulang. df_concat berisi pengamatan duplikat: Smith muncul dua kali di name kolom.
df_concat.drop_duplicates('name')
| Usia | nama | |
|---|---|---|
| 0 | 25 | John |
| 1 | 30 | Smith |
| 2 | 50 | paul |
| 3 | 26 | Adam |
Urutkan Nilai
Anda dapat mengurutkan bingkai dengan sort_values(). Catat itu Age Dibuat sebagai teks di sini, jadi baris-barisnya diurutkan berdasarkan urutan string.
df_concat.sort_values('Age')
| Usia | nama | |
|---|---|---|
| 4 | 11 | Smith |
| 0 | 25 | John |
| 3 | 26 | Adam |
| 1 | 30 | Smith |
| 2 | 50 | paul |
Mengganti Nama Kolom
penggunaan rename() Untuk mengganti nama kolom di Pandas. Pada setiap pasangan, nilai pertama adalah nama kolom saat ini dan nilai kedua adalah nama kolom yang baru.
df_concat.rename(columns={"name": "Surname", "Age": "Age_ppl"})
| Usia_ppl | Nama keluarga | |
|---|---|---|
| 0 | 25 | John |
| 1 | 30 | Smith |
| 2 | 50 | paul |
| 3 | 26 | Adam |
| 4 | 11 | Smith |
Referensi Cepat Metode Pandas
Tabel ini memetakan setiap tugas umum ke metode Pandas yang menjalankannya.
| tugas | metode |
|---|---|
| mengimpor data | baca_csv |
| membuat seri | Seri |
| Buat Kerangka Data | Bingkai Data |
| Buat rentang tanggal | tanggal_rentang |
| kembali kepala | kepala |
| ekor kembali | ekor |
| Menggambarkan | menggambarkan |
| potong menggunakan nama | nama data['nama kolom'] |
| Iris menggunakan baris | nama_data[0:5] |

