데이터 프레임을 생성하는 코드는 다음과 같습니다.
import pandas as pd
import numpy as np
dff = pd.DataFrame(np.random.randn(1,2),columns=list('AB'))
그런 다음 데이터 프레임을 얻었습니다.
+------------+---------+--------+
| | A | B |
+------------+---------+---------
| 0 | 0.626386| 1.52325|
+------------+---------+--------+
내가 commmand를 입력하면 :
dff.mean(axis=1)
나는 얻었다 :
0 1.074821
dtype: float64
팬더의 참조에 따르면 axis = 1은 열을 나타내며 명령 결과는 다음과 같습니다.
A 0.626386
B 1.523255
dtype: float64
그래서 내 질문은 : 팬더의 축은 무엇을 의미합니까?
답변
평균이 계산 되는 축을 지정합니다 . 기본적으로 axis=0
. 이것은과 일치 numpy.mean
할 때 사용 axis
지정된 명시 (투입 numpy.mean
되는, 평탄화 된 배열에 대해 평균값을 계산 기본적 == 없음 축 없음) axis=0
따라 행 (즉, 인덱스 팬더에서) 및 axis=1
따라 열 . 명확성을 높이기 위해 axis='index'
(대신 axis=0
) 또는 axis='columns'
(대신 ) 을 지정할 수 있습니다 axis=1
.
+------------+---------+--------+
| | A | B |
+------------+---------+---------
| 0 | 0.626386| 1.52325|----axis=1----->
+------------+---------+--------+
| |
| axis=0 |
↓ ↓
답변
이 답변은 이것을 설명하는 데 도움이되지만 프로그래머가 아닌 사람 (예 : 데이터 과학 과정의 맥락에서 처음으로 Python을 배우는 사람)에게는 여전히 직관적이지 않습니다. 여전히 행과 열에 “along”또는 “for each”라는 용어를 사용하면 혼란 스러울 수 있습니다.
나에게 더 의미있는 것은 다음과 같이 말하는 것입니다.
- 축 0은 각 COLUMN의 모든 ROWS에서 작동합니다.
- 축 1은 각 ROW의 모든 열에 작용합니다.
따라서 축 0의 평균은 각 열의 모든 행의 평균이되고 축 1의 평균은 각 행의 모든 열의 평균이됩니다.
궁극적으로 이것은 @zhangxaochen 및 @Michael과 같은 말을하지만 내면에서 편하게하는 방법입니다.
답변
팬더에서 :
- 축 = 0은 “인덱스”를 의미합니다. 그것은 A의 행 방향으로 작동 .
dataframe1 및 dataframe2에서 concat () 연산을 수행하기 위해 dataframe1을 가져와 dataframe1에서 첫 번째 행을 가져 와서 새 DF에 넣은 다음 dataframe1에서 다른 행을 가져 와서 새 DF에 넣을 때 까지이 프로세스를 반복한다고 가정합니다. 우리는 dataframe1의 맨 아래에 도달합니다. 그런 다음 dataframe2에 대해서도 동일한 프로세스를 수행합니다.
기본적으로 dataframe1 위에 dataframe2를 쌓거나 그 반대로도 가능합니다.
예를 들어 테이블이나 바닥에 책 더미 만들기
- axis = 1은 “열”을 의미합니다. 그것은 A의 열 현명한 동작.
dataframe1 및 dataframe2에서 concat () 연산을 수행하기 위해 dataframe1의 첫 번째 완전한 열 (일명 1 차 시리즈)을 꺼내고 새로운 DF에 배치 한 다음 dataframe1의 두 번째 열을 꺼내서 옆에 유지합니다 (가로) ) , 모든 열이 완료 될 때까지이 작업을 반복해야합니다. 그런 다음 dataframe2에서 동일한 프로세스를 반복합니다. 기본적으로
데이터 프레임 2를 옆으로 쌓아 놓습니다.
예를 들어 책장에 책을 정리합니다.
배열은 행렬과 비교하여 중첩 된 n 차원 구조를 나타내는 더 나은 표현이기 때문에 더 중요합니다! 따라서 아래에서 둘 이상의 차원으로 일반화 할 때 축이 중요한 역할을 수행하는 방법을 더 많이 시각화 할 수 있습니다. 또한 실제로는 n-dim 배열을 인쇄 / 쓰기 / 그리기 / 시각화 할 수 있지만 3 차원 이상의 용지에서는 행렬 표현 (3 차원)으로 동일하게 쓰거나 시각화 할 수 없습니다.
답변
axis
pd.DataFrame
s 의 경우 axis=0
아래쪽을 가리키는 차원과 axis=1
오른쪽을 가리키는 차원입니다 .
예 :ndarray
with 모양을 생각하십시오 (3,5,7)
.
a = np.ones((3,5,7))
a
는 3 차원 ndarray
, 즉 3 개의 축을 갖는다 ( “축”은 복수의 “축”). 구성은 a
각 조각의 크기가 5 x 7 인 3 개의 빵 조각처럼 보입니다. a[0,:,:]
0 번째 슬라이스, a[1,:,:]
1 번째 슬라이스 등을 나타냅니다.
a.sum(axis=0)
sum()
의 0 번째 축을 따라 적용됩니다 a
. 모든 조각을 추가하고 하나의 모양 조각으로 끝납니다 (5,7)
.
a.sum(axis=0)
에 해당
b = np.zeros((5,7))
for i in range(5):
for j in range(7):
b[i,j] += a[:,i,j].sum()
b
그리고 a.sum(axis=0)
것 같은 모두보기
array([[ 3., 3., 3., 3., 3., 3., 3.],
[ 3., 3., 3., 3., 3., 3., 3.],
[ 3., 3., 3., 3., 3., 3., 3.],
[ 3., 3., 3., 3., 3., 3., 3.],
[ 3., 3., 3., 3., 3., 3., 3.]])
(A)에 pd.DataFrame
, 축이 동일한 방향에서 같은 작동 numpy.array
: S axis=0
적용 sum()
또는 열마다 다른 환원 기능.
NB @zhangxaochen의 답변에서 “행을 따라”와 “열을 따라”라는 문구가 약간 혼란 스럽다는 것을 알았습니다. axis=0
“각 열을 따라”및 axis=1
” 각 열을 따라”를 참조해야합니다 .
답변
가장 쉽게 이해할 수있는 방법은 각 열 ( axis = 0
) 또는 각 행 ( axis = 1
)에 대한 통계를 계산하는지에 대해 이야기하는 것 입니다. 통계를 계산하면 평균을 말하면 axis = 0
각 열에 대한 통계를 얻을 수 있습니다. 따라서 각 관측치가 행이고 각 변수가 열에 있으면 각 변수의 평균을 얻게됩니다. 설정 axis = 1
하면 각 행에 대한 통계를 계산합니다. 이 예에서는 모든 변수에 대한 각 관측치의 평균을 얻습니다 (아마도 관련 측정 값의 평균을 원할 수도 있음).
axis = 0
: 열 기준 = 열 방향 = 행 따라
axis = 1
: 행별 = 행별 = 열 따라
답변
Wiki의 테이블을 보자. 이는 상위 10 개국의 2010 년부터 2019 년까지 GDP의 IMF 추정치입니다.
1. 축 1은 모든 열의 각 행에 대해 작동
합니다. 10 년 (2010-2019) 동안 각 국가의 평균 (평균) GDP를 계산하려면을 수행해야합니다 df.mean(axis=1)
. 예를 들어 2010 년부터 2019 년까지 미국의 평균 GDP를 계산하려면df.loc['United States','2010':'2019'].mean(axis=1)
2. 축 0은 모든 행의 각 열에 대해 작동
합니다. 모든 국가의 EACH 연도에 대한 평균 (평균) GDP를 계산하려면 다음을 수행해야합니다 df.mean(axis=0)
. 예를 들어 미국, 중국, 일본, 독일 및 인도의 2015 년 평균 GDP를 계산하려는 경우 df.loc['United States':'India','2015'].mean(axis=0)
참고 : 위 코드는 ‘국가 (또는 종속 지역)’열을 색인으로 설정 한 후에 만 작동합니다. set_index
방법.
답변
프로그래밍 관점에서 축은 모양 튜플의 위치입니다. 예를 들면 다음과 같습니다.
import numpy as np
a=np.arange(120).reshape(2,3,4,5)
a.shape
Out[3]: (2, 3, 4, 5)
np.sum(a,axis=0).shape
Out[4]: (3, 4, 5)
np.sum(a,axis=1).shape
Out[5]: (2, 4, 5)
np.sum(a,axis=2).shape
Out[6]: (2, 3, 5)
np.sum(a,axis=3).shape
Out[7]: (2, 3, 4)
축의 평균은 해당 치수가 제거되도록합니다.
원래의 질문을 참조하면, dff 모양은 (1,2)입니다. axis = 1을 사용하면 모양이 (1,)으로 변경됩니다.