컬럼 이름을 바꿔주는 것은 여러가지 방법이 있다.
df = df.rename({'col one':'col_one', ...}, axis='columns')
이런 식으로 old name과 new name을 적어줄 수 있고
df.columns = ['col_one', 'col_two']
이런 식으로 overwrite 할 수도 있다
단순히 공백을 언더스코어로 바꿔주고 싶다면
df.columns = df.columns.str.replace(' ', '_')
이렇게 replace 메서드를 활용할 수도 있다. 세 방법 모두 같은 결과가 나온다
df.loc[::-1]
파이썬에서 리스트를 reverse 하는 것처럼 똑같이 가능하다
이 경우 index번호가 내림차순이 되면
df.loc[::-1].reset_index(drop=True)
reset_index를 활용해 기존 index를 drop하면서 다시 쓸 수 있다
df.loc[:, ::-1]
앞에 있는 콜론은 모든 행을 선택한다는 의미
뒤에 ::-1은 컬럼을 reverse한다는 의미.
제일 앞에(왼쪽) 있었던 컬럼이 제일 뒤로(오른쪽) 가게 된다.
df에서 특정한 data type의 컬럼만 뽑아내고 싶다면
df.select_dtypes(include='number') int, float 포함
select_dtypes를 활용하면 가능하다. 여러가지를 쓰고 싶으면 리스트 안에 하나하나 써주면 된다.
또한 include 뿐만 아니라 exclude 도 가능하다.
일반적인 경우
df.astype({'col_one':'float', 'col_two':...
를 활용해 가능하다. 하지만 0을 나타내려고 쓰인 '-'와 같은 것이 있다면 pandas가 이해하지 못한다. 이 경우에는 to_numeric 를 사용.
pd.to_numeric(df.col_three, errors='coerce')
invalid input은 NaN 으로 하겠다.
이후 .fillna(0)을 활용해 대체해줄 수 있음.
이 모든 걸 apply로 한번에 가능.
df = df.apply(pd.to_numeric, error='coerce').fillna(0)
엑셀 파일에 있는 데이터를 그대로 가져다 쓰고 싶다면?
df = pd.read_clipboard()
를 활용하면 가능하다.
index도 그대로 인식한다!
많은 데이터들 중에서 내가 원하는 조건에 맞는 것만 간추리고 싶다면?
movies[(movies.genre == 'Action' | (movies.genre == 'Drama') | ...
이렇게 or를 사용하는 것도 가능하지만
movies[movie.genre.isin(['Action', 'Drama', 'Western'])
이런 식으로 isin 메서드를 활용하면 더 간편하다.
이것들을 제외한 것만 보고 싶다면?
movies[~movie.genre.isin(['Action', 'Drama', 'Western'])
이렇게 앞에 ~(not)을 붙여 가능.
영화를 가장 많은 장르에 속한 것만 필터하고 싶다면
counts = movies.genre.value_counts()
하게 되면
Drama 278
Comedy 156 ...
쭈욱 나온다.
counts.nlargest(3).index
를 활용해 index를 뽑아낼 수 있고
movies[movies.genre.isin(counts.nlargest(3).index)]
이렇게 isin 메서드를 활용해 세 가지 장르에 속한 것만 볼 수 있다.
예를 들어 John Arthur Doe라는 하나의 name 컬럼을 세 개로 쪼개고 싶다면? 이 방법으로 가능하다.
df.name.str.split(' ', expand=True)
describe 메서드를 활용하면 df의 numeric한 요약정보를 볼 수 있음.
근데 너무 많아서 줄이고 싶다면?
df.decribe().loc['min':'max', 'Pclass':'Parch']
앞에 거는 행, 뒤에 거는 열.
describe하게 되면 count, mean부터.. min 25%.. 쭉 나옴.
pd.cut(titanic.Age, bins=[0, 18, 25, 99], labels=['child', 'young adult', 'adult'])
이렇게 cut 메서드를 이용해 연속적인 데이터를 범주 데이터로 바꿀 수 있다.
[출처] Youtube, Top 25 pandas tricks
멋쟁이