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 |
---|