2024. 11. 9. 16:00ㆍ빅데이터 분석기사
데이터를 불러온다.
import pandas as pd
df = pd.read_csv('cafe2.csv') # https://kdh9797-devwiki.tistory.com/83 cafe2 만들기 참고
df
1. 필터링
1-1. 1개 조건 필터링
특정 컬럼에 조건식을 적용하면 True/False가 반환된다.
조건에 만족하면 True, 만족하지 않으면 False이다.
'칼로리' 컬럼의 각 값이 50보다 작은 지를 나타내는 코드이다.
df['칼로리'] < 50
Boolean 결과를 데이터프레임의 대괄호 안에 넣으면 True로 표시된 행들만 선택된다.
df[df['칼로리'] < 50]
1-2. NOT 연산자
'~' 연산자는 조건의 반대를 필터링하는 데 사용한다.
True를 False로 False를 True로 변경한다.
df[~(df['칼로리'] < 50)]
1-3. 복수 조건 필터링
조건이 2개 이상일 때 합집합(OR) 또는 교집합(AND)인지를 구분해야 한다.
판다스에서는 & (교집합), | (합집합)을 사용한다.
# 가격이 5000원 이상이면서 칼로리가 100보다 큰 데이터
df[(df['가격'] >= 5000) & (df['칼로리'] > 100)]
# 가격이 5000원 이상이거나 칼로리가 100보다 큰 데이터
df[(df['가격'] >= 5000) | (df['칼로리'] > 100)]
원산지가 '과테말라' 데이터만 필터링해 보자.
# 원산지가 과테말라인 데이터
df[df['원산지'] == '과테말라']
1-4. isin()을 사용한 필터링
isin()은 주어진 값이 있는지 확인한다.
주어진 값이 있으면 True, 그렇지 않으면 False를 반환한다.
# 녹차 찾기
df['메뉴'].isin(['녹차'])
데이터프레임에 boolean 결과를 대입하면 조건에 만족하는 데이터만 찾을 수 있다.
# 녹차 데이터 출력
df[df['메뉴'].isin(['녹차'])]
isin()을 사용할 때 유용한 점은 여러 개의 값을 한 번에 찾을 수 있다는 점이다.
100개의 값을 조건식으로 찾는다면 최대 100개의 조건식이 필요하다.
리스트에 찾는 값을 담고, 그 리스트를 isin()의 괄호 안에 작성하면 리스트에 포함된 데이터를 찾을 수 있다.
menu = ['녹차', '카푸치노', '카페라떼']
df[df['메뉴'].isin(menu)]
2. 결측치 처리
데이터를 불러온다.
import pandas as pd
df = pd.read_csv('cafe2.csv') # https://kdh9797-devwiki.tistory.com/83 cafe2 만들기 참고
df.head()
2-1. 결측치 탐색
결측치를 확인하는 데는 df.isnull()을 사용한다.
각 값마다 결측치(NaN)이면 True를 반환하고, 값이 있다면 False를 반환한다.
df.isnull()
df.isnull()에 sum()을 붙이면 컬럼별로 모두 더할 수 있다.
True는 1이고 False는 0이다.
컬럼별로 더하면 결측치 수를 확인할 수 있다.
df.isnull().sum()
isnull() 외에 isna()를 활용해도 같은 결과가 나온다.
df.isna().sum()
2-2. 결측치 채우기
fillna()를 활용해 임의의 값으로 채울 수 있다.
# 원산지 컬럼에 결측치를 코스타리카로 채우기
df['원산지'].fillna('코스타리카', inplace=True)
df
※ 새로운 csv 파일로 저장 (참고)
df.to_csv('cafe3.csv', index=False)
'빅데이터 분석기사' 카테고리의 다른 글
[빅분기 실기] 판다스 (pandas) 내장 함수 (0) | 2024.11.09 |
---|---|
[빅분기 실기] 판다스 (pandas) 값 변경. 문자열 (0) | 2024.11.09 |
[빅분기 실기] 판다스 (pandas) 데이터 추가, 변경. 정렬 (0) | 2024.11.09 |
[빅분기] 판다스 (pandas) 인덱싱. 슬라이싱 (loc, iloc) (0) | 2024.11.06 |
[빅분기] 판다스 (pandas) - 탐색적 데이터 분석 (EDA). 자료형 변환. 컬럼 추가. 데이터 삭제 (0) | 2024.11.02 |