판다스 (Pandas) (데이터 선택 및 필터링)
2024. 8. 2. 22:04ㆍ프로그래밍 (확장)/Python-Pandas
1. 인덱싱과 슬라이싱
데이터 선택하기
import pandas as pd
# DataFrame 생성
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Edward'],
'Age': [25, 30, 35, 40, 45],
'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix']}
df = pd.DataFrame(data)
# 단일 열 선택
print(df['Name'])
# 여러 열 선택
print(df[['Name', 'City']])
# 열 추가
df['Salary'] = [50000, 60000, 70000, 80000, 90000]
print(df)
0 Alice
1 Bob
2 Charlie
3 David
4 Edward
Name: Name, dtype: object
Name City
0 Alice New York
1 Bob Los Angeles
2 Charlie Chicago
3 David Houston
4 Edward Phoenix
Name Age City Salary
0 Alice 25 New York 50000
1 Bob 30 Los Angeles 60000
2 Charlie 35 Chicago 70000
3 David 40 Houston 80000
4 Edward 45 Phoenix 90000
행 선택하기
# 단일 행 선택 (iloc 사용)
print(df.iloc[0])
# 여러 행 선택 (iloc 사용)
print(df.iloc[0:2])
# 조건을 사용하여 행 선택
print(df[df['Age'] > 30])
Name Alice
Age 25
City New York
Salary 50000
Name: 0, dtype: object
Name Age City Salary
0 Alice 25 New York 50000
1 Bob 30 Los Angeles 60000
Name Age City Salary
2 Charlie 35 Chicago 70000
3 David 40 Houston 80000
4 Edward 45 Phoenix 90000
행과 열 동시 선택하기
# 단일 요소 선택
print(df.at[0, 'Name'])
# 행과 열 슬라이싱 (loc 사용)
print(df.loc[0:1, ['Name', 'City']])
Alice
Name City
0 Alice New York
1 Bob Los Angeles
2. 조건을 통한 데이터 필터링
단일 조건을 사용한 필터링
import pandas as pd
# DataFrame 생성
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Edward'],
'Age': [25, 30, 35, 40, 45],
'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix']}
df = pd.DataFrame(data)
# 나이가 30 이상인 행 선택
filtered_df = df[df['Age'] >= 30]
print(filtered_df)
Name Age City Salary
1 Bob 30 Los Angeles 60000
2 Charlie 35 Chicago 70000
3 David 40 Houston 80000
4 Edward 45 Phoenix 90000
여러 조건을 사용한 필터링
# 나이가 25 이상이고 도시에 'New'가 포함된 행 선택
filtered_df = df[(df['Age'] >= 25) & (df['City'].str.contains('New'))]
print(filtered_df)
Name Age City Salary
0 Alice 25 New York 50000
isin() 메서드를 사용한 필터링
# 'City' 열에서 'New York' 또는 'Chicago'인 행 선택
filtered_df = df[df['City'].isin(['New York', 'Chicago'])]
print(filtered_df)
Name Age City Salary
0 Alice 25 New York 50000
2 Charlie 35 Chicago 70000
str.contains()를 사용한 필터링
# 'City' 열에서 'o'가 포함된 행 선택
filtered_df = df[df['City'].str.contains('o')]
print(filtered_df)
Name Age City Salary
0 Alice 25 New York 50000
1 Bob 30 Los Angeles 60000
2 Charlie 35 Chicago 70000
3 David 40 Houston 80000
4 Edward 45 Phoenix 90000
between() 메서드를 사용한 필터링
# 나이가 30과 40 사이인 행 선택
filtered_df = df[df['Age'].between(30, 40)]
print(filtered_df)
Name Age City Salary
1 Bob 30 Los Angeles 60000
2 Charlie 35 Chicago 70000
3 David 40 Houston 80000
3. 데이터 정제
결측치 처리
결측치 확인하기
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
결측치 채우기
# 결측치를 특정 값으로 채우기
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
결측치 제거
# 결측치가 있는 행 제거
df_dropped = df.dropna()
print(df_dropped)
Name Age City
0 Alice 25.0 New York
중복 데이터 처리
중복 데이터 확인
import pandas as pd
# 중복 데이터가 있는 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
중복 데이터 제거
# 중복 데이터 제거
df_deduplicated = df.drop_duplicates()
print(df_deduplicated)
Name Age City
0 Alice 25 New York
1 Bob 30 Los Angeles
4. 데이터 변형
데이터 정렬
단일 열을 기준으로 정렬
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Alice'],
'Age': [25, 30, 25],
'City': ['New York', 'Los Angeles', 'New York']}
df = pd.DataFrame(data)
# 'Age' 열을 기준으로 오름차순 정렬
sorted_df = df.sort_values(by='Age')
print(sorted_df)
0 Alice 25 New York
2 Alice 25 New York
1 Bob 30 Los Angeles
여러 열을 기준으로 정렬
# '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을 사용한 데이터 병합
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를 사용한 데이터 병합
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
출처: 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) (Pivot) (0) | 2024.08.03 |
---|---|
판다스 (Pandas) (데이터 정제) (0) | 2024.08.03 |
판다스 (Pandas) (데이터 입출력) (0) | 2024.08.02 |
판다스 (Pandas) (소개 및 기본 내용) (0) | 2024.08.02 |
Pandas 기본 기능 (0) | 2024.07.29 |