Bagaimana Anda menghapus baris dengan teks tertentu dengan python?

Di awal setiap analisis, data perlu dibersihkan, diatur, dan dibuat rapi. Untuk setiap DataFrame Python Pandas, hampir selalu ada kebutuhan untuk menghapus baris dan kolom untuk mendapatkan pilihan data yang tepat untuk analisis atau visualisasi spesifik Anda. Fungsi Pandas Drop adalah kunci untuk menghapus baris dan kolom

Daftar isi

Cheatsheet Panda Jatuhkan

Menghapus kolom dan baris dari DataFrame Anda tidak selalu seintuitif mungkin. Ini semua tentang perintah "DataFrame drop". Fungsi drop memungkinkan penghapusan baris dan kolom dari DataFrame Anda, dan setelah Anda menggunakannya beberapa kali, Anda tidak akan mengalami masalah.

Bagaimana Anda menghapus baris dengan teks tertentu dengan python?
Fungsi "drop" Pandas digunakan untuk menghapus kolom atau baris dari Pandas DataFrame

Contoh Bingkai Data

Untuk postingan ini, kami menggunakan data dari pelacak COVID WHO, yang diunduh pada 1 Januari 2020 (data di sini). Jika Anda ingin bekerja dengan data terkini, harap ubah URL sumber untuk fungsi read_csv di skrip pemuatan menjadi yang ini

import pandas as pd

# Read a sample dataset (COVID data as at 1st Jan 2020)
data = pd.read_csv(
    "https://shanebucket.s3-eu-west-1.amazonaws.com/downloads/who-covid-2020-01-01.csv.zip"
)
# If you'd like to get up-to-date data, use URL: https://covid19.who.int/WHO-COVID-19-global-table-data.csv
# Rename the columns into something a little easier to work with.
data.columns = [
    "name", 
    "region", 
    "cases", 
    "cases_per_million", 
    "cases_7_days", 
    "cases_24_hours", 
    "deaths", 
    "deaths_per_million", 
    "deaths_7_days", 
    "deaths_24_hours", 
    "transmission_type"
]
data.head()

Bagaimana Anda menghapus baris dengan teks tertentu dengan python?
Contoh Pandas DataFrame data COVID diunduh dari WHO per 1 Januari 2020

Hapus atau Jatuhkan Kolom DataFrame dengan Pandas Drop

Hapus kolom berdasarkan nama

Menghapus kolom dengan nama dari DataFrames mudah dilakukan dengan menggunakan perintah drop. Ada dua bentuk sintaks fungsi drop yang harus Anda ketahui, tetapi keduanya mencapai hasil yang sama

Hapus kolom dengan drop panda dan sumbu = 1

Cara default untuk menggunakan "jatuhkan" untuk menghapus kolom adalah dengan memberikan nama kolom yang akan dihapus bersama dengan menentukan parameter "sumbu" menjadi 1

# Delete a single column from the DataFrame
data = data.drop(labels="deathes", axis=1)

# Delete multiple columns from the DataFrame
# Here - we provide a list to the drop() function
data = data.drop(labels=["deaths", "deaths_per_million"], axis=1)

# Note that the "labels" parameter is by default the first, so 
# the above lines can be written slightly more concisely:
data = data.drop("deaths", axis=1)
data = data.drop(["deaths", "deaths_per_million"], axis=1)
_

Hapus kolom dengan parameter pandas drop "columns".

Kemungkinan cara yang lebih intuitif untuk menghapus kolom dari DataFrames adalah dengan menggunakan fungsi "jatuhkan" normal dengan parameter "kolom" yang menentukan satu nama kolom atau daftar kolom

# Delete a single named column from the DataFrame
data = data.drop(columns="cases")

# Delete multiple named columns from the DataFrame
data = data.drop(columns=["cases", "cases_per_million"])

Hapus kolom berdasarkan nomor kolom atau indeks

Fungsi drop dapat digunakan untuk menghapus kolom berdasarkan nomor atau posisi dengan mengambil nama kolom terlebih dahulu. menjatuhkan. Untuk mendapatkan nama kolom, berikan indeks kolom ke objek

# Delete a single column from the DataFrame
data = data.drop(labels="deathes", axis=1)

# Delete multiple columns from the DataFrame
# Here - we provide a list to the drop() function
data = data.drop(labels=["deaths", "deaths_per_million"], axis=1)

# Note that the "labels" parameter is by default the first, so 
# the above lines can be written slightly more concisely:
data = data.drop("deaths", axis=1)
data = data.drop(["deaths", "deaths_per_million"], axis=1)
3 yang merupakan daftar semua nama kolom. Nama tersebut kemudian diteruskan ke fungsi drop seperti di atas

# Delete a column by column number
# Delete column number 4 (index number 3 in data.columns)
data = data.drop(columns=data.columns[3])
_

PERINGATAN. Metode ini dapat menyebabkan banyak kolom dihapus jika nama kolom diulang (mis. e. Anda memiliki dua kolom dengan nama yang sama dengan yang ada di indeks 3)

Saat Anda mengulangi nama kolom, metode aman untuk menghapus kolom adalah dengan menggunakan metodologi pemilihan iloc pada DataFrame. Dalam hal ini, Anda mencoba untuk "memilih semua baris dan semua kolom kecuali nomor kolom yang ingin Anda hapus"

Untuk menghapus kolom menggunakan iloc, Anda perlu membuat daftar indeks kolom yang ingin Anda pertahankan. e. daftar semua nomor kolom, dikurangi yang dihapus

Untuk membuat daftar ini, kita dapat menggunakan pemahaman daftar Python yang mengulangi semua kemungkinan nomor kolom (

# Delete a single column from the DataFrame
data = data.drop(labels="deathes", axis=1)

# Delete multiple columns from the DataFrame
# Here - we provide a list to the drop() function
data = data.drop(labels=["deaths", "deaths_per_million"], axis=1)

# Note that the "labels" parameter is by default the first, so 
# the above lines can be written slightly more concisely:
data = data.drop("deaths", axis=1)
data = data.drop(["deaths", "deaths_per_million"], axis=1)
4) dan kemudian menggunakan filter untuk mengecualikan indeks kolom yang dihapus (
# Delete a single column from the DataFrame
data = data.drop(labels="deathes", axis=1)

# Delete multiple columns from the DataFrame
# Here - we provide a list to the drop() function
data = data.drop(labels=["deaths", "deaths_per_million"], axis=1)

# Note that the "labels" parameter is by default the first, so 
# the above lines can be written slightly more concisely:
data = data.drop("deaths", axis=1)
data = data.drop(["deaths", "deaths_per_million"], axis=1)
5). Penghapusan terakhir kemudian menggunakan pilihan iloc untuk memilih semua baris, tetapi hanya kolom yang akan dipertahankan (
# Delete a single column from the DataFrame
data = data.drop(labels="deathes", axis=1)

# Delete multiple columns from the DataFrame
# Here - we provide a list to the drop() function
data = data.drop(labels=["deaths", "deaths_per_million"], axis=1)

# Note that the "labels" parameter is by default the first, so 
# the above lines can be written slightly more concisely:
data = data.drop("deaths", axis=1)
data = data.drop(["deaths", "deaths_per_million"], axis=1)
6)

# Delete column numbers 1, 2 and 5 from the DataFrame
# Create a list of all column numbers to keep
columns_to_keep = [x for x in range(data.shape[1]) if x not in [1,2,5]]
# Delete columns by column number using iloc selection
data = data.iloc[:, columns_to_keep]
data.shape
--> (238, 8)
_

Hapus Baris DataFrame dengan Pandas Drop

Ada tiga cara berbeda untuk menghapus baris dari Pandas Dataframe. Setiap metode berguna tergantung pada jumlah baris yang Anda hapus, dan bagaimana Anda mengidentifikasi baris yang perlu dihapus

Menghapus baris menggunakan "jatuhkan" (terbaik untuk sejumlah kecil baris)

Hapus baris berdasarkan nilai indeks

Untuk menghapus baris dari DataFrame, fungsi drop mereferensikan baris berdasarkan "nilai indeks" mereka. Biasanya, ini adalah nilai bilangan bulat per baris, yang bertambah dari nol saat Anda pertama kali memuat data ke Panda. Anda dapat melihat indeks saat menjalankan “data. head()” di sisi kiri tampilan tabular. Anda dapat mengakses objek indeks secara langsung menggunakan “data. index” dan nilai melalui “data. indeks. nilai”

Bagaimana Anda menghapus baris dengan teks tertentu dengan python?
Indeks DataFrame ditampilkan di sisi kiri DataFrame saat dipratinjau. Dalam contoh ini, indeks bilangan bulat sederhana sedang digunakan, yang merupakan default setelah memuat data dari file CSV atau Excel ke dalam Pandas DataFrame

Untuk menghapus baris tertentu dari bingkai data – tentukan nilai indeksnya ke fungsi Pandas drop

# delete a single row by index value 0
data = data.drop(labels=0, axis=0)

# delete a few specified rows at index values 0, 15, 20.
# Note that the index values do not always align to row numbers.
data = data.drop(labels=[1,15,20], axis=0)

# delete a range of rows - index values 10-20
data = data.drop(labels=range(40, 45), axis=0)

# The labels parameter name can be omitted, and axis is 0 by default
# Shorter versions of the above:
data = data.drop(0)
data = data.drop([0, 15, 20])
data = data.drop(range(10,20))
_

Ini dapat berguna untuk pemilihan dan agregasi untuk memiliki indeks yang lebih bermakna. Untuk data sampel kami, kolom "nama" juga akan menjadi indeks yang baik, dan mempermudah pemilihan baris negara untuk dihapus dari data

# Set the index of the DataFrame to the country name
data_with_index = data.set_index("name")
data_with_index.head()
Bagaimana Anda menghapus baris dengan teks tertentu dengan python?
Indeks, secara default, menambah bilangan bulat saat data pertama kali dimuat. Jika data Anda menyertakan kolom pengenal untuk setiap baris, gunakan Pandas DataFrame. fungsi set_index() memungkinkan Anda menggunakan kolom itu sebagai indeks untuk pemilihan baris dan perencanaan yang mudah.
# With the index, we can drop the rows for a single country with its name
data_with_index = data_with_index.drop("Ireland")

# Drop rows for multiple countries:
data_with_index = data_with_index.drop(["France", "Canada", "Spain"])
_

Hapus baris berdasarkan nomor baris

Terkadang, indeks DataFrame mungkin tidak dalam urutan menaik. Untuk menghapus baris berdasarkan posisinya di DataFrame, i. e. "hapus baris kedua", kami masih menggunakan indeks DataFrame, tetapi pilih baris dari indeks secara langsung saat kami menghapus. Kami juga dapat menggunakan pilihan indeks ini untuk menghapus beberapa baris, atau mengindeks dari bagian bawah DataFrame menggunakan angka negatif. Sebagai contoh

# Delete the 2nd row in the DataFrame (note indices starting from 0)
data = data.drop(data.index[1])

# Delete some chosen rows by row numbers - 2nd, 10th, 30th:
data = data.drop(data.index[[1, 9, 29]])

# Delete the first 5 rows
data = data.drop(data.index[range(5)])

# Delete the last row in the DataFrame
data = data.drop(data.index[-1])

Menghapus baris berdasarkan nilai kolom menggunakan pilihan (iloc/loc)

Persyaratan paling umum kedua untuk menghapus baris dari DataFrame adalah menghapus baris dalam grup, ditentukan oleh nilai pada berbagai kolom. Cara terbaik untuk mencapainya adalah dengan benar-benar “memilih” data yang ingin Anda simpan. Metode "jatuhkan" tidak berguna di sini, dan sebagai gantinya, kami memilih data menggunakan pengindeks "loc" dan menentukan nilai yang diinginkan di kolom yang kami gunakan untuk memilih

Ada posting blog lengkap di Pandas DataFrame iloc dan pemilihan loc di blog ini, tetapi contoh dasarnya ada di sini

# Check the initial shape of the DataFrame
data.shape
--> (238, 11)
# Delete rows where case numbers are zero
# This deletion is completed by "selecting" rows where case numbers are non zero
data = data.loc[data["cases"] != 0]
data.shape
--> (223, 11)
# Delete rows where there have been no cases in 24 hours AND no cases in 7 days
# Note that you must put each condition within parenthesis
data = data.loc[(data["deaths_7_days"] > 0) & (data["deaths_24_hours"] > 0)]
data.shape
--> (114, 11)

Catatan – jika Anda mendapatkan kesalahan Pandas.

# Delete a single column from the DataFrame
data = data.drop(labels="deathes", axis=1)

# Delete multiple columns from the DataFrame
# Here - we provide a list to the drop() function
data = data.drop(labels=["deaths", "deaths_per_million"], axis=1)

# Note that the "labels" parameter is by default the first, so 
# the above lines can be written slightly more concisely:
data = data.drop("deaths", axis=1)
data = data.drop(["deaths", "deaths_per_million"], axis=1)
_7, maka kemungkinan besar Anda telah meninggalkan tanda kurung “( )” di sekitar setiap kondisi pemilihan lokasi Anda

Menghapus baris dengan memotong DataFrame

Satu cara terakhir untuk menghapus baris dari DataFrame adalah dengan menggunakan notasi "slice" Python. Notasi irisan dirangkum dengan baik dalam posting StackOverflow ini

# Delete a single column from the DataFrame
data = data.drop(labels="deathes", axis=1)

# Delete multiple columns from the DataFrame
# Here - we provide a list to the drop() function
data = data.drop(labels=["deaths", "deaths_per_million"], axis=1)

# Note that the "labels" parameter is by default the first, so 
# the above lines can be written slightly more concisely:
data = data.drop("deaths", axis=1)
data = data.drop(["deaths", "deaths_per_million"], axis=1)
_0

Notasi irisan memudahkan untuk menghapus banyak baris dari DataFrame, sambil tetap mempertahankan "irisan" yang dipilih. Sebagai contoh

# Delete a single column from the DataFrame
data = data.drop(labels="deathes", axis=1)

# Delete multiple columns from the DataFrame
# Here - we provide a list to the drop() function
data = data.drop(labels=["deaths", "deaths_per_million"], axis=1)

# Note that the "labels" parameter is by default the first, so 
# the above lines can be written slightly more concisely:
data = data.drop("deaths", axis=1)
data = data.drop(["deaths", "deaths_per_million"], axis=1)
_1

Menjatuhkan "inplace" atau mengembalikan DataFrame baru

Fungsi jatuhkan dapat digunakan untuk secara langsung mengubah Pandas DataFrame yang sedang Anda kerjakan, atau, alternatifnya, mengembalikan hasilnya setelah kolom atau baris dijatuhkan. Perilaku ini dikontrol dengan parameter "inplace". Menggunakan inplace=True dapat mengurangi jumlah perintah penugasan ulang yang Anda perlukan dalam aplikasi atau skrip Anda. Perhatikan bahwa jika inplace disetel ke True, tidak ada nilai kembalian dari fungsi drop

# Delete a single column from the DataFrame
data = data.drop(labels="deathes", axis=1)

# Delete multiple columns from the DataFrame
# Here - we provide a list to the drop() function
data = data.drop(labels=["deaths", "deaths_per_million"], axis=1)

# Note that the "labels" parameter is by default the first, so 
# the above lines can be written slightly more concisely:
data = data.drop("deaths", axis=1)
data = data.drop(["deaths", "deaths_per_million"], axis=1)
_2

Bacaan Lebih Lanjut dan Tautan

Karena menghapus kolom dan baris adalah salah satu operasi utama untuk DataFrames, ada banyak sekali konten luar biasa di luar sana pada fungsi drop, yang seharusnya menjelaskan persyaratan tidak biasa yang mungkin Anda miliki. Saya akan tertarik pada elemen apa pun untuk menghapus baris atau kolom yang tidak tercakup dalam tutorial di atas – beri tahu saya di komentar

Bagaimana cara menjatuhkan baris di panda dengan nilai tertentu?

Kita dapat menggunakan fungsi nama_kolom bersama dengan operator untuk membuang nilai tertentu.

Bagaimana cara menghapus baris dengan Python?

Untuk menghapus baris dari DataFrame, gunakan metode drop() dan atur label indeks sebagai parameter .

Bagaimana Anda memilih baris dengan nilai tertentu di Python?

Pilih baris berdasarkan nilai kolom. .
#Untuk memilih baris yang nilai kolomnya sama dengan skalar, some_value, gunakan ==. df. loc[df['favorite_color'] == 'kuning']
#Untuk memilih baris yang nilai kolomnya ada dalam array yang dapat diubah, yang akan kami definisikan sebagai array, Anda dapat menggunakan isin. array = ['kuning', 'hijau']df. loc[df['favorite_color']. isin(array)]

Bagaimana Anda menghapus baris dari DataFrame dengan Python berdasarkan nilai kolom?

Buat data tabular dua dimensi, ukuran dapat berubah, berpotensi heterogen, df
Cetak input DataFrame
Di sini, kami akan menghapus baris dari DataFrame yang berisi 0 di kolom Z-nya, menggunakan df=df[df. z. = 0]
Cetak DataFrame yang diperbarui, setelah menghapus baris berdasarkan nilai kolom