DataFrame으로 dummy data 생성하기

import pandas as pd
import numpy as np

pandas.DataFrame

    pandas.DataFrame( data, index, columns, dtype, copy )
data   ndarray, series, map, lists, dict, 상수 그리고 또 다른 DataFrame까지 변수의 형태로 가질 수 있다.
index   Index or array-like : row 레이블의 경우, 인덱스 값이 없으면 0-based index (np.arange(n))가 기본으로 사용된다.
columns   Index or array-like : column 레이블의 경우, 인덱스 값이 없으면 0-based index (np.arange(n))가 기본으로 사용된다.
dtype   각 column 마다 데이터 유형을 나타낸다.
copy   이 속성의 기본값이 False인 경우 데이터 복사에 사용된다.

 

리스트로 DataFrame 생성하기

1. 싱글 리스트
리스트로 DataFrame을 만들 때, columns 값을 따로 지정하지 않으면 0-based index (np.arange(n))가 기본으로 사용된다.

>>> data = [1, 2, 3, 4, 5]
>>> df = pd.DataFrame(data)
>>> print(df)
             0
0           1
1           2
2           3
3           4
4           5

2. 다중 리스트
columns에 리스트 형식으로 이름을 따로 지정하면, DataFrame의 column에 이름을 지정한 순서대로 feature을 부여하게 된다.

>>> data = [ [ 'Alex', 10 ], [ 'Bob', 12 ], [ 'Clarke', 13 ] ]
>>> df = pd.DataFrame( data, columns = [ 'Name', 'Age' ] )
>>> print(df)
        Name        Age
0      Alex          10
1      Bob           12
2      Clarke       13

 

Dict로 DataFrame 생성하기

딕셔너리로 DataFrame을 생성할 때, 딕셔너리의 key 값이 DataFrame의 column 역할을 하고, value 값이 DataFrame의 data 역할을 한다. 이때, value의 길이는 1 이거나, 모든 value의 길이가 동일해야 한다.

Index 값을 따로 지정하지 않으면 0-based index (np.arange(n))가 기본으로 사용된다.

>>> data = { 'a' : 100, 'b' : [ 10, 20, 30, 40 ] }
>>> df = pd.DataFrame(data, index = np.arange(4) )
>>> print(df)
        a           b
0      100      10
1      100      20
2      100      30
3      100      40

Index에 리스트 형식으로 이름을 따로 지정하면, DataFrame의 Index에 순서대로 이름을 부여하게 된다.

>>> data = { 'Name' : [ 'Tom', 'Jack', 'Steve', 'Ricky' ], 'Age' : [ 28, 34, 29, 42 ] }
>>> df = pd.DataFrame(data, index = [ 'rank 1', 'rank 2', 'rank 3', 'rank 4' ] )
>>> print(df)
                Age           Name
rank 1      28             Tom
rank 2      34             Jack
rank 3      29             Steve
rank 4      42             Rciky

 

Dict로 구성된 리스트로 DataFrame 생성하기

리스트의 Index 순서대로, 각각의 요소가 하나의 row로 들어가게 된다.
리스트안의 Dict에서 key값은 column, value값은 data의 역할을 하며, 비어있는 부분은 NaN (Not a Number)로 채워지게 된다.

>>> data = [ { 'a' : 1, 'b' : 2 }, { 'a' : 5, 'c' : 20} ]
>>> df = pd.DataFrame(data)
>>> print(df)
        a           b          c
0      1          2.0       NaN    

1      5          NaN     20.0

여기서 DataFrame을 생성할 때, column의 이름을 지정하게 되면, column의 이름과 동일한 key의 value값만 data로써 역할을 한다.
이때, column의 이름과 동일한 key값이 없으면 NaN으로 채워지게 된다.

>>> data = [ { 'a' : 1, 'b' : 2 }, { 'a' : 5, 'c' : 20} ]
>>> df1 = pd.DataFrame(data, index = [ 'first', 'second' ], columns = [ 'a', 'b' ] )
>>> df2 = pd.DataFrame(data, index = [ 'first', 'second' ], columns = [ 'a', 'b1' ] )
>>> print(df1)
>>> print(df2)
                  a          b
first           1          2.0

second      5         NaN
                  a         b1
first           1         NaN
second      5        NaN

 

Series로 DataFrame 생성하기

Series는 pandas로 생성할 수 있는 1차원 형태의 데이터이다.
Series의 index가 column의 역할을 한다.

>>> a = pd.Series([100, 200, 300], ['a', 'b', 'd'])
>>> b = pd.Series([101, 202, 303], ['a', 'b', 'k'])
>>> c = pd.Series([110, 220, 330], ['a', 'b', 'c'])
>>> df = pd.DataFrame([a, b, c])
>>> print(df)
                a                  b                 d               k               c
0      100.0          200.0          300.0          NaN          NaN   
1      101.0          202.0             NaN       303.0          NaN
2     110.0           220.0             NaN          NaN       330.0

 

Series로 구성된 Dict로 DataFrame 생성하기

Dict의 value로 Series형태가 들어갔다면, 각 Series의 index는 DataFrame의 index 역할을 한다.

>>> d = { 'one' : pd.Series( [1, 2, 3], [ 'a', 'b', 'c' ] ), 'two' : pd.Series( [1, 2, 3, 4], [ 'a', 'b', 'c', 'd' ] ) }
>>> df = pd.DataFrame(d)
>>> print(df)
         one        two
a        1.0            1
b        2.0            2
c        3.0            3
d      NaN            4
728x90
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기