원하는 관측치 선택하기
수많은 관측치에서 데이터분석할때, id값을 직접적으로 설정하기보다는
관측치가 가지고있는 특징으로 원하는관측치를 찾아오는, 즉 필터링 과정을 거쳐야 함
DataFrame에선 bool형식의 데이터 추출 가능
1) 데이터 가져오기
import pandas as pd
df_gp=pd.read_csv('data/건강보험심사평가원.csv',
encoding='CP949',
index_col=2,
header=2)
df_gp
2) 데이터프레임 내부 데이터 정보 확인하기
: 정보들을 확인해야 조건을 줄 수 있음
unique(): 범주형 데이터에 접근
dataframe이 아닌 series인스턴스에서 쓰는 함수: 특정 컬럼을 인덱싱해서 시리즈로 가져와야 함
min(), max() : 수치형 데이터에서 최소,최댓값 출력
dataframe(컬럼마다 최소최댓값), series 둘다 함수 존재
unique()함수 활용
df_gp['시도'].unique() #시리즈로 먼저 가져오기
array(['서울', '부산', '인천', '대구', '광주', '대전', '울산', '경기', '강원', '충북', '충남',
'전북', '전남', '경북', '경남', '제주', '세종'], dtype=object)
nunique() : 항목의 개수
df_gp['시도'].nunique()
17
min(), max() 함수 활용
print(df_gp['환자수'].min())
print(df_gp['환자수'].max())
8605
2882159
시리즈 비교연산, 데이터프레임[bool] 시퀀스 연산
특정 컬럼을 선택하여 비교연산자 사용해 bool 시리즈 생성
[bool 시리즈] : 데이터프레임의 []연산에 bool시리즈 넣어 인덱싱
비교연산으로 bool 시리즈 생성 : 평균보다 큰 환자수 가져오기
true/false로만 이루어진 시리즈가 생성됨
greater = df_gp['환자수'] > 379842 #환자수 시리즈에서 비교연산자 사용
greater
시군구
강남구 True
강동구 True
강서구 True
관악구 True
구로구 True
...
거제시 False
양산시 True
서귀포시 False
제주시 True
세종시 True
Name: 환자수, Length: 250, dtype: bool
bool 시리즈로 인덱싱
: false들은 걸러지고 true들만 가져옴
df_gp[greater]
여러 조건들 조합
환자수 100만 이상 T/ 시도가 서울인경우 T/ 두 조건이 T인 경우 T
greater = df_gp['환자수'] > 1000000
equal = df_gp['시도'] == '서울'
filters = greater & equal #논리연산자 사용
df_ft = df_gp[filters]
df_ft
▶ and 같은 명령어가 아닌 & 연산자를 사용해야 함!
★ 연산자 활용
~ : not
& : and
| : or
다른 방법 예시
df_gp[(df_gp['환자수'] > 1000000) | (df_gp['시도'] == '서울')]
▶ [ ] 연산 안에 우선순위에 따라 () 괄호를 꼭 잘 넣어야 함
함수를 활용한 인덱싱
isin() : 여러개의 카테고리를 선택해 가져옴.
해당 데이터를 T로 표현하는 bool 시리즈 반환
between() : <,>의 &연산을 bool 시리즈로 반환
isin() : 여러개의 카테고리를 넣으므로, 기본적으로 리스트인자가 들어감
cond1 = df_gp['시도'].isin(['서울','경기','부산'])
cond1
df_gp[cond1]
between()
df_gp['환자수'].between(300000, 1000000)
inclusive : 경계값 포함 여부 (이상/초과)
- 'both', 'left', 'right', 'neither'
df_gp[df_gp['환자수'].between(300000, 1000000, inclusive='left')]
sample() 활용한 랜덤 표본 인덱싱
frac : 백분율로 표본 추출
n : 개수 지정하여 표본 추출
frac에 특정 실수값 입력 (0~1사이 값: 확률 의미)
df_gp.sample(frac=0.1)
n에 개수를 지정
df_gp.sample(n=100)
원하는 컬럼(변수) 선택
select_dtypes : 데이터 타입을 통해 원하는 컬럼 선택
filter : 컬럼 이름 패턴을 통해 선택
수치형 데이터 컬럼만 선택 - number
df_gp.select_dtypes(include='number')
문자열 데이터 컬럼만 선택 - object
df_gp.select_dtypes(include='object')
filter() 함수 사용 : 실제로 거의 사용하지는 않음
- regex : 정규표현식(regular expression)
- 'e$' : 'e'로 끝나는 이름/텍스트
- '^s' : 's'로 시작하는 이름/텍스트
'수'로 끝나는 컬럼들
df_gp.filter(regex='수$').columns
Index(['환자수', '명세서청구건수', '입내원일수'], dtype='object')
'데이터 분석 > Python - pandas' 카테고리의 다른 글
[이론] 데이터타입 변환, 연산 처리 (2) | 2025.01.09 |
---|---|
[실습] 조건 활용 인덱싱 (필터링) : LOL 아이템 (2) | 2025.01.09 |
[실습] 데이터 불러오기, 데이터 인덱싱 : LOL 아이템 (3) | 2025.01.09 |
[이론] 데이터타입 확인, []연산 데이터 인덱싱 (2) | 2025.01.09 |
[이론] 파일 불러오기 (2) | 2025.01.09 |