일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 리눅스
- Python
- oracle
- 티스토리챌린지
- 자바
- analytics4
- github
- SQL
- 차이점
- mssql
- IntelliJ
- group by
- 호이스팅
- MongoDB
- Javascript
- spring
- MariaDB
- java
- docker
- JPA
- 트랜잭션
- 오블완
- DBMS
- PostgreSQL
- 추상클래스
- Linux
- mysql
- git
- 명령어
- rsync
- Today
- Total
hanker
Python - Pandas를 활용한 데이터 분석 (설치 및 사용법) 본문
이전 글에서 NumPy를 활용한 배열 연산에 대해서 알아봤는데,
이번 글에서는 데이터 분석에 필수적인 Pandas 라이브러리에 대해서 알아보자.
1. Pandas
Pandas(Python Data Analysis Library)는 데이터 분석과 조작을 위한 라이브러리이다.
테이블 형식을 다룰 때 가장 많이 사용되고, 머신러닝과 데이터 분석에서 사용된다.
특징으로는
- NumPy 기반으로 만들어져 빠르고 효율적인 데이터 처리가 가능하다.
- 표 형태의 데이터(엑셀, csv, SQL 등)를 쉽게 불러와서 변환 및 분석이 가능하다.
- 데이터 필터링, 그룹화, 집계 기능을 제공한다.
- 시계열 데이터 분석에도 최적화되어 있다.
2. Pandas 설치
pip를 통해 간단하게 설치가 가능하다.
pip install pandas
3. Pandas의 주요 데이터 구조
Pandas의 핵심 데이터 구조는 Series와 DataFrame이고, 각각 1차원과 2차원 데이터를 다루는 데 사용된다.
3-1. Pandas Series
Series는 1차원 배열과 유사하지만, 각 원소에 인덱스를 부여할 수 있다.
import pandas as pd
# 리스트를 사용하여 Series 생성
s = pd.Series([10, 20, 30, 40], index=['a', 'b', 'c', 'd'])
print(s)
# 인덱스 없이 생성하면 0부터 시작하는 정수형 인덱스가 자동으로 부여됨
s2 = pd.Series([1.5, 2.5, 3.5])
print(s2)
# 개별 데이터 불러오기
print("s.get('c') : ", s.get('c'))
print("s2.get(1) : ", s2.get(1))
- 인덱스를 통해 개별 데이터에 접근할 수 있다.
- 데이터와 인덱스의 길이는 동일
- NumPy 배열을 기반으로 하며, 다양한 데이터 타입을 저장 가능
3-2. Pandas DataFrame
DataFrame은 2차원 표 형태의 데이터 구조로, 행과 열의 라벨을 가지며 여러 종류의 데이터를 함께 다룰 수 있다.
import pandas as pd
# 딕셔너리를 사용하여 DataFrame 생성
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['Seoul', 'Busan', 'Incheon']
}
df = pd.DataFrame(data)
print(df)
# 개별 데이터 불러오기
print("df['Name'].get(2) : ", df['Name'].get(2))
- 행(row)과 열(column) 모두에 인덱스를 사용할 수 있다.
- 서로 다른 데이터 타입(숫자, 문자열, 날짜 등)을 같은 DataFrame에 저장 가능
- SQL 테이블, Excel과 유사한 구조
4. 데이터 불러오기 및 저장
Pandas를 사용하면 CSV, Excel, JSON, SQL 등 다양한 데이터 형식을 쉽게 불러올 수 있다.
4-1. 파일 불러오기
import pandas as pd
# Excel 데이터 불러오기
# pip install openpyxl 설치해야 함
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')
print(df)
df = pd.read_csv('data2.csv') # CSV 파일 로드
print(df) # 상위 5개 데이터 출력
4-2. 데이터 저장
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'Hanker'],
'Age': [25, 30, 35, 20],
'City': ['Seoul', 'Busan', 'Incheon', 'LA']
}
df = pd.DataFrame(data)
df.to_csv('data_output.csv', index=False) # CSV 파일로 저장
df.to_excel('data_output.xlsx', index=False) # Excel 파일로 저장
5. 데이터프레임 기본 연산
DataFrame은 데이터 분석에 매우 유용하다.
기본 연산을 통해 데이터를 쉽게 조회, 수정, 집계할 수 있다.
5-1. 열 선택 (다중 열 선택)
하나의 열을 선택하면 Series가 반환되고, 리스트를 사용하여 여러 열을 선택할 수 있다.
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['Seoul', 'Busan', 'Incheon']}
df = pd.DataFrame(data)
# 'Age' 열 선택 (Series 반환)
age_series = df['Age']
print(age_series)
# 다중 열 선택
subset = df[['Name', 'City']]
print(subset)
5-2. 행 선택 (인덱스 기준)
loc(라벨 기반)와 iloc(정수 기반)을 사용하여 행을 선택한다.
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['Seoul', 'Busan', 'Incheon']}
df = pd.DataFrame(data)
# 인덱스 라벨 1인 행 선택
row = df.loc[1]
print(row)
# 인덱스 위치 0, 1번 행 선택
rows = df.iloc[0:2]
print(rows)
5-3. 열 단위 연산
DataFrame의 수치형 열에 대해 사칙연산이나 집계 함수를 사용할 수 있다.
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['Seoul', 'Busan', 'Incheon']}
df = pd.DataFrame(data)
# 'Age' 열에 5를 더하기
df['Age_plus_5'] = df['Age'] + 5
print(df)
5-4. 요약 통계
DataFrame의 수치형 데이터에 대해 mean, sum, min, max 등의 집계 함수를 사용할 수 있다.
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['Seoul', 'Busan', 'Incheon']}
df = pd.DataFrame(data)
mean_age = df['Age'].mean()
total_age = df['Age'].sum()
print("평균 나이:", mean_age)
print("나이 합계:", total_age)
5-5. 열 간 연산
두 수치형 열이 있을 경우 두 열 간의 연산도 가능하다.
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['Seoul', 'Busan', 'Incheon']}
df = pd.DataFrame(data)
df['Age_plus_5'] = df['Age'] + 5
diff = df['Age_plus_5'] - df['Age']
print(diff)
5-6. 데이터 필터링 및 조건에 따른 연산
조건에 맞는 행을 선택하거나 조건에 따라 특정 열의 값을 변경할 수 있다.
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['Seoul', 'Busan', 'Incheon']}
df = pd.DataFrame(data)
# 나이가 30 이상인 행 선택
filtered_df = df[df['Age'] >= 30]
print(filtered_df)
# 나이가 30 이상이면 'Senior'로, 그렇지 않으면 'Junior'로 표시하는 새로운 열 추가
df['Group'] = ['Senior' if age >= 30 else 'Junior' for age in df['Age']]
print(df)
5-7. DataFrame의 행과 열 추가 및 삭제
DataFrame의 새로운 열, 행을 추가하고 삭제할 수 있다.
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['Seoul', 'Busan', 'Incheon']}
df = pd.DataFrame(data)
# 열 추가
print("############## 열 추가")
df['New_Column'] = [100, 200, 300]
print(df)
# 행 추가
print("############## 행 추가")
new_row = {'Name': 'David', 'Age': 28, 'City': 'Daegu', 'New_Column': 150}
df = pd.concat([df, pd.DataFrame([new_row])], ignore_index=True)
print(df)
# 'New_Column' 열 삭제
print("############## 열 삭제")
df = df.drop('New_Column', axis=1)
# 인덱스 0인 행 삭제
df = df.drop(0, axis=0)
print(df)
- Pandas 2.0 부터 append 메서드가 삭제되어 현재는 concat을 사용
- 사용시 (AttributeError: 'DataFrame' object has no attribute 'append' 에러 방생)
5-8. 데이터 그룹화
데이터를 특정 기준으로 묶어 그룹별로 집계 작업을 수행할 수 있다.
import pandas as pd
data = {
'City': ['Seoul', 'Busan', 'Seoul', 'Incheon', 'Busan', 'Seoul'],
'Sales': [250, 150, 300, 200, 100, 400],
'Category': ['A', 'B', 'A', 'B', 'A', 'B']
}
df = pd.DataFrame(data)
# 1) 단일 기준 그룹화: City별 Sales의 합계와 평균
grouped_city = df.groupby('City')['Sales'].agg(['sum', 'mean'])
print("City별 Sales 집계:\n", grouped_city)
# 2) 다중 기준 그룹화: City와 Category별 Sales의 합계
grouped_multi = df.groupby(['City', 'Category'])['Sales'].sum()
print("\nCity와 Category별 Sales 합계:\n", grouped_multi)
# 3) 그룹화 후 필터링: Sales 합계가 500 이상인 그룹만 선택
grouped_total = df.groupby('City')['Sales'].sum()
filtered = grouped_total[grouped_total >= 500]
print("\nSales 합계가 500 이상인 City:\n", filtered)
정리
Pandas는 데이터 분석을 위한 강력한 도구이다.
Seires와 DataFrame은 각 1차원, 2차원 구조를 제공하고 CSV 및 Excel 등 다양한 데이터 형식을 지원한다.
데이터 연산 작업을 갈고 닦아 데이터 분석 능력을 길러보자.
끝.
'Python' 카테고리의 다른 글
Python - NumPy 연산 및 함수 활용 (0) | 2025.02.14 |
---|---|
Python - NumPy 배열(ndarray) 다루기 (0) | 2025.02.11 |
머신러닝 배우기(Python) - NumPy 설치 및 사용 방법 (1) (0) | 2025.02.09 |
Python - 함수를 생성하는 방법에 대해서 (1) | 2024.10.21 |
Python - 파이썬 스크립트 파일을 실행(exe)파일로 만들기! (2) | 2024.10.19 |