2024. 8. 3. 13:24ㆍ프로그래밍 (확장)/Python-Pandas
1. 결측치 처리
결측치 확인
예시 (ChatGPT 생성):
import pandas as pd
# 결측치가 있는 DataFrame 생성
data = {'Name': ['Alice', 'Bob', None],
'Age': [25, None, 35],
'City': ['New York', 'Los Angeles', None]}
df = pd.DataFrame(data)
# 결측치 확인
print(df.isnull())
print(df.isnull().sum())
Name Age City
0 False False False
1 False True False
2 True False True
Name 1
Age 1
City 1
dtype: int64
결측치 채우기
예시 (ChatGPT 생성):
- 지정하는 값으로 채우기
# 결측치를 특정 값으로 채우기
df_filled = df.fillna({'Name': 'Unknown', 'Age': 0, 'City': 'Unknown'})
print(df_filled)
Name Age City
0 Alice 25.0 New York
1 Bob 0.0 Los Angeles
2 Unknown 35.0 Unknown
data = {'Name': ['Alice', 'Bob', None],
'Age': [25, None, 35],
'City': ['New York', 'Los Angeles', None]}
에서 None인 위치가 Name은 Unknown으로 Age는 0으로 City는 Unknown으로 채워저 있는 것을 확인 할 수 있다.
- 평균이나 중간값으로 채우는 것도 가능.
# 'Age' 열의 결측치를 평균 값으로 채우기
df['Age'] = df['Age'].fillna(df['Age'].mean())
print(df)
Name Age City
0 Alice 25.0 New York
1 Bob 30.0 Los Angeles
2 None 35.0 None
결측치 제거
결측치가 있는 행이나 열을 제거
예시 (ChatGPT 생성):
# 결측치가 있는 행 제거
df_dropped = df.dropna()
print(df_dropped)
Name Age City
0 Alice 25.0 New York
1 Bob 30.0 Los Angeles
# 결측치가 있는 열 제거
df_dropped_columns = df.dropna(axis=1)
print(df_dropped_columns)
# 결측치가 특정 개수 이상인 행 제거
df_dropped_thresh = df.dropna(thresh=2)
print(df_dropped_thresh)
Age
0 25.0
1 30.0
2 35.0
Name Age City
0 Alice 25.0 New York
1 Bob 30.0 Los Angeles
2. 중복 데이터 처리
중복된 데이터는 분석 결과에 영향을 줄 수 있으므로, 중복 데이터를 확인하고 제거해야 함.
중복 데이터 확인
예시 (ChatGPT 생성):
# 중복 데이터가 있는 DataFrame 생성
data = {'Name': ['Alice', 'Bob', 'Alice'],
'Age': [25, 30, 25],
'City': ['New York', 'Los Angeles', 'New York']}
df = pd.DataFrame(data)
# 중복 데이터 확인
print(df.duplicated())
0 False
1 False
2 True
dtype: bool
중복 데이터 제거
예시 (ChatGPT 생성):
# 중복 데이터 제거
df_deduplicated = df.drop_duplicates()
print(df_deduplicated)
Name Age City
0 Alice 25 New York
1 Bob 30 Los Angeles
중복 기준 열 지정하여 제거
예시 (ChatGPT 생성):
# 'Name' 열을 기준으로 중복 데이터 제거
df_deduplicated = df.drop_duplicates(subset=['Name'])
print(df_deduplicated)
Name Age City
0 Alice 25 New York
1 Bob 30 Los Angeles
3. 데이터 변형
데이터 정렬
데이터를 특정 열을 기준으로 정렬할 수 있다.
단일 열을 기준으로 정렬
예시 (ChatGPT 생성):
# 'Age' 열을 기준으로 오름차순 정렬
sorted_df = df.sort_values(by='Age')
print(sorted_df)
Name Age City
0 Alice 25 New York
2 Alice 25 New York
1 Bob 30 Los Angeles
여러 열을 기준으로 정렬
예시 (ChatGPT 생성):
# 'Age'와 'Name' 열을 기준으로 정렬
sorted_df = df.sort_values(by=['Age', 'Name'])
print(sorted_df)
Name Age City
0 Alice 25 New York
2 Alice 25 New York
1 Bob 30 Los Angeles
데이터 프레임 병합
여러 데이터 프레임을 병합
concat을 사용한 데이터 병합 예시 (ChatGPT 생성):
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2'],
'B': ['B0', 'B1', 'B2']})
df2 = pd.DataFrame({'A': ['A3', 'A4', 'A5'],
'B': ['B3', 'B4', 'B5']})
# 행 단위로 병합
result = pd.concat([df1, df2], axis=0)
print(result)
A B
0 A0 B0
1 A1 B1
2 A2 B2
0 A3 B3
1 A4 B4
2 A5 B5
merge를 사용한 데이터 병합 예시 (ChatGPT 생성):
df1 = pd.DataFrame({'key': ['K0', 'K1', 'K2'],
'A': ['A0', 'A1', 'A2']})
df2 = pd.DataFrame({'key': ['K0', 'K1', 'K2'],
'B': ['B0', 'B1', 'B2']})
# 공통 열을 기준으로 병합
result = pd.merge(df1, df2, on='key')
print(result)
key A B
0 K0 A0 B0
1 K1 A1 B1
2 K2 A2 B2
join을 사용한 데이터 병합 예시 (ChatGPT 생성):
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2'],
'B': ['B0', 'B1', 'B2']},
index=['K0', 'K1', 'K2'])
df2 = pd.DataFrame({'C': ['C0', 'C1', 'C2'],
'D': ['D0', 'D1', 'D2']},
index=['K0', 'K2', 'K3'])
# 인덱스를 기준으로 병합
result = df1.join(df2)
print(result)
A B C D
K0 A0 B0 C0 D0
K1 A1 B1 NaN NaN
K2 A2 B2 C1 D1
데이터 변형
데이터를 피벗하거나 멜트하여 변형
pivot(https://gangdonggil.tistory.com/52)을 사용한 데이터 변형 예시 (ChatGPT 생성):
data = {'Date': ['2020-01-01', '2020-01-02', '2020-01-03'],
'City': ['New York', 'Los Angeles', 'Chicago'],
'Temperature': [30, 22, 15]}
df = pd.DataFrame(data)
# 피벗 테이블 생성
pivot_df = df.pivot(index='Date', columns='City', values='Temperature')
print(pivot_df)
City Chicago Los Angeles New York
Date
2020-01-01 NaN NaN 30.0
2020-01-02 NaN 22.0 NaN
2020-01-03 15.0 NaN NaN
melt를 사용한 데이터 변형 예시 (ChatGPT 생성):
data = {'Date': ['2020-01-01', '2020-01-02', '2020-01-03'],
'New York': [30, 22, 15],
'Los Angeles': [25, 20, 18]}
df = pd.DataFrame(data)
# 멜트 테이블 생성
melt_df = pd.melt(df, id_vars=['Date'], var_name='City', value_name='Temperature')
print(melt_df)
Date City Temperature
0 2020-01-01 New York 30
1 2020-01-02 New York 22
2 2020-01-03 New York 15
3 2020-01-01 Los Angeles 25
4 2020-01-02 Los Angeles 20
5 2020-01-03 Los Angeles 18
출처:
https://pandas.pydata.org/docs/
pandas documentation — pandas 2.2.2 documentation
API reference The reference guide contains a detailed description of the pandas API. The reference describes how the methods work and which parameters can be used. It assumes that you have an understanding of the key concepts.
pandas.pydata.org
'프로그래밍 (확장) > Python-Pandas' 카테고리의 다른 글
판다스 (Pandas) (GroupBy) (0) | 2024.08.03 |
---|---|
판다스 (Pandas) (Pivot) (0) | 2024.08.03 |
판다스 (Pandas) (데이터 선택 및 필터링) (0) | 2024.08.02 |
판다스 (Pandas) (데이터 입출력) (0) | 2024.08.02 |
판다스 (Pandas) (소개 및 기본 내용) (0) | 2024.08.02 |