그로스 마케팅

[ 멋쟁이사자처럼부트캠프 그로스마케팅 부트캠프 ] Pandas : 기초

rootedgrowth 2025. 2. 6. 19:33

1. Pandas란?

Pandas는 데이터 분석과 조작을 쉽게 할 수 있도록 도와주는 Numpy 기반 강력한 오픈소스 라이브러리

 

 

2. Pandas의 주요 데이터 구조

1) Series (1차원 데이터 구조)

Series는 1차원 데이터구조로, 리스트(List)와 유사하지만, **인덱스(Index)**가 추가되어 데이터에 쉽게 접근 가능

2) DataFrame (2차원 데이터 구조)

DataFrame은 2차원 데이터 구조로 행과 열을 가짐

 

 

3. Pandas의 주요 기능

1) 데이터 읽기 및 저장

Pandas는 CSV, Excel, JSON 등 다양한 형식의 데이터를 읽고 저장할 수 있음

# csv 파일을 읽어보자
df = pd.read_csv('파일경로/파일이름.csv')

 

데이터 형식에 따라 메서드가 다르나 read_형식()을 따름 ( ex. Excel의 경우 read_excel() )

pd.read_csv()는 호출 시 파일명 인자로 들어온 파일을 로딩해 DataFrame 객체로 반환함

또한 별다른 파라미터 지정이 없으면 파일의 맨 처음 행(Raw, 이하 로우)을 칼럼명으로 인지하고 칼럼으로 변환함

CSV 파일을 메모장으로 열었을 때의 모습(CSV는 Comma로 데이터를 구분)

 

2) DataFrame 정보 알아보기

(1) 행과 열의 크기 간단하게 확인: shape

    - shape은 DataFrame의 행과 열을 튜플 형태로 반환함

# shape 속성으로 행과 열의 크기 확인
print(df.shape)  # ex. (100, 8) 출력

 

      DataFrame 객체인 df는 100개의 로우와 8개의 칼럼으로 이루어져 있음

 

(2) 정보 조회: info( ) | describe( ) | value_counts( ) | head( )

    - info( ) 메서드를 통해서 총 데이터 건수와 데이터 타입, Null 건수를 알 수 있음

    - describe( ) 메서드는 칼럼별 숫자형 데이터값의 n-percentile 분포도, 평균값, 최댓값, 최솟값을 나타냄(오직 숫자형 칼럼만 조사)

    - DataFrame의 [ ] 연산자 내부에 칼럼명을 입력하면 Series 형태로 특정 칼럼 데이터 세트가 반환됨

      반환된 Series 객체에 value_counts( ) 메서드를 호출하면 해당 칼럼값의 유형과 건수 확인 가능

    - Series 또는 DataFrame 객체에 head( ) 메서드를 호출하면 위 5개만 추출

 

3) DataFrame 수정하기

(1) 칼럼 생성과 수정

    - DataFrame에 칼럼 추가 시 [ ] 연산자 내 새로운 칼럼명 입력하고 값을 할당

df['New Column'] = 0  # 일괄적으로 0 값 할당

 

    - 기존 칼럼 값 업데이트도 같은 방식으로 실행

df['Age'] = df['Age'] + 10    # 기존 Age 칼럼 값에 모두 10을 더해준다

 

(2) 데이터 삭제: drop( )

    - drop( ) 메서드의 파라미터는 아래와 같음

DataFrame.drop(labels=None, axis=0, index=None, columns=None, level=None, inplace=False, errors='raise')

 

      이 중 가장 중요한 파라미터는 labels, axis, inplace

      axis 파라미터는 값에 따라 특정 칼럼 또는 특정 행을 드랍함 ( axis = 0 은 로우방향, axis = 1 은 칼럼방향 )

      DataFrame은 2차원 데이터만 다루므로 0과 1로 axis가 구성되어 있음

      drop 메서드에 axis = 1 을 입력하면 해당 칼럼을 드롭하겠다는 의미

      axis 파라미터의 값에 따라 labels 파라미터에 입력되는 인수를 인덱스로 간주

df.drop('Age', axis = 1) # axis = 1 이므로 Column 삭제, 'Age'를 index로 인식
df.drop(15, axis = 0)    # axis = 0 이므로 Row 삭제, 15를 index로 인식

 

      inplace 파라미터는 True면 자기 자신의 DataFrame 데이터를 삭제하고 None 반환, False면 자기 자신의 데이터는 삭제하지 않고 삭제한 버전의 결과 반환

 

# inplace = False
No_Age_df = df.drop('Age', axis = 1, inplace = False)

print(No_Age_df)   # 'Age' 칼럼 없음
print(df)          # 'Age' 칼럼 있음

# inplace = True
No_Age_df = df.drop('Age', axis = 1, inplace = True)

print(No_Age_df)   # None
print(df)          # 'Age' 칼럼 없음