Certificate/data science-IBM

loc, iloc, isnull, dropna, fillna, astype, dtype

Olivia-BlackCherry 2023. 5. 28. 20:22

목차

     

    loc

    loc은 pandas에서 dataframe, series에서 특정 행이나 열을 선택한다. 

    1) 단일 행 선택

    아래의 예시에서 보면 loc 다음에는 '특정 행, 열'을 선택하기 때문에 

    index가 아니라 이름을 보고 선택한다고 생각하면 쉽다. 

    row index의 이름이 4인 것을 찾아보면 된다! 

    이것은 index number가 4인 것과는 다르다. 

    row= dff.loc[4]

     

    2) 다중 행 선택

     

    3) 단일 열 선택

    여기서 유의해야 하는 것이 loc 다음에 [ 행, 열 ] 순서를 따른다는 것이다. 

    행만 적을 때는 열을 적지 않아도 되지만,

    열을 적을 때는 행을 꼭 적어야 한다!

    모든 행을 선택한다면 :를, 일부만 필터한다면 그에 맞게 행의 범위를 지정한다.

     

     

    4) 다중 열 선택

    다중 열을 적을 때는 리스트 형태로 이름을 적어준다.

    columns = df.loc[:, ['column1', 'column2', 'column3']]

     

     

     

    iloc

    iloc은 pandas에서 인덱스 위치!를 기반으로 인덱싱, 슬라이싱을 수행한다. 

    인덱스 위치(숫자)를 사용한다는 것이 loc과 다른 가장 큰 특징이다.

     

     

     

    isnull()

    null값이 존재하는가?

    sum()으로 몇 개인지 확인해보자.

    dff.isnull().sum()

    특정 열에서 isnull값이 어디에 존재하는지 찾기 위해 아래와 같이 코드를 쓴다. 

    dff[dff['PayloadMass'].isnull()]

     

    존재한다면 어떻게 처리하면 좋을까?

    삭제하거나 평균값, 중앙값 등으로 대체할 수 있다. 

    mean()함수를 써서 평균값으로 대체해보자. 

     

     

     

    replace()

    - 일반 파이썬 모듈에서

    string = "Hello, world!"
    
    # 'Hello'를 'Hi'로 치환
    new_string = string.replace('Hello', 'Hi')
    
    print(new_string)

    >>Hi, world!

     

    - 판다스에서

    pandas에서 사용하는 메서드로, 데이터프레임이나 시리즈의 값을 다른 값으로 대체하는데 사용한다. 

    DataFrame.replace(to_replace=None, value=None, inplace=False, limit=None)

    to_replace 대체할 값
    value 대체값
    inplace 원본 데이터 프레임 변경여부 true/false
    limit 치환할 최대 개수
    import pandas as pd
    
    data = {'Name': ['Alice', 'Bob', 'Charlie', 'Alice', 'Bob'],
            'Age': [25, 30, 35, 25, 30]}
    
    df = pd.DataFrame(data)
    
    # 'Bob'을 'Robert'으로 치환
    df['Name'].replace('Bob', 'Robert', inplace=True)
    
    # 25를 27로 치환
    df['Age'].replace(25, 27, inplace=True)
    
    print(df)

     

    -판다스에서 null값을 다른 값으로 대체하려고 한다.

    plm_mean은 해당 열의 평균값이다.

    NaN 값은 numpy의 np.nan으로 적는다. 

    data_falcon9의 모든 np.nan값이 plm_mean으로 바뀐다.

    import numpy as np
    data_falcon9.replace(to_replace=np.nan, value=plm_mean, inplace=False)

     

    만약 특정 열의 np.nan만 바꾸고 싶을 때는 어떻게 하면 될까?

    data_falcon9['PayloadMass'].replace(to_replace=np.nan, value=plm_mean, inplace=True)

     

    fillna(대체값)을 이용해서 간단히 바꿀 수도 있다.

    mean_value = data_falcon9['NumericColumn'].mean()
    data_falcon9['NumericColumn'].fillna(mean_value, inplace=True)

     

     

     

    dtype

    dtype 속성은 함수가 아니며 호출 가능한 객체가 아니므로, 괄호를 사용해서는 안되는 것에 주의하자.

    import pandas as pd
    
    data_falcon9['LandingPad'].dtype

     

     

    그런데 만약 특정 열의 데이터 유형이 object라면 어떻게 해야할까? 연산이 불가능하다.

    우선 dtype을 이용하여 데이터 유형을 확인하자.

    dtype('O')

    object라는 뜻이다.

     

     

    dropna

    이런 경우에는 

    null값 삭제

    data_falcon9.dropna(subset=['LandingPad'], inplace=True)

     

     

    fillna

    null값 대체

    data_falcon9['LandingPad'].fillna('Unknown', inplace=True)

     

    기본 데이터 유형을 수치형으로 변환한 후, 평균값 등으로 대체

    astype(데이터유형)

    data_falcon9['PayloadMass'] = data_falcon9['PayloadMass'].astype(int)