4. 데이터 확인하기
- 데이터 확인
data.head() # head()은 기본 5개 행에 대한 데이터를 보여줌
data.head(3) # ()안에 숫자만큼 데이터를 보여줌
data.info() # 데이터 정보 파악(인덱스, 컬럼명, 컬럼의 데이터 개수, 데이터 타입), null 값을 확인
data.describe() # 데이터의 기초통계량을 확인(숫자값에 대해서만 확인이 가능)
- 결측치, 중복, 이상치 확인
df.isnull().sum() # 결측치 확인, 결측치 갯수 확인도 가능
df.dropna() # 결측치 제거
df.duplicated(subset=['컬럼1', '컬럼2', '컬럼3']) # 중복 데이터 확인
df.drop_duplicates(subset=['컬럼1', '컬럼2', '컬럼3']) # 중복 데이터 제거
# IQR 계산
Q1 = df['컬럼1'].quantile(0.25)
Q3 = df['컬럼1'].quantile(0.75)
IQR = Q3 - Q1
# 이상치 기준 설정
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR
# 이상치 제거
df[(df['컬럼1'] >= lower_bound) & (df['컬럼1'] <= upper_bound)]
- 데이터 타입 변경
데이터 타입(Data Type) | 설명 | 예시 |
int64, int 32 | 정수형 데이터(64비트 또는 32비트) | 1, 42, -10, 1000 |
float64, float32 | 부동 소수점 수(64비트 도는 32비트) | 3.14, -0.001, 2.718 |
object | 문자열 데이터(일반적으로 문자열) | 'Hello', 'Data Science' |
bool | 불리언(참/거짓) 데이터 | True, False |
datetime64 | 날짜와 시간 데이터 | '2023-12-31 08:00:00' |
timedalta64 | 시간 간격(두 날짜 또는 시간 사이의 차이) 데이터 | '3 days', '2 hours' |
category | 카테고리형 데이터(제한된 고유 값으로 구성) | 'Red', 'Blue', 'Green' |
# 예시 1) int → float
import pandas as pd
data = {'integer_column': [1, 2, 3, 4, 5]}
df = pd.DataFrame(data)
# 정수형 열을 부동소수점으로 변환
df['integer_column'] = df['integer_column'].astype(float)
print(df.dtypes)
------------------------------------------------------------------------------------------------
# 예시 2) int → str
import pandas as pd
data = {'numeric_column': [1, 2, 3, 4, 5]}
df = pd.DataFrame(data)
# 숫자열을 문자열로 변환
df['numeric_column'] = df['numeric_column'].astype(str)
print(df.dtypes)
5. 데이터 선택
- .lioc[로우, 컬럼]: 인덱스 번호로 선택하기
정수 기반의 인덱스를 사용한다.
data.iloc[0,2] # 행과 열 번호를 통해 특정 데이터를 선택할 수 있음
import pandas as pd
data = {
'A': [1, 2, 3, 4, 5],
'B': [10, 20, 30, 40, 50],
'C': [100, 200, 300, 400, 500]
}
df = pd.DataFrame(data)
selected_data = df.iloc[1:4, 0:2] # 인덱스 1부터 3까지의 행과 0부터 1까지의 열 선택
print(selected_data)
- .lod[로우, 컬럼]: 이름으로 선택하기
레이블 기반의 인덱스를 사용한다.
data.iloc[0,2] # 행과 열 번호를 통해 특정 데이터를 선택할 수 있음
import pandas as pd
data = {
'A': [1, 2, 3, 4, 5],
'B': [10, 20, 30, 40, 50],
'C': [100, 200, 300, 400, 500]
}
df = pd.DataFrame(data, index=['a', 'b', 'c', 'd', 'e'])
selected_data = df.loc['b':'d', 'A':'B'] # 레이블 'b'부터 'd'까지의 행과 'A'부터 'B'까지의 열 선택
print(selected_data)
- 1개의 컬럼 전체를 선택할 경우
# 여러개의 컬럼을 선택할 경우에도 리스트를 활용
# 컬럼을 내가 원하는 대로 선택해서 입력하면 그 순서대로 나옴
data.loc[: , '컬럼명'] # 또는 데이터프레임['컬럼명'] 으로도 동일한 값을 선택할 수 있습니다.
data['컬럼명']
data[ ['컬럼명1', '컬럼명2', '컬럼명3' ] ]
- 2개 이상의 셀을 선택할 경우
# 2개 컬럼명을 선택할 경우
data.loc[ '행이름' , ['컬럼명1' , '컬럼명2'] ]
# 2개 행이름을 선택할 경우
data.loc[ ['행이름1', '행이름2'] , '컬럼명1' ]
# 리스트 슬라이싱 : 을 활용해서 특정 범위를 지정하여 선택할 수 있습니다.
data.loc[ '행이름' , '컬럼명1' : ] # '컬럼명1' : ==> 컬럼명1부터 끝까지라는 의미
- 조건에 따라 데이터 선택하기: Boolean Indexing
조건을 이용하여 데이터프레임에서 특정 조건을 만족하는 행을 선택한다. 데이터를 필터링하거나 원하는 조건을 만족하는 행을 추출할 수 있다. 주로 불리언 값을 가지는 조건식을 사용하여 데이터프레임을 인덱싱한다.
1) 단일 조건으로 필터링: 특정 열의 값을 기준으로 조건을 설정하여 해당 조건을 만족하는 행을 선택
# 'age' 열에서 30세 이상인 행 필터링
df[df['age'] >= 30]
2) 여러 조건으로 필터링: 여러 개의 조건을 조합하여 복합적인 필터링을 수행
# 'age' 열에서 30세 이상이면서 'gender' 열이 'Male'인 행 필터링
df[(df['age'] >= 30) & (df['gender'] == 'Male')]
3) 조건에 따른 특정 컬럼 필터링: 조건을 만족하는 특정 열만 선택할 수 있음
# 'age' 열에서 30세 이상인 경우의 'name' 열만 선택
df.loc[df['age'] >= 30, 'name']
4) isin()을 활용한 필터링: 리스트를 활용하여 여러 값들을 포함하는 행을 선택할 수 있음
# 'gender' 열에서 'Male' 또는 'Female'인 행 필터링
df[df['gender'].isin(['Male', 'Female'])]
- 데이터 추가
# 데이터프레임에 컬럼 추가
df = pd.DataFrame()
df['컬럼명'] = data
# df라는 데이터프레임에 '컬럼명'이라는 이름의 컬럼이 추가되고,해당 컬럼에 data라는 값이 추가된다.
# 이때, data값이 1개의 단일 값인 경우에는 전체 df라는 데이터프레임 행에 data 값이 전체 적용됨
# 즉, 하나의 값인 경우 => 전체 모두 동일한 값 적용
# (리스트,시리즈)의 형태인 경우 => 각 순서에 맞게 컬럼 값에 적용됨
-----------------------------------------------------------------------------------------------
# 신규 컬럼 추가
df = pd.DataFrame()
# 컬럼 추가하기
df['EPL'] = 100
df['MLS'] = 60
df['NBA'] = 70
# 리스트 형태로 컬럼값 추가하기
df['KFC'] = [50, 10, 30]
# 행 수를 맞춰서 입력해줘야함
# 컬럼을 여러 조건 및 계산식을 통해 산출 값으로도 추가가 가능
df['ABC'] = (df['EPL'] + df['NBA']) * df['MLS'] * 2
'Today I Learned (TIL) > Python' 카테고리의 다른 글
[TIL] Python 챌린지 - 1회차 (0) | 2024.07.17 |
---|---|
[TIL] 데이터 전처리 - Pandas(3) (0) | 2024.07.17 |
[TIL] 데이터 전처리 - Pandas(1) (0) | 2024.07.17 |
[TIL] Python 베이직 - 1회차 (0) | 2024.07.17 |
[TIL] 데이터 분석 파이썬 종합반 - 5주차(2) (0) | 2024.07.10 |