데이터 분석의 주요 업무는
데이터 사전 처리, 데이터 분석,
기계 학습 모델 생성,
모델 배포와 같은
다양한 작업을 포함합니다.
데이터 분석을 하기 위해서는
첫 번째, 데이터 조작(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']))
...
데이터 프레임의
반복 작업과 관련된 내용은
아래 포스팅을 참고하세요.
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개만 정확히 이해하시면,
정말 많은 데이터 분석이
가능하시리라 생각합니다.
'Python > 데이터 다루기' 카테고리의 다른 글
항목에 쉼표(,)를 포함하고 있는 CSV 파일 읽기 (0) | 2022.05.24 |
---|---|
알아두면 데이터 분석 시 시간을 절약할 수 있는 16가지 Python 및 Pandas Hacks (0) | 2022.05.23 |
Python에서 JSON을 사용하는 방법(for 초급자) (0) | 2022.05.13 |
JSON에 대한 소개 (0) | 2022.05.08 |
데이터 분석을 위한 강력한 Pandas 함수 1 (0) | 2022.05.01 |
댓글