반응형
Selenium
공통
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
browser = webdriver.Chrome()
url = ''
browser.get(url)
SRT 예매
- 도착지/목적지 기본값 삭제 및 입력
browser.find_element(By.ID, 'dptRsStnCdNm').clear()
browser.find_element(By.ID, 'dptRsStnCdNm').send_keys('부산')
- 옵션 선택하기
from selenium.webdriver.support.ui import Select
select_element = browser.find_element(By.NAME, 'dptDt')
select = Select(select_element)
select.select_by_value(input('예매할 날짜(8자리, 예:20240924: '))
- 매진 풀릴 때까지 새로고침 반복 / 예시는 10번으로 작성
for i in range(10):
time.sleep(1)
try:
status = browser.find_element(By.XPATH, '//*[@id="result-form"]/fieldset/div[6]/table/tbody/tr[2]/td[6]/a')
if status.text == '매진':
browser.refresh()
else:
status.click()
except:
browser.find_element(By.CLASS_NAME, 'btn_large').click()
구글 플레이스토어 리뷰
- 앱 이름 입력받기
keyword = input('검색할 앱: ')
url = f'https://play.google.com/store/search?q={keyword}&c=apps'
- 모달스크롤 다운
modal = browser.find_element(By.CLASS_NAME, 'fysCi')
modal.click()
for i in range(3):
js_code = 'arguments[0].scrollTo(0, arguments[0].scrollHeight);'
browser.execute_script(js_code, modal)
time.sleep(1)
- 리뷰 가져오기
containers = browser.find_elements(By.CLASS_NAME, 'RHo1pe')
reviews = []
for container in containers:
name = container.find_element(By.CLASS_NAME, 'X5PpBb').text
text = container.find_element(By.CLASS_NAME, 'h3YV2d').text
rating = container.find_element(By.CLASS_NAME, 'iXRFPc').get_attribute('aria-label')[10]
date = container.find_element(By.CLASS_NAME, 'bp9Aid').text
try:
like = container.find_element(By.CLASS_NAME, 'AJTPZc').text.split(' ')[1].split('명이')[0]
except:
like = '0'
reviews.append({
'name':name,
'text':text,
'rating':rating,
'date':date,
'like':like})
Matplotlib
선그래프
import matplotlib.pyplot as plt
x = np.arange(0,10,1)
y = np.sin(x)
plt.plot(x, y)
- 주요 매개변수
- x, y: 각각 X축과 Y축에 해당하는 데이터
- color: 선 색상, ex) 'r'은 빨강, 'b'는 파랑.
- linestyle: 선 스타일, default: '-'(실선) / '--' / '-.' / ':'(점선) 등
- marker: 각 데이터 포인트에 마커 추가, ex) 'o'는 원, 's'는 사각형
- label: 범례에 나타날 선의 이름 설정
- 추가 기능
- 제목, 축 이름: plt.title( ), plt.xlabel( ), plt.ylabel( )
- 범례: plt.legend( )
- 축 범위: plt.xlim( ), plt.ylim( )
- 축 눈금: plt.xticks( ), plt.yticks( )
산점도
plt.scatter(x, y, c=colors, s=sizes, alpha=0.5, cmap='viridis')
plt.colorbar()
- 주요 매개 변수
- x, y: 각각 X축과 Y축에 해당하는 데이터.
- color (c): 점의 색상, 'r', 'b' 등
- size (s): 각 점의 크기
- marker: 점 모양, 기본값은 'o'(원), '^'(삼각형), 's'(사각형) 등
- alpha: 투명도, 0(완전 투명) ~ 1(불투명)
- cmap: 컬러맵
막대 그래프
categories = ['A', 'B', 'C', 'D']
values = [4, 7, 1, 8]
plt.bar(categories, values)
- 주요 매개변수
- x: 막대의 x축, 보통 범주형 데이터
- height: y축 값
- width: 막대의 너비
- color: 막대의 색상
Seaborn
import seaborn as sns
tips = sns.load_dataset('tips')
#산점도
sns.scatterplot(data=tips, x='total_bill', y='tip', hue='sex')
#선형회귀
sns.lmplot(data=tips, x='total_bill', y='tip', hue='sex')
#막대그래프
sns.barplot(data=tips, x='day', y='total_bill')
#히스토그램, kde:밀도곡선
sns.histplot(tips['total_bill'], kde=True)
#상자그림
sns.boxplot(data=tips, x='day', y='tip', hue='size', palette='Set3')
#히트맵
flights = sns.load_dataset('flights')
flights_pivot = flights.pivot(index='month', columns='year', values='passengers')
sns.heatmap(flights_pivot, annot=True, fmt='d')
반응형
'[패스트 캠퍼스] 데이터 분석 부트캠프 16기 > 학습일지' 카테고리의 다른 글
[패스트캠퍼스] 데이터분석 부트캠프 (9주 차) - MySQL(계속) (0) | 2024.10.18 |
---|---|
[패스트캠퍼스] 데이터분석 부트캠프 (8주 차) - MySQL (1) | 2024.10.11 |
[패스트캠퍼스] 데이터분석 부트캠프 (3주 차) (0) | 2024.10.07 |
[패스트캠퍼스] 데이터분석 부트캠프 (2주 차) (0) | 2024.08.30 |
[패스트캠퍼스] 데이터분석 부트캠프 (1주 차) (0) | 2024.08.23 |