본문 바로가기

프로그래밍/pandas

pandas는 어떤 종류의 데이터를 다룰까?

300x250

pandas는 python 패키지로 데이터 분석시 많이 사용된다. pandas 공식 홈페이지에 튜토리얼이 아주 자세하게 설명되어 있다. 이 설명에 조금 살을 붙여서 좀 더 잘 이해할 수 있도록 정리해 보려고 한다. 

 

Package overview — pandas 2.1.1 documentation

Package overview pandas is a Python package providing fast, flexible, and expressive data structures designed to make working with “relational” or “labeled” data both easy and intuitive. It aims to be the fundamental high-level building block for d

pandas.pydata.org

 

그럼 시작!


목차

1. pandas data table

2. DataFrame의 각 column은 Series이다

3. DataFrame이나 Series를 활용해보자

 

pandas 패키지를 사용하고 싶을 때, 명령어 import를 써서 불러온다. 보통 pandas의 가명으로 pd를 많이 쓴다.

 

import pandas as pd

pandas data table

💁‍♂️ 타이타닉의 승객 데이터를 저장한다고 하자. 많은 승객에 대해서, 나는 name(characters), age(integers), 그리고 sex(male/female) 데이터를 알고 있다.

 

df = pd.DataFrame(
    {
        "Name": [
            "Braund, Mr. Owen Harris",
            "Allen, Mr. William Henry",
            "Bonnell, Miss. Elizabeth",
        ],
        "Age": [22, 35, 58],
        "Sex": ["male", "male", "female"],
    }
)
df

 

일반적으로 table에 데이터를 저장할 때, DataFrame을 생성한다. 파이썬 list 딕셔너리를 사용해서, 딕셔너리의 keys는 column의 header가 되고, 리스트 안의 값들은 DataFrame의 columns이 된다.

 

DataFrame은 columns안에 다른 타입의 데이터(characters, integers, floating point values, categorical data and more)를 저장할 수 있는 2차원 데이터구조이다. 이는 spreadsheet, SQL table, 혹은 R에서 data.frame과 비슷하다.

  • 문제에서 table은 3개 columns을 가지고 있고 각각은 column label이 있다. column labels은 각각 Name, Age, Sex이다.
  • column Name은 string인 문자 데이터가 들어있고, column Age에는 숫자가, colunm Sex에는 문자 데이터가 들어있다.

DataFrame의 각 column은 Series이다

💁‍♂️ 만약 colunm Age에 있는 데이터에만 관심이 있다고 가정해 보자.

 

df["Age"]

 

pandas DataFrame의 single column만을 선택할 때, 그 결과는 pandas Series라 한다. column을 선택하기 위해, column label은 []로 감싸서 사용한다.

👉 만약 당신이 Python dictionaries에 익숙하다면, single column을 선택하는 것은 key로 dictionary value를 선택하는 것과 비슷하다.

 

Series를 새로 생성할 수도 있다.

 

ages = pd.Series([22, 40, 58], name="Age")
ages

 

Series는 column label을 가지고 있지 않다. 왜냐하면 DataFrame의 single column이기 때문이다. 또한 Series는 row label을 가지고 있지 않다.

 

DataFrame이나 Series를 활용해보자

💁‍♂️승객의 maximum Age를 알고 싶다.

DataFrame에서 Age를 선택한 다음 max() 메소드를 적용해준다.

 

df["Age"].max()

 

[Out]: 58

 

ages.max()

 

[Out]: 58

Series에서도 적용된다.

max() 메소드는 DataFrameSeries모두에서 사용 가능하다.

 

💁‍♂️ 내 데이터 table에 있는 숫자 데이터에 대해서, 기본적인 통계 정보를 알고 싶을 때

 

df.describe()

 

describe() 메소드는 DataFrame에 있는 숫자 데이터의 quick overview를 제공해 준다. NameSexcolumns은 텍스트 데이터라서, 계산이 안 되기 때문에 default된다.

describe()메소드 설명: 링크

 

Returns 값 설명

DataFrame.count : NA, null값 다 포함한 개수를 count

DataFrame.max , DataFrame.min: 최대, 최솟값

DataFrame.mean: 평균값

DataFrame.std: 표준편차

percentiles(백분위수) 25, 50, 75: 50은 중앙값(median)을 의미함

 

*백분위수 관련 자료

 

👉 중앙값과 평균의 차이
평균(mean)은 변량을 모두 더한 후 변량의 개수로 나눈 값이다. 중앙값(median)은 전체 변량을 순서대로 정렬했을 때, 정중앙에 위치한 수이다.
👉 특수값 (NA, NaN, NULL, INF)에 대해 알아보자
NA: Not Available의 줄임말. 사용할 수 없는 데이터를 뜻하며, 일반적으로 결측값을 의미함.
NaN: Not a Number의 줄임말. 정의되지 않거나 알 수 없는 결과를 수학 연산으로 나타내는데 사용. * NaN은 사용할 수 없는 숫자 데이터, NA는 사용할 수 없는 모든 유형의 데이터
NULL: 대상이 없음
INF: infinite의 줄임말. inf는 양의 무한대, -inf는 음의 무한대

🐢 요약 🐢

 

•  package를 불러오기: import pandas as pd

  데이터의 table은 DataFrame으로 저장됨

  DataFrame의 각 column은 Series임.

  DataFrame이나 Series에 메소드를 적용시켜서 많은 일들을 수행할 수 있음!

300x250