2024. 11. 9. 19:59ㆍ빅데이터 분석기사
1. 값 변경
데이터를 불러온다.
import pandas as pd
df = pd.read_csv('cafe3.csv') # https://kdh9797-devwiki.tistory.com/84 cafe3.csv 참고
df.head()
1-1. replace 활용
특정 값을 찾아 대체가 필요하다면 replace()를 활용한다.
replace()는 변경 전 값과 변경 후 값 순서로 입력해 사용한다.
여러 개의 값을 변경하기 위해 replace()를 여러 번 사용한다.
df.replace('아메리카노', '룽고', inplace=True)
df.replace('녹차', '그린티', inplace=True)
df
딕셔너리를 활용한 후 replace() 괄호 안에 넣어 사용할 수 있다.
change = {'룽고' : '아메리카노', '그린티' : '녹차'}
df.replace(change, inplace=True)
df
1-2. loc, iloc 활용
# 녹차의 원산지를 대한민국으로 변경
df.loc[6, '원산지'] = '대한민국'
df.tail()
# 카페라떼와 카페모카의 이벤트 가격을 1000원으로 하기
df.loc[1:2, '이벤트가'] = 1000
df.head()
※ 새로운 csv 파일 저장 (참고)
df.to_csv('cafe4.csv', index=False)
2. 문자열
문자열 (string)은 일련의 문자로 구성된 데이터 유형이다.
문자, 숫자, 구두점, 공백, 특수 문자 등의 문자를 포함하고 있다.
큰따옴표 (""), 작은따옴표 ('')로 둘러싸서 표현한다.
판다스에서는 str 접근자를 사용해 문자열 데이터를 효율적으로 다룰 수 있다.
다음과 같이 데이터를 작성한다.
import pandas as pd
df = pd.DataFrame({'A' : ['데이터 분석', '기본 학습서', '퇴근 후 열공'],
'B' : [10, 20, 30],
'C' : ['ab cd', 'AB CD', 'ab cd']})
df
2-1. 문자열 변경 (치환)
전체 문자열 중 일부만 변경할 때 str을 사용한다.
str 접근자를 활용하면 데이터프레임의 값을 문자열로 인식한다.
df['A'] = df['A'].str.replace('분석', '시각화')
df
하지만 str을 사용하는 방법은 데이터가 숫자일 때 에러가 발생한다.
df['B'] = df['B'].replace(10, 100)
df
df['B'] = df['B'].str.replace(20, 200)
df
AttributeError: Can only use .str accessor with string values!
따라서 replace()는 문자열뿐만 아니라 다른 유형도 변경 가능하지만, str.replace()는 문자열에만 사용 가능하다.
2-2. 문자열 분리
문자열을 분리할 때는 str.split()을 사용한다.
괄호 안에 값이 없으면 기본적으로 띄어쓰기를 기준으로 분리한다.
괄호 안에 콤마가 있다면 콤마를 기준으로 분리한다.
df['A'].str.split()
대괄호를 사용해 분리한 데이터의 특정 행만 선택할 수 있다.
df['A'].str.split()[0]
분리 후 첫 번째 단어만 필요하다면 각 행별 첫 번째 값을 선택한다.
df['D'] = df['A'].str.split().str[0]
df
2-3. 특정 문자열 검색
str.contains()를 활용해 특정 단어가 포함되어 있는지 확인할 수 있다.
# '기본' 단어가 있는지 확인
df['A'].str.contains('기본')
데이터프레임에 새로운 컬럼으로 추가한다.
df['기본포함유무'] = df['A'].str.contains('기본')
df
※ str.contains()와 isin() 차이
isin()은 값을 찾고, contains()는 값을 찾거나 값의 일부를 찾는다.
isin()은 특정 값이 있는지 확인하며 괄호 안에는 리스트 형태로 데이터가 입력된다.
따라서 여러 개의 값을 찾을 수 있다는 장점이 있다.
하지만 1개 값만 찾더라도 대괄호가 필요하다.
str.contains()는 문장 속에서 특정 문자열을 찾을 수 있다는 장점이 있다.
찾고자 하는 1개 값만 입력값으로 대입할 수 있다.
리스트 형태가 아니므로 대괄호는 필요 없다.
2-4. 문자열 길이
len()을 활용하여 문자열 길이를 반환받을 수 있다.
문자열 길이를 새로운 컬럼에 추가한다.
df['문자길이'] = df['A'].str.len()
df
2-5. 문자열 대(소) 문자 변경
str.lower()을 활용해 영어로 된 문자열을 모두 소문자로 변경할 수 있다.
df['C'] = df['C'].str.lower()
df
str.upper()을 활용하면 영어로 된 문자열을 모두 대문자로 변경할 수 있다.
df['C'] = df['C'].str.upper()
df
문자열을 소문자로 변경하고 공백을 제거하는 전처리 과정을 거치면 다음과 같다.
# 문자열 전처리
df['C'] = df['C'].str.lower()
df['C'] = df['C'].str.replace(' ', '')
df['C']
※ 공백 제거 방법
str.strip() | 양쪽 공백 제거 |
str.lstrip() | 왼쪽 공백 제거 |
str.rstrip() | 오른쪽 공백 제거 |
2-6. 문자열 슬라이싱
str [시작 인덱스 번호 : 끝 인덱스 번호]를 활용해 데이터프레임에서 특정 구간만 슬라이싱할 수 있다.
df['C'].str[1:3]
'빅데이터 분석기사' 카테고리의 다른 글
[빅분기 실기] 판다스 (pandas) 그룹핑 (0) | 2024.11.09 |
---|---|
[빅분기 실기] 판다스 (pandas) 내장 함수 (0) | 2024.11.09 |
[빅분기 실기] 판다스 (pandas) 필터링, 결측치 처리 (0) | 2024.11.09 |
[빅분기 실기] 판다스 (pandas) 데이터 추가, 변경. 정렬 (0) | 2024.11.09 |
[빅분기] 판다스 (pandas) 인덱싱. 슬라이싱 (loc, iloc) (0) | 2024.11.06 |