programing

Panda 시리즈 또는 인덱스를 NumPy 배열로 변환하려면 어떻게 해야 합니까?

goodcopy 2022. 11. 6. 13:21
반응형

Panda 시리즈 또는 인덱스를 NumPy 배열로 변환하려면 어떻게 해야 합니까?

DataFrame의 인덱스 또는 열을 NumPy 배열 또는 Python 목록으로 가져오려면 어떻게 해야 합니까?

NumPy 어레이를 가져오려면values속성:

In [1]: df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]}, index=['a', 'b', 'c']); df
   A  B
a  1  4
b  2  5
c  3  6

In [2]: df.index.values
Out[2]: array(['a', 'b', 'c'], dtype=object)

이렇게 하면 데이터가 이미 저장된 방식에 액세스하므로 변환할 필요가 없습니다.

주의: 이 속성은 다른 많은 판다 개체에도 사용할 수 있습니다.

In [3]: df['A'].values
Out[3]: Out[16]: array([1, 2, 3])

인덱스를 목록으로 가져오려면tolist:

In [4]: df.index.tolist()
Out[4]: ['a', 'b', 'c']

마찬가지로 열에 대해서도 마찬가지입니다.

사용할 수 있습니다.df.index인덱스 객체에 액세스하여 목록의 값을 가져오려면df.index.tolist()마찬가지로,df['col'].tolist()를 참조해 주세요.

팬더 > = 0.24

의 사용을 중지합니다..values이 방법들에 찬성합니다!

v0.24.0 이후, NumPy 어레이를 입수하기 위해서, 2개의 브랜드 스쿠핑의 새로운 권장 방법을 사용할 수 있습니다.Index,Series,그리고.DataFrame오브젝트: 및 입니다.사용방법에 대해서는 다음 문서를 참조해 주십시오.

제거하거나 권장하지 않습니다.Series.values아니면DataFrame.values, 또는 사용하는 것을 강력히 권장합니다.

자세한 내용은 v0.24.0 릴리즈 노트의 이 섹션을 참조하십시오.


to_numpy()방법

df.index.to_numpy()
# array(['a', 'b'], dtype=object)

df['A'].to_numpy()
#  array([1, 4])

기본적으로 보기가 반환됩니다.변경된 내용은 원본에 영향을 미칩니다.

v = df.index.to_numpy()
v[0] = -1
 
df
    A  B
-1  1  2
b   4  5

대신 복사가 필요한 경우 다음을 사용하십시오.to_numpy(copy=True);

v = df.index.to_numpy(copy=True)
v[-1] = -123
 
df
   A  B
a  1  2
b  4  5

이 기능은 DataFrames에서도 동작합니다(단,.array하지 않습니다).


array기여하다
이 속성은 인덱스/시리즈를 지원하는 개체를 반환합니다.

pd.__version__
# '0.24.0rc1'

# Setup.
df = pd.DataFrame([[1, 2], [4, 5]], columns=['A', 'B'], index=['a', 'b'])
df

   A  B
a  1  2
b  4  5

<!->

df.index.array    
# <PandasArray>
# ['a', 'b']
# Length: 2, dtype: object

df['A'].array
# <PandasArray>
# [1, 4]
# Length: 2, dtype: int64

여기서부터, 다음의 방법으로 리스트를 취득할 수 있습니다.list:

list(df.index.array)
# ['a', 'b']

list(df['A'].array)
# [1, 4]

또는 직접 전화만 하면 됩니다..tolist():

df.index.tolist()
# ['a', 'b']

df['A'].tolist()
# [1, 4]

반환된 물품에 대해서는 의사가 언급하고 있습니다.

위해서Series그리고.Index특히 일반 NumPy 어레이에 의해 백업됩니다.Series.array새로운 것을 반환할 것이다arrays.PandasArray(복사되지 않은) 얇은 랩퍼입니다.numpy.ndarray.arrays.PandasArray그 자체로는 특별히 유용하지 않지만 팬더나 서드파티 라이브러리에서 정의된 확장 어레이와 동일한 인터페이스를 제공합니다.

그래서 요약하자면.array어느 쪽도 반환되지 않는다

  1. 기존의ExtensionArray인덱스/시리즈 백업 또는
  2. 시리즈를 지원하는 NumPy 어레이가 있는 경우,ExtensionArray개체는 기본 어레이 위에 씬 래퍼로 생성됩니다.

new 의
이러한 기능은 GitHub의 2가지 이슈 GH19954와 GH23623에서 논의한 결과 추가되었습니다.

구체적으로는, 다음의 이유에 대해 설명합니다.

와 [...]] ] ].values반환된 값이 실제 배열인지, 일부 변형인지, 또는 팬더 맞춤 배열 중 하나인지 불분명합니다(예:Categorical를 들어, 「」를 붙이면,PeriodIndex,.values 「」를 합니다.ndarray ] [... objects of each each of of of of ]

이 두 가지 기능은 API의 일관성을 향상시키는 것을 목표로 하며, 이는 올바른 방향으로 나아가는 중요한 단계입니다.

★★★★★★★★★★★★★★★★★..values현재 버전에서는 권장되지 않지만, 향후 언젠가 이러한 일이 발생할 것으로 예상되므로 가능한 한 빨리 새로운 API로 이행해 주셨으면 합니다.

다중 인덱스 데이터 프레임을 다루는 경우 다중 인덱스의 한 이름 열만 추출할 수 있습니다.이것은, 다음과 같이 할 수 있습니다.

df.index.get_level_values('name_sub_index')

그리고 물론.name_sub_index must must must must must must must must must must of of of of of 의 요소여야 .FrozenList df.index.names

팬더 v0.13을 사용할 수도 있습니다.

df.index.get_values()

보다 최근의 방법은 .to_numpy() 함수를 사용하는 것입니다.

데이터 프레임에 '가격' 열이 있는 경우 다음과 같이 변환할 수 있습니다.

priceArray = df['price'].to_numpy()

float 또는 object와 같은 데이터 유형을 함수의 인수로 전달할 수도 있습니다.

를 개종시켰다.dataframe로로 합니다.list 요.list.index() 다음과 같이 합니다.

dd = list(zone[0]) #Where zone[0] is some specific column of the table
idx = dd.index(filename[i])

있습니다.idx

다음은 데이터 프레임 열을 NumPy 배열로 변환하는 간단한 방법입니다.

df = pd.DataFrame(somedict)
ytrain = df['label']
ytrain_numpy = np.array([x for x in ytrain['label']])

ytrain_numpy는 NumPy 배열입니다.

로 시도했다.to.numpy() 이 즉, 에러, 에러 에러, 에러가 나다.

TypeError: 선형 SVC를 사용하여 이진 관련성 분류를 수행하는 동안 유형: (dtype('O'),*에 대해 지원되는 변환이 없습니다.

to.numpy()는 dataFrame을 NumPy 배열로 변환하고 있었습니다만, 내부 요소의 데이터 타입이 리스트였기 때문에, 상기의 에러가 검출되었습니다.

언급URL : https://stackoverflow.com/questions/17241004/how-do-i-convert-a-pandas-series-or-index-to-a-numpy-array

반응형