inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

[빠짝스터디 4주차] 6-1 과제

해결됨

BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)

개요 Domain : 배달음식 어플리케이션 Data set : app_logs 테이블 데이터기간: 2022.08~2022.12 목적: Foodie 현황 데이터분석 데이터분석 1. 월별 활성 사용자 수 목적: 월별 활성 고객 파악을 통해 서비스의 전반적인 흐름 파악 1-1 지표정의 MAU (Monthly Active Users) 한 달 동안 앱을 사용한 순수 고유 사용자 수 중복을 제거한(COUNT DISTINCT) user_id 기준으로 집계 서비스의 전반적인 성장과 규모를 보여주는 핵심 지표 Cart Users 한 달 동안 장바구니에 상품을 담은 순수 고유 사용자 수 event_name = 'click_cart'인 이벤트의 고유 사용자 수 실제 구매 의도를 가진 잠재 고객의 규모를 파악할 수 있는 지표 Payment Users 한 달 동안 실제 결제를 진행한 순수 고유 사용자 수 event_name = 'click_payment'인 이벤트의 고유 사용자 수 실제 매출 발생에 기여한 고객의 규모를 나타내는 지표 Cart to Payment Rate 장바구니 사용자 중 실제 결제로 이어진 비율 (%) (Payment Users / Cart Users) * 100으로 계산 주요 의미: 구매 전환율을 나타내는 핵심 지표 장바구니 단계에서의 이탈률 파악 가능 높을수록 구매 전환이 잘 이루어짐을 의미 쿼리 WITH base AS ( SELECT DISTINCT user_id, user_pseudo_id, event_name, DATE(DATETIME(TIMESTAMP_MICROS(event_timestamp), 'Asia/Seoul')) AS event_date, DATETIME(TIMESTAMP_MICROS(event_timestamp), 'Asia/Seoul') AS event_datetime, event_params.key AS param_key, event_params.value.string_value AS string_value, event_params.value.int_value AS int_value FROM advanced.app_logs CROSS JOIN UNNEST(event_params) as event_params WHERE event_date BETWEEN "2022-01-01" AND "2022-12-31" ) # 월별 활성 사용자 분석 ,monthly_active AS ( SELECT FORMAT_DATE('%Y-%m', event_date) as year_month, COUNT(DISTINCT user_id) as MAU, COUNT(DISTINCT CASE WHEN event_name = 'click_cart' THEN user_id END) as cart_users, COUNT(DISTINCT CASE WHEN event_name = 'click_payment' THEN user_id END) as payment_users, ROUND(COUNT(DISTINCT CASE WHEN event_name = 'click_payment' THEN user_id END) * 100.0 / NULLIF(COUNT(DISTINCT CASE WHEN event_name = 'click_cart' THEN user_id END), 0), 2) as cart_to_payment_rate FROM base GROUP BY year_month ORDER BY year_month ) SELECT * FROM monthly_active 시각화 결론 8월~10월 사이 사용자 확대 특시 10월에 MAU가 증가하여 서비스의 성장 사용자 수가 크게 증가했음에도 구매전환율이 안정적으로 유지 MAU증가와 함께 실제 구매자 수도 증가 ⇒ 서비스가 8~10월 사이 급격한 성장세를 통해 사용자가 증가하였으며 일시적인 효과가 아닌 안정적으로 성장세에 맞는 고객을 확보하고 있는 중 Action Item MAU 증가 원인 파악하기 신규고객, 기존고객 중 어떤 고객이 활성화가 된건지 (신규, 기존에 따른 프로모션 등 확인하기) 신규고객이라면 어떤 채널로 유입이 된건지 유입 근거 찾아보기 기존고객이라면 기존고객 대상 프로모션을 한게 있는지, 특정페이지 개선이 되었거나, 변경사항이 있는지 확인해보기 2. Funnel 분석 쿼리 WITH base AS ( SELECT DISTINCT user_id, event_name, event_timestamp, DATETIME(TIMESTAMP_MICROS(event_timestamp), 'Asia/Seoul') AS event_datetime, DATE(DATETIME(TIMESTAMP_MICROS(event_timestamp), 'Asia/Seoul')) AS event_date, user_pseudo_id FROM advanced.app_logs WHERE event_date BETWEEN "2022-01-01" AND "2022-12-31" ), user_journey AS ( SELECT user_id, event_date, event_name, event_datetime, -- 사용자별 이벤트 발생 순서 ROW_NUMBER() OVER (PARTITION BY user_id, event_date ORDER BY event_datetime) as event_sequence FROM base ), funnel_steps AS ( SELECT event_date, COUNT(DISTINCT CASE WHEN event_name = 'screen_view' THEN user_id END) as view_users, COUNT(DISTINCT CASE WHEN event_name = 'click_cart' THEN user_id END) as cart_users, COUNT(DISTINCT CASE WHEN event_name = 'click_payment' THEN user_id END) as payment_users FROM user_journey GROUP BY event_date ), funnel_rates AS ( SELECT event_date, view_users, cart_users, payment_users, ROUND(cart_users * 100.0 / NULLIF(view_users, 0), 2) as view_to_cart_rate, ROUND(payment_users * 100.0 / NULLIF(cart_users, 0), 2) as cart_to_payment_rate, ROUND(payment_users * 100.0 / NULLIF(view_users, 0), 2) as view_to_payment_rate FROM funnel_steps ) #SELECT * FROM funnel_rates #ORDER BY event_date SELECT event_date, view_users as view_users_count, cart_users as cart_users_count, payment_users as payment_users_count, ROUND((cart_users * 100.0 / view_users), 2) as view_to_cart_rate, ROUND((payment_users * 100.0 / cart_users), 2) as cart_to_payment_rate, ROUND((payment_users * 100.0 / view_users), 2) as total_conversion_rate FROM funnel_rates ORDER BY event_date 시각화 ⇒ 공휴일 등 특정 날짜에 고객 유입 변동이 큼 8월부터 10월까지 고객이 급격하게 늘었으나 이탈율은 9월에 높게 나타났음 그에 비해 10월은 고객이 크게 늘어났음에도 이탈율은 큰폭으로 보이지 않음 view > cart는 20% 수준의 이탈율이나, cart > payment가 60% 수준의 큰 이탈율 발생 ⇒ 구간별 고객수가 전체적으로 같이 확대되어 이탈율은 월별 특이점 없음 Action Item cart에서 payment 이탈 고객에게 쿠폰지급 프로모션 또는 결제단계 최소화를 통해 이탈율 개선 방법 모색 필요

  • sql
  • Google-Analytics
  • firebase
  • google-sheets
  • bigquery
김희은 댓글 1 좋아요 0 조회수 146

강의 음성이 너무 작아 듣기가 불편합니다.

미해결

챗 GPT를 활용한 파이썬 프로그래밍

섹션 6 파이썬 26_Chap06 부터 동영상의 음성이 너무 작아서 불편합니다. 이썬26_Chap06_챗GPT로_생성한_이메일주소체크데모 파이파이썬26_Chap06_챗GPT로_생성한_이메일주소체크데모썬 26_Chap06_챗GPT로_생성한_이메일주소체크데모

  • python
  • 웹-크롤링
  • chatgpt
이영찬 댓글 1 좋아요 0 조회수 119

[바짝스터디 4주차] 6-1 강의최종과제

해결됨

BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)

노션으로 작성하였습니다. 링크공유합니다. https://canyon-king-6a2.notion.site/4-Foodie-Express-143e4e315127805faf7de0620e6ca51a?pvs=4

  • sql
  • Google-Analytics
  • firebase
  • google-sheets
  • bigquery
kyb6010 댓글 1 좋아요 0 조회수 118

[빠짝스터디 4주차] 6-1 과제

해결됨

BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)

노션에 작성하였습니다 😃 https://www.notion.so/4-143a36e0ca1980d48477c45cb562019d?pvs=4

  • sql
  • Google-Analytics
  • firebase
  • google-sheets
  • bigquery
망고맛있어 댓글 1 좋아요 0 조회수 102

작업형2 채점방식

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

작업형2 채점방식이 궁금합니다. 시험에서 제시한 평가지표로 예측값과 실제값을 비교 평가해서 평가지표 점수가 안좋을수록 감점을 받는 그런방식으로 채점이 된다고 이해하면 될까요??

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
dlwnstmd705 댓글 1 좋아요 0 조회수 102

답이 다른 이유

미해결

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

이렇게 풀었는데 왜 답이 다를까용?

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
shs4166 댓글 2 좋아요 0 조회수 105

안녕하세요 질문있습니다.

미해결

김영한의 실전 자바 - 중급 2편

직접 구현하는 연결 리스트1 강의중 영상과 자료에는 문제가 없는 것 같은데 저의 IDE에서는 캐스팅을 요청하길래 코드를 보니 참조값이 Object인데 반환 값은 Node라 상관이 없는 것을 알고 있지만 다운캐스팅을 하는 것이 올바른 것인지 문의드립니다 .

  • java
  • 객체지향
  • 코딩-테스트
  • 알고리즘
댓글 2 좋아요 0 조회수 114

코랩/시험환경

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

시험환경에서는 하나의 칸 안에 모든 코드를 적는 것이 좋다고 하는데 코랩에서는 칸을 나눠서 각 단계를 적는 연습을 하다보니 어느정도까지 ctrl+shift처리를 해가며 풀이를 해야할지 고민입니다!

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
shs4166 댓글 1 좋아요 0 조회수 80

캐글

미해결

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

선생님 캐글 놀이터 사용법 알려주는 영상이 뭘까요~?

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
shs4166 댓글 3 좋아요 0 조회수 115

Query dsl 에서 QHello 생성안됨

미해결

실전! Querydsl

plugins { id 'java' id 'org.springframework.boot' version '3.3.5' id 'io.spring.dependency-management' version '1.1.6' } group = 'study' version = '0.0.1-SNAPSHOT' java { toolchain { languageVersion = JavaLanguageVersion.of(21) } } configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' testCompileOnly 'org.projectlombok:lombok' testAnnotationProcessor 'org.projectlombok:lombok' //Querydsl 추가 implementation "com.querydsl:querydsl-jpa:5.0.0:jakarta" annotationProcessor("com.querydsl:querydsl-apt:5.0.0:jakarta") annotationProcessor "jakarta.annotation:jakarta.annotation-api" annotationProcessor "jakarta.persistence:jakarta.persistence-api" } clean { delete file('src/main/generated') } tasks.named('test') { useJUnitPlatform() } 위와 같이 build.gradle 작성했고 clean 후 compile.Java ( compile.Querydsl이 없음) 했지만 아무것도 생기지 않습니다. 구글링 해서 다 적용해봐도 안되는데 어떻게들 하셨나요

  • java
  • jpa
이지수 댓글 2 좋아요 0 조회수 187

전체적인 공부방법에 대한 질문입니다.

미해결

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

안녕하세요 선생님 강의 열심히 듣고 있는 학생입니다. 제가 듣다 보면 문제를 보고 1시간 정도를 고민해도 풀 수가 없어서 결국 강의 풀이를 보며 이해하는 문제들이 많은데 이런식으로 공부해도 실력이 늘 수 있을지가 의문이고 고민입니다... 혼자 생각하고 풀지 못하고 결국 정답과 풀이를 보며 따라하는 상황이다 보니 혼자 힘으로는 풀지 못하는 문제만 늘어간다는 느낌을 받습니다. 이런식으로 공부해도 괜찮은 걸까요..?

  • java
  • 코딩-테스트
S Y 댓글 2 좋아요 4 조회수 346

컬렉션프레임워크 문제 풀이2 - 문제7 Cart클래스 add() 및 minus() 코드 방식에 대하여서 질문

해결됨

김영한의 실전 자바 - 중급 2편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요. 문제 풀이7번 장바구니를 만들고 나서, 영상 및 pdf 랑 비교해보니, Cart 클래스의 add() 및 minus() 가 비슷하긴 한데, 다릅니다.(정답은 잘 나옵니다.) 이럴 때에는 영한님의 코드 방식을 익히고, 영한님 코드를 쓰는게 나을까요? 아니면 그대로 저의 코드로 하는 게 나을까요? (일단 코드도 올릴게요.) 추가1 이렇게 코드를 올리는 게 자만 인가요? 다른 분들은 코드를 올리지 않고 잘 진행하는데, 주구장창 식으로 올리는 듯해서요.(저번 글에 답변 해주신 David 님 말이 생각이 나서요.) 답변 부탁 드립니다.

  • java
  • 객체지향
  • 코딩-테스트
  • 알고리즘
생각하는자 댓글 1 좋아요 0 조회수 177

1-4 2번째풀이 관련

해결됨

38군데 합격 비법, 2026 코딩테스트 필수 알고리즘

1. 현재 학습 진도 몇 챕터/몇 강을 수강 중이신가요? 1-4 알고리즘 친해지기 def find_max_num(array): max_num = 0 for i in range (len(array)): if array[i] > max_num : max_num = array[i] return max_num print("정답 = 6 / 현재 풀이 값 = ", find_max_num([3, 5, 6, 1, 2, 4])) print("정답 = 6 / 현재 풀이 값 = ", find_max_num([6, 6, 6])) print("정답 = 1888 / 현재 풀이 값 = ", find_max_num([6, 9, 2, 7, 1888])) 저는 다음과 같이 풀어봤는데 선생님께서 푸신것과 최대값을 갱신해서 구한다는점이 같았는데 gpt에게 물어보니 다음풀이는 배열의 인덱스를 순회하는 방식이고 강의 풀이는 배열의 값을 순회하는 방식이라고 하는데 둘방식이 차이가 있는지? 다르다면 어떠한 경우에 값을 순회하고 ,인덱스를 순회하는지 궁금합니다.

  • python
  • 코딩-테스트
  • 알고리즘
  • data-structure
이영준 댓글 1 좋아요 0 조회수 268

문제2 PayStore의 payStore메소드

미해결

김영한의 실전 자바 - 기본편

[질문 내용] payStore메소드를 정의할 때, 왜 static으로 한 것이고, 메소드 타입으로 왜 Pay 라고 한것인지 궁금합니다.

  • java
  • 객체지향
soojinkimss 댓글 1 좋아요 0 조회수 175

java: cannot find symbol 'string' 에러

미해결

김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 아니오 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] java: cannot find symbol 'string' 이라는 에러가 발생합니다.. 구글에 검색을 해보니 jdk가 설정이 안된거라고 나오는데 저는 영상에서 나온대로 최신버전인 23을 설치한 상태입니다.. 뭐가 문제인지 알려주시면 감사하겟습니다ㅜㅜ

  • java
  • 객체지향
선영 댓글 1 좋아요 0 조회수 303

문제2 : PayService

미해결

김영한의 실전 자바 - 기본편

[질문 내용] 정답을 보기 전에 먼저 제가 스스로 리팩토링 하다가 PayService에 있는 processPay 메소드도 Pay 인터페이스에 넣어서 각각 KakaoPay, NaverPay에서 구현을 했는데 이렇게 해도 OCP 원칙을 따르면서 리팩토링 한건가요?

  • java
  • 객체지향
soojinkimss 댓글 2 좋아요 0 조회수 159

알맞은 버전 확인 방법

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

9분에서 Reference Doc 들어가서 hibernate 검색하면 스프링부트와의 알맞은 버전이 나온다고 하셨는데, 저는 안 나오네요. 지금은 방법이 바뀌었나요? 적합한 버전을 어떻게 찾나요?

  • java
  • jpa
ㅇㄱㅇㄱ 댓글 3 좋아요 0 조회수 592

5-2예제 원핫인코딩이 도저히 안되서 질문드립니다.

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

cols =['neighbourhood_group','neighbourhood','room_type'] # from sklearn.preprocessing import LabelEncoder # for col in cols: # le = LabelEncoder() # train[col] = le.fit_transform(train[col]) # test[col] = le.fit_transform(test[col]) train = pd.get_dummies(train) test = pd.get_dummies(test) train[cols] --------------------------------------------------------------------------- KeyError Traceback (most recent call last) <ipython-input-89-9aca98e66a02> in <cell line: 14>() 12 test = pd.get_dummies(test) 13 ---> 14 train[cols] 2 frames /usr/local/lib/python3.10/dist-packages/pandas/core/indexes/base.py in _raise_if_missing(self, key, indexer, axis_name) 6247 if nmissing: 6248 if nmissing == len(indexer): -> 6249 raise KeyError(f"None of [{key}] are in the [{axis_name}]") 6250 6251 not_found = list(ensure_index(key)[missing_mask.nonzero()[0]].unique()) KeyError: "None of [Index(['neighbourhood_group', 'neighbourhood', 'room_type'], dtype='object')] are in the [columns]"

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
김호범 댓글 2 좋아요 0 조회수 163

결측치 처리 관련(에러메시지 마주하기 영상, 교재 작업형2 회귀)

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

섹션19 강의 중 에러메세지와 마주하기 영상에서 에러3 : 결측치가 있는 경우, 모델 학습시 에러가 나므로 결측치를 처리해야 한다고 나와있습니다만, 코드를 실행해보니 결측치가 있는 상태에서도 에러가 나지 않고 학습이 되었습니다 영상을 제작하셨을 당시와 지금의 버전 차이로 인해 에러가 나지 않는 것 같아서 교재 작업형2 ch4 회귀 파트의 코드를 이용해 비교 확인해보았는데요, 교재의 코드에서 수치형 데이터(Item_Weight)의 결측치를 채우지 않고 모델을 실행했을 때 선형회귀 모델에서는 결측치로 인한 에러가 발생하였고, 랜덤포레스트, lightgbm에서는 에러가 발생하지 않았습니다. 저는 랜덤포레스트, lightgbm 모델을 사용하려고 하는데, 이러한 경우에도 전처리를 하는게 더 좋은 방법인지 문의드립니다. 평가지표로 확인을 해보기는 하겠지만 모델 학습에 에러가 나는게 아니라면 없는 값은 없는 대로 학습하는게 더 나을 것 같다는 생각이 들어서요. 감사합니다

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
위잉 댓글 2 좋아요 1 조회수 130

인기 태그

인프런 TOP Writers

주간 인기글