Data Analysis/pandas

Pandas loc을 이용한 행 & 열 필터링

Y0un9Ki 2024. 2. 19. 01:28
  • 오늘은 pandas의 사용을 배웠다. 기본적인 메서드와 여러가지의 조건문, 메서드를 배웠다. 기본적인 문법 형태나 메서드가 Numpy와 유사했으며 파이썬과 같이 인덱싱과 슬라이싱이 비슷했다.
  • 느낀점은 매개변수 자리에 리스트 값으로 들어가는 경우가 많았다.
  • 강사님이 오늘 내주신 주제에 대해 알아보려고 한다. pandas.DataFrame.loc와 pandas.DataFrame.iloc 메서드의 차이점을 보자. 이 메서드는 기본적으로 열추출 또는 행추출을 할 수 있는 아주 훌륭한 메서드이다.

들어가기 앞서 기본적인 행추출(=행선택)을 하는 방법이있다.

  • Slicing(슬라이싱)과 동일한 문법으로 추출 가능
  • 이와 같은 데이터가 있을 때

  • 파이썬의 슬라이싱과 같이 행을 추출, 선택 할 수 있다.
  • 다음에 열을 추출하려면 어떻게 해야 되는지를 궁금해 할수도 있는데 알아보러 가보자.

pandas.DataFrame.loc와 pandas.DataFrame.iloc의 차이

loc와 iloc의 차이점을 잘 알아두자!!!!!

  • loc에서 l은 Label의 약자이다.

  • iloc에서 i는 Index의 약자이다.

pandas.DataFrame.loc의 사용(행 추출, 열 추출)

  • 기본적인 pandas.DataFrame.loc 매커니즘이다.
  • 이것으로 원하는 행과 열을 추출 또는 선택 할수있게 된다. (매우중요!!!!)
# df_KTX.loc[행조건식, [열(column)명]]
# sepal_length의 길이가 5츠 이상인 것만 조회
iris.loc[iris['sepal_length']>=7, :]

# df_KTX.loc[행조건식, [열(column)명]] 같이 행조건식이 먼저 들어가고, 
열조건식에 여러가지의 조건들이 들어갈수있게 된다.

여기서 주목해야 할 점!

  • 이 메서드는 다중 조건을 포함 할 수 있는데 , 그때에는 지켜야 할점 들이 있다.
  • 기초적으로 다중 조건이라 함은 &(AND) 와 |(OR)이 존재한다.
Error 코드
# (3)tip의 평균보다 크면서, time이 Dinner인 데이터만 조회
avg_tip=tips['tip'].mean()
avg_tip

tips.loc[
    tips['tip'] > avg_tip & tips['time'] == 'Dinner', :
]
  • 이것은 오류가 뜬 코드이다. 여기서 왜 틀렸을까? 를 생각했는데 파이썬에서는 이방식을 쓰기에 그대로 적용이 될줄 알았다. 답은 다음에 나온다.
정답코드!!!!!!!!!!!
avg_tip=tips['tip'].mean()
avg_tip

tips.loc[
    (tips['tip'] > avg_tip) & (tips['time'] == 'Dinner'), :
] 
  # ==> 다중조건문을 할 때에는 (조건1) & (조건2) 이렇게 써주어야 한다. ()로 꼭 감싸주어야 한다. 
  #     위에 예시를 봐도 다중조건일 때 각자의 조건에 ()을 안붙히면 error가 나온다.
  #     & AND조건, | OR조건 이다.
  • 위에 써놓은 것과 같이 다중 조건문을 들어가는 경우에는 위의 경우 행의 조건문에서 다중조건문이 들어가는 경우이다. 다중조건문에는 리스트로 감싸주어야 된다는 것을 알게 되었다.
  • 즉 다중 조건문에서는 각각의 조건을 ( )로 둘러싸주어야 한다.

pandas에서 행과 열을 추출하는 방법은 여러가지가 있다. 하지만 그것을 전부를 다 알 필요는 없고 지금 loc라는 메서드만 잘 사용할 줄 안다면 충분하기에 더 연습을 해보자!!