Home > PYTHON > Library > Pandas

Pandas
python library pandas

Pandas(Python Data Analysis Library) #


정형데이터 조작에 최적화된 라이브러리

  • 행렬로 이루어진 테이블 형태구조의 데이터 연산이 뛰어나다
  • json,html,csv,xlsx,sql등등 다양한 정형화 데이터를 통일하여 표현가능

기본구조 #


Pandas는 1차원 구조와 2차원 구조를 가지고 있으며 아래와 같다.

  • 1차원 구조
    pd.Series([1,3,5,np.nan, 78])
  • 2차원 구조
    pd.DataFrame(
    data=np.arange(1, 49).reshape(12, 4),
    index=np.arange(12),
    columns=[“X1”,”X2”,”X3”,”X4”]
    )
    • data= 구조를 만드는데 사용할 데이터 2차원구조 필요
    • index= 구조를 만드는데 사용할 인덱스명
    • data= 구조를 만드는데 사용할 컬럼명

pandas의 내부 구조는 numpy array기반으로 생성해서 universal function 같은 numpy array의 기능을 사용할 수 있다.

Fancy indexing #


  • <pd.data>.<columnName> == <pd.data>[<columnName>]
    <pd.data>의 해당 컬럼 기반의 시리즈 추출

  • <pd.data>.index[<num>]
    <pd.data>에서 <num>번째 인덱스이름 가져오기

  • <pd.data>.loc[<indexName>, <columnName>]
    <pd.data>의 (<indexName>, <columnName>)에 해당하는 값을 추출(차원 구조로 작성시 해당 차원의 값이 전부 나옴)
    <indexName>임이 중요하다 n을 넣으면 n-1이 아님

  • <pd.data>.iloc[<indexNum>, <columnNum>]
    loc과 작동이 같으나 Name이 아닌 Number를 기준으로 한다.

mask #


조건식을 적용하면 조건의 만족여부를 확인가능한 mask가 생성되며 해당 마스크로 데이터를 가공할 수 있다.

  • <pd.data>[<pd.data>기반 조건]
    <pd.data>에서 조건에 해당하는 데이터 추출

기본함수 #


<pd.data>.index #

<pd.data>의 인덱스값 추출

<pd.data>.columns #

<pd.data>의 컬럼값 추출

<pd.data>.values #

<pd.data>의 값 추출

<pd.data>.apply(<func>) #

<pd.data>의 값을 <func>을 통해 가공하여 추출

<pd.data>.str.contains(pat=<string>, regex=Bool) #

<pd.data>에 <string>이 있는지 확인 regex=True(default)

<pd.data>[<columnName>] #

<pd.data>의 해당 컬럼 기반의 시리즈 추출

<pd.data>.head(<num>) #

<pd.data>의 인덱스 0에서 <num>(Null: 5)개 추출

<pd.data>.tail(<num>) #

<pd.data>의 인덱스 뒤에서 <num>(Null: 5)개 추출

<pd.data>.info() #

<pd.data>의 전반적인 정보를 제공

<pd.data>.describe() #

<pd.data>의 전반적인 통계치를 제공

<pd.data>.groupby(<columns_name>) #

<pd.data>에서 수치데이터를 <columns_name>의 기준으로 분별한다.

pd.to_numeric(<pd.data>, error=<state>) #

<pd.data>를 숫자로 변환한다.

  • error=”ignore”: 숫자가 안되면 원본
  • error=”coerce”: 숫자가 안되면 NaN
  • error=”raise”: 숫자가 안되면 에러발생

pd.to_datetime(<pd.data>) #

<pd.data>를 시간타입의 값으로 변환한다.

  • <pd.data>.dt.hour 과같이 원하는 값을 추출할 수 있다.

<pd.data>.sort_values(by=<pd.columnName>, ascending=False) #

<pd.data>의 값에서 <pd.columnName>를 기준으로 정렬
ascending = True: 오름차순 False: 내림차순

Datafram 합치기 #


pd.merge(<pd.data>, <pd.data>, on=”A”, how=”outer”) #

how=”outer”, “inner”, “left”, “right”
<pd.data>끼리 join을 이용한 합치기

pd.merge_asof(<pd.data>, <pd.data>, on=”A”, direction=”backword”) #

direction=

  • backword는 left에 매칭하여 빈공간없이 합치기
  • forword는 left에 매칭하여 빈공간있게 합치기
  • nearest는 left에 매칭하여 근처값으로 합치기

pd.concat([<pd.data>, <pd.data>], axis=<num>) #

<pd.data>들을 <num>차원으로 합치기

<pd.data>.reset_index(drop=Null) #

<pd.data>의 인덱스를 재정의
drop= True는 기존 인덱스 삭제 False는 기존 인덱스 남겨둠

pivot table #


특정 컬럼을 기준으로 통계량을 측정하여 판다스 테이블화 하는것

  • pd.pivot_table(data=<pd.data>, index=[<columnName>], values=[<columnName>], aggfunc=[<option>,<option>])

index에 입력한 <columnName>을 인덱스로 하고 values에 입력한 <columnName>이 columns가 되는 테이블을 만듬

aggfunc에 있는 <option>에 해당하는 값으로 column을 만듬 e.x. sum, mean, count 등등…

unpivot #


pivot화 된 데이터를 풀어헤치는 행위
stack은 기준이 없을때 melt는 기준이 있을때 용이

(with)stack #

stack -> columns to index / unstack -> index to columns

  • <pd.data>.stack(level=[0,…], dropna=True).reset_index().set_axis([], axis=1)
    level은 columns의 최상단부터 0으로 매겨지며 해당하는 columns를 index로 보내고 인덱스를 리셋하여 다시 네이밍을 하는 방법

(with)melt #

  • <pd.data>.melt(id_Vars=None, value_vars=None, var_name=None, value_name=”value”)
    id_Vars를 기준으로 데이터를 풀어헤치며 데이터를 value, columns를 variable로 분배한다.

외부 Datafram 불러오기 #


colab #

from google.colab imort drive
drive.mount('/content/drive')
data = pd.read_csv("/dir/data.csv")

window #

data = pd.read_csv("/dir/data.csv")