실무에서 사용 pandas/DataFrame Tips

소개



기계 학습을 비롯한 데이터 분석에서는 데이터 전처리는 필수이며 pandas를 상당히 사용한다. 특히, 테이블 데이터를 취급하는 DataFrame의 사용 빈도는 매우 높다.
라고 말하면서, 항상 잊어 버리므로, 여기에서 정리합니다.

github에 실제 코드를 나열하고 있으므로 참고하십시오.
htps : // 기주 b. 이 m/안데ゔぇrぁtふぃsh/판다 s-치 ps/bぉb/마s r/노테보오 k/판다 s-치 ps. 이 pyn b

우선은, 이하의 DataFrame를 사용해, 각 Tips를 한다.
import pandas as pd

df = pd.DataFrame([['tokyo', 'male', 21, 165, 63],
                   ['osaka', 'male', 28, 170, 71],
                   ['fukuoka', 'female', 32, 175, 58],
                   ['tokyo', 'male', 21, 165, 63],
                   ['osaka', 'female', 28, 175, 70],
                   ['fukuoka', 'male', 32, 155, 58],
                   ['tokyo', 'female', 21, 165, 63],
                   ['osaka', 'male', 28, 172, 67],
                   ['fukuoka', 'male', 42, 155, 48]],
                   columns=['area', 'gender', 'age', 'height', 'weight'])



데이터 유형 확인 및 유형 변환



파이썬은 동적 타입 언어이기 때문에 기본적으로 타입을 의식 할 필요가 없습니다. 다만, 예상외의 것으로 에러가 되는 일도 자주 있습니다.
예를 들어, int형이라고 생각하고 있던 데이터가, 1개의 데이터만 스페이스가 들어가 있어, object형이 되어 있다고 합니다.
그런 경우에는 아래에서 데이터 유형을 확인합시다.

df.dtypes
area      object
gender    object
age        int64
height     int64
weight     int64
dtype: object

하나의 컬럼만 확인하려면 아래에서 확인할 수 있습니다.

df['height'].dtype
dtype('int64')

int 형을 float 형으로 변환하고 싶은 경우는, 이하와 같이 하면 할 수 있습니다.
위의 df['height'].dtype에서 확인하면 변환되고 있음을 알 수 있습니다.

df['height'] = df['height'].astype(float)

다만, object형을 int형이나 float형으로 변환하려면 , object형이 된 데이터(예를 들면 스페이스라든지)를 수정 또는 제거한 다음, astype로 변환할 필요가 있습니다.

DataFrame의 열 이름 확인



DataFrame의 열 이름을 확인하고 싶은 경우가 많습니다. 게다가, 컬럼마다 무언가를 처리하고 싶은 경우는, 컬럼명을 리스트로 보관 유지해 두는 것이 편리합니다.

df_columns = list(df.columns)
print(df_columns)
['area', 'gender', 'age', 'height', 'weight']

특정 행의 데이터만 추출



특정 조건에 해당하는 데이터 만 행별로 추출 할 수 있습니다.
예를 들면, df 중에서 'area'가 'fukuoka'만의 데이터를 추출하고 싶은 경우는, 이하와 같이 추출할 수 있다.

part_of_df1 = df[df['area']=='fukuoka']



또한, df에서 'area'가 'tokyo'또는 'osaka'인 데이터를 추출하고 싶은 경우에는 다음과 같이 추출할 수 있다.

part_of_df2 = df[df['area'].isin(['tokyo', 'osaka'])]



null의 데이터만 추출하고 싶은 경우는, 이하와 같이 쓴다.

part_of_df3 = df[df['area'].isnull()]

실업무에서는 null의 데이터만 추출하고 싶은 경우보다 null이 아닌 데이터를 추출하는 경우가 많을 것 같다.
null이 아닌 데이터를 추출하는 경우는 다음과 같이 쓴다.

part_of_df4 = df[~df['area'].isnull()]

색인의 숫자를 되돌리기



특정 행의 데이터만 추출하면 index가 원래 DataFrame의 index로 남아 있으므로 다음과 같이 index를 다시 실행합니다.

part_of_df1.reset_index(drop=True, inplace=True)



열 정렬 순서 변경



DataFrame의 컬럼을 정렬 순서를 변경하고 싶은 경우는, 정렬하고 싶은 순서의 컬럼을 리스트로 해, 그 리스트를 부르면 된다.

sorted_columns_list1 = ['height', 'weight', 'gender', 'area', 'age']
sorted_df1 = df[sorted_columns_list1]



정렬뿐만 아니라 특정 열만 추출 할 수 있습니다.

sorted_columns_list2 = ['area', 'gender', 'age']
sorted_df2 = df[sorted_columns_list2]



열 이름 변경



rename을 사용하여 다음과 같이 열 이름을 수정합니다.

rename_df = df.rename(columns={'area':'エリア',
                               'gender':'性別', 
                               'age':'年齢', 
                               'height':'身長', 
                               'weight':'体重'})



다른 데이터 프레임을 Union



같은 컬럼명이 다른 데이터를 union할 때에는 append를 사용한다.

other_df = pd.DataFrame([['hokkaido', 'male', 25, 162, 60],
                         ['hokkaido', 'female', 38, 179, 81]],
                         columns=['area', 'gender', 'age', 'height', 'weight'])

union_df = df.append(other_df, ignore_index=True)



기본 통계량 계산



numerical인 데이터를 확인하기 위해서는, 기본 통계량 산출하면, 특이치 등의 근처가 붙는 경우도 있다.

df.describe()



CSV 읽기 / 내보내기



다음과 같이 데이터를 쉽게 읽을 수 있습니다.
df가 깨져 있으면 encoding을 기재한다.

df = pd.read_csv('data.csv') 

원래 CSV에 header가 없으면 다음과 같이 설명합니다.

df = pd.read_csv('data.csv', header=None) 

다음과 같이 출력도 간단하게 할 수 있다.
단지의 연속번호의 index이면, 출력하지 않는 것이 많다.

df.to_csv('data.csv', index=False)

별로 사용하지 않지만, header도 출력하지 않는 경우는, 이하와 같이 기재한다.

df.to_csv('data.csv', header=False, index=False)

좋은 웹페이지 즐겨찾기