pandas에는 다양한 데이터 추출 및 삭제하는 함수와 기법이 존재한다.
설명에 사용할 데이터는 아래와 같다.
import pandas as pd
raw_data = {'first_name':['Jason', 'Molly', 'Tina', 'Jake','Amy', 'Coner'],
'last_name':['Miller', 'Jacobson', 'Ali', 'Milner', 'Cooze', 'Garden'],
'age':[42,52,36,24,73, 28],
'city':['San Francisco', 'Baltimore', 'Miami', 'Douglas', 'Boston', 'Califonia']}
df = pd.DataFrame(raw_data)
df
>
- .head(n): 처음 n개의 데이터 추출, 기본값 = 5
- .tail(n): / 마지막 n개의 데이터 추출, 기본값=5
df.head()
>
- .T: 전치행렬로, 행과 열 바꿔서 데이터 추출
df.T
>
- df[["열이름1", "열이름2",...]]: 특정 열의 데이터를 DataFrame객체로 추출
- df["열이름"]: 열이름을 하나만 지정하려면 []하나만 쓰고, Series객체로 추출
type(df['age'])
>pandas.core.series.Series
type(df[['age']])
>pandas.core.frame.DataFrame
- df[index]: index열의 값을 기준으로 데이터를 추출하여 [행, 열]과 같이 쓰지는 못한다.
df[1, 2]
>~~~KeyError: (1, 2)
- df[["열이름1", "열이름2",...]][index]: 행과 열 모두 사용하여 데이터 추출
df[['age', 'city']][:2]
>
- 특정 열 값을 인덱스 값으로 변경
df.index = df["열이름"]: index열을 '열이름'의 열로 바꿈
del df["열이름"]: '열이름'의 열 삭제
*이때 원본 데이터가 바뀌므로 주의!
df.index = df['age']
del df['age']
df
>
(아래 예시들의 df는 index를 바꾸고 age열을 삭제하기전의 df를 사용한다.)
- df.loc[[index], [열이름]]: [행, 열]로 데이터를 추출한다고 생각하면 된다. 이때 index범위로 추출하려면 []를 쓰지 않고 slicing하면 된다. --> ex) df.loc[index:, [열이름]]
df.loc[3:, ['city', 'age']]
>
df.loc[[3], ['city', 'age']]
>
- df.iloc[행, 열]: (0부터 시작하는)행과 열 위치값으로 데이터 추출하는데, 이때 index와 열 이름은 행과 열에 포함되지 않는다!
df.iloc[:, :2]
>
열 이름과 index를 포함하지 않는 인덱스 값으로 추출하며 slicing도 가능해서
머신러닝에서 필요한 feature값을 추출하거나 가중치값을 추출할때 자주 쓰인다.
- .reset_index(): 새로운 index 할당된 객체 생성
df.reset_index()
>
- 행 제거: .drop(index): 해당 index를 삭제한 새로운 객체를 생성한다. 원본 데이터를 바꾸려면 매개변수 inplace=True로 설정하면 되는데, 이 방법은 pandas객체의 공통적인 특징이다.
df.drop(2, inplace=True)
>
(아래의 예시들은 원본 데이터에 영향을 끼치지 않은 것으로 사용한다.)
- 열 제거: 매개변수로 axis=1 추가
.drop("열이름", axis=1): 한개의 열만 제거
.drop(["열이름1", "열이름2",...], axis=1): 여러개의 열 제거
마찬가지로 원본 데이터에 변화가 적용되려면 inplace=True로 설정해주면 된다.
df.drop('age', axis=1)
>
df.drop(['first_name', 'last_name'], axis=1)
>
'pandas' 카테고리의 다른 글
groupby( ) (0) | 2022.04.02 |
---|---|
DataFrame객체 (0) | 2022.03.30 |
Series객체 (0) | 2022.03.30 |