Anda harus menentukan apakah kolom yang telah dtypemenjadi object, tetapi semua elemen menjadi numerik, dianggap sebagai numerik atau tidak. Jika tidak, ambillah jawaban Hanan, karena ini juga lebih cepat. Jika tidak, ambil punyaku.
FooBar
Apa yang terjadi jika Anda mencoba kolom df.describe (). Kemudian tetapkan ke variabel.
Coldy
Jawaban:
146
Anda bisa menggunakan select_dtypesmetode DataFrame. Ini mencakup dua parameter termasuk dan mengecualikan. Jadi isNumeric akan terlihat seperti:
Anda dapat menggunakan df.select_dtypes (include = [np.number]) jika Anda tidak perlu menentukan daftar 'numerik'
KieranPC
23
Membangun dari tip di komentar sebelumnya (+1), Anda bisa menggunakan list(df.select_dtypes(include=[np.number]).columns.values) untuk mendapatkan daftar nama kolom numerik
user799188
76
Anda bisa menggunakan fungsi tidak berdokumen _get_numeric_data()untuk memfilter kolom numerik saja:
df._get_numeric_data()
Contoh:
In[32]: data
Out[32]:
A B
01 s
12 s
23 s
34 s
In[33]: data._get_numeric_data()Out[33]:
A
01122334
Perhatikan bahwa ini adalah "metode pribadi" (yaitu, detail penerapan) dan dapat berubah atau dihapus total di masa mendatang. Gunakan dengan hati-hati .
Tidak, ini tidak didokumentasikan di mana pun. Implementasinya ada di sini , namun, seperti yang disebutkan @ijoseph, saya akan berhati-hati dalam menggunakan metode yang dimulai dengan garis bawah karena tidak lebih dari detail implementasi. Gunakan jawaban lain selain ini secara harfiah.
cs95
Persis. Sebagai praktik terbaik, saya mencoba menggunakan dan mengonversi ke metode numpy sebanyak mungkin. Ini karena dinamisme panda. API sering berubah. Untuk metode yang tidak terdokumentasi, itu hanya sembrono, tidak peduli seberapa berguna itu.
mik
69
Jawaban satu baris sederhana untuk membuat kerangka data baru dengan hanya kolom numerik:
Jika Anda hanya menginginkan satu jenis, Anda tidak perlu menyimpannya dalam daftar. Anda juga tidak perlu menentukan include=. select_dtypes(np.number)
BallpointBen
Jika kolom Anda memiliki data numerik tetapi juga memiliki None, dtype-nya bisa berupa 'object'. Ini akan memaksa kolom menjadi numerik:df.fillna(value=0, inplace=True)
berikut marketing_trainadalah kumpulan data saya dan select_dtypes()berfungsi untuk memilih tipe data menggunakan exclude dan include argumen dan kolom digunakan untuk mengambil nama kolom dari kumpulan data output dari kode di atas adalah sebagai berikut:
def is_type(df, baseType):import numpy as np
import pandas as pd
test =[issubclass(np.dtype(d).type, baseType)for d in df.dtypes]return pd.DataFrame(data = test, index = df.columns, columns =["test"])def is_float(df):import numpy as np
return is_type(df, np.float)def is_number(df):import numpy as np
return is_type(df, np.number)def is_integer(df):import numpy as np
return is_type(df, np.integer)
Di sini, np.applymap(np.isreal)memperlihatkan apakah setiap sel dalam bingkai data adalah numerik, dan .axis(all=0)memeriksa apakah semua nilai dalam kolom adalah True dan mengembalikan serangkaian Boolean yang dapat digunakan untuk mengindeks kolom yang diinginkan.
Dengan cara ini Anda dapat memeriksa apakah nilainya numerik seperti float dan int atau nilai srting. yang kedua jika pernyataan digunakan untuk memeriksa nilai string yang dirujuk oleh objek.
dtype
menjadiobject
, tetapi semua elemen menjadi numerik, dianggap sebagai numerik atau tidak. Jika tidak, ambillah jawaban Hanan, karena ini juga lebih cepat. Jika tidak, ambil punyaku.Jawaban:
Anda bisa menggunakan
select_dtypes
metode DataFrame. Ini mencakup dua parameter termasuk dan mengecualikan. Jadi isNumeric akan terlihat seperti:sumber
list(df.select_dtypes(include=[np.number]).columns.values)
untuk mendapatkan daftar nama kolom numerikAnda bisa menggunakan fungsi tidak berdokumen
_get_numeric_data()
untuk memfilter kolom numerik saja:Contoh:
Perhatikan bahwa ini adalah "metode pribadi" (yaitu, detail penerapan) dan dapat berubah atau dihapus total di masa mendatang. Gunakan dengan hati-hati .
sumber
Jawaban satu baris sederhana untuk membuat kerangka data baru dengan hanya kolom numerik:
Jika Anda menginginkan nama kolom numerik:
Kode lengkap:
sumber
df.select_dtypes(include=['int64']).columns.tolist()
include=
.select_dtypes(np.number)
df.fillna(value=0, inplace=True)
sumber
datetime
dan bukan tipe numerikSatu baris sederhana:
sumber
Kode berikut akan mengembalikan daftar nama kolom numerik dari suatu kumpulan data.
berikut
marketing_train
adalah kumpulan data saya danselect_dtypes()
berfungsi untuk memilih tipe data menggunakan exclude dan include argumen dan kolom digunakan untuk mengambil nama kolom dari kumpulan data output dari kode di atas adalah sebagai berikut:Terima kasih
sumber
Ini adalah kode sederhana lainnya untuk menemukan kolom numerik dalam bingkai data panda,
sumber
sumber
Mengadaptasi jawaban ini , Anda bisa melakukannya
Di sini,
np.applymap(np.isreal)
memperlihatkan apakah setiap sel dalam bingkai data adalah numerik, dan.axis(all=0)
memeriksa apakah semua nilai dalam kolom adalah True dan mengembalikan serangkaian Boolean yang dapat digunakan untuk mengindeks kolom yang diinginkan.sumber
Silakan lihat kode di bawah ini:
Dengan cara ini Anda dapat memeriksa apakah nilainya numerik seperti float dan int atau nilai srting. yang kedua jika pernyataan digunakan untuk memeriksa nilai string yang dirujuk oleh objek.
sumber
Kami dapat menyertakan dan mengecualikan tipe data sesuai kebutuhan seperti di bawah ini:
Dirujuk dari Jupyter Notebook.
Untuk memilih semua tipe numerik , gunakan
np.number
atau'number'
Untuk memilih string Anda harus menggunakan
object
dtype tetapi perhatikan bahwa ini akan mengembalikan semua kolom dtype objekLihat
NumPy dtype hierarchy <http://docs.scipy.org/doc/numpy/reference/arrays.scalars.html>
__Untuk memilih waktu, gunakan
np.datetime64
,'datetime'
atau'datetime64'
Untuk memilih sabuk waktu, gunakan
np.timedelta64
,'timedelta'
atau'timedelta64'
Untuk memilih jenis kategori Pandas, gunakan
'category'
Untuk memilih Pandas datetimetz dtypes, gunakan
'datetimetz'
(baru di 0.20.0) atau "'datetime64 [ns, tz]'sumber