728x90
import pandas as pd
import numpy as np
1. 데이터 추가/변경
df['추가할 컬럼명'] = np.nan
# 전부 nan이 들어있는 '추가할 컬럼명'이 추가된다.
df['원산지'] = np.nan
0번째 인덱스의 아메리카노의 원산지는 '콜롬비아'이다.
df.loc[0, '원산지'] = '콜롬비아'
df.loc[2:3, '원산지'] = '과테말라'
리스트 형태로 데이터(행)를 추가할 때,
df.loc['인덱스'] = ['크리스마스 라떼', 6000, 300, '한국']
딕셔너리 형태로 데이터(행)을 추가할 때,
df.loc[7] = {'메뉴': '안녕커피', '가격': 10000, '칼로리': 200}
추가한 '인덱스'행 삭제하고 싶을 때,
df.drop('인덱스', axis=0)
2. 정렬
인덱스 기준으로 정렬하기
df.sort_index(ascending=True) # ascending True는 오름차순
df.sort_index(ascending=False) # ascending False는 내림차순
값을 기준으로 정렬하기 (값 중 '메뉴' 컬럼을 기준으로 정렬)
df.sort_values('메뉴', ascending=True) # 오름차순
df.sort_values('메뉴', ascending=False) # 내림차순
여러 개의 기준으로 정렬할 경우 리스트를 사용한다.
# 가격과 메뉴 기준 정렬
df = df.sort_values(['가격', '메뉴'], ascending=[False, True])
# 가격은 내림차순 메뉴는 오름차순


왼쪽의 이미지 index를 오른쪽 이미지 index 처럼 변경하고 싶을 때(즉, 인덱스를 새로 만들고 싶을 때)
df = df.reset_index(drop=True)
# drop=True 안해주면 새로운 컬럼이 생긴다.
함수를 적용한 데이터프레임을 저장하고 싶다면, 항상 변수에 저장해줘야 한다.
3. 필터링
조건에 맞는 데이터만 출력하기 (변수에 넣어서 사용하는걸 추천)
# 1개 조건
cond = df['칼로리'] < 50
df[cond]
df[df['칼로리'] < 50]
cond = df['칼로리'] < 50 일 때, 칼로리가 50 이상인 데이터를 출력하고 싶다면 '~'를 붙인다.
cond = df['칼로리'] < 50
df[~cond]
조건이 2개 이상일 때 (and/or)
cond1 = df['칼로리'] > 50
cond2 = df['가격'] > 5000
df[cond1 & cond2]
df[cond1 | cond2]
문자열이 조건일 때
# 원산지가 콜롬비아인 데이터
cond = (df['원산지'] == '콜롬비아')
cond = df['원산지'] == '콜롬비아'
df[cond]
문자열과 숫자 조건(조건 여러개)
# 문자열과 숫자 조건 (AND/OR)
cond1 = df['원산지'] == '과태말라'
cond2 = df['가격'] <= 5000
df[cond1 & cond2]
df[cond1 | cond2]
isin은 DataFrame객체의 각 요소가 values 값과 일치하는지 여부를 bool 형식으로 반환
# 메뉴에 녹차를 포함하는 데이터 반환
df['메뉴'].isin(['녹차'])
# isin 활용
cond = df['메뉴'].isin(['녹차'])
df[cond]
isin을 복수컬럼에 활용
box = ['녹차', '카푸치노', '카페라떼']
cond = df['메뉴'].isin(box)
df[cond]
4. 결측치 처리
결측치 확인 (결측치 있을 시 True, 없을 시 False)
df.isnull()
df.isna()

컬럼별 결측치 확인(결측치가 있을 땐 True, 1 이고 결측치가 없을 땐 False 0 이기 때문에 sum만큼의 결측치가 있다는 것)
df.isnull().sum()
df.isna().sum()
결측값 채울땐 fillna 사용
df['원산지'] = df['원산지'].fillna('코스타리카')
df
5. 값 변경
문자 대치
df = df.replace('아메리카노', '룽고')
df = df.replace('녹차', '그린티')
문자대치(딕셔너리 사용)
change = {'아메리카노':'룽고', '녹차':'그린티'}
df = df.replace(change)
map 함수 사용(실무에서는 map을 더 많이 사용)
# map() 함수
import pandas as pd
df = pd.DataFrame({'만족도': ['만족', '보통' ,'불만', '보통', '만족']})
mapping = {'만족': 3, '보통': 2, '불만': 1}
df['만족도_숫자'] = df['만족도'].map(mapping)
df
- 딕셔너리 형태로 만들어서 map함수 내에 딕셔너리 넣어서 값을 넣어준다.
728x90
'Data > 빅데이터분석기사' 카테고리의 다른 글
| [빅데이터분석기사] 판다스6 - 시계열 데이터1 (0) | 2025.06.11 |
|---|---|
| [빅데이터분석기사] 판다스5 - 그룹핑, 병합, 피벗테이블 (1) | 2025.06.10 |
| [빅데이터분석기사] 판다스4 - 문자열, 내장함수 (1) | 2025.06.10 |
| [빅데이터분석기사] 판다스2 - 자료형, 컬럼, 삭제, 인덱싱/슬라이싱 (0) | 2025.05.28 |
| [빅데이터분석기사] 판다스1 - 데이터프레임, 시리즈, 저장, EDA (0) | 2025.05.26 |