1 목표
목적 : 머신러닝을 위해 pandas 와 matplotlib의 개념을 정립해보자
목표 :
우리반의 대답봇이자 분위기 메이커를 알아보자
6월 27일 부터 7월 1일까지의 카톡 빈도수 추이 확인해보자
문자열 전처리를 해보자
import pandas as pd # 1,2차원의 테이블 형식 데이터를 다루는 모듈
import matplotlib.pyplot as plt # 시각화 도와주는 모듈
# 한국어 처리 - 글꼴 설정
from matplotlib import rc
rc('font',family = 'Malgun Gothic')
# 판다스 기본 옵션 설정
pd.set_option('display.max_colwidth',None)
ai_class
ai_class = pd.DataFrame([['2022-06-27','[원표] Zoom 회의 참가https://us02web.zoom.us/j/8318135592?pwd=L0RJaTA4NFlJZWtXTWJNc215bHM5Zz09'],
['2022-06-27','[운비] 줌 링크 감사합니다~! 오늘은 오전 서버시험 오후 스프링 수업입니다!!!! 제가 오늘 연차라 개발원에 없을거에요! 이슈나 특이사항은 규남쌤께 연락하시면 됩니당ㅎㅎ 오늘 하루도 화이팅 하시고, 저랑은 내일 만나요 우리반💗'],
['2022-06-27','[원표] 원표팀 완료'],
['2022-06-27','[벼리] 벼리팀 큐알 완료요'],
['2022-06-27','[혜미] 혜미팀 큐알 완료했습니다'],
['2022-06-27','[규남] 우담씨..?'],
['2022-06-27','[찬종] 버스에서 내렸대용'],
['2022-06-27','[설아] 선생님 톰캣 서버가 오류나요ㅜㅜ'],
['2022-06-27','[예지] 선생님 저도 톰캣좀 봐주세욥'],
['2022-06-27','[다연] 저두용'],
['2022-06-27','[예지] 쌤 저 또 안돼여.,'],
['2022-06-28','[운비] 좋은 아침입니다! 일찍 오신 분들 줌 링크 공유한번 부탁드리구요~ '],
['2022-06-28','[원표] 줌 로그아웃 되어있어요 ㅠㅠ'],
['2022-06-28','[혜미] 헤미팀 큐알 완했습니다'],
['2022-06-28','[유찬] 유찬팀 큐알 완료했습니다'],
['2022-06-28','[벼리] 벼리팀 큐알완료했습니다'],
['2022-06-28','[문성] 제 자리 봐주세요'],
['2022-06-28','[문성] 나이숴어어어어'],
['2022-06-28','[찬종] 브라보'],
['2022-06-28','[예지] 철민아 그렇게 됐다'],
['2022-06-28','[정민] 안전 매트 준비 해야 긋내 ~~~ '],
['2022-06-29','[원표] Zoom 회의 참가 https://us02web.zoom.us/j/8318135592?pwd=L0RJaTA4NFlJZWtXTWJNc215bHM5Zz09'],
['2022-06-29','[운비] 큐알 감사해요 ~ 좋은하루 되세요 !'],
['2022-06-29','[혜주] 혜주팀 QR완료했습니다'],
['2022-06-29','[유빈] 유빈팀 QR완료했습니다.'],
['2022-06-29','[원표] 원표팀 QR완료했습니다.'],
['2022-06-29','[운비] 철민,원,다연,지연 다 어디가신거죵...'],
['2022-06-29','[문성] 청소~~~'],
['2022-06-29','[지연] 앞이에요..!!'],
['2022-06-30','[원표] Zoom 회의 참가https://us02web.zoom.us/j/8318135592?pwd=L0RJaTA4NFlJZWtXTWJNc215bHM5Zz09'],
['2022-06-30','[운비] (이모티콘)줌 링크 감사합니다~ 오늘도 오전에는 스프링 오후에는 파이썬 수업입니다! '],
['2022-06-30','[운비] 57분인데 큐알이 처참한 이유는 뭐죠 여러분..? 진짜 심장이 쫄깃쫄깃하네요 우리반..'],
['2022-06-30','[예지] 파이썬 한시간 주시나요?'],
['2022-06-30','[혜주] 혜주팀 QR완료했습니다.'],
['2022-06-30','[유빈] 유빈팀 QR완료했습니다.'],
['2022-06-30','[동룡] 아 김우담.....................'],
['2022-06-30','[연석] 병원 간 혜미씨 빼고 연석팀 QR완료입니다'],
['2022-07-01','[원표] Zoom 회의 참가https://us02web.zoom.us/j/8318135592?pwd=L0RJaTA4NFlJZWtXTWJNc215bHM5Zz09회의 ID: 831 813 5592암호: 1e21QB'],
['2022-07-01','[운비] 우리 이제 2달도 안남았네요! 오늘은 오전 스프링,오후 파이썬입니다!(이모티콘)'],
['2022-07-01','[운비] 59분..큐알완료는 올라오지 않고..'],
['2022-07-01','[유빈] 유빈팀 QR완료했습니다.'],
['2022-07-01','[혜주] 혜주팀 QR완료했습니다.'],
['2022-07-01','[문성] 기강이 해이해진거같습니다 청소로 기강 부탁드립니다'],
['2022-07-01','[연석] 연석팀 QR 완료했습니다'],
['2022-07-01','[운비] 와...우담,원,다연 9시에 딱 찍어...멋지다..'],
['2022-07-01','[우담] 저 더 빨리왓는데 까먹고 있던거에요 ..']],
columns = ['date','content'])
ai_class
1.1 info() 로 ai_class의 정보를 확인
ai_class.info()
# 데이터 크기 : 46행, 2열 (46,2)
# Non-Null Count : 결측치를 확인
# Dtype : 데이터 타입(형식) 문자열
1.2 str 키워드 사용 : 판다스 객체 내의 문자열 데이터 자체에 접근하는 키워드
# str 예시
# 2023 년도로 변경해보기
# date 컬럼에 접근 (열인덱싱)
ai_class['date'].replace('2022','2023') # 1차원 시리즈로 출력
# ai_class.loc[:,'date']
# ai_class.iloc[:,0]
ai_class['date'].str.replace('2022','2023')
사람별 카톡 빈도수 구하기 : 이름을 추출하여 새로운 컬럼으로 추가해보기
name으로 추가
# 없는 컬럼이름 인덱싱하면서 대입
ai_class['name'] = ai_class['content'].str[1:3]
ai_class.head()
ai_class['name'].value_counts()
# ai_class.loc[:,'name']
# ai_class.iloc[:,2]
tmp = ai_class['name'].value_counts()[:10]
tmp = ai_class['name'].value_counts()
# 불리언 인덱싱 - True, False 값을 가지고 인덱싱, 슬라이싱 하는 방법
tmp[tmp>=2]
# 막대 그래프 그려보기
# plt.bar()
x = tmp.index
y = tmp.values
plt.figure(figsize = (10,5))
plt.bar(x,y,color = 'pink')
plt.xlabel('보낸사람')
plt.ylabel('보낸횟수')
plt.title('IoT 카톡 대답봇')
plt.show()
제일 톡을 많이 보낸 운비쌤의 데이터 접근해보기
ai_class[ai_class['name'] == '운비']['content']
ai_class[ai_class['name'] == '원표']['content']
ai_class[ai_class['name'] == '찬종']['content']
1.3 연도, 월일을 따로 추출하여 각각의 새로운 컬럼으로 추가해보기
year 컬럼에 연도 저장
m/d 컬럼에 날짜 저장
# 년도 컬럼 추가
ai_class['year'] = ai_class['date'].str[:4]
ai_class
#월일 컬럼 추가
ai_class['m/d'] = ai_class['date'].str[5:].str.replace('-','')
ai_class
# 일주일간 일자별 카톡 빈도수 그래프 그려보기
# 선그래프 그려보기
# plt.plot()
# 날짜 카운팅 해보기
y = ai_class['m/d'].value_counts().sort_index()
x = y.index #1차원
plt.plot(x,y, lw = 2, ls = '--', color = 'black', marker = 'o', ms = 8, mfc = 'red', mec='red')
plt.title('일자별 카톡 빈도수 추이')
plt.xlabel('날짜')
plt.ylabel('빈도수')
plt.show()
1.4 판다스 객체에 대해서 복잡한 처리가 요구될때 : apply()
불필요한 문자열을 제거해보자 : 문자열 전처리
# 복잡한 처리 기능을 담은 함수와 판다스 객체를 연결하는 apply()
def str_print(s):
"""문자열을 출력하는 기능을 함"""
print(s)
df = pd.DataFrame({'name' : ['유찬','우담','다연','혜주','원표'],'age' : [24,26,27,20,29]})
df.apply(str_print,axis = 0 ) # axis= 0행방향, 열단위처리 / 1 열방향, 행단위처리
# 불필요한 문자 : (이모티콘), ㅜ, ㅠ, 제거
# 사용자 정의 함수
def txt_prepro(s):
if('(이모티콘)' in s) or ('ㅜ' in s) or ('ㅠ' in s):
result = s.replace('(이모티콘)','').replace('ㅜ','').replace('ㅠ','').strip()
return result
else:
return s
ai_class['content'] = ai_class['content'].apply(txt_prepro)
# 인덱싱을 이용하여 컬럼 순서 정리하기
ai_class = ai_class[['date','year','m/d','name','content']]
ai_class
'머신러닝' 카테고리의 다른 글
[Machine Learning] 손글씨데이터 활용 분류 실습 (0) | 2022.07.20 |
---|---|
손 글씨 데이터 활용 분류 실습 (0) | 2022.07.18 |
ex01_타이타닉데이터활용_생존,사망분류실습 (0) | 2022.07.13 |
머신러닝 기본 개념 (0) | 2022.07.06 |