programing

팬더에서 숫자 열을 찾으려면 어떻게 해야 하나요?

sourcejob 2023. 1. 17. 21:18
반응형

팬더에서 숫자 열을 찾으려면 어떻게 해야 하나요?

예를 들어df팬더 데이터 프레임입니다.숫자형 열을 모두 찾고 싶습니다.예를 들어 다음과 같습니다.

isNumeric = is_numeric(df)

사용할 수 있습니다.select_dtypes데이터 프레임의 메서드.여기에는 include와 exclude의 두 가지 파라미터가 포함됩니다.즉, Numeric은 다음과 같습니다.

numerics = ['int16', 'int32', 'int64', 'float16', 'float32', 'float64']

newdf = df.select_dtypes(include=numerics)

숫자 열만 있는 새 데이터 프레임을 작성하기 위한 간단한 한 줄 답변:

df.select_dtypes(include=np.number)

숫자 열의 이름을 원하는 경우:

df.select_dtypes(include=np.number).columns.tolist()

완전한 코드:

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']

문서화되지 않은 기능을 사용할 수 있습니다._get_numeric_data()숫자 열만 필터링하려면:

df._get_numeric_data()

예:

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

이는 "개인적인 방법"(즉, 구현 세부사항)이며, 향후 변경되거나 완전히 제거될 수 있습니다.주의하여 사용하십시오.

df.select_dtypes(exclude = ['object'])

업데이트:

df.select_dtypes(include= np.number)

새로운 버전의 팬더와 함께

 df.select_dtypes('number')

간단한 원라이너:

df.select_dtypes('number').columns

다음 코드는 데이터 집합의 숫자 열 이름 목록을 반환합니다.

cnames=list(marketing_train.select_dtypes(exclude=['object']).columns)

여기서marketing_train데이터 세트 및select_dtypes()exclude 인수 및 include 인수를 사용하여 데이터 유형을 선택하는 함수입니다.이 함수는 위의 코드의 데이터 세트 출력 열 이름을 가져오는 데 사용됩니다.

['custAge',
     'campaign',
     'pdays',
     'previous',
     'emp.var.rate',
     'cons.price.idx',
     'cons.conf.idx',
     'euribor3m',
     'nr.employed',
     'pmonths',
     'pastEmail']
    

이것은 판다 데이터 프레임에서 숫자 열을 찾기 위한 또 다른 간단한 코드입니다.

numeric_clmns = df.dtypes[df.dtypes != "object"].index 

다음과 같은 요건에 따라 데이터 유형을 포함하거나 제외할 수 있습니다.

train.select_dtypes(include=None, exclude=None)
train.select_dtypes(include='number') #will include all the numeric types

Jupyter Notebook에서 참조.

모든 숫자 유형을 선택하려면np.number또는'number'

  • 문자열을 선택하려면objectdtype 단, 모든 오브젝트 dtype 컬럼이 반환됩니다.

  • 를 참조해 주세요.NumPy dtype hierarchy <http://docs.scipy.org/doc/numpy/reference/arrays.scalars.html>__

  • 날짜 시간을 선택하려면np.datetime64,'datetime'또는'datetime64'

  • timedelta를 선택하려면np.timedelta64,'timedelta'또는'timedelta64'

  • 팬더 범주형 dtype을 선택하려면'category'

  • Panda datetemeterz dtypes를 선택하려면'datetimetz'(0.20.0의 신기능) 또는 ''datetime64[ns, tz]''

오래된 주제이긴 하지만

하지만 다음 공식은 다른 댓글보다 쉬울 것 같아요.

df[df.describe().columns]

descript() 함수는 숫자 열에만 적용되므로 출력 열은 숫자만 됩니다.

아래 코드를 참조하십시오.

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())

이렇게 하면 값이 float 및 int와 같은 숫자인지 또는 srting 값인지 확인할 수 있습니다.두 번째 if 문은 객체에 의해 참조되는 문자열 값을 체크하기 위해 사용됩니다.

답변을 수정하면

df.ix[:,df.applymap(np.isreal).all(axis=0)]

여기서,np.applymap(np.isreal)에 데이터 프레임 내의 모든 셀이 수치인지 여부를 나타냅니다..axis(all=0)는 한 열의 모든 값이 True인지 확인하고 원하는 열을 인덱싱하는 데 사용할 수 있는 일련의 Booan을 반환합니다.

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)

언급URL : https://stackoverflow.com/questions/25039626/how-do-i-find-numeric-columns-in-pandas

반응형