일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |
- 자바암호
- 파이썬
- jpa
- chatGPT's answer
- 데이터베이스
- 자바
- oracle
- 시스템
- Java
- 고전역학
- python
- write by GPT-4
- 역학
- NIO
- flet
- write by chatGPT
- JVM
- 인프라
- 소프트웨어공학
- spring integration
- 유닉스
- android
- kotlin
- 코틀린
- 자바네트워크
- 웹 크롤링
- GPT-4's answer
- 리눅스
- Database
- spring data jpa
- Today
- Total
Akashic Records
9.2 판다스(Pandas) 본문
판다스(Pandas)는 데이터 분석을 위해 사용되는 파이썬 라이브러리로, 효율적인 데이터 구조와 데이터 조작 도구를 제공합니다. 판다스의 주요 자료구조는 Series
, DataFrame
, Index
입니다. 이 자료구조들은 다양한 데이터 유형을 효율적으로 저장하고 조작할 수 있도록 설계되었습니다.
1. Series
Series
는 일련의 데이터를 1차원 배열 형태로 저장하는 자료구조입니다. 각 데이터 항목은 유니크한 인덱스로 표시됩니다. 기본적으로 인덱스는 0부터 시작하는 정수이지만, 문자열이나 날짜 등 다른 타입으로도 설정할 수 있습니다.
- 특징:
- 동질의 데이터 타입을 저장합니다.
- 데이터에 대한 빠른 접근을 제공합니다.
- Numpy 배열과 비슷하지만 인덱스를 가진다는 점에서 차이가 있습니다.
2. DataFrame
DataFrame
은 행과 열로 이루어진 2차원 데이터 구조로, 각 열은 서로 다른 데이터 타입(숫자, 문자열, 불리언 등)을 가질 수 있습니다. 이는 Excel 스프레드시트나 SQL 데이터베이스의 테이블과 유사합니다.
- 특징:
- 다양한 데이터 타입의 열을 갖는다.
- 수정 가능한 크기를 가지며, 열을 삽입하고 삭제할 수 있습니다.
- 각 축에
Index
를 사용하여 데이터를 빠르게 찾고 조작할 수 있습니다. - 데이터의 정렬, 필터링, 그룹화, 집계 등의 복잡한 데이터 조작이 가능합니다.
3. Index
Index
는 Series
와 DataFrame
에서 데이터 항목의 위치를 나타내는 불변의 배열입니다. 데이터 구조 내에서 데이터를 빠르게 찾고 정렬하는 데 사용됩니다.
- 특징:
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)
판다스는 데이터 처리와 분석에 필요한 많은 기능을 제공합니다. 이 외에도 판다스는 고급 기능과 함수를 제공하므로, 공식 문서 및 자습서를 참조하여 필요한 기능을 찾아 사용할 수 있습니다.
'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 |