Pandas 관련 사용법 정리

서준·2024년 6월 12일
0

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']]
  • 원하는 col에 대해서 전부 추출 가능

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 선택
  • between은 시작과 끝 값을 포함

2) not 연산 예시

test_csv[['col1', 'col2', 'col3']][~file['col2'].between(1, 10)]
  • col2가 1~10사이가 아닌 row 선택

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')]
  • col2의 0번 인덱스가 A인 row 선택

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()
  • 이런식으로 새로운 col 추가도 가능

5) .lstrip(), .rstrip(), .strip() - 공백 제거

test_csv.col1.str.strip()

6) .replace() - 문자 대체

test_csv.col1.str.replace('a', 'b')
  • a를 b로 대체

7) .find() - 특정 문자 위치 인덱스

test_csv[['col1', 'col2']][test_csv.col2.str.find('a') != -1]
  • 없으면 -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)
  • col1을 str type으로 변환

15 re - 데이터 전처리 모듈

1) re.sub

test_csv['col1_mask'] = test_csv.col1.apply( lambda x : re.sub('[0-2]', '*', x))
  • 0~2의 문자를 * 로 바꿈

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()
  • 결측치가 없는 columns을 사용해야 한다

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))
  • cuts : 몇개로 나눌 건지 선택

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()
profile
어린이입니다.

0개의 댓글