1. 데이터 구조
- Series - 1차원 배열
- DataFrame - 행과 열로 구성된 2차원 데이터 구조 (표 형태)
더보기
Series
- 1차원 배열
- 엑셀의 한 열(column) 과 유사
- 인덱스와(index) 와 데이터 값(Value) 이 쌍으로 구성
import pandas as pd
# Series 생성
s = pd.Series([10, 20, 30], index=['a', 'b', 'c'])
print(s)
# 인덱스로 접근
print(s['a']) # 출력: 10
DataFrame
- 2차원의 표 형태 데이터 구조
- 엑셀의 전체 시트(sheet) 와 유사
- 각 열(column)은 Series
# DataFrame 생성
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data)
print(df)
# 특정 열 선택
print(df['Name'])
# 행 선택 (iloc: 위치 기반, loc: 라벨 기반)
print(df.iloc[1]) # 두 번째 행
print(df.loc[0]) # 첫 번째 행
2. 데이터 로드 및 저장
- CSV 파일
- Excel 파일
- JSON 파일
등 다양한 형식의 데이터 로드 및 저장 가능
더보기
(1) CSV 파일
# CSV 파일 읽기
df = pd.read_csv('data.csv')
# CSV 파일 저장
df.to_csv('output.csv', index=False)
(2) Excel 파일
# Excel 파일 읽기
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')
# Excel 파일 저장
df.to_excel('output.xlsx', index=False)
(3) JSON 파일
# JSON 파일 읽기
df = pd.read_json('data.json')
# JSON 파일 저장
df.to_json('data.json')
3. 데이터확인
- df.shape : 데이터 크기 확인 (행, 열)
- df.head() : 데이터 상위 n 개 확인 (기본값 5)
- df.tail() : 데이터 하위 n 개 확인 (기본값 5)
- df.info() : 데이터 요약 정보 (열, 데이터 타입, 결측값 등)
- df.describe() : 통계 요약 정보
- df.columns : 열 이름 확인
- df.index : 인덱스 확인
4. 데이터 선택 및 변형
더보기
(1) 열 선택
# 특정 열 선택
print(df['column_name'])
# 여러 열 선택
print(df['col1', 'col2'])
(2) 행 선택
# 특정 인덱스 행 선택 ( iloc : 위치, loc : 레이블 )
print(df.iloc[0]) # 첫번째 행
print(df.loc[0]) # 인덱스 레이블이 0인 행
# 특정 조건으로 필터링
filtered_df = df[df['column_name'] > 10]
print(filtered_df)
(3) 데이터 정렬
# 특정 열 기준으로 정렬
df = df.sort_values(by='column_name')
# 내림차순 정렬
df = df.sort_values(by='column_name', ascending=False)
(4) 데이터 추가
# 새로운 열 추가
df['new_column'] = df['existing_column'] * 2
# 행 추가
new_row = {'col1' : 1, 'col2' : 10}
df = df.append(new_row, ignore_index=True)
(5) 데이터 삭제
# 열 삭제
df = df.drop('column_name', axis=1)
# 행 삭제
df = df.drop(0) # 첫번째 행 삭제
5. 데이터 처리
더보기
(1) 결측값 처리
# 결측값 확인
print(df.isnull().sum())
# 결측값 채우기
df['column_name'] = df['column_name'].fillna(0) # 0으로 채우기
# 결측값 삭제
df = df.dropna() # 결측값이 포함된 행 삭제
(2) 중복값 처리
# 중복값 확인
print(df.duplicated())
# 중복값 제거
df = df.drop_duplicates()
(3) 데이터 변환
# 데이터 타입 변환
df['column_name'] = df['column_name'].astype(float)
# 문자열 변환
df['column_name'] = df['column_name'].str.upper() # 대문자로 변환
6. 그룹화와 집계
더보기
# 그룹화 후 합계 계산
grouped = df.groupby('category_column')['value_column'].sum()
print(grouped)
# 그룹화 후 여러 통계 계산
grouped = df.groupby('category_column').agg({
'value_column': ['mean', 'sum', 'count']
})
print(grouped)
7. 데이터 병합과 결합
더보기
데이터 병합
df1 = pd.DataFrame({'id' : [1, 2], 'value1' : [10, 20]})
df2 = pd.DataFrame({'id' : [1, 2], 'value2' : [30, 40]})
merged = pd.merge(df1, df2, on='id')
print(merged)
데이터 결합
# 행 추가
concatenated = pd.concat([df1, df2], axis=0)
# 열 추가
concatenated = pd.concat([df1, df2], axis=1)
8. 시계열 데이터 처리
더보기
# Datetime 변환
df['date'] = pd.to_datetime(df['date'])
# 특정 기간 필터링
filtered = df[(df['date'] > '2023-01-01') & (df['date'] <= '2023-12-31')]
# 날짜를 인덱스로 설정
df.set_index('date', inplace=True)
9. 유용한 기타 함수들
# 고유값 확인
print(df['column_name'].unique())
# 값 개수 세기
print(df['column_name'].value_counts())
# 열 이름 변경
df.rename(columns={'old_name': 'new_name'}, inplace=True)
# 인덱스 리셋
df.reset_index(drop=True, inplace=True)
'Python > Pandas' 카테고리의 다른 글
[Pandas] 데이터 접근 (at, loc) (0) | 2024.12.16 |
---|---|
[Pandas] 데이터 미리보기 및 기본정보 확인 (1) | 2024.12.15 |
[Pandas] inplace 옵션 (0) | 2024.12.15 |
[Pandas] 시리즈, 데이터프레임 ( Series, DataFrame ) (0) | 2024.12.15 |
[Pandas] Pandas란? (3) | 2024.12.07 |