새소식

데이터분석/다섯째주

EDA : Pandas 데이터프레임 - 데이터 선택

  • -
728x90

 

  • 변수명.컬럼명 은 컬럼명이 문자열일때만 사용 가능하다.
    숫자는 문자열로 지정했다고 하더라도 사용을 할수가 없다.
import pandas as pd import numpu as np dates = pd.date_range('20130101', periods=6) df = pd.DataFrame(np.random.randn(6,4), index=dates, columns=['A', 'B', 'C', 'D']) print(df['A'])

 

-- 출력 --
 

 

 

  • offset index
    [ n : m ]     n부터 m-1까지
  • 인덱스나 컬럼의 이름으로 slice하는 경우는 끝을 포함한다.

 

import pandas as pd import numpu as np dates = pd.date_range('20130101', periods=6) df = pd.DataFrame(np.random.randn(6,4), index=dates, columns=['A', 'B', 'C', 'D']) print(df['A']) print(df[0:3]) print(df['20130102':'20130104'])

 

-- 출력 --
 

 

 

import pandas as pd import numpu as np dates = pd.date_range('20130101', periods=6) df = pd.DataFrame(np.random.randn(6,4), index=dates, columns=['A', 'B', 'C', 'D']) print(df[:])

 

-- 출력 --
 

 

 

  • loc : location
  • Pandas의 보편적인 slice 옵션
  • index 이름으로 특정 행, 열을 선택한다.

 

import pandas as pd import numpu as np dates = pd.date_range('20130101', periods=6) df = pd.DataFrame(np.random.randn(6,4), index=dates, columns=['A', 'B', 'C', 'D']) print(df.loc[:, ['A', 'B']]) print(df.loc['20130102':'20130104', ['A', 'B']]) print(df.loc['20130102', ['A', 'B']])

 

-- 출력 --
 

 

 

  • iloc : inter location, 컴퓨터가 인식하는 인덱스 값으로 선택
  • iloc 옵션을 이용해서는 번호로만 접근 가능하다.

 

import pandas as pd import numpu as np dates = pd.date_range('20130101', periods=6) df = pd.DataFrame(np.random.randn(6,4), index=dates, columns=['A', 'B', 'C', 'D']) print(df.iloc[1:3]) print(df.iloc[3]) print(df.iloc[3:5, 0:2]) print(df.iloc[[1, 2, 4], [0, 2]])

 

-- 출력 --
 

 

 

 

  • NaN : Not a Number
import pandas as pd import numpu as np dates = pd.date_range('20130101', periods=6) df = pd.DataFrame(np.random.randn(6,4), index=dates, columns=['A', 'B', 'C', 'D']) print(df['A'] > 0) print(df[df['A'] > 0]) print(df[df > 0])

 

-- 출력 --
 

 

 

 

  • 하나 이상의 .데이터를 찾을때는 리스트 형식으로 입력한다.
  • 불린 형식으로 반환한다.

 

import pandas as pd import numpu as np dates = pd.date_range('20130101', periods=6) df = pd.DataFrame(np.random.randn(6,4), index=dates, columns=['A', 'B', 'C', 'D']) df['E'] = ['one', 'one', 'two', 'three', 'four', 'three'] df['E'].isin(['two', 'four'])

 

-- 출력 --
 

 

 

  • 반환값이 True인 행만 출력된다.

 

import pandas as pd import numpu as np dates = pd.date_range('20130101', periods=6) df = pd.DataFrame(np.random.randn(6,4), index=dates, columns=['A', 'B', 'C', 'D']) df['E'] = ['one', 'one', 'two', 'three', 'four', 'three'] print( df[df['E'].isin(['two', 'four'])] )

 

-- 출력 --
 

 

 

  • 데이터프레임에 일괄적으로 함수(메소드)를 적용해주는 기능을 한다.
  • numpy 모듈의 함수명을 사용할 수 있다.
    cumsum : 누적합
    sum : 합계
    mean : 평균
  • 사용자 함수를 만들어서 사용할 수도 있다.

 

import pandas as pd import numpu as np dates = pd.date_range('20130101', periods=6) df = pd.DataFrame(np.random.randn(6,4), index=dates, columns=['A', 'B', 'C', 'D']) print(df) print(df.apply(np.cumsum)) print(df['A'].apply("sum")) print(df['A'].apply(np.sum) print(df['A'].apply("mean")) print(df['A'].apply("min"), df['A'].apply("max")) print(df[['C','D']].apply("sum"))

-- 출력 --

 

 

import pandas as pd import numpu as np def plusminus(num): return "Plus" if num > 0 else "Minus" dates = pd.date_range('20130101', periods=6) df = pd.DataFrame(np.random.randn(6,4), index=dates, columns=['A', 'B', 'C', 'D']) print(df) print(df['A'].apply(plusminus))

-- 출력 --

 

 

 

 

 

반응형

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.