Diyelim ki df
bir panda DataFrame. Sayısal türdeki tüm sütunları bulmak istiyorum. Gibi bir şey:
isNumeric = is_numeric(df)
Diyelim ki df
bir panda DataFrame. Sayısal türdeki tüm sütunları bulmak istiyorum. Gibi bir şey:
isNumeric = is_numeric(df)
Yanıtlar:
select_dtypes
DataFrame yöntemini kullanabilirsiniz . İki parametre içerir ve hariç tutar. Yani isNumeric şöyle görünür:
numerics = ['int16', 'int32', 'int64', 'float16', 'float32', 'float64']
newdf = df.select_dtypes(include=numerics)
list(df.select_dtypes(include=[np.number]).columns.values)
Belgelenmemiş işlevi _get_numeric_data()
yalnızca sayısal sütunları filtrelemek için kullanabilirsiniz :
df._get_numeric_data()
Misal:
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
Bunun "özel bir yöntem" (yani bir uygulama ayrıntısı) olduğunu ve gelecekte değişikliğe veya tamamen kaldırılabileceğini unutmayın. Dikkatli kullanın .
Yalnızca sayısal sütunlarla yeni bir veri çerçevesi oluşturmak için basit tek satırlık yanıt:
df.select_dtypes(include=np.number)
Sayısal sütunların adlarını istiyorsanız:
df.select_dtypes(include=np.number).columns.tolist()
Tam kod:
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)
df.select_dtypes(exclude=['object'])
datetime
sayısal türler olmadığından farklı bir türdür
Aşağıdaki kodlar, bir veri kümesinin sayısal sütunlarının adlarının listesini döndürür.
cnames=list(marketing_train.select_dtypes(exclude=['object']).columns)
İşte marketing_train
benim veri setim ve select_dtypes()
fonksiyon dışlama ve içerme bağımsız değişkenlerini kullanarak veri türlerini seçmek için kullanılır ve sütunlar veri kümesinin sütun adını almak için kullanılır, yukarıdaki kodun çıktısı aşağıdaki olacaktır:
['custAge',
'campaign',
'pdays',
'previous',
'emp.var.rate',
'cons.price.idx',
'cons.conf.idx',
'euribor3m',
'nr.employed',
'pmonths',
'pastEmail']
Teşekkürler
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)
Bu cevabı uyarlayarak yapabilirsin
df.ix[:,df.applymap(np.isreal).all(axis=0)]
Burada, np.applymap(np.isreal)
veri çerçevesindeki her hücrenin sayısal olup olmadığını gösterir ve .axis(all=0)
bir sütundaki tüm değerlerin True olup olmadığını kontrol eder ve istenen sütunları dizine eklemek için kullanılabilecek bir dizi Boole döndürür.
Lütfen aşağıdaki koda bakın:
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())
Bu şekilde, değerin float ve int veya srting değerleri gibi sayısal olup olmadığını kontrol edebilirsiniz. ikinci if ifadesi, nesne tarafından başvurulan dizge değerlerini kontrol etmek için kullanılır.
Veri türlerini aşağıdaki gereksinime göre dahil edebilir ve hariç tutabiliriz:
train.select_dtypes(include=None, exclude=None)
train.select_dtypes(include='number') #will include all the numeric types
Jupyter Notebook'tan alıntılanmıştır.
Tüm sayısal türleri seçmek için np.number
veya'number'
Dizeleri seçmek için object
dtype kullanmanız gerekir, ancak bunun tüm nesne dtype sütunlarını döndüreceğini unutmayın.
NumPy dtype hierarchy <http://docs.scipy.org/doc/numpy/reference/arrays.scalars.html>
__ bakın
Tarih zamanlarını seçmek için np.datetime64
, 'datetime'
veya
'datetime64'
Zaman çizelgelerini seçmek için np.timedelta64
, 'timedelta'
veya
'timedelta64'
Pandaların kategorik tiplerini seçmek için şunu kullanın: 'category'
Pandas datetimetz dtype'lerini seçmek için 'datetimetz'
(0.20.0'da yeni) veya "'datetime64 [ns, tz]' kullanın
dtype
olanobject
, ancak tüm öğeleri sayısal olan bir sütunun sayısal olarak sayılıp sayılmayacağını belirtmelisiniz . Hayır ise, daha hızlı olduğu için Hanan'ın cevabını alın. Aksi takdirde benimkini al.