13장: 데이터 분석
데이터 분석은 데이터를 수집, 정리, 해석하여 의미 있는 정보를 도출하는 과정입니다. 파이썬에서는 데이터 분석을 위한 강력한 라이브러리를 제공하며, 이 장에서는 `pandas`와 `numpy`를 사용하여 데이터를 분석하는 방법에 대해 알아보겠습니다.
#### 13.1 `pandas` 라이브러리
`pandas`는 데이터 조작 및 분석을 위한 고성능, 사용이 간편한 데이터 구조와 데이터 분석 도구를 제공합니다. 먼저 `pandas` 라이브러리를 설치해야 합니다.
```sh
pip install pandas
```
#### 13.2 데이터프레임 생성
데이터프레임(DataFrame)은 `pandas`의 주요 데이터 구조로, 테이블 형식의 데이터를 저장합니다.
```python
import pandas as pd
# 데이터프레임 생성
data = {
'name': ['Alice', 'Bob', 'Charlie', 'David'],
'age': [25, 30, 35, 40],
'city': ['New York', 'Los Angeles', 'Chicago', 'Houston']
}
df = pd.DataFrame(data)
print(df)
```
#### 13.3 데이터프레임 읽기 및 쓰기
데이터를 파일에서 읽고 파일로 저장할 수 있습니다. `pandas`는 다양한 파일 형식을 지원합니다.
```python
# CSV 파일 읽기
df = pd.read_csv('data.csv')
print(df)
# CSV 파일 쓰기
df.to_csv('output.csv', index=False)
```
#### 13.4 데이터 탐색
데이터프레임의 기본적인 정보를 확인할 수 있습니다.
```python
# 데이터프레임의 크기 확인
print(df.shape)
# 데이터프레임의 요약 정보 확인
print(df.info())
# 데이터프레임의 기본 통계량 확인
print(df.describe())
```
#### 13.5 데이터 선택 및 필터링
데이터프레임에서 특정 열과 행을 선택하고 필터링할 수 있습니다.
```python
# 특정 열 선택
print(df['name'])
# 조건을 사용한 필터링
adults = df[df['age'] > 30]
print(adults)
# 특정 행 선택 (인덱스로)
print(df.iloc[1]) # 두 번째 행
```
#### 13.6 데이터 추가 및 삭제
데이터프레임에 열과 행을 추가하고 삭제할 수 있습니다.
```python
# 열 추가
df['salary'] = [50000, 60000, 70000, 80000]
print(df)
# 행 추가
new_row = {'name': 'Eve', 'age': 28, 'city': 'San Francisco', 'salary': 90000}
df = df.append(new_row, ignore_index=True)
print(df)
# 열 삭제
df = df.drop(columns=['salary'])
print(df)
# 행 삭제
df = df.drop(index=[4])
print(df)
```
#### 13.7 데이터 정렬
데이터프레임을 특정 열을 기준으로 정렬할 수 있습니다.
```python
# 나이 기준으로 오름차순 정렬
df = df.sort_values(by='age')
print(df)
# 이름 기준으로 내림차순 정렬
df = df.sort_values(by='name', ascending=False)
print(df)
```
#### 13.8 데이터 그룹화
`groupby` 메서드를 사용하여 데이터를 그룹화하고 집계할 수 있습니다.
```python
# 도시에 따른 평균 나이 계산
grouped = df.groupby('city')['age'].mean()
print(grouped)
```
#### 13.9 결측값 처리
결측값(NaN)을 처리하는 방법을 알아봅니다.
```python
# 결측값 확인
print(df.isnull().sum())
# 결측값 대체
df['age'] = df['age'].fillna(df['age'].mean())
print(df)
# 결측값 제거
df = df.dropna()
print(df)
```
#### 13.10 데이터 시각화
`pandas`는 `matplotlib`와 통합되어 데이터 시각화를 쉽게 할 수 있습니다.
```python
import matplotlib.pyplot as plt
# 나이 분포 히스토그램 그리기
df['age'].hist()
plt.xlabel('나이')
plt.ylabel('빈도수')
plt.title('나이 분포')
plt.show()
```
#### 13.11 `numpy` 라이브러리
`numpy`는 대규모 다차원 배열과 행렬을 쉽게 처리할 수 있도록 지원하는 라이브러리입니다. 먼저 `numpy` 라이브러리를 설치해야 합니다.
```sh
pip install numpy
```
`numpy` 배열을 생성하고 조작하는 기본 예제입니다.
```python
import numpy as np
# 배열 생성
arr = np.array([1, 2, 3, 4, 5])
print(arr)
# 배열의 크기 확인
print(arr.shape)
# 배열의 요소 접근
print(arr[0])
# 배열의 요소 변경
arr[0] = 10
print(arr)
```
#### 13.12 배열 연산
`numpy`는 배열 간의 다양한 연산을 지원합니다.
```python
# 배열 덧셈
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
result = arr1 + arr2
print(result)
# 배열 곱셈
result = arr1 * arr2
print(result)
# 배열의 모든 요소에 대한 연산
result = arr1 * 2
print(result)
```
이상으로, 파이썬에서 데이터 분석을 수행하는 방법에 대해 알아보았습니다. 다음 장에서는 머신러닝에 대해 더 자세히 알아보겠습니다. 질문이나 요청사항이 있으시면 댓글로 남겨주세요!
---
이 글의 내용은 GoalKicker.com의 Python Notes for Professionals 책을 참조하였습니다.
댓글
댓글 쓰기