DDG 2023. 12. 20. 15:32

판다스를 하면서 특정 행만 추출을 하고싶을 때

 

df

df [1:3] 을하면 index 1,2가 나와서 Jenny와 Nate가 나오게 된다.

하지만 다시 df를 출력하면  3개의 행이 나오게 된다.

이유는 df를 바꿔주지 않았기 때문

df = df [1:3]를 하면 이제 df를 출력하면 2개의 행만 나온다.


❕ 불연속한 row를 추출하고싶다

슬라이싱은 연속된 데이터를 선택할 때 도움이 되는 기능이고

불 연속한 데이터를 원하면  loc를 사용한다.

loc = location이다.

사용법은 df.loc[ [0,2] ] 처럼 쓰면 된다.

df.loc[ [0,2] ]  = 0과 2를 추출


❕ DataFrame에 있는 데이터를 조건에 맞춰서 추출하고싶다!

그렇다면 조건을 추가해야한다.

df[ df.age >25 ] 처럼 조건을 안에 넣어주면 된다.

if 나이가 25 초과이고, nate인 사람을 찾고싶다?

df[ (df.age >25) & (df.name == 'nate')]   

하면된다.

 

iloc라는게 있는데 이는 행!을 조절할 수 있다. 

loc는 행은 조절 불가능


filter() 함수에 대해 알게되었다.

filter를 쓰면 조금 더 쉽게 된다.

df_fitered = df[  [ 'name' ,'age' ]  ]  <<< filter를 안 쓰면 이렇게 해야하지만

df.filter(items = ['name','age'])를 하면 동일한 결과를 얻게 된다.

filter() 안에는 items도 들어갈 수 있지만

SQL에서 사용한 것과 같이 like= 'a' 처럼 a로 시작하는 데이터를 찾을 수도 있고

regex = 'b'로 마지막에 b가 있는 것을 찾을 수도 있었다.


drop()함수를 쓰면  데이터를 삭제할 수 있다.

만일 values값이 아닌  Column을 삭제하려고 하면

drop( , axis = 1)을 해줘야한다.

axis =1이  column을 의미하는 것이기 때문이다.

또한 inplace =True라고 drop() 괄호안에 쓰면

재 할당을 안하고도 사용할 수 있다.

이 말은  df.drop(['John','Nate'],inplace =True)

df= df.drop(['John','Nate'])  두개가 같은 코드라는 것이다.

좀 더 간결해진다.

 


SQL에서 보던 문법을 보니 반가웠고

조건에 따른 행과 열을 추출하는 법을 알게되었다.

또한 프로젝트를 진행하면서

데이터 전처리를 하고 있는데 여러가지 찾아보면서

배우고 있는중이다. 어렵다