본 게시물은 유튜브 파이스탁님의 파이썬 판다스 기초 강의를 들으며 작성하였습니다
자료구조 | 특징 | 예제 코드 |
리스트 | 순서 o 수정 o | [1,2,3] |
튜플 | 순서 o 수정 x | (1,2,3) |
딕셔너리 | 연관된 데이터 (key:value) 쌍을 저장 | {'coffee':5000, 'bread':2000} |
NdArray | 반복문 없이 데이터 배열에 대한 처리 선형 대수와 관련된 기능 제공 |
arr = np.array([1,2,3]) |
자료구조 | 특징 |
Series | Numpy를 기반으로 만들어진 1차원 데이터를 위한 자료구조 |
DataFrame | Numpy를 기반으로 만들어진 2차원 데이터를 위한 자료구조 |
from pandas import Series, DataFrame
# Series()
# DataFrame()
from pandas as pd
# pd.Series()
# pd.DataFrame()
좌측은 인덱스 번호 우측은 데이터 값
행 번호(공식적 용어 x 강의에서 그냥 붙인 말)와 인덱스를 사용해서 데이터를 관리
- 자동으로 부여되는 행 번호 (수정 x)
- 인덱스는 문자 혹은 숫자로 설정 가능( 설정 안 하면 0부터 시작하는 정수로 자동 할당)
index
- 시리즈 객체의 인덱스를 접근
- s.index
values
- 시리즈 객체의 값에 접근
- s.values
1. iloc 사용
iloc속성(변수)를 사용하여 인덱싱함 => 행번호 사용!
2. loc 속성 사용
시리즈 객체의 인덱스로 인덱싱함
3. 대괄호 사용
명시적인 걸 보여주려면 1번과 2번의 방법이 더 효과적이긴 함
1. 행번호를 사용
iloc[시작 행번호: 끝 행번호]의 형태로 사용함
2. 인덱스 사용
loc[시작 인덱스: 끝 인덱스]
이건 끝 인덱스를 포함함!!!
시리즈에선 연속적이지 않은 여러 개의 값을 한번에 가져오는 것이 가능함
어떻게?
- 행 번호 또는 인덱스를 파이썬 리스트로 구성
- loc 또는 iloc 속성에서 해당 리스트를 사용
딕셔너리와 유사한 방식으로 값 추가 가능
s.loc[인덱스] = 값
drop메서드를 이용한다
- 원본은 유지되고 값이 삭제된 시리즈 객체를 리턴
- s.drop('인덱스')
- s.drop(['인덱스1', '인덱스2'])
Serie의 행번호나 인덱스를 사용하여 value를 수정 가능함
위에서 한번 언급했듯이 series구조를 이용해서 반복문 없이 연산이 가능함!!
그럼 사칙연산은?
값은 인덱스를 기준으로 사칙 연산이 반복됨 => 반복문 안 써도 됨~
from pandas import Series
high = Series([100,200,300,400])
low = Sereis([10,20,30,40])
diff = high-low
print(diff)
'''
0 90
1 180
2 270
3 360
dtype: int64
'''
인덱스를 지정해주었을 경우 인덱스가 같은 데이터 간의 사칙연산이 적용됨
from pandas import Series
high = Series([100,200,300,400], ["a", "b", "c", "d"])
low = Series([10,20,30,40], ["a", "b", "c","e"])
diff = high-low
print(diff)
'''
a 90.0
b 180.0
c 270.0
d NaN
e NaN
dtype: float64
'''
비교 연산자의 결과로 Boolean 타입이 저장된 시리즈가 리턴됨
s = Series([100,200,300,400])
cond = s > 300
print(cond)
'''
0 False
1 False
2 False
3 True
dtype: bool
'''
True/False 값을 통해서 True 값만 필터링 가능함
s = Series([100,200,300,400])
cond = [False, True, True, False]
print(s[cond])
'''
1 200
2 300
dtype: int64
'''
비교 연산자의 결과 시리즈를 사용하여 인덱싱하면 조건을 만족하는 데이터만 필터링이 가능함
s = Series([100,200,300,400])
cond = s > 300
print(s[cond])
'''
3 400
dtype: int64
'''
[혼자 공부하는 머신러닝+딮러닝]데이터 다루기 - 데이터 전처리 (1) | 2023.10.06 |
---|---|
[혼자 공부하는 머신러닝+딮러닝]데이터 다루기 - 훈련 세트와 테스트 세트 (0) | 2023.10.05 |
데이터 시각화 - seaborn (2) | 2023.10.05 |
[Pandas] 판다스 데이터프레임(DataFrame) (0) | 2023.09.20 |
[Pandas] Numpy 기초 (0) | 2023.09.19 |