- 데이터프레임과 시리즈가 있으며, 판다스에서 다루는 핵심 자료형
- 표의 데이터는 values, 행이름은 index, 열이름은 columns
[특징]
- 표 전체에 함수를 적용해 개별요소를 바꾸어, 불(Bool)값(True/False)으로 반환함
- 인덱싱을 할 수 있다(라벨, 로케이션 이용)
-라벨(key값)
: df.loc['라벨명','라벨명']
-로케이션
: df.iloc[0,0]
[참고]
pandas read_excel
: 엑셀파일을 프레임으로 불러오는 함수
df = pd.read_excel('파일경로')
- io : 파일의 경로명
- sheet_name(인수는 문자열, 정수, 리스트) : 불러올 시트를 지정하는 인자
[예시]
- 지정하지 않음 : 첫번째 시트
- [1] : 두번째 시트
- "Sheet1" : 문자열은 해당 이름을 가진 시트
- [0,1,"Sheet5"] : 첫번째 시트와 두번째 시트 그리고 "Sheet5" 이름의 시트를 딕셔너리로 통합해서 가져옴
- None : 모든 시트를 딕셔너리로 통합해서 가져옴
- pandas의 merge함수
df.merge(right, how='inner', on=None)- 두 데이터프레임을 기준 열의 내용에 따라 병합하는 엑셀 함수
인자
- how (인수는 ‘left’, ‘right’, ‘outer’, ‘inner’, ‘cross’ / 기본값은 ‘inner’)
: 병합할 방식을 결정하는 인자.
- left
: 왼쪽 데이터프레임의 키(key)만을 병합에 사용(엑셀의 vlookup과 유사)
- right (인수 데이터프레임 혹은 시리즈) : 병합할 객체
- outer
: 양쪽 데이터프레임의 키(key)들의 합집합을 병합에 사용
- inner
: 양쪽 데이터프레임의 키(key)들의 교집합을 병합에 사용
- cross
: 양쪽 데이터프레임의 곱집합(cartesian product)을 생성
- on (인수는 열의 레이블 또는 리스트 / 기본값은 None)
: 병합의 기준이 되는 열을 지정하는 인자. 기본 값은 양쪽 데이터프레임에서 이름이 공통인 열들이 지정된다. 리스트로 입력하면 복수의 열을 기준으로 병합한다.
- merge함수
df.merge(right, how='left, on=['업체', '음료']- 복수 열을 기준으로 vlookup
- rename함수
df.rename(index=None, columns=None, level=None)
인자
- index의 이름을 바꾸는 인자(인수는 mapper)
** mapper는 딕셔너리나 시리즈나 함수와 같이 맵핑 할 수 있는 매개체
- columns의 이름을 바꾸는 인자
- level은 멀티인덱스에서 이름을 바꿀 레벨을 지정하는 인자
mapper
- sort_values함수
df.sort_values(by, ascending=True)
df.sort_values(['수학','과학'], ascending=[0, 1])
0은 오름차순
1은 내림차순
인자
- by : 정렬의 기준이 될 배열을 지정하는 인자
- ascending : 정렬 순서를 오름 또는 내림차순으로 지정하는 인자
- merge_asof함수
pd.merge_asof(left, right, on=None, by=None, direction='backward')
인자
- left는 병합할 객체1(인수는 df 혹은 series)
- right는 병합할 객체1(인수는 df 혹은 series)
- on
: 유사 일치로 병합할 기준이 되는 열의 레이블을 지정(인수는 열의 레이블)
반드시 하나의 열만 지정 /숫자나 datetime 같이 유사일치가 가능한 자료형의 열이어야 함/오름차순 정렬 ***
- by
: 정확히 일치시킬 열을 지정하는 인자(인수는 열의 레이블 또는 열의 레이블의 리스트)
- direction
: 경계를 기준으로 유사일치 시킬 방향을 결정하는 인자(인수는 'backward'(기본값), 'forward', 'nearest')
- 'backward'는 작은 값중 최대를 찾아 병합함
- 'forward'는 큰 값중 최소 찾아 병합
- 'nearest'는 가장 가까운 값을 찾아 병합
- concat 함수
pd.concat(objs, axis=0, join='outer', keys=None)
인자
- objs
: 결합할 시리즈나 데이터프레임들을 리스트로 지정하는 인자(인수는 series or df의 배열)
- axis
: 결합할 축 방향을 지정하는 인자 (axis = 0 은 행방향, axis=1은 열방향)
- join
: 결합방식을 지정하는 인자 (인수는inner, outer(기본값)) / inner은 교집합 결합 / outer은 합집합 결합
- keys
: 결합하는 각 데이터프레임에 레벨 부여(인수는 배열/기본값은 none)
- read_html
pd.read_html(io, match = '.+', header=None, index_col=None
인자
- io : 웹페이지의 경로명
- match (인수는 문자열 혹은 정규표현식 / 기본값은 ‘.+’ )
: 테이블 중에서 특정 문자열을 포함한 테이블을 지정하는 인자. 기본값은 빈 문자열을 제외한 모든 문자열이다.(지정하지 않으면 문자열이 포함된 모든 테이블을 가져온다)
- header (인수는 정수, 정수의 리스트 / 기본값은 None)
: columns를 지정하는 인자. 리스트로 지정하면 멀티 인덱스인 columns가 된다.
- index_col (인수는 정수, 정수의 리스트 / 기본값은 None)
: index를 지정하는 인자. 지정하지 않으면 RangeIndex가 index로 부여된다. 리스트로 지정하면 멀티 인덱스인 index가 된다.
- info
: 데이터 프레임의 많은 정보를 알려줌- shape
: 데이터 프레임의 크기를 알려주는 속성- dtypes
: 각 열의 dtype을 시리즈로 반환하는 속성- describe
: 숫자로 된 열들의 간단한 통계들을 제공하는 함수- unique
: 열의 고유값들을 반환하는 함수
- 대괄호 인덱싱 : 레이블(이름)으로 인덱싱
- 열은 인덱싱만 가능하며, 행은 슬라이싱만 가능- loc 인덱싱 : 레이블(이름)으로 인덱싱
- 행과 열 모두 인덱싱과 슬라이싱 가능, 행과 열 동시에 가능- iloc 인덱싱 : 로케이션으로 인덱싱
- 행과 열 모두 인덱싱과 슬라이싱 가능, 행과 열 동시에 가능
인자
- 데이터프레임이나 시리즈의 순위를 매기는 함수
인자
- method (인수는 ‘average’, ‘min’, ‘max’, ‘first’, ‘dense’ / 기본 값은 ‘average’)
: 동점자 처리방식을 지정하는 인자
average: 평균 순위
min: 최소 순위
max: 최대 순위
- first: 출현 순서에 따라 순위 부여
- dense: ‘min’ 과 같지만 동점자가 여러명 있어도 다음 순위가 1을 더해서 부여한다
ex. 90, 89, 89, 88을 각각 1, 2, 2, 3을 부여한다 (4위가 아니라 3위를 부여한다)
- ascending (인수는 bool / 기본 값은 True)
: 오름차순과 내림차순을 결정하는 인자, 기본값은 오름차순 (True)
- 데이터 프레임이나 시리즈의 자료형을 바꾸는 함수
- dtype
: 자료형을 지정하는 인자
특정 열에만 적용하고 싶을 경우 열의 레이블과 자료형을 딕셔너리로 넣음
ex> A열은 문자열로 B열은 정수로 바꾸고 싶을 경우 dtype인자에 {'A':'str', 'B':'int'}을 인수로 입력
- if문 처럼 참, 거짓에(boolean) 따라 값을 부여하는는 것(masking)
- True or False에 따라 값을 씌우는(masking) 함수
인자
- cond (인수는 bool 시리즈, 데이터프레임)
: 조건문처럼 작동하는 True 또는 False의 배열을 입력받는 인자 mask 함수는 True일 때의 값을 바꾼다.
- other (인수는 스칼라 , 시리즈, 데이터프레임, 함수 / 기본값은 nan)
: 조건문이 True일 때 바꿀 값을 지정하는 인자. 기본값은 NaN이다
- 숫자와 같은 데이터를 구간별로 나누어 범주화하는 함수
인자
- x (인수는 배열)
: 구간을 나눌 배열을 입력받는 인자. 반드시 1차원이어야 한다
- bins (인수는 정수, 순서의 배열)
: 구간을 나누는 기준을 입력받는 인자
--정수 : 정수만큼의 균등한 구간으로 분할한다
--순서의 배열 : ex1) [0, 20, 40, 60] 이라면 0 ~ 20, 20 ~ 40, 40 ~ 60 까지의 3개의 구간으로 분할한다
- right (인수는 bool / 기본값은 True)
: 구간에서 우측 경계를 포함할지 여부를 결정하는 인자
- labels (인수는 배열 또는 False / 기본값은 None)
: 구간의 레이블을 지정하는 인자. False는 가장 왼쪽 구간부터 0, 1, 2, 3... 으로 레이블을 부여한다
-- 기본값은 구간의 경계를 구간의 레이블로 부여한다
-- 반드시 bins 인자로 나누어진 구간수와 같아야 한다
s.value_counts(normalize=False, sort=True, ascending=False)