본문 바로가기
Python/Pandas

[Python] Pandas Series와 DataFrame

by ybin.im 2025. 1. 9.

Pandas??

Pandas는 Python의 데이터 분석 및 조작을 위한 라이브러리이다.

테이블 형식의 데이터를 다루는데 최적화되어있다.

 

▼ 특징

 - 데이터 처리 및 변환
  # 데이터 필터링, 선택, 정렬
  # 결측값 처리

- 유연한 데이터 입출력
  # CSV, JSON, HTML, SQL, Excel 등 다양한 파일 포맷 지원
  # 데이터를 읽고 저장하는 함수 제공

 - 연산 및 분석 기능
  # 통계 계산( 평균, 분산, 중간값 등)
  # 그룹화(groupby) 및 집계

 

 

Pandas 자료구조 Series와 DataFrame

Series : 1차원 데이터 구조로, 배열과 비슷하며 인덱스가 포함된다.

DataFrame : 2차원 데이터구조로, 행과 열로 구성된 테이블 형식이다.

 

 

series

pd.Series() 메서드를 사용해서 1차원 리스트를 Series로 만들 수 있다.

속성 확인 메서드
.index : 인덱스
.values : value값
.shape : 인덱스 범위(start, stop, step), 밸류, series의 크기 (행, 열) 출력

 

▼ 인덱스 설정 안함.

인덱스를 따로 설정하지 않았을 경우 0부터 숫자로 자동으로 인덱싱된다.

data = [10, 20, 30, 40]
series = pd.Series(data)
print(series)​

# 0    10
# 1    20
# 2    30
# 3    40
# dtype: int64

 


▼커스텀 인덱스

index를 넣어서 직접 넣어주면 순서대로 인덱싱된다.

series = pd.Series(data, index=['a', 'b', 'c', 'd'])
print(series)​

# a    10
# b    20
# c    30
# d    40
# dtype: int64

 


▼딕셔너리로 생성

딕셔너리로 넣으면 key값이 인덱스, Value값이 값으로 들어간다.

data = { 'a': 10,    'b': 20,    'c': 30,    'd': 40}
series = pd.Series(data)
print(series)​

# a    10
# b    20
# c    30
# d    40
# dtype: int64

 

▼Series 조작

data = [10, 20, 30, 40]
series = pd.Series(data, index=['a', 'b', 'c', 'd'])

print(series['a'])
# 인덱스 'a'의 값
# 10

print(series[0])
# 첫번째 데이터
# 10

print(series[series > 20])
# 값이 20보다 큰 데이터만 선택
# c	30
# d	40
# dtype: int64

series['b'] = 50
# 인덱스 'b'의 값을 변경​

 

 

 

DataFrame

pd.DataFrame()으로 생성할 수 있다.

같은 인덱스를 가진 시리즈 2개 이상이 붙은 형태이다.

 

data ={
	'영희' : [143, 150, 157, 160],
    	'철수' : [165, 172, 175, 180]
      }

growth = pd.DataFrame(data, index = ['2018','2019','2020','2021'])

print(growth)

다음과 같이 출력된다.

#       영희 철수
# 2018  143  165
# 2019  150  172
# 2020  157  175
# 2021  160  180
인덱스 : 2018~2021 
컬럼 : 영희, 철수 부분

 

▼ DataFrame 조작 메서드

df.head() : 상위 데이터 확인 (기본 5개)
df.tail() : 하위 데이터 확인 (기본 5개)
df.shape : 데이터 크기 (행, 열)
df.info() : 데이터프레임 구조 및 타입 요약
df.columns : 열 이름 확인
df.values : 행 값 확인
df.index : 인덱스 확인
df.dtypes : 데이터타입 확인
df['컬럼'] : 열 선택
df[['컬럼']] : 열 선택 ( 열이름도 포함 )

 

 

▼ DataFrame 필터링 loc, iloc

loc : 라벨(Label) 기반 접근
      - 행/열 이름을 사용하여 데이터를 선택
      - 문자형 인덱스나 라벨 사용
      - 슬라이싱 사용시 끝 값이 포함
      -  df.loc[row_label, column_label]
data = {
	'Name' : ['레드', '옐로', '그린'],
    'Age' : [28, 26, 24],
    'City' : ['Seoul', 'Busan', 'Ansan']
    }

df = pd.DataFrame(data, index=['a', 'b', 'c'])

print(df.loc['a'])
# Name 레드
# Age  28
# City Seoul

print(df.loc['a', 'Age'])  
# 28

print(df.loc['a':'c', 'Name':'Age'])
#   Name Age
# a 레드 28
# b 옐로 26
# c 그린 24

print(df.loc[:, 'Name'])
# a 레드
# b 옐로
# c 그린

print(df.loc['a', :])
# Name 레드
# Age  28
# City Seoul​


iloc : 정수(integer)기반 접근
      - 정수 인덱스를 사용하여 데이터 선택
      - 순서 기반 접근에 적합
      - 슬라이싱 사용시 끝값 미포함
      -  df.iloc[row_indices, column_indices]
data = {
	'Name' : ['레드', '옐로', '그린'],
    'Age' : [28, 26, 24],
    'City' : ['Seoul', 'Busan', 'Ansan']
    }

df = pd.DataFrame(data, index=['a', 'b', 'c'])

print(df.iloc[1])
# Name 레드
# Age  28
# City Seoul

print(df.loc[1, 1])  
# 28

print(df.iloc[0:3, 0:2])
#   Name Age
# a 레드 28
# b 옐로 26
# c 그린 24

print(df.iloc[:, 0])
# a 레드
# b 옐로
# c 그린

print(df.loc[0, :])
# Name 레드
# Age  28
# City Seoul​

 

 

'Python > Pandas' 카테고리의 다른 글

[Python] Pandas DataFrame 추가/수정  (0) 2025.01.24