데이터 분석 관련

pandas(4) : 데이터(시리즈, 데이터프레임) 생성, 시리즈 데이터 필터링, 시리즈 연산, 내림차순, 올림차순

cjangela 2025. 2. 12. 14:42
반응형

1. 데이터 생성

1) 시리즈 데이터 생성하기

  • pandas에서 시리즈(series)는 1차원 배열 형태의 데이터 구조로, 하나의 데이터 타입만을 가질 수 있습니다. 시리즈는 pd.Series()를 이용해 생성할 수 있습니다.
  • 예를 들어, 아래와 같이 사람 이름과 숫자를 함께 넣을 수 있습니다.
pd.Series(["태조", 6])

시리즈 데이터 생성하기

  • 위 코드는 인덱스가 자동으로 0, 1로 생성됩니다. 그러나 인덱스를 직접 지정하고 싶다면 index 매개변수를 사용해 문자열로 생성할 수 있습니다. 이와 같이 지정하면, 각각의 값에 대해 직접 이름을 붙일 수 있어 데이터 해석이 쉬워집니다.
pd.Series(["태조", 6], index = ["묘호", "재위기간"])

시리즈 데이터 - 인덱스를 문자열로 표현하여 생성하기

2) 데이터프레임 데이터 생성하기

  • 여러 개의 시리즈가 모이면 데이터프레임(DataFrame)이 됩니다. 이와 같은 구조는 테이블 형태로 깔끔하게 데이터를 정리할 수 있어 매우 유용하며, 가장 많이 사용되는 형태입니다.
  • 아래는 조선시대 초반부터 5대 왕까지의 정보를 담은 데이터프레임 예시입니다.
pd.DataFrame(
    data = {"묘호" : ["태조", "정종", "태종", "세종", "문종"],
            "출생연도" : ["1335년", "1357년", "1367년", "1397년", "1414년"],
            "사망연도" : ["1408년", "1419년", "1422년", "1450년", "1452년"],
            "재위기간" : ["6년", "2년", "18년", "32년", "2년"],
            "즉위나이" : [58, 42, 34, 22, 37]},
    index = ["제1대", "제2대", "제3대", "제4대", "제5대"],
    columns = ["묘호", "출생연도", "사망연도", "즉위나이", "재위기간"]
)

데이터프레임 데이터 생성하기

2. 시리즈 데이터 필터링

  • 이제 위에서 만든 데이터프레임을 Joseon_King이라는 변수로 저장했다고 가정하고, 시리즈 관련 작업을 진행해보겠습니다.

입력한 데이터 값 확인하기

1) 시리즈 불러오기

  • 데이터프레임에서 특정 열을 선택하면 해당 열은 시리즈 형태로 변환됩니다. 예를 들어 '즉위나이'만을 따로 불러올 수 있습니다.
ages = Joseon_King["즉위나이"]
ages

즉위나이를 기준으로 시리즈 불러오기

2) 시리즈 기초 통계

  • 시리즈에 포함된 숫자 데이터를 바탕으로 평균(mean), 최댓값(max), 최솟값(min), 표준편차(std) 등을 구할 수 있습니다.
# 평균값
ages.mean()

# 최댓값
ages.max()

# 최솟값
ages.min()

# 표준편차
ages.std()

평균값, 최댓값, 최솟값, 표준편차 구하기

3) 시리즈 조건에 따른 필터링

  • 평균보다 어린 나이에 즉위한 왕들은 누구일까요? 다음과 같은 조건을 이용해 필터링할 수 있습니다. 비교 연산자를 활용하여 조건에 맞는 데이터만 추출할 수 있습니다.
ages[ages < ages.mean()]

시리즈 조건에 따른 필터링 진행하기

3. 시리즈 연산

1) 시리즈끼리 연산

  • 시리즈 간의 연산은 동일한 인덱스를 기준으로 진행됩니다. 숫자형 데이터라면 덧셈, 곱셉 등의 연산이 가능하며 결과는 각 항목별로 처리됩니다.
제1대 : 58 / 제2대 : 42 / 제3대 : 34 / 제4대 : 22 / 제5대 : 37
ages + ages

시리즈끼리 연산 진행

2) 시리즈와 숫자 간 연산

  • 시리즈와 정수 또는 실수 간의 연산도 가능합니다. 각 요소에 대해 일괄적으로 숫자가 더해지거나 곱해지는 방식입니다.
# 덧셈
ages + 10

# 곱셉
ages * 2

시리즈와 숫자 데이터 간 연산 진행

3) 길이가 다른 시리즈 간 연산

  • 길이가 다른 시리즈 연산도 가능한데, 인덱스가 일치하는 항목만 연산이 수행되며, 나머지는 NaN으로 출력됩니다.
ages + pd.Series([10, 5], index = ["제1대", "제2대"])

길이가 다른 데이터 간 연산 진행

4. 정렬하기 : 내림차순, 올림차순

1) 내림차순

  • 인덱스를 기준으로 정렬하고 싶다면 sort_index() 메서드를 사용합니다. 내림차순은 ascending = False로 설정합니다.
ages.sort_index(ascending = False)

내림차순 실행하기

2) 올림차순

  • 내림차순이 False였다면, 올림차순은 True겠죠?
  • 내림차순과 마찬가지로 sort_index() 메서드로 정렬 후, ascending = True를 입력하여 올림차순을 진행합니다.
  • 정렬은 분석 전에 데이터를 확인하고 정리하는 데 유용하게 활용됩니다.
ages.sort_index(ascending = True)

올림차순 실행하기


이상으로 pandas의 시리즈 생성부터 연산, 필터링, 정렬까지의 기초적인 사용법을 정리해 보았습니다. 데이터를 다루는 데 있어 시리즈를 자유롭게 다룰 수 있다면, 이후의 분석도 훨씬 수월해질 것입니다.

감사합니다.