[Python] 파이썬 판다스(Pandas) 사용법 & 예제

판다스(Pandas)는 파이썬에서 데이터 조작 및 분석을 할 때 많이 사용되는 라이브러리입니다. 데이터분석, 데이터정렬, 그룹화, 결측치 처리 등등 유용한 기능들을 많이 제공하고 있어 데이터를 다뤄야 하는 과학 분야에서 널리 사용되고 있습니다. 이번 포스팅에서는 판다스(Pandas)에 대한 간단한 사용법에 대해 알아보도록 하겠습니다. 그전에 판다스(pandas)가 설치되어 있지 않으신 분들은 아래 포스팅을 참고하셔서 설치를 먼저 하시길 바랍니다.

 

※ 파이썬 판다스 설치 방법은 아래 글을 참고하시기 바랍니다.

[Python] 파이썬 판다스(Pandas) 설치 / 다운로드 하기 + 버전 확인

 

     

    판다스의 데이터 구조

    판다스의 데이터 구조에는 시리즈(Series)와 데이터(dataFrame)으로 나뉘어 있습니다. 먼저 시리즈(Series)는 1차원 배열과 같은 데이터 구조라고 이해하면 되고 각 요소는 배열처럼 인덱스(index)와 값(value)으로 이루어져 있습니다. 그리고 이러한 시리즈(Series)가 모여서 데이터 프레임(DataFrame)을 만듭니다. 데이터 프레임은 행과 열이 있는 하나의 테이블 형태로  2차원 배열이라고 생각하시면 이해가 쉽습니다. 

     

     

    시리즈(Series) 생성 방법

    import pandas as pd
    
    # 리스트로부터 시리즈 생성
    s = pd.Series([10, 20, 30, 40, 50, 60])
    
    # 인덱스와 함께 시리즈 생성
    s = pd.Series([10, 20, 30, 40, 50, 60], index=['a', 'b', 'c', 'd', 'e', 'f'])

    1차원 데이터를 표현하는 시리즈는 Series() 메서드를 통해 생성하시면 됩니다. index는 0부터 시작하며 위와 같이 인자값에 index를 명시해서 숫자가 아닌 다른 방식으로 인덱스를 지정할 수도 있으니 참고 바랍니다.

     


     

     데이터프레임(DataFrame) 생성 방법 

    데이터프레임은 2차원 데이터를 표현하는 판다스의 자료형입니다. 표 형태로 데이터를 저장하며, 각 열은 시리즈로 이루어져 있습니다. 판다스에서 가장 중요한 데이터 구조로, 엑셀 시트나 SQL 테이블과 유사합니다.

     

    리스트로 데이터프레임 생성

    import pandas as pd
    
    data = {'이름': ['홍길동', '이순신', '강감찬'],
            '나이': [50, 40, 30],
            '직책': ['부장', '차장', '과장']}
    
    df = pd.DataFrame(data)

    데이터 프레임을 생성할때는 리스트로 만듭니다. 위와 같이 생성한다면 열이 이름, 나이, 직책이 되고 그 밑으로 홍길동, 이순신, 강감찬 순으로 행이 쌓이게 됩니다. 시리즈와 마찬가지로 데이터프레임 또한 인덱스는 0부터 시작합니다.

     

     

    엑셀파일로 데이터 프레임 만들기

    엑셀과 데이터 프레임은 행과 열으로 이루어져 있는 테이블 구조로 이루어져 있습니다. 구조가 유사하기 때문에 상호 연동성이 좋아 데이터를 엑셀로 보관하거나 반대로 엑셀에 있는 정보를 판다스의 데이터 프레임으로 가지고 올 수도 있습니다. 

     

    demo.xlsx
    0.01MB

     

    저와 같은 결과를 보고 싶다면 위의 엑셀을 받으셔서 사용해 주세요.

     

    #엑셀 파일 읽기
    import pandas as pd 
    dfExcel = pd.read_excel('c:\\work\\demo.xlsx', 'Sheet1')
    print(dfExcel)

    read_excel 메서드를 사용하면 엑셀문서로 데이터 프레임을 만들 수 있습니다. 참고로 경로나, 권한문제로 인해 엑셀문서가 불러와지지 않는 경우도 있으니 주의 바랍니다.

     


     

     데이터프레임 주요 메서드 

    처음 5개 데이터 확인

    df.head()  # 처음 5개의 행을 보여줌

    head() 메서드를 사용하면 가장 상위의 5개 행의 정보를 보여줍니다.

     

     

    마지막 5개 데이터 확인

    df.tail()  # 마지막 5개의 행을 보여줌

    tail() 메서드를 사용하면 가장 마지막 5개 행의 정보를 보여줍니다.

     

     

    기본 정보 확인

    df.info()  # 데이터프레임의 기본 정보 표시

    info() 메서드를 사용하면 데이터의 변수별, null값, 그리고 type값을 간략하게 보여줍니다.

     

     

    데이터 통계 표시

    df.describe()  # 데이터 통계 요약 표시

    describe() 메서드를 사용하면 데이터의 통계 요약본을 보여줍니다.

     

     

    데이터프레임 그룹을 지어서 집계하기

    df.groupby('성별')['수입'].mean()  # 성별로 그룹해서 수입의 평균 계산

    groupby() 메서드를 사용하여 그룹을 지을 수 있고 집계하여 사용할 수 있습니다.

     


     

     데이터프레임 선택 

    열 선택

    df['사번']  # 사번 열 선택
    df[['사번', '수입']]  # 사번과 수입 열 선택

    • df['사번']: 데이터프레임(df)에서 "사번" 열만 선택합니다.
    • df[['사번', '수입']]: 데이터프레임에서 "사번"과 "수입" 두 개의 열을 선택합니다.

     

    행 선택

    df.loc[1]  # 인덱스 1에 해당하는 행 선택
    df.iloc[2]  # 두 번째 행 선택

    • df.loc[1]: 데이터 프레임에서 인덱스가 1인 행을 선택합니다.
    • df.iloc[2]: 데이터 프레임에서 두 번째 행을 선택합니다. iloc은 행의 위치를 선택하는 메서드입니다.

     

    조건에 따른 행 선택

    df[df['성별'] == 'F']  # 성별이 F인 행 선택
    df[df['수입'] > 100]  # 수입이 100보다 큰 행 선택

    • df[df['성별'] == 'F']: "성별" 열의 값이 "F"인 행을 선택합니다.
    • df[df['수입'] > 100]: "수입" 열 값이 "100"보다 큰 행을 선택합니다.

     

     데이터프레임 수정 

    열 추가

    df['성별'] = ['남성', '남성', '남성']  # '성별' 열 추가

    데이터 프레임에 새로운 열을 추가할 수도 있습니다. 위의 예제처럼 하시면 데이터 프레임에서 "성별"이라는 새로운 열을 추가하고, 해당 열에 "남성"이라는 값을 가진 세 개의 행이 추가됩니다.

     

     

    열 삭제

    df = df.drop('성별', axis=1)  # 성별 열 삭제

    데이터 프레임의 열을 삭제할 수도 있습니다. 위의 예제처럼 하시면 데이터 프레임에서 "성별"이라는 열을 삭제합니다.

     


     

    판다스 공식문서

    https://pandas.pydata.org/pandas-docs/stable/index.html 

     

    pandas documentation — pandas 2.1.3 documentation

    API reference The reference guide contains a detailed description of the pandas API. The reference describes how the methods work and which parameters can be used. It assumes that you have an understanding of the key concepts.

    pandas.pydata.org

     

    댓글

    Designed by JB FACTORY