SMALL
필수로 알아야 할 기능 요약
- 데이터 로드 및 저장
- read_csv(), to_csv(), read_excel(), to_excel() 등.
- 데이터 선택
- loc[], iloc[], 조건에 따른 필터링.
- 데이터 정렬
- sort_values(), sort_index().
- 데이터 병합 및 연결
- merge(), concat().
- 그룹화 및 집계
- groupby(), agg().
- 결측치 처리
- fillna(), dropna().
- 피벗 테이블
- pivot_table().
1. 데이터 정렬 (Sorting)
더보기
(1) 정렬: 행 또는 열 기준
- sort_values()를 사용해 데이터를 특정 열의 값에 따라 정렬할 수 있어.
import pandas as pd
# 예제 데이터
data = {"Name": ["Alice", "Bob", "Charlie"],
"Age": [25, 30, 35],
"Score": [85, 95, 90]}
df = pd.DataFrame(data)
# 'Age'를 기준으로 오름차순 정렬
df_sorted = df.sort_values(by="Age", ascending=True)
print(df_sorted)
# 여러 열 기준 정렬 ('Score' 내림차순 -> 'Age' 오름차순)
df_sorted = df.sort_values(by=["Score", "Age"], ascending=[False, True])
print(df_sorted)
(2) 인덱스 기준 정렬
- sort_index()는 행 또는 열의 인덱스를 기준으로 정렬할 때 사용.
df_sorted_index = df.sort_index(axis=0, ascending=False) # 행 인덱스 기준 정렬
print(df_sorted_index)
2. 데이터 병합 (Merging)
더보기
(1) 데이터 합치기
- 데이터 병합은 여러 테이블을 합칠 때 자주 사용.
- merge()는 SQL의 JOIN 연산과 비슷.
# 예제 데이터
df1 = pd.DataFrame({"ID": [1, 2, 3], "Name": ["Alice", "Bob", "Charlie"]})
df2 = pd.DataFrame({"ID": [1, 2, 4], "Score": [85, 95, 80]})
# ID를 기준으로 병합
df_merged = pd.merge(df1, df2, on="ID", how="inner") # inner join
print(df_merged)
# left join
df_left = pd.merge(df1, df2, on="ID", how="left")
print(df_left)
(2) 단순 데이터 연결
- concat()을 사용해 위아래로 데이터를 연결
df1 = pd.DataFrame({"A": [1, 2], "B": [3, 4]})
df2 = pd.DataFrame({"A": [5, 6], "B": [7, 8]})
df_concat = pd.concat([df1, df2], axis=0) # 행 기준으로 연결
print(df_concat)
3. 데이터 그룹화 및 집계 (Grouping & Aggregation)
더보기
groupby()는 데이터를 특정 기준으로 묶어서 집계하는 데 사용
(1) 그룹화 후 집계
# 예제 데이터
data = {"Category": ["A", "A", "B", "B"],
"Value": [10, 20, 30, 40]}
df = pd.DataFrame(data)
# Category별 합계
grouped = df.groupby("Category")["Value"].sum()
print(grouped)
# Category별 평균, 최대값 등 다양한 집계
grouped_stats = df.groupby("Category")["Value"].agg(["mean", "max", "sum"])
print(grouped_stats)
(2) 여러 열로 그룹화
- 그룹화 기준을 여러 열로 지정할 수 있음.
data = {"Category": ["A", "A", "B", "B"],
"SubCategory": ["X", "Y", "X", "Y"],
"Value": [10, 20, 30, 40]}
df = pd.DataFrame(data)
grouped = df.groupby(["Category", "SubCategory"])["Value"].sum()
print(grouped)
4. 피벗 테이블 (Pivot Table)
더보기
엑셀의 피벗 테이블과 비슷한 역할을 하며, 데이터 요약과 분석에 유용
# 예제 데이터
data = {"Category": ["A", "A", "B", "B"],
"SubCategory": ["X", "Y", "X", "Y"],
"Value": [10, 20, 30, 40]}
df = pd.DataFrame(data)
# 피벗 테이블 생성
pivot = pd.pivot_table(df, values="Value", index="Category", columns="SubCategory", aggfunc="sum")
print(pivot)
5. 결측치 처리 (Handling Missing Data)
더보기
- 결측치(Missing Value)는 데이터가 비어 있는 상태를 의미.
- 예를 들어, 설문조사에서 누군가 답변하지 않았거나, 데이터 수집 중 오류로 인해 정보가 누락되었다면 그 자리가 결측치가 된다.
결측치가 포함된 데이터 예시
이름 | 나이 | 키(cm) | 몸무게(kg) |
철수 | 25 | 175 | 68 |
영희 | 30 | 160 | NaN |
민수 | NaN | 170 | 70 |
여기서:
- NaN(Not a Number): 결측치를 나타내는 일반적인 값.
- 파이썬에서는 판다스와 넘파이에서 결측치를 NaN으로 표현함.
(1) 결측치 채우기
df = pd.DataFrame({"A": [1, None, 3], "B": [4, 5, None]})
# 1. 평균값/중앙값으로 채우기(수치형 데이터에서 유용)
df["Age"] = df["Age"].fillna(df["Age"].mean()) # 평균값으로 채우기
# 2. 이전/다음 값으로 채우기(보간법)(시간 시계열 데이터에서 사용)
df["Age"] = df["Age"].fillna(method="ffill") # 이전 값으로 채우기
df["Age"] = df["Age"].fillna(method="bfill") # 다음 값으로 채우기
# 3. 고정된 값으로 채우기(특정 값을 지정해서 채움)
df["Age"] = df["Age"].fillna(0) # 0으로 채우기
(2) 결측치 제거
# 결측치가 있는 행 제거
df_dropped = df.dropna()
print(df_dropped)
(3) 결측치 처리의 예제
import pandas as pd
# 데이터프레임 생성
data = {
"Name": ["철수", "영희", "민수"],
"Age": [25, None, 35],
"City": ["서울", None, "부산"]
}
df = pd.DataFrame(data)
print("원본 데이터:")
print(df)
# 결측치를 0으로 채우기
df_filled = df.fillna(0)
print("\n결측치를 0으로 채운 데이터:")
print(df_filled)
# 결측치를 '알 수 없음'으로 채우기
df_filled_text = df.fillna("알 수 없음")
print("\n결측치를 '알 수 없음'으로 채운 데이터:")
print(df_filled_text)
# 결측치 제거
df_dropped = df.dropna()
print("\n결측치를 제거한 데이터:")
print(df_dropped)
LIST
'Today I learned' 카테고리의 다른 글
2024.12.01 WIL 과제1 수정 또 수정 (2) | 2024.12.01 |
---|---|
2024.11.29 math함수 없이 문제 풀기 (1) | 2024.11.29 |
2024.11.28 TIL (판다스-데이터변형) (0) | 2024.11.28 |
2024.11.27 TIL (NumPy, arr, shape) (1) | 2024.11.27 |
2024.11.26 TIL (+프로그래머스,SQL 질문과 답) (2) | 2024.11.26 |