데이터프레임에서 정규식 활용해보기
판다스에서 제공하는 데이터프레임의 문자열들을 str 메서드와 정규식을 활용하여 간단한 데이터 분석 예제를 진행해보자.
예제 데이터셋 만들기
소셜 미디어 게시물 데이터 예제를 만들어 특정 해시태그를 포함하는 게시물을 찾아 전처리를 진행해보자.
import pandas as pd
data = {
'post': [
'Just had a great lunch #food #yummy',
'Exploring the mountains #travel #adventure',
'This is how you code #programming #python',
'I love my cat #pets #cute',
'Amazing sunset #photography #nature',
'Just had a great dinner #food #delicious'
]
}
df = pd.DataFrame(data)
Python
복사
해시태그 추출하기
df['hashtags'] = df['post'].str.findall(r'#(\w+)')
print(df)
Python
복사
Counter 클래스를 활용한 해시태그 빈도 계산
from collections import Counter
# 해시태그 리스트를 하나의 리스트로 통합
all_hashtags = sum(df['hashtags'].tolist(), [])
# 빈도 계산
hashtags_frequency = Counter(all_hashtags)
# 가장 흔한 해시태그 출력
print(hashtags_frequency.most_common())
Python
복사
특정 단어를 포함한 게시물 필터링
great_posts = df[df['post'].str.contains(r'\bgreat\b')]
print(great_posts)
Python
복사
해시태그 개수에 따른 게시물 분류
# 해시태그 개수 계산
df['hashtag_count'] = df['hashtags'].apply(len)
# 해시태그가 2개 이상인 게시물 필터링
many_hashtags = df[df['hashtag_count'] >= 2]
print(many_hashtags)
Python
복사
각 해시태그별 게시물 수 구하기
from collections import defaultdict
# 해시태그별 게시물 수를 저장할 딕셔너리
hashtag_post_count = defaultdict(int)
# 각 게시물의 해시태그를 순회하며 카운트
for hashtags in df['hashtags']:
for tag in hashtags:
hashtag_post_count[tag] += 1
print(dict(hashtag_post_count))
Python
복사
특정 주제의 해시태그 추출하기
food_hashtags = df['post'].str.findall(r'#(food\w*)')
food_hashtags = sum(food_hashtags.tolist(), [])
print(food_hashtags)
Python
복사
해시태그를 제외한 게시물 텍스트 추출
df['text_without_hashtags'] = df['post'].str.replace(r'#\w+', '', regex=True).str.strip()
print(df[['post', 'text_without_hashtags']])
Python
복사