관리 메뉴

sean의 딥다이브

파이썬 데이터 분석 입문: 초보자를 기본 파이썬 문법 본문

데이터 분석 (Data analysis)

파이썬 데이터 분석 입문: 초보자를 기본 파이썬 문법

sean-deepdive 2024. 8. 15. 18:08
반응형

데이터 분석 및 엔지니어링의 중요성이 나날이 높아지고 있습니다. 저는 사내에서 공정 데이터 분석과 예측에 파이썬을 활용하고 있어요. 📊 전공자만큼 코딩에 정통하진 않지만, 기본적인 데이터 분석 능력만으로도 현업에서 꽤 유용하게 활용하고 있습니다. 🧩

https://k21academy.com/microsoft-azure/dp-203/data-engineering/


중요한 결정을 내릴 때 데이터 기반의 인사이트가 중요한 역할을 하죠. 하지만 많은 데이터를 일일히 열어서 확인할 수는 없는 노릇입니다. 공정 데이터가 수십, 수백기가 이상으로 많기 때문에 일일히 이를 확인하고 분석하기는 어렵거든요. 엑셀로는 파일이 열리지도 않습니다.💻💬


물론 처음부터 파이썬을 활용한 데이터 분석 (numpy, pandas) 을 배우면 좋겠지만, 이 경우에도 정말 기본적인 파이썬에 대한 기본 문법을 알아야 합니다. 기본 문법을 잘 모르는 경우 기본 함수로 간단하게 처리할 수 있는 과정을, 복잡한 함수를 써서 해결하게 되는 경우가 많이 생기거든요.😫

 

그래서 데이터 분석에 반드시 필요한 기본 파이썬 함수들을 빠르게 훑고 지나가고자 합니다. 어짜피 수 많은 파이썬의 함수들을 다 외워서 쓸 수는 없습니다. 😅

기본 문법에 대한 자세한 내용들은  '왕초보를 위한 파이썬' 의 위키를 참고하시면 됩니다.👉 https://wikidocs.net/43


1. 자료형🧱

파이썬에서 자료형은 데이터의 종류를 나타냅니다.

주요 자료형으로는 정수(int), 실수(float), 문자열(str), 불리언(bool) 등이 있어요.

데이터 엔지니어링에서는 다양한 형태의 데이터를 다루기 때문에, 각 자료형의 특성을 이해하는 것이 중요합니다.

integer_number = 42  # 정수
float_number = 3.14  # 실수
text = "Hello, Data Engineering!"  # 문자열
is_python_fun = True  # 불리언

print(type(integer_number))  # <class 'int'>
print(type(float_number))    # <class 'float'>
print(type(text))            # <class 'str'>
print(type(is_python_fun))   # <class 'bool'>

 

자료형을 잘 이해하면 데이터 처리 시 발생할 수 있는 오류를 줄이고, 효율적인 메모리 사용이 가능합니다. 🎯 자료형은 생각보다 정말정말 중요합니다. 우리가 분석을 위해서 데이터들을 불러오고, 평균이나 분산과 같은 값을 구하려고 하면 안되는 경우가 많습니다🤨. 왜 안되지 하고 머리를 싸매다가 보면, 데이터는 숫자(int)처럼 보이지만 실제로는 글자(string) 으로 되어있는 경우가 많거든요.

 

꼭! 자료형을 확인하는 습관을 가져야 합니다. ✔️


2. 리스트(List)📚

리스트는 여러 항목을 순서대로 저장하는 자료구조입니다.

대괄호 []를 사용하여 생성하며, 쉼표로 항목을 구분하죠.

데이터 엔지니어링에서 리스트는 데이터 세트나 시계열 데이터를 다룰 때 자주 사용됩니다.

numbers = [1, 2, 3, 4, 5]
fruits = ['사과', '바나나', '체리']

print(numbers[0])  # 1 (첫 번째 요소)
print(fruits[-1])  # '체리' (마지막 요소)

# 리스트 슬라이싱
print(numbers[1:4])  # [2, 3, 4]

# 리스트 메서드 사용
fruits.append('딸기')
print(fruits)  # ['사과', '바나나', '체리', '딸기']

 

사실 리스트는 거의 대부분의 코드에 들어갈 정도로 정말 많이 쓰이는 데이터 형식입니다. 리스트에 관련된 함수들을 알고 있으면, 코드를 작성하는데 있어 많은 도움이 됩니다. 🫶

 

리스트 관련 함수 목록 📚

 

  • append(): 리스트 끝에 요소를 추가합니다.
  • extend(): 리스트 끝에 다른 리스트의 모든 요소를 추가합니다.
  • insert(): 지정한 위치에 요소를 삽입합니다.
  • remove(): 지정한 값을 가진 첫 번째 요소를 제거합니다.
  • pop(): 지정한 인덱스의 요소를 제거하고 반환합니다. 인덱스를 지정하지 않으면 마지막 요소를 제거합니다.
  • clear(): 리스트의 모든 요소를 제거합니다.
  • index(): 지정한 값을 가진 첫 번째 요소의 인덱스를 반환합니다.
  • count(): 지정한 값을 가진 요소의 개수를 반환합니다.
  • sort(): 리스트를 정렬합니다.
  • reverse(): 리스트의 요소 순서를 뒤집습니다.
  • copy(): 리스트의 얕은 복사본을 반환합니다.
  • len(): 리스트의 길이를 반환합니다.
  • max(): 리스트에서 최대값을 찾습니다.
  • min(): 리스트에서 최소값을 찾습니다.
  • sum(): 리스트의 모든 요소의 합을 계산합니다.

 

중요한 것 (제가 처음에 헷갈렸던 내용) 👉 리스트는 행렬이 아닙니다. 리스트끼리의 덧셈은 요소끼리의 덧셈이 아님에 유의해야 합니다.

list1 = [1, 2, 3]
list2 = [4, 5, 6]

# 리스트 덧셈
combined_list = list1 + list2
print(combined_list)  # [1, 2, 3, 4, 5, 6]

3. 딕셔너리(Dictionary)🗝️

딕셔너리는 키-값 쌍으로 데이터를 저장하는 자료구조입니다.

중괄호 {}를 사용하여 생성하며, 콜론(:)으로 키와 값을 구분해요.

데이터 엔지니어링에서 딕셔너리는 구조화된 데이터를 표현하거나 빠른 검색이 필요한 경우에 유용합니다.

person = {'name': '홍길동', 'age': 30, 'city': '서울'}

print(person['name'])  # '홍길동'

# 새로운 키-값 쌍 추가
person['job'] = '데이터 엔지니어'

# 딕셔너리 메서드 사용
print(person.keys())    # dict_keys(['name', 'age', 'city', 'job'])
print(person.values())  # dict_values(['홍길동', 30, '서울', '데이터 엔지니어'])

# 항목 삭제
del person['age']
print(person)  # {'name': '홍길동', 'city': '서울', 'job': '데이터 엔지니어'}

 

꽤나 많은 데이터 관련 함수이 input 형식으로 딕셔너리 형태를 요구하고 있습니다. 이런거 안쓸거같은데? 하고 넘겼다가 저도 꽤나 피를 보고 있는 사람으로서, 꼭 머리속에 있어야 할 데이터 형식중 하나 입니다.


4. 비교연산자와 bool 자료형⚖️

비교연산자는 두 값을 비교하여 True 또는 False를 반환합니다.

주요 비교연산자로는 ==, !=, <, >, <=, >= 등이 있어요.

bool 자료형은 이러한 비교 결과를 저장하며, 조건문에서 자주 사용됩니다.

x = 5
y = 10

print(x < y)   # True
print(x == y)  # False
print(x >= 5)  # True

# 복합 조건
print((x < y) and (y == 10))  # True
print((x > y) or (y < 20))    # True

# bool() 함수 사용
print(bool(0))    # False
print(bool(42))   # True
print(bool(""))   # False
print(bool("Hello"))  # True

5. 함수와 매개변수 (진짜중요) 🛠️

함수는 특정 작업을 수행하는 코드 묶음이에요. 요리 레시피를 생각해보세요. 레시피는 특정 요리를 만드는 방법을 단계별로 설명하죠. 함수도 이와 비슷해요. 특정 작업을 수행하는 방법을 정의해놓은 것이랍니다.

 

왜 함수를 사용할까요? 🎯

  1. 재사용성: 한 번 만들어 놓으면 여러 번 사용할 수 있어요. 매번 같은 코드를 반복해서 쓸 필요가 없죠.
  2. 간단하게 만들기: 복잡한 작업을 작은 부분으로 나눌 수 있어요. 마치 큰 문제를 작은 문제들로 나누는 것처럼요.
  3. 코드 정리: 관련된 코드를 한 곳에 모아두어 프로그램을 깔끔하게 만들 수 있어요.

함수는 어떻게 만들까요? 🛠️

파이썬에서는 def라는 특별한 단어로 함수를 시작해요. 그 다음에 함수 이름과 괄호를 써주면 됩니다.

def greet(name):
    return f"안녕하세요, {name}님!"

print(greet("철수"))  # 안녕하세요, 철수님!

# 기본 매개변수 사용
def power(base, exponent=2):
    return base ** exponent

print(power(3))     # 9 (3^2)
print(power(2, 3))  # 8 (2^3)

# 가변 인자 함수
def sum_all(*args):
    return sum(args)

print(sum_all(1, 2, 3, 4, 5))  # 15

이렇게 함수는 코드를 더 쉽게 이해하고, 관리하고, 재사용할 수 있게 해줍니다. 마치 레고 블록처럼 프로그램의 작은 부품을 만드는 거예요. 이 부품들을 조립해서 더 큰 프로그램을 만들 수 있습니다!


6. 람다(lambda) 함수

람다 함수는 간단한 일회용 함수를 만들 때 사용합니다. 데이터 처리나 정렬 등에서 유용하게 활용됩니다.

square = lambda x: x**2
print(square(4))  # 16

# 리스트 정렬에 람다 함수 사용
fruits = ['apple', 'banana', 'cherry', 'date']
sorted_fruits = sorted(fruits, key=lambda x: len(x))
print(sorted_fruits)  # ['date', 'apple', 'banana', 'cherry']

# map 함수와 람다 함수 조합
numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(lambda x: x**2, numbers))
print(squared_numbers)  # [1, 4, 9, 16, 25]

람다 함수는 간결한 코드 작성을 가능하게 하며, 특히 데이터 전처리나 변환 작업에서 자주 사용됩니다. 🎯


7. for 문🔄

for 문은 우리가 같은 일을 여러 번 반복해야 할 때 사용하는 도구 입니다 🧰. 마치 운동장을 여러 바퀴 도는 것처럼, 코드를 여러 번 실행하게 해주죠.

# 기본 for 문
for i in range(5):
    print(i)  # 0부터 4까지 출력

# 리스트 순회
fruits = ['사과', '바나나', '체리']
for fruit in fruits:
    print(fruit)

# 딕셔너리 순회
person = {'name': '홍길동', 'age': 30, 'city': '서울'}
for key, value in person.items():
    print(f"{key}: {value}")

# 리스트 컴프리헨션
squares = [x**2 for x in range(10)]
print(squares)  # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

8. for 문과 리스트 컴프리헨션(List comprehension) 🔄

리스트 컴프리헨션(List Comprehension)은 for 문을 사용해 리스트를 만드는 더 짧고 멋진 방법입니다. 한 줄로 새로운 리스트를 만들 수 있답니다!

새로운_리스트 = [표현식 for 항목 in 반복가능한_객체]

#간단한 리스트 만들기
제곱수 = [x**2 for x in range(1, 6)]
print(제곱수)  # 출력: [1, 4, 9, 16, 25]

#조건을 추가한 리스트 만들기
짝수 = [x for x in range(1, 11) if x % 2 == 0]
print(짝수)  # 출력: [2, 4, 6, 8, 10]

#문자열 리스트 다루기
과일들 = ['사과', '바나나', '체리', '딸기']
과일_길이 = [len(과일) for 과일 in 과일들]
print(과일_길이)  # 출력: [2, 3, 2, 2]

 

한 줄로 내가 원하는 조건의 리스트를 만들 수 있다는 점! 백번 강조해도 모자랄 정말 강력한 도구입니다 💯


9. 라이브러리(library)📚

여러가지 데이터 조작을 하다보면 정말 다양한 기능을 하는 함수들을 만들어야 합니다. 그런데 그 함수들을 코딩할때마다 새로 만들고 불러오고 하려면 정말 많은 시간이 소요되겠죠? 그런데 세상에 친절한 누군가가 유용한 함수들을 만들고 그것들을 모아서 쉽게 쓸 수 있도록 만들어두었습니다! 그걸 라이브러리 라고 합니다.

 

왜 라이브러리를 사용할까요? 🎯

  1. 시간 절약: 모든 걸 처음부터 만들 필요가 없어요.
  2. 전문가의 지식 활용: 각 분야 전문가들이 만든 코드를 사용할 수 있어요.
  3. 복잡한 문제 해결: 어려운 문제도 쉽게 해결할 수 있어요.

자주 사용하는 라이브러리들 🌟

  1. Pandas 🐼
    • 데이터를 다루는 최고의 도구예요.
    • 엑셀 같은 표 형식의 데이터를 분석할 때 사용해요.
  2. NumPy 🔢
    • 숫자와 배열을 빠르게 계산하는 도구예요.
    • 복잡한 수학 계산이나 대규모 데이터 처리할 때 사용해요.
  3. Matplotlib 📊
    • 데이터를 그래프로 그려주는 도구예요.
    • 데이터를 시각적으로 표현하고 싶을 때 사용해요.
  4. Scikit-learn 🧠
    • 머신러닝을 쉽게 할 수 있게 해주는 도구예요.
    • 데이터로부터 패턴을 찾거나 예측을 하고 싶을 때 사용해요.

라이브러리 사용하기 🛠️

라이브러리를 사용하려면 먼저 설치해야 해요. 보통 pip라는 도구를 사용해 설치합니다

pip install pandas numpy matplotlib scikit-learn

그리고 파이썬 코드에서 import 명령어로 불러와 사용해요:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

 

라이브러리는 파이썬의 힘을 크게 키워주는 마법 같은 도구예요. 복잡한 작업도 몇 줄의 코드로 해낼 수 있게 해주죠. 데이터 엔지니어링에서는 이런 라이브러리들을 잘 활용해서 큰 데이터도 쉽게 다룰 수 있답니다.

 

반응형