🐍 Python

pandas의 DataFrame의 기본 개념

ji-hyun 2020. 6. 29. 16:33

pandaspanel datas의 약자이다.

파이썬을 활용한 데이터 분석에서 가장 많이 활용된다.

 

 

 

  • Series - 1차원 배열 형태의 데이터 구조이다.

밑에 표를 활용하여 데이터의 형태를 표현해보았다.

 

           

 

 

 

  • DataFrame - 2차원 배열 형태의 데이터 구조이다.

이것은 n x n의 형태로 밑에 표의 형태와 같다.

 

           
           
           
           

 

 

 

 

 

 

<데이터 프레임의 기초>

행과 열로 구분된다.

행을 구분해주는 것은 인덱스 라고 하며, 열을 구분해주는 것은 컬럼 이라고 한다.

인덱스는 별도로 지정해주지 않으면 정수로 지정된다( 또한 한번 설정된 인덱스는 불변하다).

 

 

 

이해를 돕기 위해 사진 아무거나 가져왔다 !

여기서 인덱스유동자산, 현금및현금성자산, 단기금융상품, 단기매도가능금융자산, 매출채권 ... 이 해당한다.

컬럼에 해당하는 부분은 제 48기 반기말, 제 47 기말, 제 46 기말 이 해당된다.

 

 

 

 

예제1)

인덱스를 한번 만들어 볼 것이다.

 

import pandas as pd
index = pd.date_range('1/1/2000', periods=8)
print(index)

 

pandas의 method 중 data_range 라는 메서드를 통해서 날짜 형태로 된 8개의 인덱스를 만들어주었다.

 

 

 

실행결과

 

DatetimeIndex('[2000-01-01', '2000-01-02', '2000-01-03', '2000-01-04', '2000-01-05', '2000-01-06', '2000-01-07','2000-01-08'], dtype='datetme64[ns]', freq='D')

 

해석)

실행 결과 ,  2000-01-01 에서부터 2000-01-08 까지 날짜 형태로 된 8개의 인덱스가 생성된 것을 알 수 있었다!

 

 

 

 

 

 

예제2)

8행 3열의 랜덤 데이터 (numpy 활용) 에 인덱스, 컬럼 이름 설정된 데이터 프레임을 한번 만들어보자.

 

import numpy as np
df = pd.DataFrame(np.random.rand(8,3), index=index, columns=list('ABC'))
df

 

해석)

np.random.rand(8 , 3) 의 뜻은 8 x 3의 랜덤데이터를 생성하라는 뜻이다.

이제 각각의 행과 열을 지정해주어야 한다. 따라서 index와 columns를 같이 지정해줘 보자!

 

여기서 index는 아까 만들어준 2000-01-01 에서부터 2000-01-08 까지의 8개의 인덱스를 그대로 활용한 것이다.

column은 열을 구분해주는 'A', 'B', 'C' 가 각각 생겨난다.

 

 

 

 

실행결과

 

  A B C
2000-01-01 0.621118    
2000-01-02 0.941765    
2000-01-03      
2000-01-04      
2000-01-05      
2000-01-06      
2000-01-07      
2000-01-08      

 

랜덤데이터의 표시는 생략하였다...ㅎㅎ

 

 

 

 

 

 

 

예제3)

특정 열 'B' 에 접근해보기

 

print(df['B'])

 

 

 

실행결과

2020-01-01 0.690098
2020-01-02 0.690098
2020-01-03 0.690098
2020-01-04 0.690098
2020-01-05 0.690098
2020-01-06 0.690098
2020-01-07 0.690098
2020-01-08 0.690098
Freq: D, Name: B, dtype: float64

 

인덱스와 B열만 시리즈(Series) 형태로 출력되는 것을 볼 수 있다.

랜덤데이터는 실제로 저렇게 똑같이 출력되지 않을 것이다. 내가 임의로 지정해서 써보았다ㅎㅎ

Freq는 Datetime 이라는 형태, 즉 날짜 를 뜻하고, Name은 B열이 되겠다. float64는 64bit 형태의 실수 라는 뜻이다.

 

 

 

 

 

예제4)

여기서부터 살짝 응용된 예제를 보려고 한다.

 

df2 = df[df['B'] > 0.4]
df2

 

 

실행결과

먼저,  안에 있는 df [ 'B' ] > 0.4 의 뜻은 B열 에서의 랜덤 데이터가 0.4 보다 크다면 이 된다는 뜻이다.

print 해보면

2000-01-01 True

2000-01-02 False 

...

이렇게 2000-01-08까지 출력된다.

 

참인 값들을 가지고 다시 df [ ] 안에 넣어주면 이 참인 값들의 인덱스를 활용하여

새로운 데이터 프레임으로 만들어준다.

 

만약 B열 중 참인 값에 해당하는 인덱스가  2000-01-01, 2000-01-03, 2000-01-06 이 있다면...

 

  A B C
2000-01-01 0.134564 0.695995  
2000-01-03   0.495996  
2000-01-06   0.588224  

 

이렇게 생성된다는 뜻이다.

 

 

 

 

 

'🐍 Python' 카테고리의 다른 글

csv 파일을 이용해서 데이터 히스토그램 만들기  (0) 2020.06.10