[Python] 가상환경, Pandas, Series

wooaeng·2025년 10월 27일

Python

목록 보기
2/8
Python 가상 환경
  • 같은 컴퓨터로 여러 개의 프로젝트를 진행하는 경우, 각각 필요로 하는 패키지가 다르므로 프로젝트마다 상이한 환경을 필요로 할 수 있음
  • 이 때 가상환경 구축을 통해 패키지를 효과적으로 관리할 수 있음
  • 가상환경은 운영체제 위에 설치되며 사용 전 환경 활성화를 진행해야 함

설치

  • windows : 설치 후 터미널 재실행 필요
    powershell - ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

  • MacOS/Linux
    curl -LsSf https://astral.sh/uv/install.sh | sh

  • 최신 버전 업데이트
    uv self update

주요 명령어

  • 가상환경 생성 uv venv [가상환경 경로] [가상환경 이름] [--python=python버전]
    • 경로를 생략하는 경우 현재 디렉토리에 생성, 원하는 디렉토리에서 설치를 시작한 경우 경로 생략 가능
    • 가상환경 이름 생략 시 .venv 로 가상환경 생성
    • Python 버전 생략 시 현재 설치된 Python 버전으로 가상환경 구축
  • 가상환경 활성화 : 저장된 경로 아래에서 source .[가상환경 이름]/bin/activate 실행
  • 패키지 관리 : uv pip install 패키지명
    • pip 앞에 uv를 붙여 명령어 실행

Pandas 판다스

개요

  • 데이터 분석 관련 기능을 제공하는 Python 패키지
  • 다양한 통계 처리 기능을 제공하며, 표 형태 데이터를 다루는 데 특화되어 있는 모듈
  • 표 형태 데이터를 다루는 데 필요한 시리즈(Series)와 데이터프레임(DataFrame) 클래스를 제공

Series

  • 1차원 자료 구조
  • DataFrame(표)의 한 행(row)나 한 열(column)을 표현
  • 각 원소는 index와 index 이름을 가짐 → 이를 통해 원소를 사용할 수 있음
  • 원소 간 연산 가능

Series 생성

pd.Series(1차원 iterable[, index=[인덱스값]])

  • 1차원 구조의 자료구조에 값을 넣어 생성(list, tuple, ndarray)
  • index를 지정하지 않으면 양수 index가 자동으로 입력됨
  • index, 원소(값), dtype을 함께 출력
    # 입력
    data = [0, 10, 20, 30, 40, 50, 60]
	pd.Series(data)

    # 출력값
    0     0
    1    10
    2    20
    3    30
    4    40
    5    50
    6    60
    dtype: int64

index 변경

  • 각각의 index를 한 번에 변경 [Series 데이터].index = list("index명")
  • 개별 index name을 변경 [Series 데이터].rename({"기존 index":"바꿀 index"

Series 안의 원소 접근

Indexing

  • 한 개의 원소를 조회하거나 변경할 시 사용
  • index 순번으로 조회 Series.iloc[순번]
  • index 이름으로 조회Series[index 이름] 또는 Series.loc[index 이름]
  • 팬시(fancy) indexing Series[[index 이름 또는 순번]]
    • 특정 index에 해당하는 값 여러 개 조회
    • 조회할 index를 list로 묶어서 전달

Slicing

  • 범위로 원소를 조회할 시 사용 Series[start index : stop index : step]
    • list Slicing과 유사
    • start index는 생략 시 0부터
    • stop index는 순번으로 입력하는 경우 stop index는 포함 X, index 이름으로 입력하는 경우 포함 O
    • Slicing 결과는 원본의 참조를 반환
    • 결과의 원소를 변경하면 대상(원본)도 변경됨

원소 단위 연산

  • Pandas의 Series, DataFrame은 연산 시 원소 단위 연산 수행
    index_name = ['국어', '영어', '수학', '과학']
    s1 = pd.Series([80, 90, 100, 50], index=index_name)
    s2 = pd.Series([100, 50, 80, 100], index=index_name)
    s3 = pd.Series([1, 2, 3, 4])
    
    result = s1 **2
    result
    
    # 출력 결과
    국어     6400
	영어     8100
	수학    10000
	과학     2500
	dtype: int64

Series 주요 method

method기능
head([정수])원소 개수를 앞에서부터 정수만큼 조회, 정수 미입력 시 기본 조회 개수 5개
indexindex명 조회
shape행, 컬럼 개수 조회
size원소 개수 조회
dtype데이터 타입 조회
astype(데이터 타입)()데이터 타입으로 변경
isin([list]Series의 원소가 list 안의 값들 중 하나와 같은지 여부에 따라 True/False 반환
sort_values()원소 개수를 뒤에서부터 정수만큼 조회, 정수 미입력 시 기본 조회 개수 5개
sort_index()원소 개수를 뒤에서부터 정수만큼 조회, 정수 미입력 시 기본 조회 개수 5개
value_counts()고유한 값의 빈도수 조회, nomalize=True로 지정할 시 상대 빈도수 반환
unique()고유한 값의 개수를 조회
count()결측치 제외한 원소 개수
min(), max(), sum()기술통계값 조회, 결측치 있을 경우 빼고 계산 최소값, 최대값, 합계
mean(), median(), std()평균, 중앙값, 표준편차
var(), mode()분산, 최빈값
idxmax(), idxmin()최대값의 index, 최소값의 index
describe()요약 통계량 제공, 수치형: 기술 통계값 / 범주형(문자열): 빈도수 관련 정보 제공
quantile(q=[분위])분위수 계산, q=[분위] 생략 시 0.5(중앙값)

결측치 Missing Value

  • 결측치 : 모르는 값, 수집이 안 된 값, 현재 가지고 있지 않은 값
  • Pandas에서 결측치 : pd.NA, None, numpy.nan, numpy.NAN
  • 결측치는 float 타입으로 처리됨

결측치 확인
Series/DataFrame객체.isnull() 또는 isna()
Series/DataFrame객체.notnull() 또는 notna()

  • 원소별 결측치 여부를 확인해 bool 값으로 반환

결측치 처리

  • 제거 dropna()
  • 다른 값으로 대체 fillna()
    • 가장 가능성이 높은 값으로 변경

0개의 댓글