Giả sử df
là DataFrame của gấu trúc. Tôi muốn tìm tất cả các cột kiểu số. Cái gì đó như:
isNumeric = is_numeric(df)
Giả sử df
là DataFrame của gấu trúc. Tôi muốn tìm tất cả các cột kiểu số. Cái gì đó như:
isNumeric = is_numeric(df)
Câu trả lời:
Bạn có thể sử dụng select_dtypes
phương pháp của DataFrame. Nó bao gồm hai tham số bao gồm và loại trừ. Vì vậy, isNumeric sẽ trông như:
numerics = ['int16', 'int32', 'int64', 'float16', 'float32', 'float64']
newdf = df.select_dtypes(include=numerics)
list(df.select_dtypes(include=[np.number]).columns.values)
để nhận danh sách tên của các cột số
Bạn có thể sử dụng hàm không có giấy tờ _get_numeric_data()
để chỉ lọc các cột số:
df._get_numeric_data()
Thí dụ:
In [32]: data
Out[32]:
A B
0 1 s
1 2 s
2 3 s
3 4 s
In [33]: data._get_numeric_data()
Out[33]:
A
0 1
1 2
2 3
3 4
Lưu ý rằng đây là "phương pháp riêng" (nghĩa là chi tiết triển khai) và có thể thay đổi hoặc loại bỏ hoàn toàn trong tương lai. Sử dụng thận trọng .
Câu trả lời một dòng đơn giản để tạo một khung dữ liệu mới chỉ với các cột số:
df.select_dtypes(include=np.number)
Nếu bạn muốn tên của các cột số:
df.select_dtypes(include=np.number).columns.tolist()
Mã hoàn chỉnh:
import pandas as pd
import numpy as np
df = pd.DataFrame({'A': range(7, 10),
'B': np.random.rand(3),
'C': ['foo','bar','baz'],
'D': ['who','what','when']})
df
# A B C D
# 0 7 0.704021 foo who
# 1 8 0.264025 bar what
# 2 9 0.230671 baz when
df_numerics_only = df.select_dtypes(include=np.number)
df_numerics_only
# A B
# 0 7 0.704021
# 1 8 0.264025
# 2 9 0.230671
colnames_numerics_only = df.select_dtypes(include=np.number).columns.tolist()
colnames_numerics_only
# ['A', 'B']
df.select_dtypes(include=['int64']).columns.tolist()
include=
. select_dtypes(np.number)
df.fillna(value=0, inplace=True)
Một lớp lót đơn giản:
df.select_dtypes('number').columns
Các mã sau sẽ trả về danh sách tên của các cột số của tập dữ liệu.
cnames=list(marketing_train.select_dtypes(exclude=['object']).columns)
đây marketing_train
là tập dữ liệu của tôi và select_dtypes()
là chức năng chọn các loại dữ liệu bằng cách sử dụng loại trừ và bao gồm các đối số và cột được sử dụng để tìm nạp tên cột của đầu ra tập dữ liệu của mã trên sẽ như sau:
['custAge',
'campaign',
'pdays',
'previous',
'emp.var.rate',
'cons.price.idx',
'cons.conf.idx',
'euribor3m',
'nr.employed',
'pmonths',
'pastEmail']
Cảm ơn
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)
Thích ứng với câu trả lời này , bạn có thể làm
df.ix[:,df.applymap(np.isreal).all(axis=0)]
Ở đây, np.applymap(np.isreal)
cho biết mọi ô trong khung dữ liệu có phải là số hay không và .axis(all=0)
kiểm tra xem tất cả các giá trị trong một cột có đúng không và trả về một loạt Booleans có thể được sử dụng để lập chỉ mục các cột mong muốn.
Vui lòng xem đoạn mã dưới đây:
if(dataset.select_dtypes(include=[np.number]).shape[1] > 0):
display(dataset.select_dtypes(include=[np.number]).describe())
if(dataset.select_dtypes(include=[np.object]).shape[1] > 0):
display(dataset.select_dtypes(include=[np.object]).describe())
Bằng cách này, bạn có thể kiểm tra xem giá trị có phải là số như float và int hoặc các giá trị srting không. câu lệnh if thứ hai được sử dụng để kiểm tra các giá trị chuỗi được đối tượng tham chiếu.
Chúng tôi có thể bao gồm và loại trừ các loại dữ liệu theo yêu cầu như dưới đây:
train.select_dtypes(include=None, exclude=None)
train.select_dtypes(include='number') #will include all the numeric types
Được giới thiệu từ Jupyter Notebook.
Để chọn tất cả các loại số , sử dụng np.number
hoặc'number'
Để chọn chuỗi, bạn phải sử dụng object
dtype nhưng lưu ý rằng điều này sẽ trả về tất cả các cột dtype đối tượng
Xem NumPy dtype hierarchy <http://docs.scipy.org/doc/numpy/reference/arrays.scalars.html>
__
Để chọn datetimes, sử dụng np.datetime64
, 'datetime'
hoặc
'datetime64'
Để chọn timedeltas, sử dụng np.timedelta64
, 'timedelta'
hoặc
'timedelta64'
Để chọn các loại phân loại Pandas, sử dụng 'category'
Để chọn các kiểu dữ liệu Pandas datetimetz, hãy sử dụng 'datetimetz'
(mới trong 0.20.0) hoặc `` 'datetime64 [ns, tz]'
dtype
tồn tại hay khôngobject
, nhưng tất cả các yếu tố là số, được tính là số hay không. Nếu không, hãy lấy câu trả lời của Hanan, vì nó cũng nhanh hơn. Nếu không, lấy của tôi.