[Python Pandas, Numpy에 대해 1편]

2024. 12. 3. 22:13·Python 정리

1.  Pandas 소개

판다스(Pandas)는 Python에서 데이터를 쉽게 다룰 수 있게 해주는 데이터 분석 라이브러리예요!
데이터를 표(테이블) 형식으로 다루기 쉽게 만들어주고, 다양한 데이터 조작 기능을 제공해요. 
데이터를 정리하고 분석하는 데 아주 강력한 도구랍니다. 😎
  • 데이터프레임(DataFrame)

판다스의 핵심 자료 구조로, 엑셀의 스프레드시트처럼 행(row)과 열(column)로 구성된 2차원 데이터 구조예요.

  • 시리즈(Series)

단일 열을 나타내는 1차원 데이터 구조로, 데이터프레임의 구성 요소 중 하나예요.

판다스를 이용하면 데이터의 필터링, 정렬, 집계 등 다양한 작업을 간단한 코드로 수행할 수 있어요.

 

1) 판다스 활용 분야

더보기
  • 데이터 분석

판다스는 방대한 양의 데이터를 효율적으로 처리하고 분석하는 데 매우 유용해요. 통계 분석, 트렌드 파악, 데이터 시각화 등 다양한 작업에 사용돼요.

  • 데이터 전처리

머신러닝 모델을 만들기 전에, 데이터를 정리하고 변환하는 과정에서 판다스는 없어서는 안 될 도구예요. 결측값 처리, 이상치 제거, 데이터 변환 등 다양한 작업을 지원해요.

  • 비즈니스 인텔리전스(BI)

기업에서 중요한 의사결정을 내리기 위해 데이터에서 인사이트를 도출하는 과정에서도 판다스가 널리 쓰여요. 고객 데이터 분석, 판매 데이터 추적 등 다양한 분석 작업에 활용돼요.

  • 금융 데이터 분석

금융 시장 데이터를 분석하고, 투자 전략을 수립하는 데도 판다스가 많이 사용돼요. 주식 가격 데이터, 경제 지표 등을 분석하는 데 강력한 도구예요.

  • 연구 및 학술 분석

연구 데이터의 수집, 정리, 분석에 판다스가 필수적이에요. 특히 사회과학, 생명과학 등 다양한 분야에서 데이터를 다루는 연구에 활용돼요.

2) Pandas 설치하기

pip install pandas

 

3) Conda와 가상환경 설정

Conda란?

  • Conda는 파이썬 패키지 관리 및 가상환경 관리를 돕는 도구입니다.
  • 여러 프로젝트에 서로 다른 패키지 버전을 사용해야 할 때 유용합니다.

Conda 설치하기

  • Anaconda나 Miniconda를 설치하여 Conda를 사용할 수 있습니다.
  • 설치 후, Conda 명령어를 사용할 수 있습니다.

설치 후 첫 화면

conda create --name myenv

myenv라는 새로운 가상환경 만들기

가상환경 활성화:
conda activate myenv
가상환경 비활성화:
conda deactivate

myenv 활성화, 비활성화

 

2. Pandas 시리즈와 데이터 프레임

📚 시리즈란?
- 시리즈(Series)는 **1차원** 배열과 같은 데이터 구조입니다.
- 엑셀의 한 열(column)을 떠올리면 이해가 쉬워요!
- 인덱스(Index)와 데이터 값(Value)이 쌍으로 구성됩니다.

import pandas as pd
# 예시: 시리즈 생성
s = pd.Series([10, 20, 30, 40], index=['a', 'b', 'c', 'd'])
print(s)
데이터 프레임이란?
- 데이터 프레임(DataFrame)은 **2차원**의 표 형태 데이터 구조입니다.
- 엑셀의 전체 시트(sheet)를 생각해보세요!
- 여러 개의 시리즈(Series)가 모여서 만들어집니다.

# 예시: 데이터 프레임 생성
data = {
    '이름': ['철수', '영희', '민수'],
    '나이': [25, 30, 35],
    '직업': ['학생', '회사원', '프리랜서']
}
df = pd.DataFrame(data)
print(df
시리즈와 데이터 프레임의 차이점 및 공통점

❗ 차이점
- 시리즈는 1차원, 데이터 프레임은 2차원.
- 시리즈는 하나의 데이터 타입, 데이터 프레임은 다양한 데이터 타입 허용.

❗ 공통점
- 둘 다 **인덱스**를 가지고 있어 데이터에 쉽게 접근 가능.
- 판다스에서 가장 기본적인 데이터 구조.

 

 

3. Numpy

1) 소개

NumPy는 Numerical Python의 줄임말로,
과학 계산에 강력한 성능을 제공하는 파이썬 라이브러리입니다.
- 다차원 배열 객체인 **ndarray**와 배열을 효율적으로 처리할 수 있는 다양한 함수들을 제공합니다.
- 데이터 분석, 머신러닝, 딥러닝에서 **기초가 되는 라이브러리**로, 판다스와 함께 자주 사용됩니다.
🔎 **NumPy의 주요 특징**

- **고속 배열 연산**: C언어로 작성되어 있어 파이썬 기본 리스트보다 훨씬 빠른 연산 가능.
- **다양한 수학 함수**: 배열 간의 덧셈, 뺄셈, 곱셈 등의 연산을 효율적으로 수행.
- **선형대수, 통계 함수**: 복잡한 수학 계산도 간단히 처리 가능.

 

2)  Numpy 설치하기

pip install numpy

 

3) 기본 사용법

import numpy as np 

# 1차원 배열 생성
arr = np.array([1, 2, 3, 4, 5])
print(arr) #[1 2 3 4 5]
NumPy 배열은 벡터화 연산이 가능하여, 반복문 없이 배열 전체에 연산을 적용할 수 있습니다.
# 배열 덧셈
arr2 = arr + 10
print(arr2) #[11 12 13 14 15]

 

  • reshape함수
  • np.reshape(변경할 배열, 차원) 또는 배열.reshape(차원)으로 사용
  • 현재의 배열의 차원(1차원,2차원,3차원)을 변경하여 행렬을 반환하거나 하는 경우에 많이 이용되는 함수이다.
배열의 모양 변경, 원소 접근 등 다양한 기능을 쉽게 사용할 수 있습니다.
# 배열의 모양 변경
arr_reshaped = arr.reshape((1, 5))
print(arr_reshaped) #[[1 2 3 4 5]]
import numpy as np
a = [1,2,3,4,5,6,7,8]
b = np.reshape(a,(2,4))
c = np.reshape(a,(4,2))

print(b) """[[1 2 3 4]
    	   [5 6 7 8]]"""

print(c) """[[1 2]
	    [3 4]
            [5 6]
     	    [7 8]]"""

 

4) Numpy 배열 생성

import numpy as np

# 리스트로부터 배열 생성
arr = np.array([1, 2, 3, 4, 5])
print(arr) #[1 2 3 4 5]
0으로 채워진 배열 생성
zero_arr = np.zeros((2, 3))  # 2x3 크기의 배열
print(zero_arr)

1로 채워진 배열 생성
ones_arr = np.ones((3, 2))  # 3x2 크기의 배열
print(ones_arr)

특정 값으로 채워진 배열 생성
full_arr = np.full((2, 2), 7)  # 2x2 크기의 7로 채워진 배열
print(full_arr)

연속적인 값으로 채워진 배열 생성:
range_arr = np.arange(10)  # 0부터 9까지의 연속된 값
print(range_arr)
배열 간의 연산
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])

# 배열 간 덧셈
arr_sum = arr1 + arr2
print(arr_sum) #[5 7 9]

# 배열 간 곱셈
arr_mul = arr1 * arr2
print(arr_mul) #[4 10 18]
인덱싱(Indexing) 배열 특정 위치에 접근하는 방법
arr = np.array([10, 20, 30, 40, 50])
# 첫 번째 원소
print(arr[0]) #10
# 마지막 원소
print(arr[-1]) #50

슬라이싱(Slicing) 배열의 일부분을 잘라내는 방법입니다.
arr = np.array([10, 20, 30, 40, 50])
# 두 번째부터 네 번째 원소까지
sliced_arr = arr[1:4]
print(sliced_arr) #[20 30 40]

다차원 배열의 경우, 콤마를 사용해 접근합니다.
arr2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# 특정 원소 접근 (2행 3열)
print(arr2d[1, 2]) #6

# 슬라이싱 (2행까지, 2열까지)
sliced_arr2d = arr2d[:2, :2]
print(sliced_arr2d) #[[1 2]
		      [4 5]]

 

5) 배열 연산 브로드캐스팅

NumPy에서는 배열 간의 연산을 매우 효율적으로 수행할 수 있습니다. 
특히 브로드캐스팅(Broadcasting) 기능은 크기가 다른 배열 간의 연산을 가능하게 해줍니다.
**배열 간의 기본 연산**
- NumPy 배열 간의 덧셈, 뺄셈, 곱셈, 나눗셈 모두 요소별(element-wise)로 수행됩니다.

import numpy as np

arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])

# 덧셈
add_result = arr1 + arr2
print(add_result) #[5 7 9]

# 곱셈
mul_result = arr1 * arr2
print(mul_result) #[4 10 18]

 

📚 브로드캐스팅이란?
- 작은 배열이 큰 배열의 형태에 맞게 **자동으로 확장**되어 연산이 이루어지는 것을 의미해요. 
이 기능 덕분에 코드를 더 간결하게 작성할 수 있습니다.
서로 다른 크기의 배열 간에도 연산이 가능합니다. 
작은 배열이 자동으로 확장되어 연산됩니다.

arr1 = np.array([1, 2, 3])
arr2 = np.array([[10], [20], [30]])

# 브로드캐스팅을 이용한 덧셈
broadcast_result = arr1 + arr2
print(broadcast_result)  #[[11 12 13]
			[21 22 23]
                        [31 32 33]
배열의 합(sum)과 곱(prod)
arr = np.array([1, 2, 3, 4])

# 합계
sum_result = np.sum(arr)
print(sum_result) #10

# 곱
prod_result = np.prod(arr)
print(prod_result) #24

# 제곱근
sqrt_result = np.sqrt(arr)
print(sqrt_result) #[1.         1.41421356 1.73205081 2.        ]

# 자연로그
log_result = np.log(arr)
print(log_result) #[0.         0.69314718 1.09861229 1.38629436]
평균(mean), 중간값(median), 표준편차(std)
arr = np.array([1, 2, 3, 4, 5])

# 평균
mean_result = np.mean(arr)
print(mean_result) #3.0

# 중간값
median_result = np.median(arr)
print(median_result) #3.0

# 표준편차
std_result = np.std(arr)
print(std_result) #1.4142135623730951
arr = np.array([1, 3, 2, 7, 5])

# 최대값
max_result = np.max(arr)
print(max_result) #7

# 최소값
min_result = np.min(arr)
print(min_result) #1

'Python 정리' 카테고리의 다른 글

[Python 3일차 클래스, 객체, 메서드, 파일]  (4) 2024.11.29
[Python 2일차 데이터 타입 ~ 예외처리까지]  (5) 2024.11.27
[Python 1일차 변수, 연산자]  (3) 2024.11.26
'Python 정리' 카테고리의 다른 글
  • [Python 3일차 클래스, 객체, 메서드, 파일]
  • [Python 2일차 데이터 타입 ~ 예외처리까지]
  • [Python 1일차 변수, 연산자]
100.nam
100.nam
100.nam님의 블로그 입니다.
  • 100.nam
    100.nam님의 블로그
    100.nam
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Python 정리
      • Python 문제 풀기
      • Machine learning
      • SQL 정리
      • SQL 문제풀기
      • Django 정리
      • LangChain,Graph
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    스파르타코딩클럽
    SQL
    스파르타코딩크럽
    머신러닝
    내일배움캠프
    인공지능을위한파이썬
    Python
    vscode
    pandas
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
100.nam
[Python Pandas, Numpy에 대해 1편]
상단으로

티스토리툴바