본문 바로가기

IT.DT/파이썬.라이브러리

python Pandas

Pandas 호출 

In [1]: import numpy as np

In [2]: import pandas as pd

 

  • Pandas에는 Series, DataFrame 객체가 있다.
  • Series 를 만들 때 index를 안주면 default RangeIndex가 달린다.
  • DataFrame 의 data_range를 이용하면 Numpy array 배열과 datetime 인덱스로 객체를 만들 수 있다.
  • DataFrame에 딕셔너리를 전달하면 key값은 열로 values는 행으로 입력된다.
  • 각 열들은 각자의 데이터타입을 갖는다. ( .dtypes)
  • 객체이름 점찍고 기다리면 컬럼명이 자동완성으로 뜬다.

Viewing data

  • DataFrame.head() 와 DataFrame.tail() 은 각각 최상단에서 몇행, 최하단에서 몇행을 보여준다.
  • DataFrame의 행,열 DataFrame.index / DataFrame.columns
  • DataFrame을 numpy로 리턴받기 DataFrame.to_numpy()
  • DataFrame은 각 열마다 dtpye을 갖고 numpy array는 하나의 dtype을 갖기 때문에 변환시에 최적의 하나의 dtype를 찾아 저장된다. 공통으로 적용시킬 수 있는 dtype이 없다면 object으로 저장된다. 파이썬에서 나오는 그 객체. 하지만 이 경우는 비효율적이다.(내부적인 이유는 모르겠다.)
  • DataFrame.describe() 각 열에 대하여 행값들을 집계함수(sum,mean,std..)로 요약한다.
  • 행을 기준으로 열값들의 집계함수를 보려면 DataFrame.T해서 적용한다.
  • df.sort_index(axial = 1, ascending = False) : axial =1 은 열을 섞어라, axial = 0은 행을 섞어서 정렬해라.
  • df.sort_values(by="B") : B열의 값들을 기준으로 행을 정렬해라.

Slection

  • 파이썬 문법 리스트나, 딕셔너리에서 쓰는 문법(슬라이싱,추가,조회)와 유사하여 사용할 순 있으나 판다스에서 제공하는 optimized methods (at, iat, loc, iloc) 을 사용하는 것을 권장한다. 빠르고, 명확하고, 실수를 방지한다.
  • Dataframe["column"] series 반환한다. #사용 지양하기
  • DataFrame[ : ]  : 인덱스를 슬라이싱해서 보여준다. 인덱스라벨을 넣어도 된다. #사용지양
DataFrame.loc:Used for label-based indexing (i.e., you can access data by row/column labels).Allows you to access rows and columns using their names.
DataFrame.iloc:Used for integer position-based indexing (i.e., you can access data by row/column positions).This is similar to how NumPy works.
DataFrame.at:Used for accessing a single scalar value (i.e., a single cell) using row/column labels.It's a faster method than .loc for accessing individual elements.
DataFrame.iat:Similar to at, but for integer position-based indexing.It's a faster method than .iloc when accessing a single scalar value.
  • df.loc[dates[0]] : dates[0] 은 index의 첫번째 요소를 나타낸다. loc[] 은 안의 요소를 열값으로 인식하기 때문에 dates[0]에서 리턴된 요소가 열값으로 올라간다.
  • df.loc[ : , ["A":"B"] : 콤마 앞은 행의 이름으로 슬라이싱, 콤마 뒤는 열의 이름으로 슬라이싱.
  • df.loc["20130102":"20130104" , ["A","B"]] : 라벨 이름으로도 슬라이싱 가능.
  •  파이썬과 다르게 마지막값도 포함하여 출력한다. 
  • df.loc[dates[0], "A"]  : dates[0] 으로 라벨값 리턴받고 라벨로 1x1 리턴받기
  • 1 X 1 데이터프레임은 scalar 값으로 리턴한다. (원래 행이 갖고있던 dtype)
  • df.at[dates[0],"A"] : 좀 더 최적화된 방법으로 데이터 리턴 받기
  • df.iloc[3] : 4번째행의 인덱스가 열로 올라가서 Series 로 리턴한다.
  • df.iloc[3:5 , 0:2]  : 3~4, 0~1 슬라이싱 (2 X 2)
  • df.iloc[[1,2,4], [0,2]] : 가져올 열과 행을 선택