Artikel ini diterbitkan sebagai bagian dari Blogathon Ilmu Data
Pengantar
Nah, ada kemungkinan bagus Anda bisa!
Untuk ilmuwan data yang menggunakan Python sebagai bahasa pemrograman utama mereka, paket Pandas adalah alat analisis data yang harus dimiliki. Paket Pandas memiliki semua yang dibutuhkan ilmuwan data, dan setiap kursus mengajari kami cara menggunakannya pada awalnya. Ini sangat besar, kuat, dan melakukan hampir semua manipulasi tabel yang dapat Anda bayangkan. Namun, luasnya ini kadang-kadang bisa menjadi kerugian.
Ini memiliki banyak fitur indah yang memecahkan kasus tepi yang langka, skenario yang berbeda.
Salah satu kelemahan utama panda adalah ia berjuang dengan kumpulan data besar karena panda menyimpan struktur datanya dalam RAM, yang dapat menjadi tidak mencukupi seiring bertambahnya ukuran data. Gunakan PySpark atau Dask untuk ini.
Meskipun paket Pandas sudah banyak digunakan, masih banyak fungsi yang mungkin diabaikan orang, entah karena jarang digunakan atau karena tidak mengetahui keberadaannya. Posting ini bermaksud untuk memperkenalkan kembali Anda pada fitur-fitur tersebut dan menunjukkan bahwa Pandas jauh lebih kompeten daripada yang Anda sadari sebelumnya.
Pipe
Untuk melakukan pembersihan data secara ringkas dan ringkas di panda, seseorang dapat menggunakan fungsi Pipe, yang memungkinkan Anda untuk menggabungkan beberapa fungsi dalam satu operasi.
Misalnya, jika Anda ingin menerapkan fungsi seperti drop_duplicates, encode_categoricals, remove_outliers yang menerima argumennya.
df_cleaned = (diamonds.pipe(drop_duplicates). pipe(remove_outliers, ['price', 'carat', 'depth']). pipe(encode_categoricals, ['cut', 'color', 'clarity']) )
Menguraikan pd pengali
Fungsi ini merupakan alternatif untuk Sklearns Label Encoder.
# Perhatikan [0] di akhir diamonds["cut_enc"] = pd.factorize(diamonds["cut"])[0] >>> diamonds["cut_enc"].sample(5) 52103 2 39813 0 31843 0 10675 0 6634 0 Nama: cut_enc, dtype: int64
Faktorkan hasil sebuah tupel nilai: nilai yang disandikan dan daftar kategori unik.
nilai, unik = pd.factorize(berlian["cut"], sort=True) >>> nilai[:10] array([0, 1, 3, 1, 3, 2, 2, 2, 4, 2] , dtype=int64) >>> unik ['Ideal', 'Premium', 'Sangat Bagus', 'Bagus', 'Sedang']
meledak
Foto oleh Edewaa Asuh on Unsplash
Explode adalah fungsi dengan nama yang menarik. Mari kita mulai dengan sebuah contoh dan kemudian penjelasan:
df = pd.Seri([1, 6, 7, [46, 56, 49], 45, [15, 10, 12]]).to_frame("kotor") >>> df
Kolom fitur memiliki dua baris yang dilambangkan dengan daftar. Jenis data ini tersedia dalam survei di mana beberapa pertanyaan menerima pilihan ganda.
>>> df.explode("kotor", abaikan_index=Benar)
Fungsi ini mengambil sel dengan array nilai dan meledak dalam beberapa baris. Untuk mempertahankan urutan indeks numerik, gunakan abaikan_index sebagai True.
Antara
Untuk fitur numerik pengindeksan boolean dalam suatu rentang, inilah fungsi praktisnya:
# Dapatkan berlian dengan harga antara 3500 dan 3700 dolar berlian[diamonds["price"].between(3500, 3700, inklusif="tidak ada")].sample(5)
T
DataFrame memiliki atribut T sederhana, yang dikenal sebagai transpose. Kami mungkin tidak sering menggunakannya, metode deskripsi sangat membantu saat melihat kerangka data.
>>> boston.describe().T.head(10)
Pilihan Panda
Seseorang dapat menggunakan pengaturan global panda yang membantu mengubah dan mengubah perilaku default.
>>> dir(pd.options) ['compute', 'display', 'io', 'mode', 'plotting']
Terdiri dari 5 modul. Mari kita lihat opsi yang tersedia di bawah layar. Ada banyak opsi yang tersedia, tetapi saya kebanyakan menggunakan max_columns.
>>> dir(pd.options.display) ['chop_threshold', 'max_columns', 'max_colwidth', 'max_info_columns', 'max_info_rows', 'max_rows', ... 'precision', 'show_dimensions', 'unicode' , 'lebar']
Kebanyakan orang menggunakan max_columns dan presisi
# Hapus batas untuk menampilkan jumlah cols pd.options.display.max_columns = None # Hanya tampilkan 5 angka setelah desimal pd.options.display.precision = 5 # menghilangkan notasi ilmiah
Konversi_dtypes
Kita semua sadar bahwa panda memiliki kebiasaan mengganggu untuk menandai beberapa kolom sebagai tipe data objek. Daripada mendefinisikan tipenya secara langsung, Anda dapat menggunakan metode convert dtypes, yang mencoba menyimpulkan tipe data terbaik:
sample = pd.read_csv("data/station_day.csv",usecols=["StationId", "CO", "O3", "AQI_Bucket"]) >>> sample.dtypes StationId objek CO float64 O3 float64 AQI_Bucket objek dtype: objek >>> sample.convert_dtypes().dtypes StationId string CO float64 O3 float64 AQI_Bucket string dtype: object
Pilih_dtypes
Dari namanya, saya yakin sudah jelas apa fungsinya. Anda dapat menggunakan opsi sertakan dan kecualikan untuk menentukan kolom yang menyertakan atau menghilangkan tipe data tertentu.
Pilih hanya kolom numerik dengan np.number, misalnya:
# Pilih hanya kolom numerik diamonds.select_dtypes(include=np.number).head()
Masker
Fungsi ini membantu mengganti nilai di mana kondisi kustom tidak terpenuhi.
# Buat sampel data umur = pd.Series([55, 52, 50, 66, 57, 59, 49, 60]).to_frame("ages") umur
Setelah melakukan operasi di atas.
Min dan Max
Meskipun min dan max sudah dikenal, ia memiliki beberapa properti yang lebih baik untuk beberapa kasus tepi.
index = ["Berlian", "Titanic", "Iris", "Penyakit Jantung", "Default Pinjaman"] perpustakaan = ["XGBoost", "CatBoost", "LightGBM", "Sklearn GB"] df = pd.DataFrame ( {lib: np.random.uniform(90, 100, 5) untuk lib di perpustakaan}, index=index ) >>> df
DataFrame fiktif di atas menunjukkan hasil dari empat pustaka penambah gradien yang berbeda pada lima kumpulan data. Kami sedang mencari paket yang melakukan yang terbaik pada setiap kumpulan data. Inilah cara mencapainya dengan max dengan cara yang berkelas:
>>> df.max(axis=1) Berlian 99.52684 Titanic 99.63650 Iris 99.10989 Penyakit Jantung 99.31627 Default Pinjaman 97.96728 dtype: float64
Terbesar dan Terkecil
Nlargest dan nsmallest berguna untuk melihat nilai N teratas atau ~(N teratas) dari suatu variabel.
diamonds.nlargest(5, "harga")
berlian.nsmallest(5, "harga")
Idxmax dan Idxmin
Panda mengembalikan nomor terbesar/terkecil saat Anda memanggil maks atau min pada kolom. Namun, ada situasi ketika Anda membutuhkan posisi min/max, yang tidak disediakan oleh fungsi ini.
Sebagai gantinya, Anda dapat menggunakan idxmax/idxmin:
>>> diamonds.price.idxmax() 27749 >>> diamonds.carat.idxmin() 14
Nilai_Jumlah
Cara umum untuk menemukan persentase nilai yang hilang adalah dengan menggabungkan isnull dan sum dan membaginya dengan ukuran array.
Tapi, value_counts dengan argumen yang relevan melakukan hal yang sama:
housing = pd.read_csv("train.csv") >>> housing["FireplaceQu"].value_counts(dropna=False, normalize=True) NaN 0.47260 Gd 0.26027 TA 0.21438 Fa 0.02260 Ex 0.01644 Po 0.01370 Nama: FireplaceQu, dtype: float64
Klip
Fungsi klip membantu menemukan outlier di luar jangkauan dan menggantinya dengan batas keras.
>>> age.clip(50, 60)
Pada_waktu dan Antara_waktu
Fungsi-fungsi ini sangat membantu saat bekerja dengan deret waktu dengan granularitas tinggi.
at_time membantu mendapatkan nilai pada tanggal atau waktu tertentu.
indeks = pd.date_range("2021-08-01", periode=100, freq="H") df = pd.DataFrame({"col": list(range(100))}, index=index) >> > df.head()
>>> df.at_time(โ15:00โ)
antara_waktu digunakan untuk mengambil baris dalam rentang khusus.
dari datetime import datetime >>> df.between_time("09:45", "12:00")
Tanggal_rentang
Fungsi ini membantu membuat indeks deret waktu dengan frekuensi hari kerja. Dunia keuangan memiliki jenis frekuensi ini. Jadi, fungsi ini mungkin berguna pada saat mengindeks ulang deret waktu dengan fungsi indeks ulang.
seri = pd.bdate_range("2021-01-01", "2021-01-31") # Jangka waktu satu bulan >>> len(seri) 21
Di dan Ia
Kedua pengakses ini secara substansial lebih cepat daripada loc dan iloc. Namun, mereka memiliki kelemahan. Mereka hanya memungkinkan Anda untuk memilih atau mengganti satu nilai pada satu waktu:
# [indeks, label] >>> diamonds.at[234, "cut"] 'Ideal' # [indeks, indeks] >>> diamonds.iat[1564, 4] 61.2 # Ganti 16541 baris kolom harga >> > diamonds.at[16541, "harga"] = 10000
Argsort
Fungsi ini membantu mengekstrak indeks yang akan mengurutkan larik fitur.
tips.reset_index(inplace=True, drop=True) sort_idx = tips["total_bill"].argsort(kind="mergesort") # Sekarang, urutkan `tips` berdasarkan total_bill tips.iloc[sort_idx].head()
Aksesor Kucing
Panda memungkinkan fungsi python bawaan pada tanggal dan string menggunakan pengakses seperti str atau dt.
>>> diamonds.dtypes carat float64 cut kategori kategori warna kategori kejelasan kedalaman tabel float64 harga float64 int64 x float64 y float64 z float64 cut_enc int64 dtype: object
Seseorang dapat menggunakan banyak fungsi khusus menggunakan pengakses cat pada kolom kategorikal. Ini memiliki fungsi seperti kategori untuk menemukan yang unik, rename_categories untuk mengganti nama fitur.
diamonds["new_cuts"] = diamonds["cut"].cat.rename_categories(list("ABCDE")) >>> diamonds["new_cuts"].cat.categories Index(['A', 'B', ' C', 'D', 'E'], dtype='objek')
Lihat ini untuk daftar fungsi lainnya di bawah aksesoris kucing.
Meremas
Squeeze adalah fungsi yang digunakan dalam situasi tepi yang jarang namun memperparah.
Ketika satu nilai dikembalikan dari kondisi yang digunakan untuk mensubset DataFrame, ini adalah salah satu dari kasus ini. Pertimbangkan skenario berikut:
subset = diamonds.loc[diamonds.index >> subset
Bahkan jika hanya ada satu sel, kembalikan DataFrame. Ini merepotkan karena Anda sekarang harus menggunakan.loc dengan nama kolom dan indeks untuk mendapatkan harganya.
Anda tidak perlu melakukannya jika Anda tahu cara memeras. Sumbu dapat dihapus dari DataFrame atau Seri sel tunggal menggunakan fungsi ini. Pertimbangkan skenario berikut:
>>> subset.squeeze() 326
Dimungkinkan untuk menentukan sumbu yang akan dihapus. Itu hanya mengembalikan skalar sekarang.
>>> subset.squeeze("columns") # atau "rows" 0 326 Nama: harga, dtype: int64
Perhatikan bahwa fungsi ini hanya berfungsi untuk Seri atau DataFrame dengan nilai tunggal.
Excel_penulis
Ini adalah kelas umum untuk membuat file excel dan menulis DataFrame di dalamnya. Pertimbangkan, kami memiliki dua set data ini.
# Muat dua kumpulan data diamonds = sns.load_dataset("diamonds") tips = sns.load_dataset("tips") # Tulis ke file excel yang sama dengan pd.ExcelWriter("data/data.xlsx") sebagai penulis: diamonds.to_excel (penulis, sheet_name="berlian") tips.to_excel(penulis, sheet_name="tips")
Ini memiliki properti untuk menentukan format DateTime yang akan digunakan, apakah Anda memerlukan file baru atau memodifikasi yang sudah ada, apa yang terjadi jika ada lembar. Periksa ini dokumentasi lebih lanjut.
Kesimpulan
Ini bukan ikhtisar lengkap tentang panda, dan dokumentasi berisi informasi lebih lanjut tentang kode dan fitur. Saya menyarankan Anda bereksperimen dengan berbagai variasi cuplikan kode yang disediakan di sini, serta berbagai parameter. Seseorang dapat sepenuhnya memahami kekuatan panda dengan melakukan ini.
Pustaka seperti Dask dan datatable secara bertahap menggantikan Pandas dengan fitur barunya yang mencolok untuk menangani kumpulan data besar, Pandas tetap menjadi alat manipulasi data yang paling banyak digunakan dalam komunitas ilmu data Python. Karena seberapa cocoknya dengan tumpukan SciPy saat ini, perpustakaan berfungsi sebagai paradigma untuk diikuti dan dibangun oleh paket lain.
Saya harap Anda telah menemukan posting ini berwawasan dan terima kasih telah membaca.
Media yang ditampilkan dalam artikel ini tidak dimiliki oleh Analytics Vidhya dan digunakan atas kebijaksanaan Penulis.
terkait
- "
- 100
- 7
- Semua
- analisis
- analisis
- argumen
- artikel
- TERBAIK
- meningkatkan
- boston
- membangun
- panggilan
- kasus
- perubahan
- Pembersihan
- kode
- Kolom
- Umum
- masyarakat
- menghitung
- membuat
- data
- analisis data
- ilmu data
- ilmuwan data
- Tanggal
- MELAKUKAN
- Penyakit
- dolar
- Tepi
- Excel
- eksperimen
- adil
- Fitur
- Fitur
- keuangan
- Pertama
- mengikuti
- format
- fungsi
- Aksi
- baik
- Tumbuh
- Penanganan
- berguna
- di sini
- High
- Seterpercayaapakah Olymp Trade? Kesimpulan
- How To
- HTTPS
- indeks
- informasi
- IT
- kunci
- bahasa
- besar
- pengetahuan
- Perpustakaan
- Daftar
- daftar
- memuat
- pinjaman
- Mesin belajar
- manipulasi
- masker
- Media
- Fitur Baru
- nomor
- Opsi
- Lainnya
- pola pikir
- Konsultan Ahli
- pipa
- kekuasaan
- Ketelitian
- Premium
- menyajikan
- harga pompa cor beton mini
- Pemrograman
- Ular sanca
- RAM
- jarak
- Bacaan
- Hasil
- Ilmu
- ilmuwan
- Seri
- Sederhana
- Ukuran
- So
- MEMECAHKAN
- awal
- toko
- waktu
- Tips
- puncak
- unicode
- us
- nilai
- View
- SIAPA
- dalam
- bekerja
- dunia
- penulis
- penulisan
- X