Pandas :

데이터 처리를 위한 라이브러리 / 많은 부분이 numpy로 작성되어 있다. / 고수준 API 제공 / csv 파일 등 외부 데이터도 DataFrame으로 변경하는 것이 용이하다. 

 

import pandas as pd

pandas를 불러오는 코드.
numpy를 코드에서 np로 적는 것 처럼 pandas에서도 마찬가지로 pd라고 사용하는 경우가 대부분이다.

 


 

판다스의 기본적인 함수들 

 

  • pd.read_csv() : csv 파일을 dataframe으로 만드는 함수(csv파일은 이해하기 쉽게 엑셀 파일과 거의 동일한 형태라고 보면 된다. )
  • pd.head / tail() : DataFrame의 첫/마지막 데이터들을 제공한다. 샘플을 보여주는 기능을 하는 함수라고 생각하면 된다. 괄호 안에 숫자를 집어넣지 않으면 default 값으로 5개가 출력된다. 
  • pd.shape : 넘파이와 동일하게 해당 데이터의 행의 개수, 열의 개수를 알려주는 함수이다. 
  • pd.info() : 총 데이터의 개수, 타입, Null 건수를 출력한다. 
  • pd.describe() : 숫자형 데이터 값의 분포도 

    확실히 pd.info()pd.describe()를 보면 numpy보다 분포를 파악하는 데에 특화되어 있다는 것을 알 수 있다. 

    df['칼럼명'].value_counts() : 해당 열(특성)에서 value들이 어떤 종류얼마나 있는지를 알려준다. 


모든 Series와 DataFrame은 인덱스를 반드시 가진다.

인덱스 :

  • 항상 순차적인 값이어야 한다. 
  • 고슈성이 보장되는 한 의미있는 데이터 값을 할당하는 것이 가능하다. 
  • 해당 데이터가 생성이 된 후에도 인덱스를 변경할 수 있다.

 

 

데이터 자료형 변경 

1.

DataFrame은 기본적으로 2차원 데이터이다. 오른쪽에 있는 자료들을 DataFrame으로 만드는 경우 pd.DataFrame(list, columns = col_name)을 이용한다.이 때, list에 있는 값들은 전부 value값들로 들어가기 때문에, 특성들의 이름을 가진 리스트인 col_name을 인자로넣어 주어야 한다. 


2.

pd.values.tolist()
: pd.tolist()로 한번에 되지 않는다. 처음에 values를 통해서 ndarray로 만들어준 후에 tolist()로 
                          리스트 자료형으로 만들어 줄 수 있다. 

pd.to_dict()        : 한번에 DataFrame을 dict로 
                        pd.to_dict('list')라는 코드는 pd.values.tolist() 대신 사용할 수 있다. 


 

대괄호를 이용한 데이터 생성, 수정, 삭제

 

가장 기본적인 방식


대괄호 내부에 기존에 존재하는 column 명이 들어가면 수정 
대괄호 내부에 기존에 존재하지 않는 column 명이 들어가면 생성 

 

등호(=) 오른쪽(해당 열의 데이터들)에는 상수가 들어가는 것이 가능하지만, 
대부분 리스트가 들어가거나 기존의 특성(기존의 column)들을 가공하는 식이 들어가는 경우가 많다. 

ex> 

#새로운 열을 생성하는 경우 상수를 대입할 수 있다. 
df['new_col'] = 0

#기존에 존재하는 열(Age)을 가공하는 방식으로 새로운 열을 생성할 수 있다. 
df['Age_by_10'] = df['Age'] * 10


# 기존에 존재하는 복수개의 열을 가공하는 방식으로 새로운 열을 생성할 수 있다. 
df['A_B'] = df['A'] + df['B'] + 100

 

 

데이터 삭제 

drop() 매서드를 통해서 이루어진다. 
drop() 매서드의 중요한 파라미터로는 labels / axis / inplace가 있다. 

  • labels :   삭제하고자 하는 인덱스 column명을 입력한다. 
  • axis :     삭제를 행 방향으로 할지, 열 방향으로 할지에 대해서 정해주는 파라미터이다. 
  • inplace : 원본 데이터를 행을 삭제한 데이터로 업데이트 할지(True), 그대로 유지할지 (False)에 대해서 정하는 파라              미터이다. 

 

인덱스

Index 객체 :
DataFrame, Series를 고유하게 식별하게 만들어주는 객체이다. 


df.index / series.index :
인덱스 객체만 추출할 수 있다. 


reset_index() :
새롭게 인덱스를 연속 숫자형(0,1,2,3,4,.....)으로 할당해준다. 기존에 존재하던 인덱스는 DataFrame에 'index'라는 column명을 가진 column 안에 들어가게 된다.

 

 

데이터 셀렉션 및 필터링  

DataFrame['칼럼명']


판다스 객체에서 [](대괄호) 안에는 column명만 들어가야 하는 것은 아니다. 하지만, 혼동을 막기 위해서는 대괄호 안에column 명만 넣어주는 것이 혼동을 막기위한 가장 좋은 방법이다. 

(슬라이싱 연산으로 데이터 추출이 가능하기는 하지만 추천하지 않는다.)

불린 인덱싱은 가능하다.(데이터 추출에서 많이 쓰이는 방법이다.)

ex> 

#Plcass열의 값이 3인 데이터들만 모아 놓은 DataFrame을 반환한다.
titanic_df[titanic_df['Pclass'] == 3]

 


 

데이터 추출


DataFrame

ix[] 연산자 : 넘파이의 []역할과 동일하다. 

#1. 칼럼 명칭(label) 기반 인덱싱.
df.ix[0,'Pclass']

#2. 칼럼 위치(Position) 기반 인덱싱.
df.ix[0, 2]

▶ 현재 ix[]는 판다스에서 사라지게 되었다. 

 

이를 대신할

  • .loc[   ] : 칼럼 명칭기반 인덱싱
  • .iloc[   ] : 칼럼 위치기반 인덱싱

 

df.loc[  ] : 행과 열 값으로 integer 또는 integer 형의 슬라이싱 팬시 리스트 값을 입력해주어야 한다. 명칭 입력시 오류 
df.iloc[  ]: 행 위치에는 DateFrame index값을, 열 위치에는 column 명을 입력한다.  

 

주의 !! 


loc[   ] 에 슬라이싱 기호를 사용할 때에는 (시작값) ~ (종료값 -1) 이 아닌 (시작값) ~ (종료값)까지 표현이 된다. 

loc[   ] 은 명칭 기반이기 때문에, 인덱스의 형태가 integer라는 보장이 없다. 이로 인해 행 종료 값에 -1을 연산할 수 없기 때문이다. 

728x90
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기