PYTHON 프로그래밍

본문 바로가기

사이트 내 전체검색


2. 데이터프레임(DataFrame)

페이지 정보

작성자 관리자 댓글 0건 조회 4,517회 작성일 19-09-30 23:00

본문

DataFrame 객체

 

Pandas의 기본 자료구조이다.

2차원배열 또는 리스트, Data Table 전체를 포함하는 Object 이다.

Row와 column index가 존재한다.

각 column 은 서로 다른 데이터 타입을 가질 수 있다.

Series를 모아서 만든 Data table이다.

기본적으로 csv 포멧을 지원한다. 구분자로 column이 구분된 데이터는 모두 지원한다.

R언어의 data.frame과 비슷하다.

 

 

DataFrame 생성

dictionary 또는 numpy 배열을 사용하여 생성한다.

 

# -*- coding: utf-8 -*-

import pandas as pd
import numpy as np
from numpy.random import randn

 

np.random.seed(101) # 실행할 때 마다, 같은 값이 생성된다.
data=randn(5,4)
print(data)

 

df = pd.DataFrame(data, index='A B C D E'.split(), columns='가 나 다 라'.split())
print(df)

 

# 부분 선택하기

 

print(df['나'])
print(df[['나', '라']])

# 대괄호([ ]) 두개 사용한다. 리스트 타입을 넣어주어야 하기때문에

print(type(df['나']) 

> python test.py

 

[[ 2.70684984  0.62813271  0.90796945  0.50382575]
 [ 0.65111795 -0.31931804 -0.84807698  0.60596535]
 [-2.01816824  0.74012206  0.52881349 -0.58900053]
 [ 0.18869531 -0.75887206 -0.93323722  0.95505651]
 [ 0.19079432  1.97875732  2.60596728  0.68350889]]
          가         나         다         라
A  2.706850  0.628133  0.907969  0.503826
B  0.651118 -0.319318 -0.848077  0.605965
C -2.018168  0.740122  0.528813 -0.589001
D  0.188695 -0.758872 -0.933237  0.955057
E  0.190794  1.978757  2.605967  0.683509
A    0.628133
B   -0.319318
C    0.740122
D   -0.758872
E    1.978757
Name: 나, dtype: float64
          나         라
A  0.628133  0.503826
B -0.319318  0.605965
C  0.740122 -0.589001
D -0.758872  0.955057
E  1.978757  0.683509

 

<class 'pandas.core.series.Series'>
계속하려면 아무 키나 누르십시오 . . .

 

 

# 새로운 컬럼
# -*- coding: utf-8 -*-

import pandas as pd
import numpy as np
from numpy.random import randn

np.random.seed(101)
data=randn(5,4)
df = pd.DataFrame(data, index='A B C D E'.split(), columns='가 나 다 라'.split())
print(df)

df['합'] = df['나'] + df['다']
print(df) 

 

> python test.py

          가         나         다         라
A  2.706850  0.628133  0.907969  0.503826
B  0.651118 -0.319318 -0.848077  0.605965
C -2.018168  0.740122  0.528813 -0.589001
D  0.188695 -0.758872 -0.933237  0.955057
E  0.190794  1.978757  2.605967  0.683509
          가         나         다         라         합
A  2.706850  0.628133  0.907969  0.503826  1.536102
B  0.651118 -0.319318 -0.848077  0.605965 -1.167395
C -2.018168  0.740122  0.528813 -0.589001  1.268936
D  0.188695 -0.758872 -0.933237  0.955057 -1.692109
E  0.190794  1.978757  2.605967  0.683509  4.584725
계속하려면 아무 키나 누르십시오 . . . 


# 컬럼 삭제

 

# -*- coding: utf-8 -*-

import pandas as pd
import numpy as np
from numpy.random import randn

np.random.seed(101)
data=randn(5,4)
df = pd.DataFrame(data, index='A B C D E'.split(), columns='가 나 다 라'.split())
print(df)

 

df2 = df.drop('라', axis=1)  # axis=1은 column을 지운다
print(df2)

 

> python test.py

          가         나         다         라
A  2.706850  0.628133  0.907969  0.503826
B  0.651118 -0.319318 -0.848077  0.605965
C -2.018168  0.740122  0.528813 -0.589001
D  0.188695 -0.758872 -0.933237  0.955057
E  0.190794  1.978757  2.605967  0.683509
          가         나         다
A  2.706850  0.628133  0.907969
B  0.651118 -0.319318 -0.848077
C -2.018168  0.740122  0.528813
D  0.188695 -0.758872 -0.933237
E  0.190794  1.978757  2.605967
계속하려면 아무 키나 누르십시오 . . . 

 

# -*- coding: utf-8 -*-

import pandas as pd
import numpy as np
from numpy.random import randn

np.random.seed(101)
data=randn(5,4)
df = pd.DataFrame(data, index='A B C D E'.split(), columns='가 나 다 라'.split())
print(df)

df.drop('라', axis=1, inplace=True)
print(df)

df.drop('E', axis=0, inplace=True)
print(df)

#  axis=0은 행(row)을 지운다.

#  inplace=True을 사용하면 데이터가 완전히 지워진다.

 

> python test.py

          가         나         다         라
A  2.706850  0.628133  0.907969  0.503826
B  0.651118 -0.319318 -0.848077  0.605965
C -2.018168  0.740122  0.528813 -0.589001
D  0.188695 -0.758872 -0.933237  0.955057
E  0.190794  1.978757  2.605967  0.683509
          가         나         다
A  2.706850  0.628133  0.907969
B  0.651118 -0.319318 -0.848077
C -2.018168  0.740122  0.528813
D  0.188695 -0.758872 -0.933237
E  0.190794  1.978757  2.605967
          가         나         다
A  2.706850  0.628133  0.907969
B  0.651118 -0.319318 -0.848077
C -2.018168  0.740122  0.528813
D  0.188695 -0.758872 -0.933237
계속하려면 아무 키나 누르십시오 . . .

 

 

# row 선택

 

# -*- coding: utf-8 -*-

import pandas as pd
import numpy as np
from numpy.random import randn

np.random.seed(101)
data=randn(5,4)
df = pd.DataFrame(data, index='A B C D E'.split(), columns='가 나 다 라'.split())
print(df)


print(df.loc['A'])

print(df.iloc[2])

print(df.loc['B','다'])

print(df.loc[['A','B'],['나','다']])

> python test.py

          가         나         다         라
A  2.706850  0.628133  0.907969  0.503826
B  0.651118 -0.319318 -0.848077  0.605965
C -2.018168  0.740122  0.528813 -0.589001
D  0.188695 -0.758872 -0.933237  0.955057
E  0.190794  1.978757  2.605967  0.683509
가    2.706850
나    0.628133
다    0.907969
라    0.503826
Name: A, dtype: float64
가   -2.018168
나    0.740122
다    0.528813
라   -0.589001
Name: C, dtype: float64

-0.8480769834036315
          나         다
A  0.628133  0.907969
B -0.319318 -0.848077
계속하려면 아무 키나 누르십시오 . . .

 

 

댓글목록

등록된 댓글이 없습니다.



개인정보취급방침 서비스이용약관
Copyright © www.leelab.co.kr All rights reserved.
상단으로
TEL. 063-469-4551 FAX. 063-469-4560
전북 군산시 대학로 558
군산대학교 컴퓨터정보공학과
PC 버전으로 보기