
[Pandas 활용해 데이터 전처리]
1️⃣ int64, int32 | 정수형 데이터 (64비트 or 32비트)
2️⃣ float64, float32 | 부동 소수점 수 (64비트 또는 32비트)
3️⃣ object(string) | 문자열 데이터 (일반적으로 문자열)
4️⃣ bool | 불리언(참/거짓) 데이터
5️⃣ datetime64 | 날짜와 시간 데이터
6️⃣ timedelta64 | 시간 간격(두 날짜 또는 시간 사이의 차이) 데이터
7️⃣ category | 카테고리형 데이터 (제한된 고유 값으로 구성)
| 속성 | 메서드 |
|---|---|
| 클래스 안의 변수 또는 데이터 | 클래스 안의 함수 |
| 객체가 가지고 있는 특성(특징)/상태 | 객체가 할 수 있는 기능 |
| 명사 | 동사 |
| 괄호 사용 X | (괄호) 사용 O |
| 속성에 값 할당 가능 | 메서드에 값 할당 불가능 |
| → 파라미터(매개변수)에 값 할당 |
1️⃣ shape : 데이터 크기 확인 (행, 열)
# 출력 결과
(5, 4) # 5 by 4
2️⃣ columns : 컬럼명 확인, 전체 컬럼명 변경
# 컬럼명 확인 출력 결과
Index(['name', 'age', 'city', 'salary'], dtype='object')
# 전체 컬럼명 변경 (리스트 형태로)
df.columns = ['이름', '나이', '도시', '연봉']
print(df.columns.tolist())
3️⃣ index : 인덱스 정보 확인
# 출력 결과
RangeIndex(start=0, stop=5, step=1)
4️⃣ dtypes : 각 컬럼의 데이터 타입 확인
# 출력 결과
0
name object (=srting)
age int64
city object
salary int64
dtype: object
5️⃣ values : 데이터 NumPy 배열(array형식)로 추출
# 출력 결과
array([['김철수', 25, '서울', 3500],
['이영희', 30, '부산', 4200],
['박민수', 35, '대구', 3800],
['최지은', 28, '인천', 4100],
['정대한', 45, '광주', 5200]], dtype=object)
6️⃣ T : DataFrame을 전치(Transpose) (행과 열 전치)
# 출력 결과
0 1 2 3 4
name 김철수 이영희 박민수 최지은 정대한
age 25 30 35 28 45
city 서울 부산 대구 인천 광주
salary 3500 4200 3800 4100 5200
📍 메서드인 것 같지만 속성인 iloc[]와 loc[]
7️⃣ iloc[] : 정수 기반의 데이터 선택
⭐️ int(숫자값)이므로 여러 행 선택 시 끝은 미포함
df.iloc[행 , 열]
df.iloc[1:4, 0:2]
# 인덱스 1부터 3까지의 행, 0부터 1까지의 열 선택
8️⃣ loc[] : 레이블 기반의 데이터 선택
⭐️ 컬럼명(특정 문자)이므로 여러 행 선택해도 끝 포함
df.loc['행이름' , '컬럼명']
df.loc[0:4, ['Name', 'Age', 'Sex']]
# 인덱스 0부터 4까지의 행, 해당 컬럼(열) 선택
1️⃣ 데이터 조회 및 탐색
➖ head() : 데이터를 위에서부터 N개 행까지 보여줌
⭐️ (괄호) 안에 공백이면 상위 5개 확인
원하는 행 수만큼 확인하고 싶다면 숫자 지정
df.head(3)
➖ tail() : 데이터를 아래에서부터 N개 행까지 보여줌
⭐️ (괄호) 안에 공백이면 하위 5개 확인
원하는 행 수만큼 확인하고 싶다면 숫자 지정
df.tail(10)
➖ info() : 데이터의 각 컬럼별 기본 정보 확인
Ex. 인덱스, 컬럼명, 컬럼의 데이터 개수, 데이터 타입
⭐️ NULL 값 확인할 때에도 사용
df.info()
➖ describe() : 데이터의 기초 수학적 통계량 확인
Ex. 개수, 평균, 표준편차, 사분위, 중앙값
⭐️ 숫자값(int, float)에 대해서만 확인 가능
df.describe()
2️⃣ 데이터 타입 변경
➖ astype() : 데이터프레임 열의 데이터 타입 변경
⭐️ (괄호) 안에 바꿀 데이터 타입 입력
df.astype(int)
3️⃣ 데이터 결합 및 병합
➖ concat() : 데이터프레임을 위아래로 혹은 좌우로 연결
⭐️ 용어 정의
axis: 연결하고자 하는 축(방향) 지정
axis=0: 위아래로 연결 (기본값)
axis=1: 좌우로 연결
ignore_index: 연결된 결과 데이터프레임의 인덱스 유지 (기본값 False)
.reset_index(drop=True): True로 설정하면 새로운 인덱스 생성
# df1, df2 DataFrame 생성했다 가정
result_vertical = pd.concat([df1, df2], axis=0).reset_index(drop=True)
➖ merge() : 두 개 이상의 데이터프레임에서 공통된 열이나 인덱스를 기준으로 데이터 병합
⭐️ 주요 매개변수
# left_df, right_df DataFrame 생성했다 가정
merged_df = pd.merge(left_df, right_df, on='key', how='inner')
4️⃣ 조건에 따라 데이터 선택
➖ isin() : 원하는 조건에 해당하는 특정 값이나 리스트 안에 포함된 데이터 조회
⭐️ 여러 조건 필터링 시 and = & 사용, or = | 사용
result = df['A'].isin([2, 4])
# A열에서 2, 4 데이터 조회
5️⃣ 데이터 개수 조회
➖ value_counts() : 고유 값들의 개수 조회
"값이 각각 몇 번 나왔는지 세어주는 메서드”
⭐️ 결과는 Series 형태로 반환
print(titanic['Is_Adult'].value_counts())
6️⃣ 데이터 정렬
➖ sort_values() : 컬럼 기준으로 정렬
sorted_by_score = df.sort_values('Score')
sorted_by_score = df.sort_values('Score', ascending=False)
➖ sort_index() : 인덱스 기준으로 정렬
⭐️ ascending=True : 오름차순 (기본값) | ascending=False: 내림차순
sorted_by_index = df.sort_index()
sorted_by_index = df.sort_index(ascending=False)