팬더의 축은 무엇을 의미합니까? | +————+———+——— |

데이터 프레임을 생성하는 코드는 다음과 같습니다.

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과 같은 말을하지만 내면에서 편하게하는 방법입니다.


답변

시각화 해 봅시다 (항상 기억할 것입니다).
여기에 이미지 설명을 입력하십시오

팬더에서 :

  1. 축 = 0은 “인덱스”를 의미합니다. 그것은 A의 행 방향으로 작동 .

dataframe1 및 dataframe2에서 concat () 연산을 수행하기 위해 dataframe1을 가져와 dataframe1에서 첫 번째 행을 가져 와서 새 DF에 넣은 다음 dataframe1에서 다른 행을 가져 와서 새 DF에 넣을 때 까지이 프로세스를 반복한다고 가정합니다. 우리는 dataframe1의 맨 아래에 도달합니다. 그런 다음 dataframe2에 대해서도 동일한 프로세스를 수행합니다.

기본적으로 dataframe1 위에 dataframe2를 쌓거나 그 반대로도 가능합니다.

예를 들어 테이블이나 바닥에 책 더미 만들기

  1. axis = 1은 “열”을 의미합니다. 그것은 A의 열 현명한 동작.

dataframe1 및 dataframe2에서 concat () 연산을 수행하기 위해 dataframe1의 첫 번째 완전한 열 (일명 1 차 시리즈)을 꺼내고 새로운 DF에 배치 한 다음 dataframe1의 두 번째 열을 꺼내서 옆에 유지합니다 (가로) ) , 모든 열이 완료 될 때까지이 작업을 반복해야합니다. 그런 다음 dataframe2에서 동일한 프로세스를 반복합니다. 기본적으로
데이터 프레임 2를 옆으로 쌓아 놓습니다.

예를 들어 책장에 책을 정리합니다.

배열은 행렬과 비교하여 중첩 된 n 차원 구조를 나타내는 더 나은 표현이기 때문에 더 중요합니다! 따라서 아래에서 둘 이상의 차원으로 일반화 할 때 축이 중요한 역할을 수행하는 방법을 더 많이 시각화 할 수 있습니다. 또한 실제로는 n-dim 배열을 인쇄 / 쓰기 / 그리기 / 시각화 할 수 있지만 3 차원 이상의 용지에서는 행렬 표현 (3 차원)으로 동일하게 쓰거나 시각화 할 수 없습니다.

여기에 이미지 설명을 입력하십시오


답변

axispd.DataFrames 의 경우 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,)으로 변경됩니다.