본문 바로가기
Python/데이터 다루기

데이터 분석의 70%를 처리할 수 있는 10가지 Python 작업

by 찐남 2022. 5. 21.

데이터 분석의 주요 업무는 

데이터 사전 처리, 데이터 분석, 

기계 학습 모델 생성, 

모델 배포와 같은 

다양한 작업을 포함합니다.

데이터 분석을 하기 위해서는

 

첫 번째, 데이터 조작(data handling)

기술을 알아야 합니다.

 

데이터 조작은 데이터를 읽고,

데이터에서 질문에

답을 얻을 수 있는 형식으로

변환하는 것에서부터 시작됩니다.

 

Python 프로그래밍 언어에는

데이터 조작 및

데이터 분석 작업을 위한

Pandas 라이브러리가 있습니다.

이번 포스팅에서는

데이터 분석을 위해 알아야 할

상위 10가지 Python(pandas)

에 대해서 살펴보겠습니다. 

 

 

 

1. Reading Dataset(데이터 읽기)

데이터는 모든 분석의 기본 구성 요소입니다.

csv, Excel, 텍스트 등과 같은

다양한 파일 형식에서

데이터를 읽는 방법을 아는 것은

데이터 분석자로서 숙달해야 하는

첫 번째 단계 중 하나입니다.

 

titanic 데이터를 이용해서

csv 파일을 읽어 보겠습니다. 

 

import pandas as pd 

# read_csv를 활용한 titanic data 읽기
titanic = pd.read_csv('d:/titanic.csv') 

# 데이터의 첫번째 5개의 열 확인하기
titanic.head()

 

2. Summary Statistics(요약 통계)

데이터를 읽은 후 다음 단계는

Age, Fare와 같은 수치형 Feature는

개수, 평균, 표준 편차, 사분위수 등을 

확인하고,

Pclass, Sex와 같은 범주형 Feature는

범주 열의 빈도, 최빈값 등을

확인하고, 
데이터를 이해하는 것입니다. 

 

describe 함수를 사용하여 

아래와 같이 데이터의

수치형 변수에 대한

요약을 얻을 수 있습니다.

 

# 요약 통계량 확인하기 
titanic.describe()

 

describe 함수 내에서

"include = 'all'" 인수를 설정하면

연속 및 범주형 변수의 요약 통계량을

모두 확인할 수 있습니다.

 

# 요약 통계량 확인하기 
titanic.describe(include = 'all')

 

3. Feature Selection 및 Filtering

데이터의 모든 행과 열이

분석에 필요한 것은 아닙니다.

 

분석의 대상이 되는

관심 있는 열을 선택하고

대답하려는 질문에 따라

일부 행만 필터링해야 합니다.

 

예를 들어 다음 코드를 사용하여 

Sex 및 Fare feature를

선택할 수 있습니다.

 

# Sex와 Fare 선택
titanic[['Sex','Fare']]

 

Sex 값 중 'male'을 가지는 데이터만

선택할 수도 있습니다.

 

loc을 사용하여 아래와 같이

일부 값을 기반으로

데이터를 필터링할 수 있습니다.

 

#  Sex 중 'male' 값만 필터링하기
titanic.loc[titanic['Sex'] == 'male']

 

 

 

4. aggregation(집계)

다른 Feature 그룹에서

개수, 합계, 평균 등과 같은 숫자 요약을

찾는 것이 집계입니다.

 

데이터 분석 시

가장 자주 수행하는

작업 중 하나입니다.

집계를 사용하여

Sex에 따른 전체 Fare의

합계를 찾을 수 있습니다.

 

집계는 groupby 및 agg 함수를

사용하여 수행할 수 있습니다. 

 

groupby 함수 내에서

집계를 수행하려는 수준(Sex 열)을 제공하고,

 

agg 함수 내에서

수행하려는 열 이름(Fare) 및

수학 연산(합계)을 제공합니다.

 

# Sex(성별) 구분에 따른 Fare(요금) 합계
titanic.groupby(['Sex']).agg({'Fare':'sum'})

 

# Sex(성별) 구분에 따른 개수 합계
titanic.groupby(['Sex']).agg({'Fare':'count'})

 

5. Join(결합)

2개의 데이터 세트를 결합하여 

하나의 단일 데이터 세트를 만드는 것은

Join 함수를 사용합니다.

 

여러 다른 데이터 세트에는

서로 다른 정보가 존재합니다.

 

예를 들어 한 데이터 세트에는

타이타닉호에 탑승한 승객 데이터가

포함될 수 있고,

 

다른 데이터 세트에는

타이타닉호의 객실 등급(Pclass) 정보가

포함될 수 있습니다.

 

이제 이 두 정보를 결합해야 하는 경우

아래와 같이 결합 작업을 수행할 수 있습니다.

 

# titanic Pclass 설명 데이터 읽기 
titanicPclassDescribe = pd.read_csv('d:/titanicPclassDescribe.csv') 
titanicPclassDescribe

 

# pd.merge(
# left_df: 왼쪽 결합 데이터,
# right_df: 오른쪽 결합 데이터,
# left_on(왼쪽 결합 데이터 결합 key) = 'key',
# how(결합 방식) = 'type_of_join'
# )
titanicAdd = pd.merge(titanic, titanicPclassDescribe, how = 'left', left_on = 'Pclass', right_on = 'Pclass')

 

6. 내장 함수

min(), max(), mean(), sum() 등과 같은

수학적 내장 함수를 아는 것은

다양한 분석을 수행하는 데 매우 유용합니다.

 

이러한 함수를 호출하기만 하면

데이터 프레임에 직접

이러한 함수를 적용할 수 있습니다.

 

이러한 함수는 아래와 같이

열 또는 집계 함수 내에서

독립적으로 사용할 수 있습니다.

 

# 타이타닉호에 탑승한 모든 승객들의 요금 합계 산출
titanic['Fare'].sum()

# 타이타닉호에 탑승한 승객들의 성별에 따른 평균 나이 산출 
titanic.groupby(['Sex']).agg({'Age':'mean'})

 

7. 사용자 정의 함수

우리가 직접 작성하는 함수는

사용자 정의 함수라고 합니다.

 

필요할 때마다 해당 함수를 호출하여

이러한 함수 내에서

코드를 실행할 수 있습니다.

 

예를 들어 아래와 같이

2개의 숫자를 곱하는 함수를

만들 수 있습니다.

 

# 두 개의 숫자 인수를 받아서, 곱한 결과를 반환하는 함수
def product(num1, num2):
    return num1*num2

# 함수 호출 후 결과를 출력
print(product(3,2))

 

 

 

8. Pivot(피벗)

피벗은 열 행 내의 고유 값(unique value)을

여러 개의 새로운 열로 변환하는 것입니다.

 

이것은 고급 기술입니다.

titanic 데이터 세트에서

pivot_table() 함수를 사용하여

성별(male, female)을 개별로 하는

새로운 열로 변환할 수 있습니다.

 

# 타이타닉호에 탑승한 승객 이름을 새로운 열로 변환
# 탑승객 명단에 대응하는 값은 요금(Fare)으로 채움
titanicPivot = pd.pivot_table(titanic, columns = 'Name', values = 'Fare')
titanicPivot

 

9. 데이터 프레임 반복

데이터 프레임의 인덱스와 행을 통해 

반복해야 하는 경우가 많습니다.

이 경우 iterrows 함수를 사용하여

데이터 프레임을 반복할 수 있습니다.

 

# iterrows() 함수를 사용해서 데이터 프레임의 인덱스와 행을 반복함 
for index, row in titanic.iterrows():
    print('Index is ' + str(index))
    print('Name is '+ str(row['Name']))

...

 

데이터 프레임의

반복 작업과 관련된 내용은

아래 포스팅을 참고하세요.

 

 

Pandas 행 단위 연산 - iterrows(), itertuples(), iloc, loc 함수

데이터 분석을 하기 위한 전처리 작업이나 혹은 데이터 조작 시 데이터를 행 단위로 읽어서 처리해야 하는 상황이 많은 데요. 이럴 때, 활용할 수 있는 다양한 방안들이 있는데요. 여기서는 2가

zzinnam.tistory.com

 

10. 문자열 연산

데이터 분석을 하다 보면,

문자열이 포함된 열을 다루는 경우가 많으며,

 

이러한 경우 문자열을

대문자, 소문자로 변환하는 방법,

문자열의 길이를 찾는 방법과 같은

기본적인 문자열 연산을

아는 것이 중요합니다. 

 

# Sex의 값을 모두 대문자로 변환
titanic['Sex'] = titanic['Sex'].str.upper()

# 승객 이름(Name)을 모두 소문자로 변환 
titanic['Name'] = titanic['Name'].str.lower()

# 승객 이름(Name)의 길이를 반환 
titanic['len'] = titanic['Name'].str.len()

titanic.head()

 

이번 포스팅에서 소개한

10개만 정확히 이해하시면,

정말 많은 데이터 분석이 

가능하시리라 생각합니다. 

 

 

 

반응형

댓글