사용자 모듈 만들기



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