원본 : HTTPS : 삭제가 //morvanzhou.github.io/tutorials/data-manipulation/np-pd/3-2-pd-indexing/
다음 예는 행렬 데이터에 기초는 6X4에 기초하여 설명한다
dates = pd.date_range('20130101', periods=6)
df = pd.DataFrame(np.arange(24).reshape((6,4)),index=dates, columns=['A','B','C','D'])
"""
A B C D
2013-01-01 0 1 2 3
2013-01-02 4 5 6 7
2013-01-03 8 9 10 11
2013-01-04 12 13 14 15
2013-01-05 16 17 18 19
2013-01-06 20 21 22 23
"""
간단한 검사
첨자 및 라벨 인덱스를 사용하여
우리는 데이터 DataFrame을 선택합니다, 우리는 그들이 동일한 목적을 달성 할 수있는 두 가지 방법에 대해 설명합니다 :
print(df['A'])
print(df.A)
"""
2013-01-01 0
2013-01-02 4
2013-01-03 8
2013-01-04 12
2013-01-05 16
2013-01-06 20
Freq: D, Name: A, dtype: int64
"""
선택 범위 여러 행 또는 열을 보자 :
print(df[0:3])
"""
A B C D
2013-01-01 0 1 2 3
2013-01-02 4 5 6 7
2013-01-03 8 9 10 11
"""
print(df['20130102':'20130104'])
"""
A B C D
2013-01-02 4 5 6 7
2013-01-03 8 9 10 11
2013-01-04 12 13 14 15
"""
df라고하면 [3 : 3] 빈 객체가 될 것입니다. 어떤 선택 두 개의 태그를 포함하여 태그 사이의 데이터 등을.2013-01-02
2013-01-04
또한 실험에서, 나는 시도 df['2013-01-04']
하고 df['20130104']
오류가 발생하지 오류 메시지가이 두 가지 핵심이 아니다. 다음과 같이 그래서 더 실험 수행
df2 = pd.DataFrame([[0,1],[2,3]],index=['a','b'], columns=['b','a'])
print(df2)
"""
b a
a 0 1
b 2 3
"""
- 실험 1
print(df2.a)
"""
a 1
b 3
Name: a, dtype: int64
"""
print(df2['b'])
"""
a 0
b 2
Name: b, dtype: int64
"""
당신이 볼 수있는이 방법은 열 요소를 얻는 것입니다.
- 실험 2
print(df2['a':])
"""
b a
a 0 1
b 2 3
"""
print(df2['b':])
"""
b a
b 2 3
"""
우리는 사용을 볼 수 :
행 요소를 얻을 수있는이 방법의를 .
물론, 레이블 이름의 사용은 또한 당신이 레이블로 시작하는 범위를 지정 할 수 없을 것입니다, 아주 명백한 단점은 두 개의 레이블이있을 경우 동일 있다는 것입니다가, 분명히 방법 많은 문제의 범위를 지정합니다. 그래서 우리는 또한이 예에서 지정된 범위 수치, 예를 들어 일 수 df[1:]
에 해당 df['b':]
.
이러한 두 가지 방법 또한 일부 차이가있다, 당신이 번호를 사용하는 경우 레이블을 선택한다면, 더 잘 이해하기 위해 예를 살펴 반면 마지막 요소는, 당신이 선택할 않을 것입니다 :
- 실험 3
print(df2['a':'b'])
"""
b a
a 0 1
b 2 3
"""
print(df2[0:1])
"""
b a
a 0 1
"""
조금 혼동 될 수 있습니다 당신 위에서 설명한 방법을 읽고, 그래서 나는 위의 색인 방법을 권장하지 않습니다. 당신은 데이터를 여러 가지 방법을 다음과 필터링을 참조 할 수 있습니다.
라벨에 따르면 loc
우리는 할 수 태그를 사용 하여 데이터를 선택하는 loc
그 어떤 경우에는 더 이상 인덱스 번호를 사용할 수 없습니다 말을하는 것입니다. 또는 행을 선택하거나, 모든 행에 태그 명을 선택하여이 본선 데이터의 예로는 (모든 라인을 나타냄) 및 상기 하나 이상의 열 데이터를 선택한다. :
print(df.loc['20130102'])
"""
A 4
B 5
C 6
D 7
Name: 2013-01-02 00:00:00, dtype: int64
"""
print(df.loc[:,['A','B']])
"""
A B
2013-01-01 0 1
2013-01-02 4 5
2013-01-03 8 9
2013-01-04 12 13
2013-01-05 16 17
2013-01-06 20 21
"""
print(df.loc['20130102',['A','B']])
"""
A 4
B 5
Name: 2013-01-02 00:00:00, dtype: int64
"""
순서에 따라 iloc
또, 수 의 선택 위치에 사용 : iloc
위치 우리는 예를 들면, 어느 하나로부터 선택되는, 연속 동작 선택된 은행 간에서 선택되는 각각의 경우에 필요한 데이터를 선택할 수있는.
print(df.iloc[3,1])
# 13
print(df.iloc[3:5,1:3])
"""
B C
2013-01-04 13 14
2013-01-05 17 18
"""
print(df.iloc[[1,3,5],1:3])
"""
B C
2013-01-02 5 6
2013-01-04 13 14
2013-01-06 21 22
"""
여기에서는, 예를 들면, 어느 하나로부터 선택되거나 선택 은행 간 연속 운전 중에서 선택된 위치에 의해 각각의 경우에 필요한 데이터를 선택할 수있다.
ix
: 결합 loc
과iloc
'A'및 이들의 'C', 및 선택된 데이터의 세 개의 행을 선택하는 물론, 우리는 혼합 IX를 선택할 수있다.
print(df.ix[:3,['A','C']])
"""
A C
2013-01-01 0 2
2013-01-02 4 6
2013-01-03 8 10
"""
검사의 판단으로
마지막으로, 우리가 결정 명령 (부울 색인)를 사용하도록 선택할 수 있습니다. 우리는 제약 및 현재의 모든 데이터의 조건을 선택할 수 있습니다.
print(df[df.A>8])
"""
A B C D
2013-01-04 12 13 14 15
2013-01-05 16 17 18 19
2013-01-06 20 21 22 23
"""