08_DataFrame 자료형

DataFrame의 자료형

  • 기본적으로 pandas는 데이터의 구조를 numpy의 ndarray를 사용하기 때문에 DataFrame의 자료형 역시 ndarray를 따른다.
  • 기본적인 type을 보면

    • float64: 실수형 자료형
    • int64: 정수형 자료형
    • boolean: bool 자료형
    • object: 파이선의 객체형 자료형(문자형만 담을 수도 있고 또는 문자형과 숫자형을 같이, 또는 list형을 담을 수 도 있다.
      • Pandas에서는 따로 독립적으로 문자형을 사용하지 않는데 그 이유는 numpy의 자료형을 그대로 사용하기 때문이다. numpy는 문자형을 Object형으로 인식함
  • 자료형 DataFrame에서 확인하기 위해서는 dtypes를 사용한다.

  • 자료형 변환을 위해서는 astype()을 사용한다.

    • 만약 int형 자료형을 문자로 변환한다면 df['co1'].astype(str)
In [1]:
import pandas as pd
import numpy as np

data  = np.random.rand(12).reshape(3,4)
index = [2000, 2001, 2002 ]
columns_index = ['Arizona','Boston', 'Chicago','Detroit']
df = pd.DataFrame(data = data, index = index, columns = columns_index)
In [2]:
#컬럼의 타입을 확인하면 float64인 것을 확인할 수 있다.
(df.dtypes)
Out[2]:
Arizona    float64
Boston     float64
Chicago    float64
Detroit    float64
dtype: object
In [3]:
#인텍스를 컬럼으로 변경하여 타입을 확인해도 float64인 것을 확인할 수 있다.
(df.T.dtypes)
Out[3]:
2000    float64
2001    float64
2002    float64
dtype: object
In [4]:
# list를 사용하여 winnder라는 컬럼을 생성 
df['Winner'] = ['Arizona', 'Boston','Detroit']  
print(df) 
# 자료형은 확인하면 문자형 데이터를 이용하여  Winner 컬럼을 생성했기 때문에 Winner는 Object형임 
print(df.dtypes)
       Arizona    Boston   Chicago   Detroit   Winner
2000  0.093597  0.406413  0.846233  0.812615  Arizona
2001  0.808303  0.733503  0.708402  0.367251   Boston
2002  0.269071  0.118879  0.392947  0.089479  Detroit
Arizona    float64
Boston     float64
Chicago    float64
Detroit    float64
Winner      object
dtype: object
In [5]:
print(df.T) 
# 인덱스를 컬럼으로 변경해 보면 역시 Object형으로 변형이 되어 있음을 확인 할 수 있음
print(df.T.dtypes)
              2000      2001       2002
Arizona  0.0935974  0.808303   0.269071
Boston    0.406413  0.733503   0.118879
Chicago   0.846233  0.708402   0.392947
Detroit   0.812615  0.367251  0.0894788
Winner     Arizona    Boston    Detroit
2000    object
2001    object
2002    object
dtype: object
In [6]:
#list로 생성된 Winners 컬럼의 자료형 역시 Object 형임
df['Winners'] = df['Winner'].str.split(',') 
print(df) 
print(df.dtypes)
       Arizona    Boston   Chicago   Detroit   Winner    Winners
2000  0.093597  0.406413  0.846233  0.812615  Arizona  [Arizona]
2001  0.808303  0.733503  0.708402  0.367251   Boston   [Boston]
2002  0.269071  0.118879  0.392947  0.089479  Detroit  [Detroit]
Arizona    float64
Boston     float64
Chicago    float64
Detroit    float64
Winner      object
Winners     object
dtype: object
In [7]:
#float형을 Object(문자형)으로 바꾸고 문자형 함수를 적용할 수 있음
df['Boston'] = df['Boston'].astype(str)
print(df['Boston'])
print(df.dtypes)
df['Boston'].apply(lambda x: len(x))
df['Boston'].apply(lambda x: len(x))
2000    0.406412994797
2001     0.73350284794
2002     0.11887913438
Name: Boston, dtype: object
Arizona    float64
Boston      object
Chicago    float64
Detroit    float64
Winner      object
Winners     object
dtype: object
Out[7]:
2000    14
2001    13
2002    13
Name: Boston, dtype: int64


© 2017. All rights reserved.

Powered by ZooFighter v0.12