[Python] 파이썬 라이브러리 pandas 기본 개념, 함수 및 메소드 정리

2025. 3. 2. 21:58Python 파이썬

반응형

1. 기본 개념

  • DataFrame:
    • 2차원 테이블 형태의 데이터 구조. 여러 열(Series)로 구성됨.
    • 엑셀의 시트와 비슷하게, 행과 열로 데이터를 관리할 수 있음.
  • Series:
    • DataFrame의 한 열을 의미하는 1차원 배열 같은 객체.
    • 단순 리스트와 달리 각 데이터 값에 인덱스(레이블)가 포함되어 있음.
    • 딕셔너리의 key 값이 열, 그 열의 데이터는 value가 됨

예제:

import pandas as pd

data = {"Name": ["Alice", "Bob", "Charlie"], "Age": [25, 30, 35]}
df = pd.DataFrame(data)
print(df)

출력:

      Name  Age
0    Alice   25
1      Bob   30
2  Charlie   35

df["Name"]은 "Name" 열의 데이터를 Series로 반환함.

이를 .tolist()로 변환하면 그냥 리스트가 됨


2. 파일 입출력

2.1 다양한 포맷의 파일 읽기

  • 엑셀 파일 읽기 : read_excel()
  • CSV 파일 읽기 : read_csv()
  • JSON 파일 읽기 : read_json()
  • SQL 데이터 읽기 : read_sql()
# "data.xlsx" 파일을 읽어서 DataFrame으로 변환
df_excel = pd.read_excel("data.xlsx")

# "data.csv" 파일을 읽어서 DataFrame으로 변환
df_csv = pd.read_csv("data.csv")

# "data.json" 파일을 읽어서 DataFrame으로 변환
df_json = pd.read_json("data.json")
  • 특정 엑셀 시트 읽기
# 특정 시트 읽기
df_sheet = pd.read_excel("data.xlsx", sheet_name="Sheet1")
  • CSV 파일 읽기의 구분자나 인코딩 지정
df_csv = pd.read_csv("data.csv", delimiter=",", encoding="utf-8")
  • JSON 형식의 파일 형식 조정
df_json = pd.read_json("data.json", orient="records")
  • 데이터베이스에서 SQL 쿼리 결과를 DataFrame으로 가져오기. (DBMS 와 연동 가능하도록 SQLAlchemy 등과 함계 사용할수 있음)
# SQLite 데이터베이스 연결 후 쿼리 결과를 DataFrame으로 읽기
import sqlite3

conn = sqlite3.connect("database.db")
df_sql = pd.read_sql("SELECT * FROM my_table", conn)
conn.close()

 

2.2 새 열 추가

# 예시: "Age" 열 값을 기반으로 "Status" 열 추가 ("Adult" 또는 "Minor")
df_excel["Status"] = df_excel["Age"].apply(lambda age: "Adult" if age >= 20 else "Minor")
  • **설명:**특정 열의 데이터를 기반으로 조건에 따라 새 열을 추가할 수 있음..apply() 함수를 사용하여 각 값에 대해 함수를 적용함.

2.3 DataFrame을 파일로 저장하기

다양한 파일 포맷으로 저장

  • 엑셀 파일로 저장 : to_excel()
  • CSV 파일로 저장 : to_csv()
  • JSON 파일로 저장 : to_json()
df_excel.to_excel("output.xlsx", index=False)

df_csv.to_csv("output.csv", index=False)

df_json.to_json("output.json", orient="records", lines=True)
  • to_excel : DataFrame을 엑셀 파일로 저장하며, 인덱스를 포함하지 않고 저장할 수 있음.
  • to_csv : DataFrame을 CSV 파일로 저장. 기본적으로 쉼표(,)로 구분되며, 옵션을 통해 구분자 등을 변경할 수 있음.
  • to_json : DataFrame을 JSON 파일로 저장. orient 옵션을 통해 출력 형식을 지정할 수 있으며, lines=True 옵션을 사용하면 줄 단위로 JSON 객체를 출력함.

자주 사용하는 pandas 함수 및 메서드

1. 데이터 확인 및 요약

  • df.head(n=5) : DataFrame의 처음 n행을 반환하여 데이터를 빠르게 확인할 때 사용.
  • df.tail(n=5) : DataFrame의 마지막 n행을 반환.
  • df.info() : 데이터의 요약 정보(컬럼, 데이터 타입, 결측치 개수 등)를 출력.
  • df.describe() : 수치형 데이터에 대한 통계 요약(평균, 표준편차, 사분위수 등)을 제공.
  • df.shape : DataFrame의 행과 열의 개수를 튜플(행, 열)로 반환.
  • df.columns : DataFrame의 컬럼 이름들을 Index 객체로 반환.
  • df.index : DataFrame의 인덱스(행 레이블)를 반환.

2. 데이터 선택 및 인덱싱

  • df["ColumnName"] / df.ColumnName : 특정 열 선택. Series 형태로 반환.
  • df.loc[행_레이블, 열_레이블] : 라벨 기반 인덱싱. 조건에 맞는 행과 열을 선택.
  • df.iloc[행_번호, 열_번호] : 위치 기반 인덱싱. 정수 인덱스를 사용하여 데이터 선택.
  • df.at[행_레이블, "ColumnName"] / df.iat[행_번호, 열_번호] : 단일 값에 빠르게 접근.

3. 데이터 정제 및 변환

  • df.drop() : 특정 행 또는 열을 제거.
  • df.drop("ColumnName", axis=1, inplace=True)  # 열 제거
    
  • df.drop_duplicates() : 중복된 행을 제거.
  • df.fillna(value) : 결측치(NaN)를 지정한 값으로 대체.
  • df.isna() / df.notna() : 결측치 여부를 Boolean DataFrame으로 반환.
  • df.replace() : 특정 값 또는 패턴을 다른 값으로 대체.
  • df.astype() : 데이터 타입을 변경.

4. 데이터 병합 및 그룹화

  • df.merge(other_df, on="Key") : 두 DataFrame을 특정 열을 기준으로 병합.
  • df.join(other_df) : 인덱스를 기준으로 DataFrame을 결합.
  • df.groupby("Column") : 특정 열을 기준으로 그룹화하여 집계(aggregate) 작업 수행.
  • df.pivot_table() : 데이터를 재구조화하여 요약 통계 테이블 생성.

5. 데이터 적용 및 연산

  • df.apply(function) : 각 행 또는 열에 함수를 적용.
  • df.applymap(function) : DataFrame의 각 요소에 함수를 적용 (전체 요소에 대해 적용).
  • df.map() : Series에 함수를 적용하거나, 딕셔너리/함수를 이용해 값 매핑.
  • df.value_counts() : Series 내 각 값의 빈도수를 계산.

6. 데이터 정렬 및 인덱스 재설정

  • df.sort_values("ColumnName") : 특정 열을 기준으로 오름차순 또는 내림차순 정렬.
  • df.sort_index() : 인덱스를 기준으로 정렬.
  • df.reset_index(drop=True) : 인덱스를 초기화하여 새로운 정수 인덱스로 재설정.
반응형