01 Pandas Import
import pandas as pd
02 csv 파일 불러오기
import pandas as pd
test_csv = pd.read_csv("CSV 파일경로")
03 col(열) 추출하기
import pandas as pd
test_csv = pd.read_csv("CSV 파일경로")
test_csv[['col1', 'col2', 'col3']]
04 특정 조건 검색
import pandas as pd
test_csv = pd.read_csv("CSV 파일경로")
test_csv[['col1', 'col2', 'col3']][test_csv['col2']=='hello']
- col2가 hello인 행의 col1, col2, col3만 추출해서 출력
- 비교연산자 전부 사용 가능(>, ==, < 등)
05 비교연산자 종류
== // 똑같으면 True, 다르면 False
< // 오른쪽이 크면 True, 아니면 False
> // 왼쪽이 크면 True, 아니면 False
<= // 오른쪽이 크거나 같으면 True, 아니면 False
>= // 왼쪽이 크거나 같으면 True, 아니면 False
!= // 다르면 True, 같으면 False
1) Pandas 비교 연산 종류
test_csv['col1'].between(1, 10) // col1의 1~10 사이인 row 선택
test_csv['col1'].isin([1, 2]) // col1이 1, 2인 row 선택
test_csv['col1'].isnull() // col1이 numm인 row 선택
test_csv['col1'].apply(lamda) // lamda 함수를 활용해 row 선택
2) not 연산 예시
test_csv[['col1', 'col2', 'col3']][~file['col2'].between(1, 10)]
3) 모든 col을 전부 선택하고 싶을 때
test_csv[:][test_csv['col2'].between(1, 10)]
test_csv[test_csv['col2'].between(1, 10)]
4) not 연산 적용 예시
test_csv[:][~test_csv['col2'].between(1, 10)]
test_csv[~test_csv['col2'].between(1, 10)]
06 한글 데이터 인코딩
test_csv = pd.read_csv("CSV 파일경로", encoding = "euckr")
- EUCKR : Extended Unix Code KR
07 lambda 함수를 활용한 선택
test_csv[['col1', 'col2', 'col3']][file['col2'].apply(lambda x : x[0] == 'A')]
08 데이터 정렬
test_csv[['col1', 'col2', 'col3']].sort_values( by ='col2', ascending=True)
- ascending = True - 오름차순 정렬
- ascending = Flase - 내림차순 정렬
09 데이터 프레임 구조 확인
test_csv.info()
1) Dtype (Data Type)
- int64 - 정수
- object - 문자
- float64 - 실수
10 데이터 타입 변환 (문자-날짜)
test_csv['date'] = pd.to_datetime(csv_test['date'])
1) 날짜형 데이터 선택
test_csv[['col1', 'col2', 'date']][test_csv['date'] == '1999-12-09']
- between()을 사용하면 구간 단위 선택도 가능
11 데이터 중복 제거
test_csv['col2'].unique()
- 대괄호 2개 -> Data frame
- 대괄호 1개 -> Series (unique()는 Series 함수)
12 문자 함수
1) .upper(), .lower()
test_csv['name'].str.upper()
test_csv['name'].str.lower()
- Series에서는 upper(), lower()등이 사용 불가 하므로 str로 바꿔준 뒤 써야함
- upper() : 전체 문자열을 대문자로 변환
- lower() : 전체 문자열을 소문자로 변환
2) .capitalize() - 첫번째 철자 대문자로 변환
test_csv.col1.str.capitalize()
3) .slice(start = , stop = ) - 문자열 자르기
test_csv.col1.str.slice(start = 0, stop = 3)
- 0번째 부터 2번째 까지 자르기
- .apply(lambda = )를 사용해서 체크할 수도 있지만 .slice()로 잘라서 체크도 가능
4) .len() - 문자열 길이
test_csv['col1_len'] = test_csv.col1.str.len()
5) .lstrip(), .rstrip(), .strip() - 공백 제거
test_csv.col1.str.strip()
6) .replace() - 문자 대체
test_csv.col1.str.replace('a', 'b')
7) .find() - 특정 문자 위치 인덱스
test_csv[['col1', 'col2']][test_csv.col2.str.find('a') != -1]
13 pd.concat()
pd.concat([test_csv.col1, test_csv.col2], axis = 1)
- axis = 1 - 옆으로 붙이기
- axis = 0 - 아래로 붙이기
test_csv.col2.str.lower()
14 데이터 형 변환
test_csv['co1'] = test_csv['co1'].astype(str)
15 re - 데이터 전처리 모듈
1) re.sub
test_csv['col1_mask'] = test_csv.col1.apply( lambda x : re.sub('[0-2]', '*', x))
16 각종 연산
1) max(), min() - 최대, 최소 선택
test_csv['col1'].max().reset_index()
test_csv['col1'].max().reset_index()
2) groupby, reset_index() - col로 묶기
test_csv.groupby('col1')['col2'].max().reset_index()
- job별로 묶은 뒤 money col의 max를 출력
3) groupby() 2개로 하기
test_csv.groupby(['col1', 'col2'])['col3'].sum().reset_index()
4) sum(), mean() - 합, 평균값
test_csv['col1'].sum().reset_index()
test_csv['col1'].mean().reset_index()
5) count() - 개수 세기
test_csv.groupby('col1')['col2'].count().reset_index()
17 col 이름 변경
test_csv.columns = ['이름', '나이']
18 DateTime
1) Date Time으로 변환
test_csv['col1'] = pd.to_datetime(test_csv['col1'])
2) 정보 추출
test_csv.col1.dt.year // 년도
test_csv.col1.dt.month // 월
test_csv.col1.dt.day // 일
19 Rank()
test_csv['순위'] = test_csv['col1'].rank(method = 'dense', ascending = False).astype(int)
test_csv[['col1', 'col2', '순위']].sort_values(by = '순위', ascending = True)
- dense 설정 : 1등 -> 공동 2등 -> 3등
- dense 설정X : 1등 -> 공동 2등 -> 4등
20 qcut()
cuts = 5
test_csv['grade'] = pd.qcut(test_csv.순위, q = cuts, labels=range(1, cuts+1))
21 round() - 반올림
round(3.14) // 3이 나옴
22 .fillna() - 결측지 대체
test_csv['col1'].fillna(mean_value, inplace = True)
23 그룹별 가로 출력
test_csv.groupby('col1')['col2'].apply(list).reset_index(name = 'test_name')
24 행 이동
test_csv['col1'] = test_csv['col2'].shift(1).fillna(0).astype(int)
25 pivot() - 데이터 회전
result = test_csv.pivot_table(columns='num', values = 'col1', aggfunc = 'sum')
- index = 'col2' : 세로로 구분 열 추가
26 merge - join함수
result = pd.merge(test_csv1, test_csv2, on = 'col1', how = 'inner')
- on은 동일한 col을 선택
- inner : equi join
- outer : full outer joint
- right : 우측 테이블 데이터
- left : 좌측 테이블 데이터
27 .drop_duplicates() - 중복제거
pd.concat([x1, x2], axis = 0).drop_duplicates()