판다스에서는 다양한 함수나 연산으로 인덱싱/슬라이싱이 가능하다.
대표적인 함수의 예로는
인덱스의 구체적인 이름을 활용한 loc함수, 만약 구체적인 인덱스의 이름을 모를 때 해당 인덱스의 넘버를 사용하는 iloc함수, 또는 조건으로 값을 찾아내는 쿼리 함수와 masking 연산 등이 있다.
우선 loc 함수를 사용해보자
loc 함수
import pandas as pd
shopping_list = {
'name': ['shampoo', 'ramen', 'beer', 'eggs'],
'price': [12000, 600, 2500, 50],
'quantity': ['1', '5', '4', '30']
}
shopping_list = pd.Series(shopping_list)
# loc
print(shopping_list.loc['name'], '\n')
print(shopping_list.loc['price':'quantity'], '\n')
시리즈 형태의 데이터인 shopping_list에서 만약 내가 name인덱스에 있는 값들만 가지고 오고 싶다면 첫 번째 출력문처럼
아니면 name 인덱스를 제외하고 가격과 수량의 인덱스의 값들만 가져오고 싶다면 2번째 출력문처럼 작성하면 된다.
결과:
['shampoo', 'ramen', 'beer', 'eggs']
price [12000, 600, 2500, 50]
quantity [1, 5, 4, 30]
dtype: object
iloc 함수
근데 만약 내가 인덱스의 구체적인 이름을 모른다 싶을 때는 숫자를 활용할 수 있다.
import pandas as pd
shopping_list = {
'name': ['shampoo', 'ramen', 'beer', 'eggs'],
'price': [12000, 600, 2500, 50],
'quantity': ['1', '5', '4', '30']
}
shopping_list = pd.Series(shopping_list)
# iloc
print(shopping_list.iloc[0], '\n')
print(shopping_list.iloc[1:3], '\n')
shopping_list의 0번째 인덱스(name)만 출력하고 싶다면 첫 번째 출력문처럼
shopping_list의 1번째 인덱스부터 2번째까지 출력하고 싶다면 두 번째 출력문처럼 작성하면 된다.
결과:
['shampoo', 'ramen', 'beer', 'eggs']
price [12000, 600, 2500, 50]
quantity [1, 5, 4, 30]
dtype: object
masking 연산과 query 함수
만약 내가 조건을 활용해 price인덱스에 존재하는 값들 중 10000원 이하의 값만 출력하고 싶다면 masking연산과 query함수를 사용하면 된다.
import pandas as pd
shopping_list = {
'name': ['shampoo', 'ramen', 'beer', 'eggs'],
'price': [12000, 600, 2500, 50],
'quantity': ['1', '5', '4', '30']
}
shopping_list = pd.Series(shopping_list)
# masking 연산과 query 함수를 사용하기 위해 DataFrame으로 변환
shopping_list = pd.DataFrame({
'name': shopping_list['name'],
'price': shopping_list['price'],
'quantity': shopping_list['quantity']
})
# 주의할 점은 masking연산과 query 함수는 데이터 프레임 형태의 데이터의 값만 불러올 수 있음. 시리즈로 하면 오류.
# masking 연산으로 price 열에서 10000미만 품목 출력
print(shopping_list[shopping_list['price'] < 10000], '\n')
#query 함수로 price 열에서 10000미만 품목 출력
print(shopping_list.query('price < 10000'))
masking연산으로 조건을 주고 싶다면 첫 번째 출력문처럼
query함수로 조건을 주고 싶으면 두 번째 출력문처럼 작성하면 된다.
*주석에도 달아놨지만 주의할 점은 masking연산과 query함수의 사용은 DataFrame에서만 지원하기 때문에 Series데이터로는 불가능하다.
결과:
name price quantity
1 ramen 600 5
2 beer 2500 4
3 eggs 50 30
name price quantity
1 ramen 600 5
2 beer 2500 4
3 eggs 50 30
끗!
'Programming > python' 카테고리의 다른 글
Python으로 파일 제목만 바꾸고 여러개 복사하기해서 생성하기 (0) | 2024.07.10 |
---|---|
pandas 연산자를 이용해서 데이터 컬럼 추가하기 (0) | 2021.08.15 |
판다스 데이터 프레임으로 데이터 표 만들고 저장하기! (0) | 2021.08.13 |
Pandas 사용하기 (0) | 2021.08.13 |
휴먼, 넘파이(NumPy)란 무엇입니까? (0) | 2021.08.13 |