csmoon1010의 SW 블로그

[200712] Pandas 기초 공부 _ 행, 열 다루기 본문

데이터&인공지능/데이터분석(Python)

[200712] Pandas 기초 공부 _ 행, 열 다루기

csmoon1010 2020. 7. 12. 23:33

인프런의 Pandas 데이터 분석 기초 강의를 참고하여 정리하였다.

https://www.inflearn.com/course/pandas-%ED%8C%AC%EB%8D%94%EC%8A%A4-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B6%84%EC%84%9D-%EA%B8%B0%EC%B4%88

 

1. 데이터프레임 행, 열 선택 및 필터하기

1) 행 선택하기

(1) row index를 이용

: df.loc[ ] 이용!

#연속적인 경우
df[1:3]

#불연속적인 경우
df.loc[[0, 2]]

(2) 컬럼의 condition에 따라 row 선택

#query 메소드 이용
df.query('age > 25')

#조건이 여러개인 경우(&, ㅣ)
df[ (df.age > 25) & (df.name == 'Nate') ]

 

2) 열 선택하기

(1) index 이용(df.iloc[ ])

#df.iloc[row, column]
df.iloc[:, 0:2]

(2) column name 이용

df.filter( ) 이용

df_filtered = df[['name', 'age']]
df.filter(items=['name', 'age'])

#like, regex 옵션 (column의 축 axis는 1로!!)
df.filter(like = 'a', axis = 1)
df.filter(regex = 'b$', axis = 1)

 

2. 데이터프레임 행, 열 삭제하기

df.drop( ) 이용하기

1) 행 삭제하기

#row id를 통해 삭제
df.drop(['John', 'Nate'])
df.drop(df.index[[0, 2]])

#삭제를 바로 반영(inplace)
df.drop(['John', 'Nate'], inplace = True)

#조건에 따라 삭제 = 조건에 따라 filtering
df[df.age > 20]

2) 열 삭제하기

#열 이름으로 삭제하기(axis = 1)
df.drop('age', axis = 1)

#삭제 바로 반영하기(inplace)
df.drop('age', axis = 1, inplace = True)

 

3. 데이터 프레임 행, 열 생성 및 수정하기

1) 열 추가

(1) 기본 : 리스트 인덱스 요소 쓰듯이

# 열 추가(모두 같은 값으로)
df['salary'] = 0

(2) Numpy를 이용해 조건에 따라 추가

import numpy as np
df['salary'] = np.where(df['job'] != 'student', 'yes', 'no')
df.head()

(3) 함수 형성 후 apply를 통해 적용

# pass or fail
def pass_or_fail(row):
    if row != 'F':
        return 'Pass'
    else:
        return 'Fail'

df.grade = df.grade.apply(pass_or_fail)

# 연도가 뽑아내기
def extract_year(row):
    return row.split('-')[0]
df['year'] = df['yyyy-mm-dd'].apply(extract_year)

2) 행 추가

: 두 개의 dataframe의 구경꾼 역할. 

- final 연도 : ignore_index = True 

df2 = pd.DataFrame([
    ['Nate', 50, 50]
], columns = ['name', 'midterm', 'final'])

df.append(df2, ignore_index = True)
Comments