PYTHON

데이터 전처리를 위한 판다스(Pandas) - 데이터 조회

selenaass 2024. 12. 24. 00:30

1. 데이터 확인

1-1 데이터 조회

head () 앞 부분 

tail () 뒷 부분 조회 

해당 함수들로 가장 앞과 뒤의 데이터를 원하는 갯수만큼 확인할 수 있음. 갯수를 지정하지 않을 경우 default옵션으로 5개부터 조회된다. 

df.head(3) #앞의 3개의 행 조회
df.tail(3) #뒤의 3개의 행 조회

1-2 컬럼 정보 확인

info ()

컬럼별로 정보를 확인하고자 할 때 사용(인덱스, 컬럼명, 컬럼의 데이터 개수, 데이터 타입, null값 확인) 

 

 

value_counts() 

column 별 값의 분포를 확인할 때 사용

df['column'].value_counts()

 

1-3 데이터프레임 속성 확인

 

- Index: 데이터프레임 또는 시리즈의 각 행 또는 각 요소에 대한 식별자  

- dtypes: 컬럼별로 데이터 속성을 확인하고자 할 때 활용

- columns: 데이터 프레임의 열을 나타냄. 

1. 고유한 이름을 가지고 있고, 해당 컬럼의 데이터를 식별하는데 사용

2. 특정한 종류의 데이터를 담고 있고 숫자, 문자열, 날짜 등 다양한 유형의 데이터를 포함할 수 있음 

3. 시리즈 객체로 구성되어 있으며, 시리즈는 동일한 데이터 유형을 가진 1차원 배열과 유사함 

4. 데이터프레임의 일부로 간주되며, 해당 열의 데이터를 조작하고 접근할 수 있는 인터페이스를 제공

 

 

2. 데이터 합치기

 

2-1 Concat

- 2개 이상의 DataFrame을 행 혹은 열 방향으로 연결

 

2-2 Merge 

- 2개의 DataFrame은 특정 Key를 기준으로 병합할 때 활용하는 메서드이다. 

 

2-3 Rename()

컬럼명을 딕셔너리 형태로 입력하여, 컬럼명 변경

 

 

 

2. 데이터 조건 필터, 정렬, 변경

2-1 데이터 조회

- iloc는 정수 기반의 인덱스를 사용, loc는 레이블 기반의 인덱스를 사용

 

(1) iloc인덱스 번호로 선택하기 

#Indexing
df.iloc[1, 3] # 35.0

# Fancy Indexing
df.iloc[[0, 3, 4], [0, 1, 5, 6]]

# Slicing
df.iloc[:3, :5]

 

 

(2) loc 이름으로 선택하기

인덱스 번호가 아니라, 특정 문자일 경우

data.loc['행이름', '컬럼명']

# Indexing
df.loc[5, 'class']

# Fancy Indexing
df.loc[2:5, ['age', 'fare', 'who']]

# 한 개의 컬럼 전체를 선택. 리스트 슬라이싱을 활용
df.loc[:6, 'class':'deck']

 

(3) loc - 조건필터

- boolean indexing을 만들어 조건에 맞는 데이터만 추출

cond = (df['age'] >= 70)
cond # True/False로 결과값 

df.loc[cond] #True인 행만 필터링

# 나이 컬럼만 가져오기
df.loc[cond, 'age']

#조건 필터 후 원하는 값을 대입 가능
df.loc[cond, 'age'] = -1

 

 

(4) loc - 다중조건

# 조건1 정의
cond1 = (df['fare'] > 30)

# 조건2 정의
cond2 = (df['who'] == 'woman')

df.loc[cond1 & cond2]
df.loc[cond1 | cond2]

 

(5) isin() 

시리즈나 데이터프레임의 값들 중에서 특정 값이나 리스트 안에 포함된 값들을 찾아내는 메소드. 

sample = pd.DataFrame({'name': ['kim', 'lee', 'park', 'choi'], 
                        'age': [24, 27, 34, 19]
                      })

sample['name'].isin(['kim', 'lee']) # True/False 칼럼

condition = sample['name'].isin(['kim', 'lee'])
sample.loc[condition]

 

 

(6) select_dtypes() 

열에 포함된 데이터들을 type 기준으로 인덱싱함. 
select_dtypes(include=None, exclude=None) 형태를 가지며, include에 넣은값을 포함하고
exclude에 넣은 값을 제외한 columns(열)을 DaraFrame 형태로 반환한다. 

# include 사용
df.select_dtypes(include=[float,bool])

# exclude 사용
df.select_dtypes(exclude=['int64'])

# 혼합 사용
df.select_dtypes(include =[float,object], exclude=['int64'])