본문 바로가기
Python for Beginners

9.2 판다스(Pandas)

by Andrew's Akashic Records 2023. 3. 27.
728x90

판다스(Pandas)는 데이터 분석을 위해 사용되는 파이썬 라이브러리로, 효율적인 데이터 구조와 데이터 조작 도구를 제공합니다. 판다스의 주요 자료구조는 Series, DataFrame, Index입니다. 이 자료구조들은 다양한 데이터 유형을 효율적으로 저장하고 조작할 수 있도록 설계되었습니다.

1. Series

Series는 일련의 데이터를 1차원 배열 형태로 저장하는 자료구조입니다. 각 데이터 항목은 유니크한 인덱스로 표시됩니다. 기본적으로 인덱스는 0부터 시작하는 정수이지만, 문자열이나 날짜 등 다른 타입으로도 설정할 수 있습니다.

  • 특징:
    • 동질의 데이터 타입을 저장합니다.
    • 데이터에 대한 빠른 접근을 제공합니다.
    • Numpy 배열과 비슷하지만 인덱스를 가진다는 점에서 차이가 있습니다.

2. DataFrame

DataFrame은 행과 열로 이루어진 2차원 데이터 구조로, 각 열은 서로 다른 데이터 타입(숫자, 문자열, 불리언 등)을 가질 수 있습니다. 이는 Excel 스프레드시트나 SQL 데이터베이스의 테이블과 유사합니다.

  • 특징:
    • 다양한 데이터 타입의 열을 갖는다.
    • 수정 가능한 크기를 가지며, 열을 삽입하고 삭제할 수 있습니다.
    • 각 축에 Index를 사용하여 데이터를 빠르게 찾고 조작할 수 있습니다.
    • 데이터의 정렬, 필터링, 그룹화, 집계 등의 복잡한 데이터 조작이 가능합니다.

3. Index

IndexSeriesDataFrame에서 데이터 항목의 위치를 나타내는 불변의 배열입니다. 데이터 구조 내에서 데이터를 빠르게 찾고 정렬하는 데 사용됩니다.

  • 특징:
    • Index는 불변이므로, 한 번 생성된 후에는 변경할 수 없습니다.
    • 중복 인덱스를 허용합니다. 즉, 같은 값이 여러 개 있을 수 있습니다.
    • 다양한 형태의 인덱스가 있습니다(예: DatetimeIndex, PeriodIndex, MultiIndex 등).

예시 코드

import pandas as pd

# Series 예시
data = [1, 2, 3, 4, 5]
series = pd.Series(data, index=['a', 'b', 'c', 'd', 'e'])
print("Series:\n", series)

# DataFrame 예시
data = {'Name': ['John', 'Anna', 'James', 'Linda'],
        'Age': [28, 22, 35, 32],
        'Gender': ['Male', 'Female', 'Male', 'Female']}
df = pd.DataFrame(data)
print("\nDataFrame:\n", df)

# Index 예시
index = pd.Index([1, 2, 3, 4, 5])
print("\nIndex:", index)

 

판다스 설치

pip install pandas

 

판다스 라이브러리 불러오기

import pandas as pd

 

데이터 생성 및 불러오기
판다스에서 직접 데이터를 생성할 수 있으며, 외부 파일을 읽어올 수도 있습니다. 가장 일반적인 파일 형식은 CSV와 엑셀 파일입니다.

# 직접 데이터 생성
data = {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}
df = pd.DataFrame(data)
print(df)

# CSV 파일 읽기
df_from_csv = pd.read_csv('file.csv')

# 엑셀 파일 읽기
df_from_excel = pd.read_excel('file.xlsx')

 

데이터 조회
판다스의 DataFrame에서 데이터를 조회하는 방법은 다양합니다. 여기서는 몇 가지 기본적인 조회 방법을 소개합니다.

# 처음 5개 행 조회
print(df.head())

# 마지막 3개 행 조회
print(df.tail(3))

# 특정 열 조회
print(df['A'])

# 여러 열 조회
print(df[['A', 'B']])

# 인덱스를 사용한 행 조회
print(df.loc[0])

# 조건에 따른 행 조회
print(df[df['A'] > 1])

 

데이터 전처리
판다스를 사용하면 데이터 전처리 작업을 손쉽게 수행할 수 있습니다.

# 결측치 제거
df.dropna()

# 결측치 대체
df.fillna(value=0)

# 데이터 형변환
df['A'] = df['A'].astype(float)

# 열 이름 변경
df.rename(columns={'A': 'Column_A', 'B': 'Column_B'}, inplace=True)

 

데이터 정렬
DataFrame에서 데이터를 정렬할 수 있습니다.

# 오름차순 정렬
df.sort_values(by='Column_A', ascending=True)

# 내림차순 정렬
df.sort_values(by='Column_A', ascending=False)

 

데이터 통계
DataFrame에서 다양한 통계 정보를 확인할 수 있습니다.

# 기술통계 정보 조회
df.describe()

# 합계
df.sum()

# 평균
df.mean()

# 중앙값
df.median()

# 최솟값
df.min()

# 최댓값
df.max()

# 누적합
df.cumsum()

 

데이터 집계
판다스에서는 groupby를 사용하여 데이터를 그룹화한 뒤, 집계 함수를 적용하여 원하는 결과를 얻을 수 있습니다.

# 데이터 생성
data = {
    'A': ['foo', 'foo', 'foo', 'bar', 'bar', 'baz'],
    'B': ['one', 'two', 'three', 'one', 'two', 'one'],
    'C': [2.5, 3.5, 4.5, 1.5, 2.5, 3.5],
    'D': [10, 20, 30, 40, 50, 60]
}
df = pd.DataFrame(data)

# 그룹화
grouped = df.groupby('A')

# 그룹별 합계
print(grouped.sum())

# 그룹별 평균
print(grouped.mean())

# 그룹별 최솟값
print(grouped.min())

# 다중 열 그룹화
grouped_multiple = df.groupby(['A', 'B'])

# 다중 열 그룹별 합계
print(grouped_multiple.sum())

 

피벗 테이블
판다스의 pivot_table을 사용하면 데이터를 피벗하여 원하는 형태의 테이블을 생성할 수 있습니다.

# 피벗 테이블 생성
pivot_table = pd.pivot_table(df, values='D', index=['A'], columns=['B'], aggfunc=np.sum)
print(pivot_table)

 

데이터 병합
판다스에서는 merge, concat 등의 함수를 사용하여 여러 데이터를 하나로 병합할 수 있습니다.

# 데이터 생성
data1 = {
    'key': ['A', 'B', 'C', 'D'],
    'value': [1, 2, 3, 4]
}

data2 = {
    'key': ['B', 'D', 'E', 'F'],
    'value': [5, 6, 7, 8]
}

df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)

# 데이터 병합 (Inner Join)
merged_inner = pd.merge(df1, df2, on='key', how='inner')
print(merged_inner)

# 데이터 병합 (Outer Join)
merged_outer = pd.merge(df1, df2, on='key', how='outer')
print(merged_outer)

# 데이터 연결
concatenated = pd.concat([df1, df2], axis=0, ignore_index=True)
print(concatenated)

 

데이터 출력
판다스에서 처리한 데이터를 다양한 형식의 파일로 저장할 수 있습니다.

# CSV 파일로 저장
df.to_csv('output.csv', index=False)

# 엑셀 파일로 저장
df.to_excel('output.xlsx', index=False)

판다스는 데이터 처리와 분석에 필요한 많은 기능을 제공합니다. 이 외에도 판다스는 고급 기능과 함수를 제공하므로, 공식 문서 및 자습서를 참조하여 필요한 기능을 찾아 사용할 수 있습니다.

728x90

'Python for Beginners' 카테고리의 다른 글

10.1 SQL 데이터베이스  (0) 2023.03.31
9.3 데이터 시각화(Matplotlib, Seaborn 등)  (0) 2023.03.27
9.1 넘파이(Numpy)  (0) 2023.03.27
8.3 웹 프레임워크  (1) 2023.03.24
8.2 웹 개발 API 사용법  (0) 2023.03.24