English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Pandas 인덱스 및 데이터 질문

Pandas 인덱스와 데이터 쿼리의 작업 예제

이 장에서는 날짜를 슬라이싱하고 쪼개고 Pandas 객체의 부분 집합을 얻는 방법에 대해 논의할 것입니다.
Python과 NumPy 인덱스 연산자 "[]"와 속성 연산자 ".". Pandas 데이터 구조에 빠르게 쉽게 접근할 수 있습니다. 그러나 접근할 데이터 유형을 미리 알 수 없기 때문에 표준 연산자를 직접 사용하는 것은 일부 최적화 제한이 있습니다. 생산 코드에서는 이 장에서 소개된 최적화된 Pandas 데이터 접근 방법을 사용하는 것이 좋습니다.
Pandas는 다중 축 인덱스의 세 가지 유형을 지원합니다. 아래 표에서 세 가지 유형이 언급되었습니다.-

인덱스설명
.loc()라벨 기반
.iloc()정수 기반
.ix()라벨과 정수 기반

.loc()

Pandas는 라벨 기반으로 pure index를 가지는 여러 가지 방법을 제공합니다. 슬라이싱 시에는 시작 경계도 포함됩니다. 정수는 표시자가 아니라 위치를 참조합니다.

.loc() 다양한 접근 방법을 가지고 있습니다. 예를 들어:

단일 태그 태그 목록 스ライ스 객체 부울 배열

loc 두 개의 단일/리스트/쉼표로 구분된 범위 연산자. 첫 번째는 행을, 두 번째는 열을 지시합니다.

사례 1

# pandas 라이브러리 가져오기 및 별명 지정 pd
 import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(8, 4),
 index = ['a','b','c','d','e','f','g','h'], columns = ['A', 'B', 'C', 'D'])
 # 특정 열의 모든 행 선택
 print(df.loc[:,'A'])

실행 결과:

  a   0.391548
b  -0.070649
c  -0.317212
d  -2.162406
e   2.202797
f   0.613709
g   1.050559
h   1.122680
이름: A, 데이터 타입: float64

예시 2

   
 import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(8, 4),
 index = ['a','b','c','d','e','f','g','h'], columns = ['A', 'B', 'C', 'D'])
 # 여러 열의 모든 행 선택, 예를 들어 list[]
 print(df.loc[:,['A','C']])

실행 결과:

          A           C
a    0.391548    0.745623
b   -0.070649    1.620406
c   -0.317212    1.448365
d   -2.162406   -0.873557
e    2.202797    0.528067
f    0.613709    0.286414
g    1.050559    0.216526
h    1.122680   -1.621420

예시 3

# pandas 라이브러리 가져오기 및 별명 지정 pd
 import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(8, 4),
 index = ['a','b','c','d','e','f','g','h'], columns = ['A', 'B', 'C', 'D'])
 # 여러 열의 몇 행 선택, 예를 들어 list[]
 print(df.loc[['a','b','f','h'],['A','C']])

실행 결과:

         A          C
a   0.391548   0.745623
b  -0.070649   1.620406
f   0.613709   0.286414
h   1.122680  -1.621420

예시 4

# pandas 라이브러리 가져오기 및 별명 지정 pd
 import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(8, 4),
 index = ['a','b','c','d','e','f','g','h'], columns = ['A', 'B', 'C', 'D'])
 # 모든 열의 행 범위 선택
 print(df.loc['a':'h'])

실행 결과:

          A           B          C          D
a    0.391548   -0.224297   0.745623   0.054301
b   -0.070649   -0.880130   1.620406   1.419743
c   -0.317212   -1.929698   1.448365   0.616899
d   -2.162406    0.614256  -0.873557   1.093958
e    2.202797   -2.315915   0.528067   0.612482
f    0.613709   -0.157674   0.286414  -0.500517
g    1.050559   -2.272099   0.216526   0.928449
h    1.122680    0.324368  -1.621420  -0.741470

예시 5

# pandas 라이브러리 가져오기 및 별명 지정 pd
 import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(8, 4),
 index = ['a','b','c','d','e','f','g','h'], columns = ['A', 'B', 'C', 'D'])
 # 부울 배열을 사용하여 값을 가져오기 위해
 print(df.loc['a']>0)

실행 결과:

   A  False
 B  True
 C  False
 D  False
 Name: a, dtype: bool

.iloc()

Pandas는纯粹한 정수 인덱스를 얻기 위해 여러 가지 방법을 제공합니다. Python과 NumPy와 마찬가지로, 모두 0을 기반으로 합니다.
다양한 접근 방법은 다음과 같습니다:

정수 정수 목록 값 범위

예시1

# pandas 라이브러리 가져오기 및 별명 지정 pd
 import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(8, 4), 컬럼 = ['A', 'B', 'C', 'D'])
 # 특정 열의 모든 행 선택
 print(df.iloc[:4)

실행 결과:

         A          B           C           D
0   0.699435   0.256239   -1.270702   -0.645195
1  -0.685354   0.890791   -0.813012    0.631615
2  -0.783192  -0.531378    0.025070    0.230806
3   0.539042  -1.284314    0.826977   -0.026251

예시 2

import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(8, 4), 컬럼 = ['A', 'B', 'C', 'D'])
 # 정수 슬라이싱
 print(df.iloc[:4]
 print(df.iloc[1:5, 2:4)

실행 결과:

         A          B           C           D
0   0.699435   0.256239   -1.270702   -0.645195
1  -0.685354   0.890791   -0.813012    0.631615
2  -0.783192  -0.531378    0.025070    0.230806
3   0.539042  -1.284314    0.826977   -0.026251
           C          D
1  -0.813012   0.631615
2   0.025070   0.230806
3   0.826977  -0.026251
4   1.423332   1.130568

예시 3

import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(8, 4), 컬럼 = ['A', 'B', 'C', 'D'])
 # 값 목록 슬라이싱
 print(df.iloc[[1, 3, 5], [1, 3]
 print(df.iloc[1:3, :])
 print(df.iloc[:1:3)

실행 결과:

         B           D
1   0.890791    0.631615
3  -1.284314   -0.026251
5  -0.512888   -0.518930
           A           B           C           D
1  -0.685354    0.890791   -0.813012    0.631615
2  -0.783192   -0.531378    0.025070    0.230806
           B           C
0   0.256239   -1.270702
1   0.890791   -0.813012
2  -0.531378    0.025070
3  -1.284314    0.826977
4  -0.460729    1.423332
5  -0.512888    0.581409
6  -1.204853    0.098060
7  -0.947857    0.641358

.ix()

Pure label과 integer 기반 방법 외에도, Pandas는 .ix() 연산자를 사용하여 선택하고 서브셋 객체를 선택하는 데 사용할 수 있는 복합 방법을 제공합니다.

예시 1

import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(8, 4), 컬럼 = ['A', 'B', 'C', 'D'])
 # 정수 슬라이싱
 print(df.ix[:4)

실행 결과:

         A          B           C           D
0   0.699435   0.256239   -1.270702   -0.645195
1  -0.685354   0.890791   -0.813012    0.631615
2  -0.783192  -0.531378    0.025070    0.230806
3   0.539042  -1.284314    0.826977   -0.026251

예시 2

import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(8, 4), 컬럼 = ['A', 'B', 'C', 'D'])
 # 인덱스 슬라이싱
 print(df.ix[:,'A'])

실행 결과:

  0   0.699435
1  -0.685354
2  -0.783192
3   0.539042
4  -1.044209
5  -1.415411
6   1.062095
7   0.994204
이름: A, 데이터 타입: float64

기호 사용

Pandas 객체에서 값을 다轴 인덱스를 사용하여 가져오는 것은 다음 기호를 사용합니다:

객체인덱서반환 타입
Seriess.loc[indexer]스칼라 값
DataFramedf.loc[row_index,col_index]Series 객체
Panelp.loc[item_index,major_index, minor_index]p.loc[item_index,major_index, minor_index]

.iloc()와 .ix()는 동일한 인덱스 옵션과 반환 값을 사용합니다.

우리는 DataFrame 객체에 대해 어떻게 각 작업을 수행하는지 살펴보겠습니다. 기본 인덱스 연산자 '[]'를 사용하겠습니다.-

예시 1

import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(8, 4), 컬럼 = ['A', 'B', 'C', 'D'])
 print(df['A'])

실행 결과:

  0  -0.478893
1   0.391931
2   0.336825
3  -1.055102
4  -0.165218
5  -0.328641
6   0.567721
7  -0.759399
이름: A, 데이터 타입: float64

값 목록을 []에 전달하여 해당 열을 선택할 수 있습니다.

예시 2

import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(8, 4), 컬럼 = ['A', 'B', 'C', 'D'])
 print(df[['A','B']])

실행 결과:

         A           B
0  -0.478893   -0.606311
1   0.391931   -0.949025
2   0.336825    0.093717
3  -1.055102   -0.012944
4  -0.165218    1.550310
5  -0.328641   -0.226363
6   0.567721   -0.312585
7  -0.759399   -0.372696

예시 3

import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(8, 4), 컬럼 = ['A', 'B', 'C', 'D'])
 print(df[2:2)

실행 결과:

   컬럼: [A, B, 'C', 'D]
 인덱스: []

속성 접근

속성 연산자 "."를 사용하여 열을 선택할 수 있습니다.

예시

import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(8, 4), 컬럼 = ['A', 'B', 'C', 'D'])
 print(df.A)

실행 결과:

  0   -0.478893
1    0.391931
2    0.336825
3   -1.055102
4   -0.165218
5   -0.328641
6    0.567721
7   -0.759399
이름: A, 데이터 타입: float64