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]] : 가져올 열과 행을 선택