[Pandas] DataFrame Numpy array로 변환하기

9125 단어 pandaspandas
import pandas as pd
import numpy as np
df = pd.read_csv("train.csv")
df = df[["PassengerId", "Survived", "Pclass", "Age", "Parch", "Fare"]]
df
PassengerId Survived Pclass Age Parch Fare
0 1 0 3 22.0 0 7.2500
1 2 1 1 38.0 0 71.2833
2 3 1 3 26.0 0 7.9250
3 4 1 1 35.0 0 53.1000
4 5 0 3 35.0 0 8.0500
... ... ... ... ... ... ...
886 887 0 2 27.0 0 13.0000
887 888 1 1 19.0 0 30.0000
888 889 0 3 NaN 2 23.4500
889 890 1 1 26.0 0 30.0000
890 891 0 3 32.0 0 7.7500

891 rows × 6 columns

  • info 함수를 사용하여 Nan값 확인하기
df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 891 entries, 0 to 890
Data columns (total 6 columns):
 #   Column       Non-Null Count  Dtype  
---  ------       --------------  -----  
 0   PassengerId  891 non-null    int64  
 1   Survived     891 non-null    int64  
 2   Pclass       891 non-null    int64  
 3   Age          714 non-null    float64
 4   Parch        891 non-null    int64  
 5   Fare         891 non-null    float64
dtypes: float64(2), int64(4)
memory usage: 41.9 KB

위의 컬럼에서 Age 컬럼에 (891 - 714) 개의 Nan값이 있는것을 확인

  • fillna를 사용하여 Nan값 처리하기
df["Age"].fillna(df["Age"].mean(), inplace=True) #Age에서 Nan값을 Age의 평균으로 바꿈
df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 891 entries, 0 to 890
Data columns (total 6 columns):
 #   Column       Non-Null Count  Dtype  
---  ------       --------------  -----  
 0   PassengerId  891 non-null    int64  
 1   Survived     891 non-null    int64  
 2   Pclass       891 non-null    int64  
 3   Age          891 non-null    float64
 4   Parch        891 non-null    int64  
 5   Fare         891 non-null    float64
dtypes: float64(2), int64(4)
memory usage: 41.9 KB

다시 info함수를 사용해보면 Age 컬럼이 Nan값이 없어졌음을 알 수 있다.

pandas 의 dataframe을 numpy array로 바꾸기

df = df[:10]
df
PassengerId Survived Pclass Age Parch Fare
0 1 0 3 22.000000 0 7.2500
1 2 1 1 38.000000 0 71.2833
2 3 1 3 26.000000 0 7.9250
3 4 1 1 35.000000 0 53.1000
4 5 0 3 35.000000 0 8.0500
5 6 0 3 29.699118 0 8.4583
6 7 0 1 54.000000 0 51.8625
7 8 0 3 2.000000 1 21.0750
8 9 1 3 27.000000 2 11.1333
9 10 1 2 14.000000 0 30.0708
df = df.to_numpy()
df
array([[ 1.        ,  0.        ,  3.        , 22.        ,  0.        ,
         7.25      ],
       [ 2.        ,  1.        ,  1.        , 38.        ,  0.        ,
        71.2833    ],
       [ 3.        ,  1.        ,  3.        , 26.        ,  0.        ,
         7.925     ],
       [ 4.        ,  1.        ,  1.        , 35.        ,  0.        ,
        53.1       ],
       [ 5.        ,  0.        ,  3.        , 35.        ,  0.        ,
         8.05      ],
       [ 6.        ,  0.        ,  3.        , 29.69911765,  0.        ,
         8.4583    ],
       [ 7.        ,  0.        ,  1.        , 54.        ,  0.        ,
        51.8625    ],
       [ 8.        ,  0.        ,  3.        ,  2.        ,  1.        ,
        21.075     ],
       [ 9.        ,  1.        ,  3.        , 27.        ,  2.        ,
        11.1333    ],
       [10.        ,  1.        ,  2.        , 14.        ,  0.        ,
        30.0708    ]])

pandas의 dataframe이 numpy array의 행렬로 바뀐것을 볼 수 있다.

좋은 웹페이지 즐겨찾기