파이썬/pandas

series 의 고급 응용

kimble2 2024. 8. 18. 15:04
반응형

 

Pandas의 Series는 데이터 분석에서 매우 유용한 도구로, 다양한 응용이 가능합니다. 여기서는 Series의 고급 응용 예제를 통해 더 깊이 이해해보겠습니다.

1. 시계열 데이터 분석

Series는 시계열 데이터를 다루기에 적합합니다. 인덱스로 날짜나 시간을 사용하면, 시간의 흐름에 따른 데이터 분석이 용이해집니다.

import pandas as pd
import numpy as np

# 날짜 인덱스를 가진 Series 생성
dates = pd.date_range('2024-01-01', periods=6)
data = pd.Series([100, 102, 101, 105, 107, 111], index=dates)

# 시계열 데이터 출력
print(data)

# 특정 날짜 이후의 데이터 필터링
filtered_data = data['2024-01-03':]
print(filtered_data)
 

2. 데이터프레임의 특정 열로 Series 사용

Series는 DataFrame의 열(column)을 구성하는 기본 단위입니다. 데이터를 열로 다루면서, 특정 열에 대해 연산을 수행할 수 있습니다.

# 데이터프레임 생성
df = pd.DataFrame({
    'Product': ['A', 'B', 'C', 'D'],
    'Price': [1200, 1500, 1000, 1100],
    'Quantity': [10, 15, 12, 11]
})

# 특정 열을 Series로 추출
price_series = df['Price']

# 가격이 1100 이상인 제품 필터링
filtered_df = df[price_series >= 1100]
print(filtered_df)
 

3. 맵핑(mapping)과 데이터 변환

Series를 사용하여 데이터를 매핑하거나 변환할 수 있습니다. 예를 들어, 제품 카테고리를 숫자로 변환하거나, 상태를 다른 값으로 대체할 수 있습니다.

# 카테고리 데이터를 숫자로 변환
category_series = pd.Series(['A', 'B', 'C', 'A', 'B'])
category_map = {'A': 1, 'B': 2, 'C': 3}

# 맵핑을 통해 숫자로 변환
numeric_series = category_series.map(category_map)
print(numeric_series)

# 데이터 변환 (예: 결측값 채우기)
data_with_nan = pd.Series([1, np.nan, 3, np.nan, 5])
filled_data = data_with_nan.fillna(0)  # 결측값을 0으로 채우기
print(filled_data)
 

4. 데이터 정렬과 순위 매기기

Series는 데이터를 정렬하거나 순위를 매길 수 있는 기능을 제공합니다.

# 데이터 정렬
unsorted_data = pd.Series([3, 1, 2, 4, 5], index=['c', 'a', 'b', 'e', 'd'])
sorted_data = unsorted_data.sort_values()  # 값 기준으로 정렬
print(sorted_data)

# 데이터 순위 매기기
ranked_data = unsorted_data.rank()
print(ranked_data)
 

5. 수학 및 통계 연산

Series는 다양한 수학 및 통계 연산을 지원합니다. 이는 데이터 분석 시 매우 유용합니다.

 

# 기본적인 통계 연산
data = pd.Series([1, 2, 3, 4, 5])

# 합계, 평균, 표준편차
total = data.sum()
mean = data.mean()
std_dev = data.std()

print(f"Total: {total}, Mean: {mean}, Std Dev: {std_dev}")

# 누적 합계 (Cumulative Sum)
cumulative_sum = data.cumsum()
print(cumulative_sum)
 

6. 문자열 데이터 처리

Series는 문자열 데이터 처리에도 유용합니다. 문자열 조작, 패턴 매칭 등을 쉽게 할 수 있습니다.

 

# 문자열 데이터
string_series = pd.Series(['apple', 'banana', 'cherry', 'date'])

# 문자열 길이 계산
lengths = string_series.str.len()
print(lengths)

# 특정 문자 포함 여부 확인
contains_a = string_series.str.contains('a')
print(contains_a)

# 문자열 대체
replaced_series = string_series.str.replace('a', '@')
print(replaced_series)
 

7. 조건부 필터링 및 브로드캐스팅

Series는 조건부 필터링 및 브로드캐스팅 연산이 가능합니다. 이는 데이터를 필터링하고 특정 조건을 적용할 때 유용합니다.

 

# 조건부 필터링
data = pd.Series([1, 2, 3, 4, 5])

# 조건을 만족하는 데이터만 필터링
filtered_data = data[data > 3]
print(filtered_data)

# 브로드캐스팅 (모든 값에 특정 연산 적용)
broadcasted_data = data * 2  # 모든 값에 2를 곱함
print(broadcasted_data)
 

8. 결측값 처리

데이터 분석에서 결측값 처리도 중요합니다. Series는 결측값을 쉽게 처리할 수 있습니다.

 

# 결측값 포함 Series
data_with_nan = pd.Series([1, np.nan, 3, np.nan, 5])

# 결측값 제거
data_no_nan = data_with_nan.dropna()
print(data_no_nan)

# 결측값 채우기
filled_data = data_with_nan.fillna(data_with_nan.mean())  # 평균으로 결측값 채우기
print(filled_data)
 

9. 그룹화 및 집계

Series는 데이터를 그룹화하여 각 그룹에 대해 집계 연산을 수행할 수 있습니다.

 

# 그룹화된 데이터
data = pd.Series([100, 200, 150, 300, 250], index=['A', 'B', 'A', 'B', 'A'])

# 그룹별 합계
grouped_sum = data.groupby(data.index).sum()
print(grouped_sum)

# 그룹별 평균
grouped_mean = data.groupby(data.index).mean()
print(grouped_mean)
 

10. 시각화

Series는 간단한 시각화 작업도 지원합니다. 예를 들어, 데이터 분포를 빠르게 시각화할 수 있습니다.

 

import matplotlib.pyplot as plt

# 데이터 시각화
data = pd.Series([1, 3, 5, 7, 9])

# 기본적인 선 그래프
data.plot()
plt.show()
 
 

이러한 응용들은 Pandas의 Series가 얼마나 강력하고 유연한지 보여줍니다. 데이터 분석에서 Series를 효과적으로 활용하면, 복잡한 데이터 처리와 분석 작업을 간단하게 수행할 수 있습니다.

 

#python #pandas #series

 

반응형

'파이썬 > pandas' 카테고리의 다른 글

Series 기본 특징 및 사용법  (0) 2024.08.18