[켜기] 판다 연구 노트 (B)의 데이터 선택

원본 : 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-022013-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: 결합 lociloc

'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
"""


MARSGGBO 원래


관심이 경우, 개인 스탬프를 환영합니다

이메일 : [email protected]


2019년 10월 30일 11시 6분 8초



추천

출처www.cnblogs.com/marsggbo/p/11764013.html