데이터분석/다섯째주

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

핑크댕댕이 2023. 10. 25. 00:23
728x90

 

< 데이터 선택 Slice >

특정 컬럼만 읽기 : [ '컬럼명' ]

  DataFrame 변수명 [ '컬럼명' ]   

  DataFrame 변수명 . 컬럼명   

  • 변수명.컬럼명 은 컬럼명이 문자열일때만 사용 가능하다.
    숫자는 문자열로 지정했다고 하더라도 사용을 할수가 없다.
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'])

 

-- 출력 --
 

 

 

특정 행만 읽기 - [ 인덱스 번호 : 인덱스 번호 ]

  DataFrame 변수명 [ 인덱스 번호:인덱스 번호 ]   

  DataFrame 변수명 [ '인덱스 이름':'인덱스 이름' ]   

  • 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'])

 

-- 출력 --
 

 

 

전체 행 읽기 - [   :   ]

  DataFrame 변수명 [ : ]   

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[ 행 slice, 컬럼 slice ]

  DataFrame 변수명.loc[ 행 slice, 컬럼 slice ]   

  • 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[ 번호 ]

  DataFrame 변수명.iloc[ 인덱스 번호 or 인덱스 번호 slice ]   

  DataFrame 변수명.iloc[ 인덱스 번호 slice, 컬럼 번호 slice ]   

  • 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]])

 

-- 출력 --
 

 

 

 

< condition >

특정 데이터만 읽기 : [ 조건 ]

  DataFrame 변수명 [ 조건 ]   

  DataFrame 변수명 [ '컬럼명' ] 조건   

  • 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])

 

-- 출력 --
 

 

 

 

 

특정 요소가 있는지 확인 : isin( )

  DataFrame 변수명 . isin( 데이터 )  

  DataFrame 변수명 . isin( [ 데이터, .... ] )  

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

 

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'])

 

-- 출력 --
 

 

 

특정 요소가 있는 행만 선택 : [ isin( ) ]

  DataFrame 변수명 [ 변수명 . isin( 데이터  또는  [데이터, ...]  ) ]   

  DataFrame 변수명 [ 변수명['컬럼명'] . isin( 데이터  또는  [데이터, ...]  ) ]   

  • 반환값이 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'])]
)

 

-- 출력 --
 

 

 

DataFrame에 함수 적용 : apply( )

  DataFrame 변수명 . apply( numpy.함수명 )   

  DataFrame 변수명 . apply( 함수명 )   

  • 데이터프레임에 일괄적으로 함수(메소드)를 적용해주는 기능을 한다.
  • 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))

-- 출력 --

 

 

 

 

 

반응형