내일배움 본캠프

[내일배움 본캠프] 'Python' 데이터 분석 필수 문법

hyeon-ji 2026. 5. 22. 12:53

▶ 파일 확장자

● CSV 파일(.csv) : Comma Separated Values의 약자로, 데이터를 쉼표(,)로 구분하여 저장하는 형식이다.

→ 데이터프레임으로 불러오기 : pandas 라이브러리의 read_csv() 함수를 사용한다.

import pandas as pd
df = pd.read_csv('file.csv')

 

● Excel 파일(.xls, .xlsx) : 표 형태로 데이터를 저장하는 Microsoft Excel의 형식이다.

데이터프레임으로 불러오기 : pandas의 read_excel() 함수를 사용한다.

import pandas as pd
df = pd.read_excel('file.xlsx')

 

● JSON 파일(.json) : JavaScript Object Notation의 약자로, 데이터를 저장하는 간단한 형식이다.

데이터프레임으로 불러오기 : pandas의 read_json() 함수를 사용한다.

import pandas as pd
df = pd.read_json('file.json')

 

● 텍스트 파일(.txt, .dat, 등) : 일반 텍스트로 된 데이터를 저장하는 파일이다.

데이터프레임으로 불러오기 : pandas의 read_csv() 함수를 사용할 수 있다.

import pandas as pd
df = pd.read_csv('file.txt', delimiter='\t')  
# 만약 탭으로 구분되어 있다면 delimiter='\t'를 사용한다.

 

▶ 파일 불러오기

→ Colab 사용 시 내가 가지고 있는 데이터 파일을 읽어오기 위해서는 '드라이브 마운트'를 필수적으로 해줘야 한다.

from google.colab import drive
drive.mount('/content/drive')

# 아래는 제가 데이터 파일을 넣은 구글 드라이브 경로에요!
# 제 구글 드라이브 안에 '스파르타코딩클럽_데이터분석을위한파이썬'이라는 폴더가 있는데
# 그 안에 파일을 넣은 상황 입니다.
# 여러분의 폴더 이름에 맞게 경로를 바꾸어 보세요!
root = "/content/drive/MyDrive/스파르타코딩클럽_데이터분석을위한파이썬"
# 그리고 위 경로에 해당 파일 이름도 함께 이어 붙여서 파일 경로를 하나 완성합니다
file_address = root + "/ssec2403(통계표).xlsx"

# 위에서 지정해 놓은 파일 경로를 활용하여 불러오기만 하면 끝!
import pandas as pd
df = pd.read_excel(file_address)

 

▶ 파일 저장하기

● CSV 파일

더보기
import pandas as pd

data = {
    'Name': ['John', 'Emily', 'Michael'],
    'Age': [30, 25, 35],
    'City': ['New York', 'Los Angeles', 'Chicago']
}

df = pd.DataFrame(data)
excel_file_path = '/content/sample_data/data.csv'
df.to_csv(excel_file_path, index = False)

print("csv 파일이 생성되었습니다.")

● Excel 파일

더보기
import pandas as pd

data = {
    'Name': ['John', 'Emily', 'Michael'],
    'Age': [30, 25, 35],
    'City': ['New York', 'Los Angeles', 'Chicago']
}

df = pd.DataFrame(data)
excel_file_path = '/content/sample_data/data.xlsx'
df.to_excel(excel_file_path, index = False)

print("Excel 파일이 생성되었습니다.")

● JSON 파일

더보기
import json

data = {
    'Name': ['John', 'Emily', 'Michael'],
    'Age': [30, 25, 35],
    'City': ['New York', 'Los Angeles', 'Chicago']
}

json_file_path = '/content/sample_data/data.json'

# json 파일을 쓰기모드로 열어서 data를 거기에 덮어씌우게 됩니다.
with open(json_file_path, 'w') as jsonfile:
    json.dump(data, jsonfile, indent=4)

print("JSON 파일이 생성되었습니다.")

● 텍스트 파일

더보기
data = {
    'Name': ['John', 'Emily', 'Michael'],
    'Age': [30, 25, 35],
    'City': ['New York', 'Los Angeles', 'Chicago']
}

text_file_path = '/content/sample_data/data.txt'

with open(text_file_path, 'w') as textfile:
    for key, item in data.items():
        textfile.write(str(key) + " : " + str(item) + '\n')

print("텍스트 파일이 생성되었습니다.")

▶ 파일 찾기

glob이란?

→ 파일 시스템에서 파일을 찾을 때 사용하는 도구, 주로 파일 이름이나 확장자에 따라 파일을 필터링하는 데 사용된다.

import glob

# 현재 경로의 모든 파일을 찾기
file_list1 = glob.glob('*')

# 단일 파일 패턴으로 파일을 찾기
file_list2 = glob.glob('drive')

# 디렉토리 안의 모든 파일 찾기
file_list3 = glob.glob('sample_data/*')

# 특정 확장자를 가진 파일만 찾기
file_list4 = glob.glob('sample_data/*.csv')

▶ 패키지(라이브러리)

→ 관련된 여러 개의 모듈을 포함하는 '디렉터리'이다.

  • 데이터 분석을 위한 파이썬 패키지들을 다양한 작업을 수행하는데 필수적이다.
  • 데이터 분석을 위한 파이썬 패키지들은 다양한 작업을 수행하는 데 필수적입니다.
  • 이들 패키지들은 데이터 수집, 전처리, 시각화, 모델링, 통계 분석 등 다양한 기능을 제공합니다.
  • 파이썬에서 패키지와 라이브러리를 사용하는 것은 코드의 재사용성을 높이고, 개발 속도를 빠르게 하며, 코드의 가독성을 향상합니다.
  • 또한, 다른 개발자들이 작성한 코드를 활용함으로써 자신의 프로젝트를 보다 효율적으로 개발할 수 있습니다.

맨 처음 파이썬을 사용할 때 필요한 패키지들을 맨 위에 한 번에 불러놓고 사용하면 편리하다!

 

● 패키지 모음

더보기
import pandas as pd
import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt
import seaborn

 

pandas

  데이터 조작과 분석을 위한 라이브러리로, 데이터를 효과적으로 조작하고 분석할 수 있도록 도와준다.

import pandas as pd
df = pd.read_excel(file_address)
print(df)

 

numpy

과학적 계산을 위한 핵심 라이브러리로, 다차원 배열과 행렬 연산을 지원한다.

import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr.mean())

 

matplotlib

데이터 시각화를 위한 라이브러리로, 다양한 그래프와 플롯을 생성할 수 있다.

import matplotlib.pyplot as plt
plt.plot([1, 2, 3, 4], [1, 4, 9, 16])
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.show()

 

seaborn

matplotlib을 기반으로 한 통계용 데이터 시각화 라이브러리, 보다 간편하고 아름다운(?) 시각화를 제공한다.

import seaborn as sns
import pandas as pd
data_sample = pd.DataFrame({'x':[1, 2, 3, 4], 'y':[1, 4, 9, 16]})
sns.barplot(data=data_sample, x='x', y='y')

 

scikit-learn

머신 러닝 알고리즘을 사용할 수 있는 라이브러리로, 분류, 회귀, 군집화, 차원 축소 등 다양한 머신 러닝 기법을 제공한다.

from sklearn.datasets import load_iris
from sklearn.linear_model import LinearRegression

# Iris 데이터셋 불러오기
iris = load_iris()

# Iris 데이터셋에서 특정 범위의 데이터 슬라이싱하기
X_train = iris.data[:,:-1]  # 데이터 값들 추출
print("학습 데이터:", X_train)
y_train = iris.data[:,-1:]  # 정답값 추출
print("학습 데이터:", y_train)

model = LinearRegression()
model.fit(X_train, y_train)

 

statsmodels

통계 분석을 위한 라이브러리로, 회귀 분석, 시계열 분석, 비모수 통계 등 다양한 통계 기법을 제공한다.

import statsmodels.api as sm
model = sm.OLS(y_train, X_train)
result = model.fit()
print(result.summary())

 

scipy

과학기술 및 수학적인 연산을 위한 라이브러리로, 다양한 과학 및 공학 분야에서 활용됩니다. 선형대수, 최적화, 신호 처리, 통계 분석 등 다양한 기능을 제공한다.

import numpy as np
from scipy.integrate import quad

# 적분할 함수 정의
def integrand(x):
    return np.exp(-x ** 2)

# 정적분 구간
a = 0
b = np.inf

# 적분 계산
result, error = quad(integrand, a, b)

print("결과:", result)
print("오차:", error)

 

● tensorflow

딥러닝 및 기계 학습을 위한 오픈소스 라이브러리로, 구글에서 개발했습니다. 그래프 기반의 계산을 통해 수치 계산을 수행하며, 신경망을 구축하고 학습할 수 있다.

import tensorflow as tf

input_size = 3

model = tf.keras.Sequential([
    tf.keras.layers.Dense(10, activation='relu', input_shape=(input_size,)),
    tf.keras.layers.Dense(1)
])
model.compile(optimizer='adam', loss='mse')

 

pytorch

딥러닝을 위한 오픈소스 라이브러리로, Facebook에서 개발했습니다. 동적 계산 그래프를 사용하여 신경망을 구축하고 학습할 수 있다.

import torch
import torch.nn as nn
class Model(nn.Module):
    def __init__(self):
        super(Model, self).__init__()
        self.fc1 = nn.Linear(input_size, hidden_size)
        self.fc2 = nn.Linear(hidden_size, output_size)
    def forward(self, x):
        x = torch.relu(self.fc1(x))
        x = self.fc2(x)
        return x

▶ 포맷팅(Formatting)

정보나 데이터를 일정한 형식과 구조에 맞게 정리하고 표현하는 것

# 포멧팅하지 않고 출력
x = 10
print("변수 x의 값은", x, "입니다.")

# f-string을 이용해 포멧팅하여 출력
x = 10
print(f"변수 x의 값은 {x}입니다.")

# 또 다른 포멧팅 방법
x = 10
print("변수 x의 값은 {}입니다.".format(x))

# 옛날 방식의 포멧팅
x = 10
print("변수 x의 값은 %d입니다." % (x))

 

▶ 리스트 캄프리헨션

파이썬에서 반복문과 조건문을 사용하여 리스트를 간결하게 생성하는 방법 중 하나. 파이썬의 강력한 기능 중 하나로, 데이터 처리 및 변환에 유용하게 활용된다.

# 기본적인 구조
[표현식 for 항목 in iterable if 조건문]
# 예시: 1부터 10까지의 숫자를 제곱한 리스트 생성
squares = [x**2 for x in range(1, 11)]
print(squares)  # 출력: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

# 예시: 리스트에서 짝수만 선택하여 제곱한 리스트 생성
even_squares = [x**2 for x in range(1, 11) if x % 2 == 0]
print(even_squares)  # 출력: [4, 16, 36, 64, 100]

# 예시: 문자열 리스트에서 각 문자열의 길이를 저장한 리스트 생성
words = ["apple", "banana", "grape", "orange"]
word_lengths = [len(word) for word in words]
print(word_lengths)  # 출력: [5, 6, 5, 6]

# 예시: 리스트 컴프리헨션을 중첩하여 2차원 리스트 생성
matrix = [[i for i in range(1, 4)] for j in range(3)]
print(matrix)  # 출력: [[1, 2, 3], [1, 2, 3], [1, 2, 3]]

▶ lmada(람다)

  lambda 키워드로 정의하는 이름 없는 한 줄짜리 간단한 함수로, 주로 함수형 프로그래밍에서 함수를 인자로 전달할 때 사용된다.

      lamda 함수의 장점으로는,

  • 간결성 : 코드를 더 간결하게 만들어 줌. 간단한 연산이나 조작 필요한 경우 유용함.
  • 익명성 : 이름이 없어 임시로 필요한 경우에 사용 가능. 정렬이나 필터링과 같은 함수의 매개변수로 전달될 때 많이 사용됨.
  • 함수형 프로그래밍 : 함수를 값으로 취급하고 함수를 다루는 함수형 프로그래밍 패러다임에서 람다 함수가 필요함. 함수를 매개변수로 받는 고차 함수를 작성하거나 함수를 반환하는 경우에 효과적.
  • 가독성 : 간단한 표현식을 사용하여 코드를 작성하므로 가독성이 향상됨. 특히 함수가 짧고 명확한 경우에 유용함.

● lamda와 함수의 차이점

- lamda 함수
정의 방식 lamda 키워드 사용하여 익명함수 정의 def 키워드 사용하여 명시적으로 함수 정의
구조 한 줄로 표현되는 간단한 표현식만 포함 여러 줄의 코드 블록을 가질 수 있음
이름 이름이 없음. 한 번만 사용되거나 임시로
필요한 경우에 사용
함수의 이름을 지정하여 호출할 수 있음
사용 매개변수로 받거나 함수를 반환하는 고차 함수,
즉 함수형 프로그래밍에서 사용 가능
어떤 경우에도 사용 가능

 

● lamda 예시

# 간단한 덧셈 함수
add = lambda x, y: x + y
print(add(3, 5))  # 출력: 8

# 제곱 함수
square = lambda x: x ** 2
print(square(4))  # 출력: 16

 

☞ 내장 함수 ' filter '

여러 개의 데이터로부터 조건을 충족하는 데이터만 추출할 때 사용(조건에 따라 추출해 줌)

filter(조건 함수, 반복 가능한 데이터)
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers)  # 출력: [2, 4, 6, 8, 10]

 

☞ 내장 함수 ' map '

  여러 개의 값을 받아서 각각의 값에 함수를 적용한 결과를 반환해 줌(함수대로 만들어 줌)

map(함수, 반복 가능한 데이터)
numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(lambda x: x ** 2, numbers))
print(squared_numbers)  # 출력: [1, 4, 9, 16, 25]

 

▶ os 모듈

운영 체제와 상호 작용하기 위한 다양한 함수들을 제공한다.

주요 기능

  • 파일 및 디렉토리 관리 : 파일 생성, 이름 변경, 삭제, 디렉토리 생성, 탐색, 삭제 등의 작업을 수행할 수 있다.
더보기
# 현재 작업 디렉토리 가져오기
import os
cwd = os.getcwd()
print(cwd)
# 디렉토리 생성
import os
os.mkdir('sample_data/new_directory')
# 파일 이름 변경
import os
os.rename('sample_data/new_directory', 'sample_data/new_directory2')
# 파일 삭제
import os
os.remove(file_adress)

import os
os.remove('sample_data/data.csv')
  • 경로 관리 : 절대 경로, 상대 경로, 현재 작업 디렉토리 등의 경로 관리와 경로 구성 요소를 조작하고, 경로를 연결하고, 경로를 정규화할 수 있다.
더보기
# 파일 목록(경로) 가져오기
import os
files = os.listdir('/content')
print(files)
# 경로 조작
import os
path = os.path.join('/content', 'sample_data', 'mnist_test.csv')
print(path)
  • 환경 변수 관리 : 시스템의 환경 변수를 가져오거나 설정할 수 있다.
  • 실행 관리 : 외부 프로그램을 실행하거나, 현재 프로세스의 종료 등의 작업을 수행할 수 있다.

▶ split 메서드

→ 문자열을 여러 부분으로 나누는 기능으로, 파일 경로에서 파일명 추출 등 문자열 처리 작업에 유용하게 활용된다.

# 데이터의 경로를 문자열로 표현
file_path = "/usr/local/data/sample.txt"

# split() 함수를 사용하여 디렉토리와 파일명으로 분할
directory, filename = file_path.rsplit('/', 1)
print("디렉토리:", directory)  # 출력: 디렉토리: /usr/local/data
print("파일명:", filename)    # 출력: 파일명: sample.txt

'''
file_path라는 문자열 변수에 데이터의 경로를 저장하고, 
split() 함수를 사용하여 문자열을' / '기준으로 분할한다.
rsplit() 함수를 사용하여 오른쪽에서부터 최대 1회만 분할하도록 설정하여
파일명과 디렉토리로 나눈다.
분할된 결과를 각각 directory와 filename 변수에 할당하여 출력한다.
'''

 

▶ Class (클래스)

→ 객체를 만들기 위한 설계도로, 데이터(속성)와 기능(메서드)을 함께 묶어 관리하는 객체지향 프로그래밍의 핵심 개념이다.

코드의 구조화·재사용성·유지보수성을 높이며, 상속과 다형성을 통해 확장 가능한 프로그램을 만들 수 있게 해 준다.

→ 데이터 분석에서는 데이터 구조화, 전처리 모듈화, 모델링 구현 등에 활용된다.

# 클래스의 기본 구조
class ClassName:
    def __init__(self, parameter1, parameter2):
        self.attribute1 = parameter1
        self.attribute2 = parameter2

    def method1(self, parameter1, parameter2):
    # 메서드 내용 작성
        pass
        
'''
메서드의 첫 번째 매개변수로 ' self '를 반드시 사용해야 한다.
이는 해당 메서드가 속한 객체를 가르킨다.
'''

 

● 다형성

→ 같은 이름의 메서드가 서로 다른 클래스에서 다른 기능을 수행하도록 하는 개념이다.

class Animal:
    def sound(self):
        print("Some generic sound")

class Dog(Animal):
    def sound(self):
        print("Woof")

class Cat(Animal):
    def sound(self):
        print("Meow")

# 다형성 활용
animals = [Dog(), Cat()]
for animal in animals:
    animal.sound()

 

인스턴스(instance)

→ 클래스를 이용해 실제로 만들어진 객체. 클래스가 "붕어빵 틀"이라면, 인스턴스는 그 틀로 만든 "실제 붕어빵"

 

메서드(Method)

클래스 내부에 정의된 함수이며, 특정 작업을 수행하거나 클래스의 상태를 변경하는 역할이다.

→ 일반적으로 클래스의 인스턴스에서 호출되며, 해당 인스턴스의 상태에 따라 동작한다.

 

속성(Attribute)

클래스나 클래스의 인스턴스에 속한 변수이다.

클래스나 인스턴스의 상태를 나타냅니다. 즉, 객체의 데이터를 저장한다.

 

불리언 인덱싱(Boolean indexing)

조건에 따라 요소를 선택하는 방법 중 하나, 주어진 조건에 따라 배열이나 리스트에서 요소를 선택할 수 있게 해주는 강력한 도구이다.

파이썬에서는 NumPy를 사용하여 불리언 인덱싱을 수행할 수 있고 Pandas에서 데이터를 조건에 맞게 선택할 때 많이 사용한다.

import numpy as np

# 배열 생성
arr = np.array([1, 2, 3, 4, 5])

# 불리언 배열 생성 (조건에 따라 True 또는 False 값을 갖는 배열)
condition = np.array([True, False, True, False, True])

# 불리언 인덱싱을 사용하여 조건에 맞는 요소 선택
result = arr[condition]

# 결과 출력
print("Result using boolean indexing:", result)  # 출력: [1 3 5]

# 불리언 인덱싱을 사용하여 배열에서 짝수인 요소만 선택
evens = arr[arr % 2 == 0]

# 결과 출력
print("Even numbers using boolean indexing:", evens)  # 출력: [2 4]

 

▶ 데코레이터(Decorator)

함수나 메서드의 기능을 확장하거나 수정하는 강력한 도구이다.

함수나 메서드를 인자로 받아 해당 함수나 메서드를 변경하거나 래핑 하는 함수이다.

기존의 함수를 따로 수정하지 않고도 추가 기능을 넣고 싶을 때 사용한다.

def decorator_function(original_function):
    def wrapper_function(**kwargs):
        # 함수 호출 전에 실행되는 코드
        result = original_function(**kwargs)
        # 함수 호출 후에 실행되는 코드
        return result
    return wrapper_function

 

▶ 파이썬 에러!!

  1. SyntaxError (구문 오류) : 코드의 문법을 확인하고 괄호, 따옴표, 콜론 등을 올바르게 사용했는지 확인하기. 코드 블록의 들여 쓰기도 확인하기
  2. IndentationError (들여 쓰기 오류) : 들여 쓰기를 일관되게 맞추기. 보통은 스페이스 4개 or 탭 사용
  3. NameError (이름 오류) : 사용된 변수나 함수가 정의되었는지 확인하기. 오탈자나 변수명의 대소문자를 확인하고, 정의되지 않은 변수나 함수를 정의하기
  4. TypeError (타입 오류) : 연산이나 함수 호출에서 사용되는 데이터 타입을 확인하고, 필요한 형 변환을 수행하기. 
  5. IndexError (인덱스 오류) : 인덱스 범위를 확인하기. 존재하지 않는 인덱스 접근을 피하고, 슬라이싱을 사용하여 안전하게 데이터에 접근하는 것도 하나의 방법
  6. KeyError (키 오류) : 사용되는 키가 딕셔너리에 존재하는지 확인하기. 
  7. FileNotFoundError (파일을 찾을 수 없음 오류) : 파일 경로를 올바르게 지정했는지 확인하기. 
  8. 외의 오류 : 구글링 하기

 

☆ 데이터리터러시 ☆

▶ 지표란?

  • 특정 목표나 성과를 측정하기 위한 구체적이고 측정 가능한 기준
  • 목표 달성도를 평가하고 전략적 결정에 필요한 핵심 정보 제공
  • 정의한 문제에 대해 정확하게 파악하기 위해 필요
문제 정의 지표 설정
어떤 문제를 풀고자 하는가? 어떤 결과를 기대하는가?
둘 이상의 해석이 나오지 않도록 구체적으로 표현하고 정의했는가? 정의한 문제를 확인하는데 적합한가?

 

● Active User(활성유저)

서비스에 들어오는 모든 유저를 의미하지는 않는다.

활성유저 정의에 따라 전략과 방향이 달라지고, '이탈 유저'가 정의된다.

서비스 지표에 중요한 역할을 한다.

 

○ Active User 설정

  • 어디까지 경험한 유저가 우리의 활성유저인가?
  • 일반유저와 활성유저를 나누는 기준은?
  • 유저는 어디서 우리 서비스의 효용성을 느낄까?
  • 우리가 핸들링할 수 있는 유저의 사이즈는 얼마나 될까?
지표 정의
전체 Active User 앱 접속 이력이 있는 유저
서비스별 Active User 서비스별 서브메인 이하 추가 액션이 있는 유저
DAU Daily Active User
WAU Weekly Active User
MAU Monthly Active User
이탈유저(이탈율) 전체 DAU로 잡혔지만, 각 서비스의 DAU로 잡히지 않은 유저(비율)
CVR(Conversion Rate) 특정 행동을 한 후, 전환된 비율
CTR(Click Thtough Rate) 어떤 페이지에 접근한 후, 특정 요소를 클릭한 비율

 

Retention Ratio(재방문율)

→ 몇 %의 유저가 우리 서비스를 다시 사용하는가?

 정의 : 서비스를 사용한 사람이 다시 서비스를 사용하는 비율%

  • 한번 획득한 유저가 서비스로 다시 돌아왔는가? 에 대한 지표
  • 재방문율이 높은 서비스를 획득비용에 투자한 비용을 빠르게 회수할 수 있음
  • 성장에 있어서 매우 중요한 지표(특히 앱서비스)
  • 기본적으로는 방문을 기준으로 측정하지만, Active User에서 활성의 기준을 정해줬던 것과 같이, 서비스의 특성에 따라 '활성'의 기준을 다르게 정의할 수 있음
  • 일반적으로 재방문율은 시간이 지남에 따라 자연스럽게 감소함
  • 기울기가 점점 완만해지며 안정화되는 그래프를 가지고 있다면, 시장에 적합한 서비스라고 할 수 있음

 

○ Retention 측정방법

1. N-Day 리텐션

  • 최초 사용일로부터 N일 후에 재방문한 Active User의 비율
  • 일반적으로 사용하는 리텐션 지표는 N-Day 리텐션
  • 게임, 소셜 등 습관적으로 사용하거나 반복적으로 행동을 유도하는 제품에 적합
  • 유저가 Active User로 집계된 최초 날을 Day 0으로 설정하고 Day 0에 액티브 상태가 된 모든 유저들의 N일차 리텐션 계산

2. Unbounded 리텐션

  • 특정 날짜를 포함하여 그 이후에 재방문한 유저의 비율
  • 특정일을 포함하여 그 이후에 한 번이라도 재방문한 유저의 비율
  • 유저가 정기적으로 반복해서 방문하는 서비스가 아닐 경우 적합

3. Bracket 리텐션

  • 설정한 특정 기간을 기반으로 재방문율을 측정
  • Bracket 리텐션은 N-Day 리텐션을 확장한 개념 > 일/주/월 단위가 아닌 지정한 구간으로 나눔
  • 1(0일차) / 2(1-3일차) / 3(4-6일차) / 4(7-11일차)
  • 활성유저가 특정한 활동을 위해 각 Bracket 내 서비스에 재방문 시 잔존 유저로 해석

 

● Funnel(퍼널)

유저들이 어디서 이탈하는가?를 확인하기 위한 구조화

잠재고객을 유입시키며 최종적인 목표 액션을 달성할 때까지의 과정이다. 모든 서비스와 비즈니스는 각 단계로 갈수록 이용자 수가 줄어들게 되며, 각 단계의 전환율을 측정한다.

 

○ AARRR

디지털 마케팅 시 퍼널을 활용하는 프레임워크이며, 단계별 전환율을 지표화 하여 서비스 보완 지점을 찾기 위함이다.

  • Acquisition: 유입
  • Activation: 활성화
  • Retention: 재방문(재구매)
  • Revenue: 수익
  • Referral: 추천

 

● LTV (Life Time Value, 고객 평생 가치)

→ 해당 유저가 우리에게 평생 주는 이익은 얼마나 될까?

  • 고객 생애 주기: 한 명의 유저가 서비스를 사용하기 시작하여 이탈할 때까지의 기간
  • LTV는 한 명의 유저가 생애 주기 동안 얼마만큼의 이익을 주는지를 정량적으로 지표화 한 것
  • LTV는 유저와의 관계를 측정하고, 이를 사업적 이익으로 가져가는데 중요한 지표
  • LTV가 높다는 것은 해당 서비스와 관계가 좋고, 충성도가 높은 고객이 많다는 것

  ↓ LTV 산출 방법↓ ↓ ↓

더보기
  • 이익 x Life Time x 할인율(미래 비용에 대한 현재 가치)
  • 연간 거래액 x 수익률 x 고객 지속 연수
  • 고객의 평균 구매 단가 x 평균 구매 횟수
  • (매출액 – 매출 원가) / 구매자 수
  • 평균 구매 단가 x 구매 빈도 x 구매 기간
  • (평균 구매 단가 x 구매 빈도 x 구매 기간) – (신규 획득 비용 + 고객 유지 비용)
  • 월 평균 객단가 / 월 가중 평균 잔존율

등 산출하는 방법은 매우 여러 가지이며, 서비스마다 관점마다 다르기 때문에 다각도로 고민이 필요하다.

 

● 북극성 지표

→ 제품·서비스가 고객에게 제공하는 핵심 가치를 기반으로 장기적인 사업 성장을 가장 잘 예측하고 측정하는 핵심 선행지표이다.

 

  ↓ 좋은 북극성 지표를 위한 체크리스트↓  

더보기
  • 유저가 목적을 달성하는 때가 언제인가?
  • 모든 유저가 해당되나?
  • 측정 가능한 지표인가?
  • 측정 주기가 적절한가? (일, 주, 월, …)
  • 외부 요인으로부터 영향을 많이 받진 않는가?
  • 북극성지표의 성장이 사업의 성장과 함께하는가?
  • AARRR 퍼널 전 과정이 북극성 지표에 영향을 주는가?
  • 북극성 지표의 변화가 적어도 매주 관찰가능한가?

  ↓ 북극성 지표가 중요한 이유↓  

더보기
1. 방향성
→ 조직이 무엇에 집중하고 어떤 가치를 만들어야 하는지 명확한 기준을 제시해 실행과 책임을 일관되게 만든다.

2. 효율 증대
→ 전 조직의 목표를 하나로 정렬해 중복·충돌 업무를 줄이고 협업 효율을 높인다.

파이썬 기초 마지막 강의를 들으며 마무리 했다. 정말 다양한 내용을 배웠는데 이해가 잘 되지 않고 내용이 좀 어려웠어서 강의를 듣는데 시간이 좀 걸렸다. 오늘따라 집중도 잘 되지 않아서 강의를 좀 돌려가며 봤다..

기억에 가장 많이 남는 부분은 '리스트 캄프리헨션'과 '람다 함수'를 이용하여 코드를 좀 더 간결하고 빠르게 실행시킬 수 있는 부분이다. 이 두 가지를 잘 이용하면 코드를 좀 더 효율적으로 작성할 수 있을 것 같다.

그 외에 이해가 잘 되지 않았던 부분은 추후에 복습하는 시간이 필요할 것 같다.

 

다음 주 월요일까지 쉬는 날이니 컨디션 회복하고 다시 집중할 수 있도록 해야겠다!