산술연산과 데이터 정렬



산술연산


객체를 더할 때 짝이 맞지 않는 색인이 있다면 결과에 두 색인이 통합된다.



서로 겹치는 색인이 없다면 데이터는 NA 값이 된다.
산술연산 시 누락된 값은 전파되며, DataFrame에서는 로우와 칼럼 모두에 적용된다.

NA 값을 치환할 때는 fill_value 값을 지정



산술연산 메서드



일반 array의 산술 연산(브로드캐스팅 기능)


DataFrame과 Series간의 연산은 앞의 브로드캐스팅 기법과 유사

만약 색인 값을 DataFrame의 칼럼이나 Series의 색인에서 찾을 수 없다면, 그 객체는 형식을 맞추기 위해 재색인된다



python의 분산 구하기


두 var의 결과가 다른 이유는 np.var와 pd.var에서 제공하는 자유도(ddof)가 서로 다르기 때문

Series구조는 자동으로 pd.var 적용(ddof = 1)
a1.var()는 np.var, s1.var()는 pd.var 적용




함수 적용과 매핑

- 각 컬럼별 로우별 함수 적용(축 값 지정)



[파이썬 적용함수]


1. map함수
- map(function, **iterable)
- 1차원 원소별 적용 가능
- 리스트 출력
- 다수의 인자 전달 시 각 인자의 크기 일치 필요

2. map메서드
- data.map(function, **iterable)
- 1차원(Series) 원소별 적용 가능
- 다수의 인자 전달 시 각 인자 크기 일치 시킬 필요 없음

3. apply 메서드
- data.apply(function, axis)
- 행별(axis=0), 열별(axis=1) 적용 가능
- 주로 그룹함수와 함께 사용
- 출력 결과 Series

4. applymap 메서드
- data.applymap(function, **iterable)
- 2차원 원소별 적용 가능
- 출력 결과 DataFrame



# applymap은 row나 컬럼별로 작동하는 함수가 아니라, 각 요소별로 작동을 한다.
# 자체가 그룹함수라면 동시에 여러개가 전달되어서 요구되는 apply와 잘 어울림




정렬과 순위




sort_index 메서드
- 키 이름별 정렬
- 로우, 칼럼의 색인을 알파벳 순으로 정렬하여 새로운 객체 반환
- 지정된 축 별 정렬 가능


Series의 value 값에 따라 정렬하려면 sort_values 메서드 사용



rank
- rank(순위)는 정렬과 거의 흡사하며 1부터 배열의 유효한 데이터 개수까지 순위를 매김
- 순위는 numpy.argsort에서 반환하는 간접 정렬 색인과 유사한데, 동률인 순위를 처리하는 방식 다름
- 기본적으로 Series와 DataFrame의 rank 메서드는 동점인 항목에 대해서는 평균 순위를 매김


rank method


- first: 데이터상 순서에 따라 순위
- max: 같은 값을 가지는 그룹을 높은 순위
- min: 같은 값을 가지는 그룹을 낮은 순위
- average: 같은 값을 가지는 항목의 평균 값을 순위로 삼음




상관관계와 공분산






- corr 메서드 : 상관관계 행렬 또는 상관관계 값 리턴, 다중공선성 문제 확인에 사용


- cov 메서드 : 공분산 행렬 또는 공분산 값 리턴


- corrwith 메서드 : 서로 다른 DafaFrame과 Series의 상관관계 계산


※ 다중공선성: 모델 만들때 서로 다른 변수들끼리 높은 상관관계를 가지고 있으면

그 모델 추정시 정확도가 떨어지는 현상




기술통계 계산과 요약



- idxmax 메서드 :

각 축 별 최대 값을 갖는 index 값 리턴


- describe 메서드 :
수치형 데이터일 경우 각 통계 지표를, 문자형 데이터일 경우 요약 통계 반환


- cumsum 메서드 : 누적 합




기술통계와 요약통계 메서드





유일 값, 값 세기, 멤버십



- Unique 메서드 : 중복 값 제거(정렬되지 않음)




in 연산자



in 연산자는 벡터연산이 불가(반복 연산 불가능)


map(lambda)적용으로 벡터연산 수행



isin 메서드



- isin 메서드 : 어떤 값이 Series에 있는지를 불리언 배열 형태로 반환
- Series나 dataframe 컬럼에서 값을 골라내고 싶을 때 유용하게 사용



fillna 함수를 이용하여 비어있는 값 치환



다양한 fillna 치환


fillna 함수는 컬럼별로 다른 값을 치환 할 수 있다.

(치환 할 값을 딕셔너리 형태 {} 로 전달)


method = 'ffill' 옵션을 사용하여 이전 행 값으로 치환 가능.



dropna


- dropna() : 하나라도 NA값이 있는 row 삭제

- dropna(axis=1) : 하나라도 NA값이 있는 colums 삭제

(하나라도 NA가 있으면 컬럼이 날아가기 때문에 위험한 방법)




- how = 'all' : 모든 row가 NA일시에만 row를 삭제하는 옵션


- thresh = n : n개의 누락된 값이 포함된 row를 출력




'Python > iPython' 카테고리의 다른 글

ipython - pandas 2  (0) 2019.02.07
ipython - pandas 1  (0) 2019.02.01
ipython - numpy 2  (0) 2019.01.31
ipython - numpy 1  (0) 2019.01.30


사용자 모듈 만들기



1. 파이썬이나 메모장(확장자 변경 필요함)에서 모듈 작성



2. 해당 위치에 py 확장자로 저장



3. %run으로 모듈 실행



4. 잘 작동되나 확인






컬럼의 추가



일반적인 방법 (존재하지 않는 컬럼을 색인 하는 형식)



ix(loc) 를 사용한 컬럼 추가




이름 부여하기





index 수정



python의 index는 일부만 수정이 불가능하다.



일부만 수정



1. 전체 index 수정(비권장)




2. index를 list형식으로 만들어 list 수정 후 index에 덮어 쓰기(권장)






재색인(reindex)



색인 메서드와 속성





reindex를 사용하지 않는 기존의 재색인 방법



1. DataFrame을 이용한 컬럼 재배치(비권장)

   - reindex기능을 가지고 있다.



DataFrame기능을 이용한 컬럼 재배치는 위치기반 색인 불가능.





2. ix(loc)메서드를 사용한 재배치



ix메서드를 사용한 컬럼 재배치는 위치기반 색인 가능.




3. 순서 전달 재색인

   - reindex기능은 없음.



reindex

- 새로운 색인에 맞도록 객체를 새로 생성하는 기능이다
- 사용자 지정 순서 정렬이 가능
- 원하는 데이터만 출력, 새로운 데이터의 추가가 간편하다
- 행과 컬럼 둘 다 적용 가능
- index 값으로 기존 Series 재 배치
- 존재하지 않는 색인 값이 있다면 빈 값을 새로 추가




reindex를 사용한 재배치.

존재하지 않는 색인값을 삽입시 NaN출력.



DataFrame도 reindex 기능을 포함하고 있다.



fill_value : 존재하지 않는 색인의 값을 지정해 치환


method : 빈 값을 채워 넣는 옵션 선택 가능
- ffill 또는 pad : 앞의 값으로 채워 넣는다
- bfill 또는 backfill : 뒤의 값으로 채워 넣는다





하나의 로우 또는 컬럼 삭제하기(drop)


- 삭제하려는 로우나 칼럼이 제외된 리스트를 이미 가지고 있다면 이를 이용한 삭제 가능
- drop 메서드를 사용하면 선택한 값이 삭제된 새로운 개체를 얻을 수 있다
- 원본 배열을 변경하지 않는다
- 기본은 로우에 대한 삭제이므로 컬럼 삭제 시 축 지정 필요



drop을 이용해 지정한 index 삭제




drop을 이용해 지정한 컬럼 삭제(axis로 방향 지정)





색인, 선택, 자르기



Series의 색인

- NumPy 배열의 색인과 유사하게 동작하는데, Series의 색인은 정수가 아니어도 된다는 점이 다름
- 라벨 이름으로 슬라이싱하는 것은 시작점과 끝점을 포함한다는 점이 일반 파이선에서 슬라이싱과 다른 점


라벨 이름으로 슬라이싱 색인 가능




DataFrame의 색인

- 컬럼 색인 가능


컬럼 이름으로 색인 가능.



슬라이싱으로 로우 선택 가능.



불리언 배열로 컬럼 선택 가능.



ix(loc)메서드를 이용하여 컬럼과 row에 대한 색인 동시 가능.




'Python > iPython' 카테고리의 다른 글

ipython - pandas 3  (0) 2019.02.14
ipython - pandas 1  (0) 2019.02.01
ipython - numpy 2  (0) 2019.01.31
ipython - numpy 1  (0) 2019.01.30



*

pandas



> 고수준의 자료 구조를 다루는데 적합한 여러 가지 함수 제공
> 파이썬을 통한 빠르고 쉬운 데이터 분석 도구를 포함
> 고성능의 과학계산 컴퓨팅과 데이터 분석에 필요한 기본 패키지





Series



> 일련의 객체를 담을 수 있는 1차원 배열 같은 자료 구조
> 어떤 numpy자료형도 담을 수 있음
> 색인이라고 하는 배열의 데이터에 연관된 이름을 가지는 구조
> series 객체의 문자열 표현은 왼쪽에 색인을 보여주고 오른쪽에 색인값을 보여줌
> 데이터 색인 디폴트 : 기본 색인인 정수 0에서 N-1까지 숫자 표시
> series의 배열과 색인 객체는 각각 values와 index속성을 얻을 수 있다



import pandas 로 pandas 호출




Series 생성하기




Series의 배열과 색인 객체는 각각 values와 index 속성을 통해 얻을 수 있다.



각각의 데이터를 지칭하는 색인을 지정해 Series 객체를 생성하는 경우는 값과 index를 지정 가능



Series는 index의 개념을 두가지로 해석


> 1. key를 가지고있지 않은 대상에게 index를 쓰면 차례대로 해당 key부여
> 2. 이미 key값이 있는 Series에 index를 쓰면 매칭되는 키를 출력하라는 명령(이름을 부여하는게 아님)




Series는 색인을 이용한 접근이 가능하다.







Series - 2


> Series는 고정 길이의 정렬된 딕셔너리 형태

> 파이썬의 딕셔너리를 인자로 받아야 하는 많은 함수에서 딕셔너리를 대체 사용 가능
> 파이썬 딕셔너리 객체로부터 Series 객체 생성 가능
> 리스트 객체나 array 객체도 Series 객체로 가능하나 index 값이 없음



이미 생성되어진 딕셔너리 형태의 객체를 Series로 변환하면 자동으로 key 값으로 정렬되어 저장됨.


=> 기존 데이터에 index 값을 지정하여 index 순서대로 선택 출력 가능.
     매칭되지 않는 index 값은 NaN으로 표시되며 누락된 값 또는 NA로 취급된다.




NA 값 삽입하는 법




NA 를 삽입하면 문자열로 들어가기 때문에 np.nan을 사용해 삽입한다.




isnull과 notnull 함수를 사용하여 Series객체에 저장되어 있는 NA 값의 존재 여부 확인 가능.

isnull은 Series의 메서드로도 제공됨.

함수에 any (하나 이상의 True 값이 있는지 검사해주는 메서드)사용시 NA값이 하나라도 있을시 True(False)반환


pd.isnull : NA값을 True로 반환

pd.notnull : NA값을 False로 반환




series의 산술연산


> Series의 산술연산은 각 색인 값 끼리 연산된다
> NaN 값의 산술연산의 결과는 항상 NaN
> 모든 Series 객체에 존재하는 index value에 대해서만 연산 가능, 그렇지 않으면 NaN 값 반환




같은 key가 매칭되는 색인 값 끼리의 산술연산 시행.



Series객체와 Series의 색인은 name을 지정할 수 있다.
Series의 색인은 대입을 통해 변경할 수 있다.






DataFrame



> * dataframe의 키는 컬럼이다

> 각 컬럼은 서로 다른 타입의 값을 담을 수 있다

> Dataframe에서의 로우 연산과 칼럼 연산은 거의 대칭적으로 취급

> 내부적으로 2차원 형식으로 저장 -> 고차원 표 형식 데이터를 계층적 색인을 통해 표현

> 같은 길이의 리스트가 담긴 사전, numpy배열을 이용하여 주로 생성



DataFrame의 생성


만들어진 dataframe은 각 행의 번호가 색인형태로 자동으로 대입(0,1,2 순...)

만들어진 dataframe은 컬럼 이름별로 자동으로 정렬




DataFrame구조에서 컬럼 이름을 통한 색인 가능.




컬럼 이름을 순서대로 나열해 컬럼배치 재설정 가능(이름 지정 아님)


※ 이름 지정은 index를 이용하여 행의 이름 변경 가능.

 - 매칭되지 않는 컬럼을 넘길 경우 NA값이 저장.




> index : row의 이름 출력

> columns : 컬럼 이름 출력






컬럼의 색인



1. 하위 호출(df.keyname)


2. 이름 전달(df['keyname'])


3. 색인 메서드 사용(loc,iloc)




loc, iloc등의 색인 메서드 사용으로도 호출할 수 있다.

(ix를 사용하면 row우선순위, 사용하지 않으면 column 우선순위)


ix 메서드로 row 이름을 가지고 특정 row에 해당 하는 값만 출력, 행과 열에 대한 간결한 재색인이 가능했으나

현재 warning메시지가 뜨는 메서드이기 때문에 라벨색인(라벨이 하나라도 존재할때)은 loc, 정수색인은 iloc를 사용한다.




'Python > iPython' 카테고리의 다른 글

ipython - pandas 3  (0) 2019.02.14
ipython - pandas 2  (0) 2019.02.07
ipython - numpy 2  (0) 2019.01.31
ipython - numpy 1  (0) 2019.01.30

+ Recent posts