[내일배움캠프] 데이터 전처리 & 시각화 기초 (3)

셔닝🧸·2025년 6월 11일
0
post-thumbnail

오늘의 학습

[Pandas 활용해 데이터 전처리]

  1. 데이터 타입
  2. 속성 VS 메서드 차이점
  3. 속성
  4. 메서드

  1. 데이터 타입

1️⃣ int64, int32 | 정수형 데이터 (64비트 or 32비트)
2️⃣ float64, float32 | 부동 소수점 수 (64비트 또는 32비트)
3️⃣ object(string) | 문자열 데이터 (일반적으로 문자열)
4️⃣ bool | 불리언(참/거짓) 데이터
5️⃣ datetime64 | 날짜와 시간 데이터
6️⃣ timedelta64 | 시간 간격(두 날짜 또는 시간 사이의 차이) 데이터
7️⃣ category | 카테고리형 데이터 (제한된 고유 값으로 구성)


  1. 속성 VS 메서드 차이점
속성메서드
클래스 안의 변수 또는 데이터클래스 안의 함수
객체가 가지고 있는 특성(특징)/상태객체가 할 수 있는 기능
명사동사
괄호 사용 X(괄호) 사용 O
속성에 값 할당 가능메서드에 값 할당 불가능
→ 파라미터(매개변수)에 값 할당

  1. 속성

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. 메서드

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 & right: 병합되는 기준
  • how: 공통된 열 기준으로 'inner'(교집합), 'outer(합집합)’, 왼쪽 df 기준 'left', 오른쪽 df 기준 'right' 등의 옵션 O
  • on: 병합 기준이 되는 열 이름이나 리스트 지정
# 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) 
profile
어떻게든 하겠숴여...❕

0개의 댓글