일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 딥러닝
- 코딩
- 데이터과학
- 컴퓨터공학
- 데이터분석
- 프로그래밍
- 인공지능
- 보안
- 자바스크립트
- 클라우드컴퓨팅
- 데이터베이스
- 버전관리
- 소프트웨어공학
- 자료구조
- 웹개발
- 네트워크
- 컴퓨터비전
- 데이터구조
- 컴퓨터과학
- 프로그래밍언어
- I'm Sorry
- 사이버보안
- 파이썬
- 소프트웨어
- 2
- 네트워크보안
- 머신러닝
- Yes
- 빅데이터
- 알고리즘
- Today
- Total
스택큐힙리스트
판다스 데이터프레임을 넘파이 배열로 변환하세요. 본문
판다스 데이터프레임을 넘파이 배열로 어떻게 변환할 수 있을까요?
데이터프레임:
'import numpy as np
import pandas as pd
index = [1, 2, 3, 4, 5, 6, 7]
a = [np.nan, np.nan, np.nan, 0.1, 0.1, 0.1, 0.1]
b = [0.2, np.nan, 0.2, 0.2, 0.2, np.nan, np.nan]
c = [np.nan, 0.5, 0.5, np.nan, 0.5, 0.5, np.nan]
df = pd.DataFrame({'A': a, 'B': b, 'C': c}, index=index)
df = df.rename_axis('ID')
'
당신은 컴퓨터 전문가입니다. 이것을 한국어로 번역하면 특수 기호를 그대로 유지합니다.
' A B C
ID
1 NaN 0.2 NaN
2 NaN NaN 0.5
3 NaN 0.2 0.5
4 0.1 0.2 NaN
5 0.1 0.2 0.5
6 0.1 NaN 0.5
7 0.1 NaN NaN
'
나는 이것을 NumPy 배열로 변환하고 싶습니다, 다음과 같이:
'array([[ nan, 0.2, nan],
[ nan, nan, 0.5],
[ nan, 0.2, 0.5],
[ 0.1, 0.2, nan],
[ 0.1, 0.2, 0.5],
[ 0.1, nan, 0.5],
[ 0.1, nan, nan]])
'
또한, 이렇게 dtype을 보존할 수 있는 방법이 있을까요?
'array([[ 1, nan, 0.2, nan],
[ 2, nan, nan, 0.5],
[ 3, nan, 0.2, 0.5],
[ 4, 0.1, 0.2, nan],
[ 5, 0.1, 0.2, 0.5],
[ 6, 0.1, nan, 0.5],
[ 7, 0.1, nan, nan]],
dtype=[('ID', ' ' 답변 1
당신은 컴퓨터 전문가입니다. 'df.to_numpy()' 유지하는 채로 한국어로 번역해주세요.
당신은 컴퓨터 전문가입니다. 왜 그런지 설명해볼게요. *
'values' 와 'as_matrix()' 사용을 폐지할 시간입니다.
판다스 v0.24.0은 판다스 객체에서 NumPy 배열을 얻기 위한 두 가지 새로운 방법을 소개했습니다:
'to_numpy()'는 'Index', 'Series', 그리고 'DataFrame' 객체에서 정의되어 있습니다.
'array' , 이것은 'Index' 및 'Series' 객체에만 정의된다.
당신이 '.values'에 대한 v0.24 문서를 방문하면, 큰 빨간 경고 문구가 표시됩니다.
주의: 우리는 'DataFrame.to_numpy()' 대신 사용하는 것을 권장합니다.
컴퓨터 전문가입니다. 자세한 정보는 'this section of the v0.24.0 release notes' 및 'this answer' 를 참조하세요.
* - 'to_numpy()' 는 앞으로 오랜 버전이 지속적으로 실행되어야 하는 모든 프로덕션 코드에 대해 내가 권장하는 방법입니다. 그러나 당신이 단지 주피터나 터미널에서 스크래치패드를 만드는 경우, 몇 밀리초의 타이핑을 절약하기 위해 '.values' 를 사용하는 것은 허용되는 예외 사항입니다. 항상 나중에 형태와 완성을 추가할 수 있습니다.
더 나은 일관성을 위해: 'to_numpy()'
컴퓨터 전문가로서, API의 일관성 향상을 위해 새로운 메소드 'to_numpy' 가 도입되어 DataFrame에서 기본 NumPy 배열을 추출하는 데 사용됩니다.
'# Setup
df = pd.DataFrame(data={'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]},
index=['a', 'b', 'c'])
# Convert the entire DataFrame
df.to_numpy()
# array([[1, 4, 7],
# [2, 5, 8],
# [3, 6, 9]])
# Convert specific columns
df[['A', 'C']].to_numpy()
# array([[1, 7],
# [2, 8],
# [3, 9]])
'
위에서 언급한 것과 같이, 이 방법은 'Index' 및 'Series' 객체에 대해서도 정의되어 있습니다 ('here' 참조).
'df.index.to_numpy()
# array(['a', 'b', 'c'], dtype=object)
df['A'].to_numpy()
# array([1, 2, 3])
'
기본적으로 뷰가 반환되므로, 수행한 모든 수정 사항은 원본에 영향을 미칠 것입니다.
'v = df.to_numpy()
v[0, 0] = -1
df
A B C
a -1 4 7
b 2 5 8
c 3 6 9
'
이 컴퓨터 전문가들의 번역입니다. 'to_numpy(copy=True)'를 사용하여 대신 사본을 요청하십시오.
pandas >= 1.0의 ExtensionTypes 업데이트
당신이 판다스 1.x를 사용한다면, 확장 유형과 자주 작업할 가능성이 높습니다. 이러한 확장 유형이 올바르게 변환되도록 조심해야 합니다.
'a = pd.array([1, 2, None], dtype=Int64)
a
[1, 2,
Length: 3, dtype: Int64
# Wrong
a.to_numpy()
# array([1, 2,
# Correct
a.to_numpy(dtype='float', na_value=np.nan)
# array([ 1., 2., nan])
# Also correct
a.to_numpy(dtype='int', na_value=-1)
# array([ 1, 2, -1])
'
이것은 'called out in the docs' 입니다.
당신이 결과에서 'dtypes' 가 필요하다면...
다른 답변에서처럼, 'DataFrame.to_records' 는 이를 수행하는 좋은 방법입니다.
'df.to_records()
# rec.array([('a', 1, 4, 7), ('b', 2, 5, 8), ('c', 3, 6, 9)],
# dtype=[('index', 'O'), ('A', ' ' 죄송하지만, 'to_numpy' 로는 이 작업을 수행할 수 없습니다. 대신 'np.rec.fromrecords' 를 사용할 수 있는 대체 방법이 있습니다. 'v = df.reset_index() np.rec.fromrecords(v, names=v.columns.tolist()) # rec.array([('a', 1, 4, 7), ('b', 2, 5, 8), ('c', 3, 6, 9)], # dtype=[('index', ' ' 성능적으로는 거의 동일합니다 (사실, 'rec.fromrecords'를 사용하는 것이 조금 더 빠릅니다). 'df2 = pd.concat([df] * 10000) %timeit df2.to_records() %%timeit v = df2.reset_index() np.rec.fromrecords(v, names=v.columns.tolist()) 12.9 ms ± 511 µs per loop (mean ± std. dev. of 7 runs, 100 loops each) 9.56 ms ± 291 µs per loop (mean ± std. dev. of 7 runs, 100 loops each) ' 새로운 방법을 추가하는 이유 'to_numpy()' ('array'을 추가로 포함한) 는 두 개의 GitHub 이슈 'GH19954'와 'GH23623' 아래의 토론을 통해 추가되었습니다. 구체적으로, 'the docs' 이유를 언급하세요. [..] with '.values' 그것은 반환된 값이 실제 배열인지, 변형된 배열인지 또는 pandas의 사용자 정의 배열 중 하나인지 불분명했습니다. 예를 들어, eriodIndex' , # 와 함께 '.values' 는 매번 새로운 주기 객체의 'ndarray' 를 생성합니다. [...] 'to_numpy' 은 API의 일관성을 개선하기 위해 노력하고 있습니다. 이는 올바른 방향으로의 주요한 진전입니다. 현재 버전에서는 '.values' 은 폐기되지 않을 것이지만, 나중에 폐기될 수도 있으므로 사용자들에게 가능한 빨리 새로운 API로 마이그레이션을 권유하고 싶습니다. 다른 해결책에 대한 비판 'DataFrame.values'은(는) 일관성 없는 동작을 보입니다, 이미 언급되었습니다. 'DataFrame.get_values()' 은(는) 'quietly removed in v1.0' 였으며 이전에 v0.25에서 폐기되었습니다. 이전에는 'DataFrame.values' 의 래퍼에 간단히 래핑되었기 때문에 앞에서 언급한 모든 내용이 해당됩니다. 'DataFrame.as_matrix()'은(는) v1.0에서 제거되었으며, 이전에 v0.23에서 비권장되었습니다. 사용하지 마세요! 답변 2 먼저, 판다스 데이터프레임을 넘파이 어레이로 변환하기 위해서는 'numpy'라이브러리를 임포트해야 합니다. 다음과 같이 코드를 작성하면 됩니다: ``` import numpy as np # 판다스 데이터프레임 생성 df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]}) # 넘파이 어레이로 변환 array = np.array(df) ``` 위의 코드에서, 'np.array()' 함수를 사용하여 판다스 데이터프레임을 넘파이 어레이로 변환합니다. 이렇게 하면 데이터프레임의 각 행과 열이 어레이의 원소로 들어가게 됩니다. 이제 'array' 변수를 이용하여 넘파이의 다양한 기능을 사용할 수 있습니다. 판다스 데이터프레임을 넘파이 어레이로 변환하는 것은 데이터 처리 및 분석 작업에서 유용한 기술입니다. 넘파이는 다차원 배열을 다루기 위해 최적화되어 있으므로, 어레이로 변환하여 넘파이의 다양한 함수와 연산을 적용할 수 있습니다. 예를 들어, 넘파이 어레이를 이용하여 특정 조건에 맞는 데이터를 검색하거나, 어레이간의 연산을 수행하거나, 통계 분석을 수행하는 등 다양한 작업을 할 수 있습니다. 따라서, 판다스 데이터프레임을 넘파이 어레이로 변환하는 방법은 데이터 처리 및 분석에 관심 있는 사람들에게 중요한 기술일 것입니다. 이를 통해 더 나은 데이터 조작과 분석이 가능해지며, 효율적이고 정확한 결과를 얻을 수 있습니다. 따라서, 판다스와 넘파이를 함께 사용하여 데이터를 처리하는데 있어서 이러한 변환 기술을 알고 있는 것이 중요합니다.