팬더에서 숫자 열을 찾으려면 어떻게 해야 하나요?
예를 들어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
'programing' 카테고리의 다른 글
| Python에서는 오브젝트가 반복 가능한지 어떻게 판단합니까? (0) | 2023.01.17 |
|---|---|
| Enter 키를 누른 후 onChange 이벤트를 호출하다 (0) | 2023.01.17 |
| Java Big Decimal:가장 가까운 정수 값으로 반올림 (0) | 2023.01.17 |
| 테스트 러너 'JUnit 4'를 사용하여 테스트를 찾을 수 없습니다. (0) | 2023.01.17 |
| CodeIgniter 프레임워크를 사용하여 어레이에서 여러 행을 삽입하는 방법 (0) | 2023.01.17 |