데이터 프레임(Data Frame)은 index, column, value로 이뤄진 데이터 타입으로 2차원 배열의 형태를 가지고 있다.
판다스의 데이터 프레임을 통해 알아볼 것은 다음과 같다.
- 딕셔너리를 사용한 생성(리스트 딕셔너리 -> 데이터 프레임)
- 리스트를 사용한 생성(딕셔너리 리스트 -> 데이터 프레임)
- 데이터 프레임 index 설정 1, 2
- 데이터 프레임 column, index 변경
- 데이터 프레임 row 추가, 수정, 선택, 삭제
- 데이터 프레임 column 추가, 수정, 선택, 삭제
- 데이터 프레임 타입 확인 및 수정
- 데이터 프레임 상위 데이터 출력, 하위 데이터 출력
다음은 주피터 노트북의 실습 코드와 결과 화면이다. 실습 코드의 실행 화면은 같은 블록 밑에서 확인할 수 있다.
# 리스트 딕셔너리 -> 데이터 프레임
data1 = [
{'name': 'righteous', 'email': 'righteous@gmail.com'},
{'name': 'olivevolcano', 'email': 'olivevolcano@naver.com'}
]
df1 = pd.DataFrame(data1)
print(df1)
name email
0 righteous righteous@gmail.com
1 olivevolcano olivevolcano@naver.com
위의 코드는 리스트 안에 딕셔너리를 만들어서 데이터 프레임을 생성하는 방법이다. 해당 방법은 row 별로 딕셔너리를 작성해준다.
# 딕셔너리 리스트 -> 데이터 프레임
data2 = {
'name': ['righteous', 'olivevolcano'],
'email': ['righteous@gmail.com', 'olivevolcano@naver.com']
}
df2 = pd.DataFrame(data2)
print(df2)
name email
0 righteous righteous@gmail.com
1 olivevolcano olivevolcano@naver.com
위의 코드는 딕셔너리 안에 리스트를 만들어서 데이터 프레임을 생성하는 방법이다. 해당 방법은 column 별로 리스트를 작성한다.
# 데이터 프레임 index 설정 1
df = pd.DataFrame(data2, index=['a', 'b'])
print(df)
name email
a righteous righteous@gmail.com
b olivevolcano olivevolcano@naver.com
위의 코드는 데이터 프레임을 설정하면서 index를 설정해주는 방법이다. index는 리스트로 작성해주어야 하고, data2의 index 개수와 같아야 한다.
# 데이터 프레임 index 설정 2
df = pd.DataFrame(data2, index=list('ab'))
print(df)
name email
a righteous righteous@gmail.com
b olivevolcano olivevolcano@naver.com
위의 코드는 데이터 프레임을 설정하면서 index를 설정해주는 방법이다.
# 데이터 프레임 column, index 변경
df.rename(columns={'name':'name2', 'email':'email2'}, inplace=True)
df.rename(index={'a': 'c', 'b': 'd'}, inplace=True)
print(df)
name2 email2
c righteous righteous@gmail.com
d olivevolcano olivevolcano@naver.com
위의 코드는 만들어진 데이터 프레임의 index와 column을 재설정해주는 방법이다. 해당 코드에서 inplace = True를 작성해주면 설정값이 원본 데이터에도 적용이 된다.
# 데이터 프레임 row 추가
df.loc['e'] = {'name2': 'dead_pp', 'email2':'deap_pp@nate.com'}
print(df)
name2 email2
c righteous righteous@gmail.com
d olivevolcano olivevolcano@naver.com
e dead_pp deap_pp@nate.com
위의 코드는 loc를 사용하여 row를 추가하는 방법이다. loc는 [행 인덱스, 열 이름]을 사용하여 원소를 선택하는 방법입니다. loc ['e']를 통해서 index 이름이 e인 row를 선택해준다. 해당 row에 값이 있다면 수정해주고, 값이 없다면 값을 새로 추가해준다.
# 데이터 프레임 row 수정
df.loc['d'] = {'name2': 'olivevolcano2', 'email2':'olivevolcano2@nate.com', 'id': 3.0}
print(df)
name2 email2
c righteous righteous@gmail.com
d olivevolcano2 olivevolcano2@nate.com
e dead_pp deap_pp@nate.com
위의 코드는 loc를 통해서 row를 수정하는 방법이다.
# 데이터 프레임 row 선택
df.loc['c']
name2 righteous
email2 righteous@gmail.com
Name: c, dtype: object
위의 코드는 loc를 통해서 row를 선택하는 방법이다.
# 데이터 프레임 row 삭제
df2 = df.drop('c')
print(df2)
name2 email2
d olivevolcano2 olivevolcano2@nate.com
e dead_pp deap_pp@nate.com
drop은 데이터 프레임에서 row, column의 데이터를 삭제할 때 사용하는 함수이다. row 삭제 방법은 drop(행 인덱스 또는 배열, axis=0) drop의 axis값의 디폴트 값은 0이다.
# 데이터 프레임 column 추가
df['id'] = 0
print(df)
name2 email2 id
c righteous righteous@gmail.com 0
d olivevolcano2 olivevolcano2@nate.com 0
e dead_pp deap_pp@nate.com 0
위의 코드는 데이터 프레임에 column을 추가하는 방법이다.
# 데이터 프레임 column 수정
df['id'] = range(1,4)
print(df)
name2 email2 id
c righteous righteous@gmail.com 1
d olivevolcano2 olivevolcano2@nate.com 2
e dead_pp deap_pp@nate.com 3
위의 코드는 데이터 프레임에 column을 수정하는 방법이다.
# 데이터 프레임 column 선택
df['name2']
c righteous
d olivevolcano2
e dead_pp
Name: name2, dtype: object
위의 코드는 데이터 프레임에 column을 선택하는 방법이다.
# 데이터 프레임 column 삭제
df2 = df.drop('id', axis=1)
print(df2)
name2 email2
c righteous righteous@gmail.com
d olivevolcano2 olivevolcano2@nate.com
e dead_pp deap_pp@nate.com
위의 코드는 데이터 프레임에 column을 삭제하는 방법이다. column 삭제 방법은 drop(열 이름 또는 배열, axis=1)이다.
# 데이터 프레임 타입 확인
df.dtypes
name2 object
email2 object
id int32
dtype: object
위의 코드는 데이터 프레임의 column들의 타입을 확인하는 방법이다.
# 데이터 프레임 타입 수정
df = df.astype({'id': 'float'})
df.dtypes
name2 object
email2 object
id float64
dtype: object
위의 코드는 데이터 프레임의 column의 타입을 수정하는 방법이다
# 상위 데이터 출력
print(df.head(2))
name2 email2 id
c righteous righteous@gmail.com 1.0
d olivevolcano2 olivevolcano2@nate.com 2.0
위의 코드는 상위 데이터를 출력하는 방법이다.
# 하위 데이터 출력
print(df.tail(2))
name2 email2 id
d olivevolcano2 olivevolcano2@nate.com 2.0
e dead_pp deap_pp@nate.com 3.0
위의 코드는 하위 데이터를 출력하는 방법이다.
원본 Github 주소: github.com/piaochung/ml_with_python
'Artificial Intelligence > Pandas Basics' 카테고리의 다른 글
[Pandas Basics] 시리즈가 뭐야? (0) | 2021.02.10 |
---|