Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- IntelliJ
- Kibana
- pem
- git
- mysql
- github
- mssql
- 리눅스
- 티스토리챌린지
- Javascript
- analytics4
- 오블완
- PostgreSQL
- java
- Python
- pandas
- spring
- 명령어
- DBMS
- SQL
- 호이스팅
- docker
- springboot
- Linux
- MariaDB
- 404error
- 자바
- oracle
- isNotEmpty
- iBatis
Archives
- Today
- Total
hanker
python - pandas 문자열 변환 본문
반응형
이번 글에서는 pandas에서 문자열을 변환하고 처리하는 여러 방법에 대해서 알아보자.
1. 대소문자 변환
- 소문자 변환 : .str.lower()
- 대문자 변환 : .str.upper()
- 첫 글자만 대문자로 변환 : .str.title()
1-1. 소문자로 변환
import pandas as pd
data = {
"name": ["Alice", "Bob", "Charlie", "David", "Eva"],
"city": ["New York", "London", "Paris", "Berlin", "Tokyo"],
"score": ["85", "90", "78", "88", "95"]
}
df = pd.DataFrame(data)
df['name_lower'] = df['name'].str.lower()
print(df['name_lower'])
1-2. 대문자로 변환
import pandas as pd
data = {
"name": ["Alice", "Bob", "Charlie", "David", "Eva"],
"city": ["New York", "London", "Paris", "Berlin", "Tokyo"],
"score": ["85", "90", "78", "88", "95"]
}
df = pd.DataFrame(data)
df['name_upper'] = df['name'].str.upper()
print(df['name_upper'])
1-3. 첫 글자만 대문자
import pandas as pd
data = {
"name": ["Alice", "Bob", "Charlie", "David", "Eva"],
"city": ["New York", "London", "Paris", "Berlin", "Tokyo"],
"score": ["85", "90", "78", "88", "95"]
}
df = pd.DataFrame(data)
df['city_title'] = df['city'].str.title()
print(df['city_title'])
2. 문자열 다듬기 (공백 및 특정 문자 제거)
- 양쪽 공백 제거 : .str.strip()
- 좌측 공백 제거 : .str.lstrip()
- 우측 공백 제거 : .str.rstrip()
2-1. 양쪽 공백 제거
import pandas as pd
data = {
"name": ["Alice", "Bob", "Charlie", "David", "Eva"],
"city": [" New York ", "London", "Paris", "Berlin", "Tokyo"],
"score": ["85", "90", "78", "88", "95"]
}
df = pd.DataFrame(data)
print(df)
df['city'] = df['city'].str.strip()
print(df)
2-2. 왼쪽 공백 제거
import pandas as pd
data = {
"name": ["Alice", "Bob", "Charlie", "David", "Eva"],
"city": [" New York ", "London", "Paris", "Berlin", "Tokyo"],
"score": ["85", "90", "78", "88", "95"]
}
df = pd.DataFrame(data)
print(df)
# 왼쪽 공백 제거
df['city'] = df['city'].str.lstrip()
print(df)
2-3. 오른쪽 공백 제거
import pandas as pd
data = {
"name": ["Alice", "Bob", "Charlie", "David", "Eva"],
"city": [" New York ", "London", "Paris", "Berlin", "Tokyo"],
"score": ["85", "90", "78", "88", "95"]
}
df = pd.DataFrame(data)
print(df)
# 오른쪽 공백 제거
df['city'] = df['city'].str.rstrip()
print(df)
2-4 특정 문자 제거
import pandas as pd
data = {
"name": ["Alice", "Bob", "Charlie", "David", "Eva"],
"city": ["New York", "London", "Paris", "Berlin", "Tokyo"],
"score": ["85", "90", "78", "88", "95"]
}
df = pd.DataFrame(data)
print(df)
df['name_clean'] = df['name'].str.strip('aeiou') # a, e, i, o, u 제거
print(df['name_clean'])
3. 문자열 대체
- 문자열 치환 : .str.replace()
3-1. 문자열 치환
import pandas as pd
data = {
"name": ["Alice", "Bob", "Charlie", "David", "Eva"],
"city": ["New York", "London", "Paris", "Berlin", "Tokyo"],
"score": ["85", "90", "78", "88", "95"]
}
df = pd.DataFrame(data)
print(df)
df['city_replace'] = df['city'].str.replace('o', '0', regex=False)
print(df['city_replace'])
3-2. 정규식을 이용한 치환
import pandas as pd
data = {
"name": ["Alice", "Bob", "Charlie", "David", "Eva"],
"city": ["New York", "London", "Paris", "Berlin", "Tokyo"],
"score": ["85", "90", "78", "88", "95"]
}
df = pd.DataFrame(data)
print(df)
df['score_replace'] = df['score'].str.replace(r'\d', 'X', regex=True)
print(df['score_replace'])
4. 문자열 분할
- 문자열 분할 : .str.split()
4-1. 공백을 기준으로 문자열 분할
import pandas as pd
data = {
"name": ["Alice", "Bob", "Charlie", "David", "Eva"],
"city": ["New York", "London", "Paris", "Berlin", "Tokyo"],
"score": ["85", "90", "78", "88", "95"]
}
df = pd.DataFrame(data)
print(df)
df['city_split'] = df['city'].str.split(' ')
print(df['city_split'])
4-2. 첫 번째 단어만 추출
import pandas as pd
data = {
"name": ["Alice", "Bob", "Charlie", "David", "Eva"],
"city": ["New York", "London", "Paris", "Berlin", "Tokyo"],
"score": ["85", "90", "78", "88", "95"]
}
df = pd.DataFrame(data)
print(df)
df['first_word'] = df['city'].str.split(' ').str[0]
print(df['first_word'])
5. 문자열 결합
import pandas as pd
data = {
"name": ["Alice", "Bob", "Charlie", "David", "Eva"],
"city": ["New York", "London", "Paris", "Berlin", "Tokyo"],
"score": ["85", "90", "78", "88", "95"]
}
df = pd.DataFrame(data)
print(df)
df['name_city'] = df['name'].str.cat(df['city'], sep=', ')
print(df['name_city'])
6. 문자열 길이 계산
- 문자열 결합 : .str.cat()
import pandas as pd
data = {
"name": ["Alice", "Bob", "Charlie", "David", "Eva"],
"city": ["New York", "London", "Paris", "Berlin", "Tokyo"],
"score": ["85", "90", "78", "88", "95"]
}
df = pd.DataFrame(data)
print(df)
df['name_length'] = df['name'].str.len()
print(df['name_length'])
7. 특정 패턴 찾기
- 특정 패턴 찾기 : .str.contains()
7-1. 특정 패턴 찾기
import pandas as pd
data = {
"name": ["Alice", "Bob", "Charlie", "David", "Eva"],
"city": ["New York", "London", "Paris", "Berlin", "Tokyo"],
"score": ["85", "90", "78", "88", "95"]
}
df = pd.DataFrame(data)
print(df)
df['has_o'] = df['city'].str.contains('o')
print(df['has_o'])
7-2. 정규식을 사용해 특정 패턴 찾기
import pandas as pd
data = {
"name": ["Alice", "Bob", "Charlie", "David", "Eva"],
"city": ["New York", "London", "Paris", "Berlin", "Tokyo"],
"score": ["85", "90", "78", "88", "95"]
}
df = pd.DataFrame(data)
print(df)
df['has_digit'] = df['score'].str.contains(r'\d')
print(df['has_digit'])
8. 문자열 시작/끝 확인
- 문자열 시작 확인 : .str.startwith()
- 문자열 끝 확인 : .str.endswith()
import pandas as pd
data = {
"name": ["Alice", "Bob", "Charlie", "David", "Eva"],
"city": ["New York", "London", "Paris", "Berlin", "Tokyo"],
"score": ["85", "90", "78", "88", "95"]
}
df = pd.DataFrame(data)
print(df)
df['starts_with_a'] = df['name'].str.startswith('A')
df['ends_with_s'] = df['city'].str.endswith('s')
print(df[['name', 'starts_with_a', 'ends_with_s']])
9. 문자열 일부 추출
- 문자열 추출 : .str.slice(), .str[:n], .str[-n:]
9-1. 문자열의 처음 3글자 추출
import pandas as pd
data = {
"name": ["Alice", "Bob", "Charlie", "David", "Eva"],
"city": ["New York", "London", "Paris", "Berlin", "Tokyo"],
"score": ["85", "90", "78", "88", "95"]
}
df = pd.DataFrame(data)
print(df)
df['name_slice'] = df['name'].str.slice(0, 3)
print(df['name_slice'])
9-2. 마지막 2글자 추출
import pandas as pd
data = {
"name": ["Alice", "Bob", "Charlie", "David", "Eva"],
"city": ["New York", "London", "Paris", "Berlin", "Tokyo"],
"score": ["85", "90", "78", "88", "95"]
}
df = pd.DataFrame(data)
print(df)
df['city_last2'] = df['city'].str[-2:]
print(df['city_last2'])
10. 문자열을 숫자로 변환
- 문자열을 숫자로 변환 : .astype()
import pandas as pd
data = {
"name": ["Alice", "Bob", "Charlie", "David", "Eva"],
"city": ["New York", "London", "Paris", "Berlin", "Tokyo"],
"score": ["85", "90", "78", "88", "95"]
}
df = pd.DataFrame(data)
print(df)
df['score'] = df['score'].astype(int)
print(df['score'].sum())
정리
함수 | 기능 |
.str.lower() .str.upper() .str.title() |
대소문자 변환 |
.str.strip() .str.lstrip() .str.rstrip() |
공백 및 문자 제거 |
.str.replace() | 문자열 치환 |
.str.split() | 문자열 분할 |
.str.cat() | 문자열 결합 |
.str.len() | 문자열 길이 계산 |
.str.contains() .str.startswith() .str.endswith() |
패턴 검색 |
.str.slice() | 문자열 추출 |
.astype() | 숫자형 변환 |
반응형
'Python' 카테고리의 다른 글
pandas - drop_duplicates() (중복 데이터 제거하기) (0) | 2025.03.01 |
---|---|
Python - pandas 데이터 정렬하기 (sort_values() 옵션 파헤치기) (0) | 2025.02.28 |
Python - pandas 데이터 타입 변환 (0) | 2025.02.26 |
Python - 결측치 (Missing Value) 처리 방법 (0) | 2025.02.23 |
Python - Pandas를 활용한 데이터 분석 (설치 및 사용법) (0) | 2025.02.16 |