@코딩의 1도 모른 상황에서 시작했으나…결과가 애매함.. 마지막 줄에 질문했습니다.
-목적: gpters 사용자가 일정기간 동안 gpters 어느 캠프(방)에 가장 많이 방문 또는 적게 방문했는지 확인해 전체 사용자의 선호 캠프 데이터 확인
-기간: 2024.6.10~2024.6.22
-분석 사이트: https://www.gpters.org/home
결과물
1.기간동안 총 방문자수
2. 1일 평균 방문자수
3.가장 많이 방문한 메뉴(번호, 한글표시)
=======================================================
데이터 수집 코드 작성하: 이제 코드를 작성해서 데이터를 모을 거예요. 코드는 웹 페이지에 접속해서 필요한 데이터를 가져오는 일을 해요. 아래 코드를 사용하면 gpters.org 사이트에서 데이터를 가져올 수 있어요.기
import requests
from bs4 import BeautifulSoup
from datetime import datetime, timedelta
# 웹사이트 주소
url = 'https://www.gpters.org/home'
# 날짜 범위 설정
start_date = datetime.strptime('2024-06-10', '%Y-%m-%d')
end_date = datetime.strptime('2024-06-22', '%Y-%m-%d')
# 데이터 저장할 리스트
visits_data = []
# 날짜 범위 내 데이터를 수집
for single_date in (start_date + timedelta(n) for n in range((end_date - start_date).days + 1)):
formatted_date = single_date.strftime('%Y-%m-%d')
response = requests.get(f'{url}/logs?date={formatted_date}')
soup = BeautifulSoup(response.text, 'html.parser')
# 방문자 데이터를 가져오는 코드 (예시)
# 여기에 실제 데이터가 어떻게 구조화되어 있는지에 따라 적절한 파싱 코드를 작성해야 합니다.
visits = soup.find_all('div', class_='visit-entry')
for visit in visits:
visit_info = {
'date': formatted_date,
'user': visit.find('span', class_='user-name').text,
'camp': visit.find('span', class_='camp-name').text
}
visits_data.append(visit_info)
# 데이터 출력
print(visits_data)
==========================================================
오류가 나서 오류수정 요청했더니 pandas 가 설치안됐다고해 설치수정
정상설치 확인
최종 에상 결과에 대한 예시출력을 답변해줌
===============================================================
기간(날짜) 오타가 있어 수정후 vscode 새롭게 넣고자 최종 결과를 출력할 수 있는 전체 코드 재요청함
(최종코드)
import pandas as pd
from datetime import datetime, timedelta
import random
# 예시 데이터 생성
data = {
'date': [],
'user': [],
'camp': []
}
# 예시 데이터를 생성합니다 (기간: 2024-06-10 ~ 2024-06-22)
dates = pd.date_range(start='2024-06-10', end='2024-06-22').to_list()
users = [f'user{i}' for i in range(1, 21)] # 20명의 사용자
camps = ['Camp1', 'Camp2', 'Camp3', 'Camp4', 'Camp5'] # 5개의 캠프
# 랜덤하게 데이터 생성
for date in dates:
daily_users = random.sample(users, k=random.randint(5, 15)) # 하루에 5명에서 15명이 방문
for user in daily_users:
camp = random.choice(camps)
data['date'].append(date.strftime('%Y-%m-%d'))
data['user'].append(user)
data['camp'].append(camp)
# 데이터프레임으로 변환
df = pd.DataFrame(data)
# 데이터프레임 출력
print("데이터프레임:")
print(df.head())
# 총 방문자 수 계산
total_visitors = df['user'].nunique()
print(f"총 방문자 수: {total_visitors}")
# 일일 평균 방문자 수 계산
daily_visits = df.groupby('date')['user'].nunique()
average_daily_visits = daily_visits.mean()
print(f"일일 평균 방문자 수: {average_daily_visits:.2f}")
# 가장 많이 방문한 캠프 확인
most_visited_camp = df['camp'].value_counts().idxmax()
print(f"가장 많이 방문한 캠프: {most_visited_camp}")
=========================================
최종결과는 나왔는데….
6월 10일 분석결과만 나왔다.
분석기간을 6/10~6/22까지 명확히 기재했으나
왜 6/10 방문결과만 나왔는지 의문??
또한 방문자수가 20명으로 나왔는데….11기외 더 많은 사용자가 방문했을텐데
왜 20명으로 나왔는지 정확한 이유는 모름.
date user camp
0 2024-06-10 user2 Camp3
1 2024-06-10 user14 Camp2
2 2024-06-10 user10 Camp2
3 2024-06-10 user7 Camp1
4 2024-06-10 user19 Camp2
총 방문자 수: 20
일일 평균 방문자 수: 11.15
가장 많이 방문한 캠프: Camp1
=======================================================
질문) 과정은 크게 문제가 없는 것으로 보이는데. 웹 데이터분석을 위해 파이썬으로 하는데 한계가 있나요?
#11기문과생도AI