월 17,600원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결다양한 사례로 익히는 SQL 데이터 분석
Plotly을 이용해 treemap시각화시 공유사항
plotly의 treemap 을 사용해서 시각화 하는 경우 Pandas 2.xxxx 버전에서 append 메소드를 지원하지 않아서 treemap api를 이용해 시각화 시도 하는 경우 append를 지원하지 않는다는 오류 메시지를 밷는 경우를 봅니다. 아마도 plotly가 append 메소드 더 이상 지원하지 않는것에 대해서 패치가 이루어지지 않는 버전이어서 그런 경우가 있습니다. 이런 경우는 plotly의 최선 버전으로 재 인스톨 해주시고 실습을 하시면 됩니다.참고로 저의 실습 버전 plotly 5.7.0 -> 현재는 5.22.0 입니다.
- 미해결다양한 사례로 익히는 SQL 데이터 분석
월단위 카테고리별 매출액과 주문건수 및 전체매출액 대비 비율 sql로 구하기 수업 중 질문이 있습니다.
안녕하세요? 월단위 카테고리별 매출액과 주문건수 및 전체매출액 대비 비율 sql로 구하기 강의 에서,하기 함수에 distinct를 반드시 사용해야만 하는 이유를 잘 모르겠습니다. order_date에 order_id가 여러 번 있을 수 있는 상황은 전혀 없을까요? 답변 부탁드립니다.
- 미해결다양한 사례로 익히는 SQL 데이터 분석
with 절 질문
안녕하세요.강의 잘 듣고 있는데요with 절이 계속 사용하고 있는것 같은데with 절 말고 서브쿼리로 작성해도 상관없나요?그리고 상관없다면 with절하고 서브쿼리 중에서 어떤 쿼리가 더 성능이 좋은 쿼리인가요?
- 미해결다양한 사례로 익히는 SQL 데이터 분석
데이터 분석 SQL Fundamentals 강의 할인 문의
안녕하세요 강사님데이터 분석 SQL Fundamentals 할인 계획이 있을까요?
- 미해결다양한 사례로 익히는 SQL 데이터 분석
리텐션 구하는 방법 문의
안녕하세요 강의 정말 잘들었습니다 리텐션에 대해 질문이 있는데요이 리텐션을 구할때 재방문 계산은 회원가입을 한 회원을 기준으로 보는게 맞을지요아니면 가입을 안했더라도 ga의 pseudo id를 기준으로 처음 만들어진날로 해서 또 접속을 했는지 여부로 구해도 될지요수도아이디는 물론 변경될수 있는 값이라 확실치는 않습니다이렇게 여쭤보는 이유는 접속은 해도 로그인을 하지않는 경우도 많아서 그러합니다..설명부탁드립니다
- 미해결다양한 사례로 익히는 SQL 데이터 분석
캐글데이터 Postgresql 사용
안녕하세요! 강의 정말 잘 보고 있습니다!.강의 참고하면서, Kaggle에서 괜찮은 데이터로 매출분석, 퍼널분석 프로젝트해서 포트폴리오 만들어 보려고 하고 있습니다.그런데 Kaggle csv데이터를 Postgresql에서 쉽게 로드할 수 있는 방법이 있을까요?검색해보니 pgAdmin이라는 툴도 있는 것 같던데, DBeaver하고는 사용하는 법이 많이 다른 것 같아서요.DBeaver에서 csv 파일 DB에 적재하려면, 어떻게 해야할까요?? 감사합니다!
- 미해결다양한 사례로 익히는 SQL 데이터 분석
mau 구할때 group by 사용안해도 count 집계함수가 왜 가능한지 모르겠습니다.
웹 접속 및 사용분석 실습 1번 파일입니다. select :current_date , count(distinct user_id) as daufrom ga_sesswhere visit_stime >= (:current_date - interval '1 days') and visit_stime < :current_date. 위 코드의 count()는 왜 group by 없이도 작동하는 것인가요?
- 미해결다양한 사례로 익히는 SQL 데이터 분석
매출분석 1에서 partition by와 group by의 차이
안녕하세요 선수 강의에서 언급한 내용일 수도있는데 선수 강의를 수강하지 않아 질문드립니다!매출분석 01의 상품별 매출액 과 상품별 카테고리별 전체 매출액 대비 비율 강의에서 질문있습니다 상품별 카테고리별 전체 매출액 대비 비율은sum_amount(product 기준으로 groupby한 상품별 매출액) / sum(sum_amount) over (partition by category_name) as product_category_ratio 로 구했는데partition by가 아니라 group by category_name 로 분석할 수는 없는건가요?sum(sum_amount) over (partition by category_name) 이 부분 자체가 작은 groupby를 진행한? 결과인 걸까요 over partition by와 group by간의 차이, 사용용도의 차이가 궁금합니다
- 미해결다양한 사례로 익히는 SQL 데이터 분석
postgres 설치 오류
postgres가 설치가 되지 않고다음과 같은 메시지만 계속 뜹니다.삭제 후 다시 해봐도 똑같은데, 어쩌죠?
- 미해결다양한 사례로 익히는 SQL 데이터 분석
맥 계정에서 postgres 접속 시 비밀번호 입력 실패현상
맥에서 postgres 계정에 접속하려고 할 시 해당 화면이 뜨는데 postgres를 입력해도 저런 오류가 떠서 질문드립니다 ㅠㅠ
- 미해결다양한 사례로 익히는 SQL 데이터 분석
pandas 연계시 오류.....
(아나콘다를 깔고나서 새 파일에서 뭘 수정하려고하면 바로 연결이 끊기는 문제가 생겨 주피터 노트북으로 설치하였습니다. 필요한 라이브러리들은 모두 따로 설치하였습니다.)버전은 아래와 같습니다.오류가 발생하는 부분은 이 부분인데query문이 있는 셀의 전체 오류문은 아래와 같습니다--------------------------------------------------------------------------- UnicodeDecodeError Traceback (most recent call last) Cell In[12], line 4 1 query = """ 2 select * from nw.customers 3 """ ----> 4 df = pd.read_sql_query(sql=query, con=postgres_engine) 5 df.head(10) File ~\AppData\Local\Programs\Python\Python312\Lib\site-packages\pandas\io\sql.py:485, in read_sql_query(sql, con, index_col, coerce_float, params, parse_dates, chunksize, dtype, dtype_backend) 482 dtype_backend = "numpy" # type: ignore[assignment] 483 assert dtype_backend is not lib.no_default --> 485 with pandasSQL_builder(con) as pandas_sql: 486 return pandas_sql.read_query( 487 sql, 488 index_col=index_col, (...) 494 dtype_backend=dtype_backend, 495 ) File ~\AppData\Local\Programs\Python\Python312\Lib\site-packages\pandas\io\sql.py:851, in pandasSQL_builder(con, schema, need_transaction) 848 raise ImportError("Using URI string without sqlalchemy installed.") 850 if sqlalchemy is not None and isinstance(con, (str, sqlalchemy.engine.Connectable)): --> 851 return SQLDatabase(con, schema, need_transaction) 853 warnings.warn( 854 "pandas only supports SQLAlchemy connectable (engine/connection) or " 855 "database string URI or sqlite3 DBAPI2 connection. Other DBAPI2 " (...) 858 stacklevel=find_stack_level(), 859 ) 860 return SQLiteDatabase(con) File ~\AppData\Local\Programs\Python\Python312\Lib\site-packages\pandas\io\sql.py:1576, in SQLDatabase.__init__(self, con, schema, need_transaction) 1574 self.exit_stack.callback(con.dispose) 1575 if isinstance(con, Engine): -> 1576 con = self.exit_stack.enter_context(con.connect()) 1577 if need_transaction and not con.in_transaction(): 1578 self.exit_stack.enter_context(con.begin()) File ~\AppData\Local\Programs\Python\Python312\Lib\site-packages\sqlalchemy\engine\base.py:3268, in Engine.connect(self) 3245 def connect(self) -> Connection: 3246 """Return a new :class:`_engine.Connection` object. 3247 3248 The :class:`_engine.Connection` acts as a Python context manager, so (...) 3265 3266 """ -> 3268 return self._connection_cls(self) File ~\AppData\Local\Programs\Python\Python312\Lib\site-packages\sqlalchemy\engine\base.py:145, in Connection.__init__(self, engine, connection, _has_events, _allow_revalidate, _allow_autobegin) 143 if connection is None: 144 try: --> 145 self._dbapi_connection = engine.raw_connection() 146 except dialect.loaded_dbapi.Error as err: 147 Connection._handle_dbapi_exception_noconnection( 148 err, dialect, engine 149 ) File ~\AppData\Local\Programs\Python\Python312\Lib\site-packages\sqlalchemy\engine\base.py:3292, in Engine.raw_connection(self) 3270 def raw_connection(self) -> PoolProxiedConnection: 3271 """Return a "raw" DBAPI connection from the connection pool. 3272 3273 The returned object is a proxied version of the DBAPI (...) 3290 3291 """ -> 3292 return self.pool.connect() File ~\AppData\Local\Programs\Python\Python312\Lib\site-packages\sqlalchemy\pool\base.py:452, in Pool.connect(self) 444 def connect(self) -> PoolProxiedConnection: 445 """Return a DBAPI connection from the pool. 446 447 The connection is instrumented such that when its (...) 450 451 """ --> 452 return _ConnectionFairy._checkout(self) File ~\AppData\Local\Programs\Python\Python312\Lib\site-packages\sqlalchemy\pool\base.py:1269, in _ConnectionFairy._checkout(cls, pool, threadconns, fairy) 1261 @classmethod 1262 def _checkout( 1263 cls, (...) 1266 fairy: Optional[_ConnectionFairy] = None, 1267 ) -> _ConnectionFairy: 1268 if not fairy: -> 1269 fairy = _ConnectionRecord.checkout(pool) 1271 if threadconns is not None: 1272 threadconns.current = weakref.ref(fairy) File ~\AppData\Local\Programs\Python\Python312\Lib\site-packages\sqlalchemy\pool\base.py:716, in _ConnectionRecord.checkout(cls, pool) 714 rec = cast(_ConnectionRecord, pool._do_get()) 715 else: --> 716 rec = pool._do_get() 718 try: 719 dbapi_connection = rec.get_connection() File ~\AppData\Local\Programs\Python\Python312\Lib\site-packages\sqlalchemy\pool\impl.py:169, in QueuePool._do_get(self) 167 return self._create_connection() 168 except: --> 169 with util.safe_reraise(): 170 self._dec_overflow() 171 raise File ~\AppData\Local\Programs\Python\Python312\Lib\site-packages\sqlalchemy\util\langhelpers.py:146, in safe_reraise.__exit__(self, type_, value, traceback) 144 assert exc_value is not None 145 self._exc_info = None # remove potential circular references --> 146 raise exc_value.with_traceback(exc_tb) 147 else: 148 self._exc_info = None # remove potential circular references File ~\AppData\Local\Programs\Python\Python312\Lib\site-packages\sqlalchemy\pool\impl.py:167, in QueuePool._do_get(self) 165 if self._inc_overflow(): 166 try: --> 167 return self._create_connection() 168 except: 169 with util.safe_reraise(): File ~\AppData\Local\Programs\Python\Python312\Lib\site-packages\sqlalchemy\pool\base.py:393, in Pool._create_connection(self) 390 def _create_connection(self) -> ConnectionPoolEntry: 391 """Called by subclasses to create a new ConnectionRecord.""" --> 393 return _ConnectionRecord(self) File ~\AppData\Local\Programs\Python\Python312\Lib\site-packages\sqlalchemy\pool\base.py:678, in _ConnectionRecord.__init__(self, pool, connect) 676 self.__pool = pool 677 if connect: --> 678 self.__connect() 679 self.finalize_callback = deque() File ~\AppData\Local\Programs\Python\Python312\Lib\site-packages\sqlalchemy\pool\base.py:902, in _ConnectionRecord.__connect(self) 900 self.fresh = True 901 except BaseException as e: --> 902 with util.safe_reraise(): 903 pool.logger.debug("Error on connect(): %s", e) 904 else: 905 # in SQLAlchemy 1.4 the first_connect event is not used by 906 # the engine, so this will usually not be set File ~\AppData\Local\Programs\Python\Python312\Lib\site-packages\sqlalchemy\util\langhelpers.py:146, in safe_reraise.__exit__(self, type_, value, traceback) 144 assert exc_value is not None 145 self._exc_info = None # remove potential circular references --> 146 raise exc_value.with_traceback(exc_tb) 147 else: 148 self._exc_info = None # remove potential circular references File ~\AppData\Local\Programs\Python\Python312\Lib\site-packages\sqlalchemy\pool\base.py:898, in _ConnectionRecord.__connect(self) 896 try: 897 self.starttime = time.time() --> 898 self.dbapi_connection = connection = pool._invoke_creator(self) 899 pool.logger.debug("Created new connection %r", connection) 900 self.fresh = True File ~\AppData\Local\Programs\Python\Python312\Lib\site-packages\sqlalchemy\engine\create.py:637, in create_engine.<locals>.connect(connection_record) 634 if connection is not None: 635 return connection --> 637 return dialect.connect(*cargs, **cparams) File ~\AppData\Local\Programs\Python\Python312\Lib\site-packages\sqlalchemy\engine\default.py:616, in DefaultDialect.connect(self, *cargs, **cparams) 614 def connect(self, *cargs, **cparams): 615 # inherits the docstring from interfaces.Dialect.connect --> 616 return self.loaded_dbapi.connect(*cargs, **cparams) File ~\AppData\Local\Programs\Python\Python312\Lib\site-packages\psycopg2\__init__.py:122, in connect(dsn, connection_factory, cursor_factory, **kwargs) 119 kwasync['async_'] = kwargs.pop('async_') 121 dsn = _ext.make_dsn(dsn, **kwargs) --> 122 conn = _connect(dsn, connection_factory=connection_factory, **kwasync) 123 if cursor_factory is not None: 124 conn.cursor_factory = cursor_factory UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb8 in position 63: invalid start byte
- 미해결다양한 사례로 익히는 SQL 데이터 분석
시각화 그래프가 안보여요
안녕하세요. 매출 분석01 - 일/주/월/분기별 매출액 및 주문건수 시각화 하기강의를 들으면서 코드를 실행하는데 그래프가 이러타할 오류없이 나타나지 않아서 글 작성합니다. 각각 라이브러리의 버전은 아래와 같습니다. 쥬피터 파일 내의 [일별 매출 시각화] 에 대한 코드를 실행하는데, 쿼리가 들어간 데이터 프레임까지는 잘 실행이 되는데, 그래프를 그리는 코드를 실행하면 그래프가 나타나지 않습니다. <스크린샷1 - 데이터 프레임은 잘 나타남> <스크린 샷2 - 그래프 그리는 코드 실행시 그래프가 나타나지 않음> <스크린 샷 3 - 그래프 그리는 코드 실행시 그래프가 나타나지 않음> <스크린 샷4 - 키 에러라고 뜨는데 왜 이렇게 나타나는지 잘 모르겠어요. 코드를 따로 바꾸거나 수정하지 않았습니다. > 터미널이 이상해서 그런가하고 전체적으로 다 끄고 다시 켜서 실행해 봤는데도 나타나지 않아서 질문 드립니다.
- 해결됨다양한 사례로 익히는 SQL 데이터 분석
ntile 정규분포에 관하여 ... 향후 일을 하게 될 시
강의를 듣는 도중, ntile()의 경우, 분포가 skew가 심하면(정규분포가 아니라면), 순위를 매길 때, 문제가 생김을 배울 수 있었습니다. Q1. 저는 왜곡이 되어있는 걸 보자마자, 차라리 판다스나 Spark SQL로 데이터를 정규화 한뒤에, 시각화를 하는게 더 빠르지 않을까? 하는 생각이 들었는데요, 기업에서 일을 하게 될 때, 어떤 경우에 SQL을 쓰는지가 궁금합니다.저는 강사님의 강의를 수강하며, python 데이터 분석 -> 머신러닝 -> 딥러닝 이후, 현재 SQL강의를 수강하고 있습니다. 희망직무는 데이터 사이언스트 및 데이터 엔지니어를 희망하는데, 항상 채용공고를 보면, python 능력도 중요하지만 고급 SQL 능력도 자격요건으로 되어 있는 경우가 많았습니다.Q2. 현업에서 데이터를 가공하거나 처리할 때, 오히려 프로그래밍언어보다는 SQL를 훨씬 많이 쓴다고 하는데, Q1처럼 때에 따라 유동적으로 쓰는 것인지, 아니면 앞으로 데이터 분석을 연습할 때도, (이를 테면, 캐글과 같은) 파이썬 보다는 SQL위주로 연습하는 것이 더 적합한 건지 여쭙고 싶습니다. Q3. 이건 머신러닝과 관련된 이야기지만, 이렇게까지 skew가 개선되지 않을 때는 어떻게 해야하나요?from sklearn.preprocessing import StandardScaler # OverSampling을 해도 Skew가 개선되지 않음 # UnderSampling을 하면 데이터가 줄어들기 때문에, 사용에 유의가 필요하나 skew가 # 너무 심하기 때문에 사용함. from imblearn.under_sampling import CondensedNearestNeighbour from scipy import stats import numpy as np def log_transform(column): return np.log1p(column) scaler = StandardScaler() df["freq"] = log_transform(df["freq"]) df["freq"] = scaler.fit_transform(df[["freq"]]) cnn = CondensedNearestNeighbour(sampling_strategy='majority', random_state=42) X_resampled, y_resampled = cnn.fit_resample(df[["freq"]], df["user_id"].values) resampled_df = pd.DataFrame(data=X_resampled, columns=["freq"]) print(resampled_df) ####### freq 0 -0.352373 1 -0.352373 2 -0.352373 3 -0.352373 4 2.495698 ... ... 2557 -0.352373 2558 3.642937 2559 -0.352373 2560 -0.352373 2561 -0.352373 [2562 rows x 1 columns] ######### resampled_df["freq"] = log_transform(resampled_df["freq"]) resampled_df["freq"].skew() ### 2.4721717038971214
- 미해결다양한 사례로 익히는 SQL 데이터 분석
사용자별 월별 세션 접속 횟수의 구간별 분포 집계 SQL - where절
선생님 안녕하세요?강의 잘 보고 있습니다.월 말일 기준으로 2일전에 생성한 user를 제외하고, session 수를 카운트 하기 위해서 where 절 안에 아래와 같이 수업시간에 말씀주셨었는데요. select a.user_id, date_trunc('month', visit_stime)::date as month, count(*) as monthly_user_cntfrom ga.ga_sess ajoin ga.ga_users b on a.user_id = b.user_idwhere b.create_time <= (date_trunc('month', b.create_time) +interval '1 month' - interval '1 day')::date -2group by a.user_id, date_trunc('month', visit_stime)::date 이 부분에 의하면, 말일 기준으로 2일 전부터 말일까지 create된 user의 경우, 모든 month에서 session 데이터가 필터링 되는데 의도하신 바가 맞으신지요? 어떤 user가 9월 29일에 create 하고, 9월 30일에 session 기록이 있으면, 이건 count되지 않고,10월 3일의 session 기록은 10월에 count하는 것이 의도하신 것이 아닌지요?그럴경우에는 아래와 같이 where 절을 수정해야 count가 될 것 같아요.where b.create_time <= (date_trunc('month', a.visit_stime)+interval '1 month' - interval '1 day')::date -2
- 미해결다양한 사례로 익히는 SQL 데이터 분석
postgres db > 도구 > 복원까지 따라했는데 start 버튼이 비활성화되어있습니다ㅠ
안녕하세요!dbeaver에 postgres backup 파일을 연결시키는 과정에서똑같이 따라했는데 아래 이미지 처럼 start button이 비활성화 되어서 클릭할 수가 없습니다 ㅠ환경은 맥 m1 이고 postgres를 말씀해주신 방식이 윈도우같아서 brew 에서 설치했고'minseo'라는 계정에서 superuser 롤 부여한 상태입니다. 감사합니다
- 해결됨다양한 사례로 익히는 SQL 데이터 분석
쿼리 관련 질문이 있습니다.
안녕하세요. 강의 듣는 중 궁금한 점이 있어서 질문드립니다. 만약 '카테고리별 기준 월, 전 월, 작년 월 ( 기준 월 = 2023/10, 전월 = 2023/09, 작년 월 = 2022/10)의 차이'를 구하라고 한다면 강의와 같이 기준 연월의 일년 정도의 데이터(2022/10 ~ 2023/10)를 가져와서 사용하는게 더 좋을까요?아니면, 3개 조건 각각 select하여 카테고리 기준으로 join하는게 더 좋을까요?ex) with as ( 기준 월), with as (전 월), with as (작년 월)... 혹은 더 좋은 방법이 있다면 알려주시면 감사하겠습니다. 이런 질문 드려도 되는지 모르겠지만.. 강의 잘 듣고 있습니다.감사합니다.
- 미해결다양한 사례로 익히는 SQL 데이터 분석
주문별 연관상품 추출 SQL 관련 문의
안녕하세요?주문별 연관 상품 추출 SQL에서SELECT a.order_id, a.product_id, b.product_id from ga.order_items a join ga.order_tems b on a.order_id = b.order_id where a.product_id <> b.product_id위 코드와 같이 where 절 안에서 같은 product_id가 조인 되는 경우를 filtering 하였습니다.혹시 join 조건절에서(아래 sql과 같이) filtering 하지 않고 where 절에서 하는 이유가 있을까요?SELECT a.order_id, a.product_id, b.product_id from ga.order_items a join ga.order_tems b on a.order_id = b.order_id and a.product_id <> b.product_id
- 미해결다양한 사례로 익히는 SQL 데이터 분석
order by 정렬 문의
안녕하세요 강사님 group by + distinct를 비교해보다 이유는 모르겠지만 위에 distinct를 넣은 것은 day 컬럼이 자동으로 정렬이 되었고아래의 distinct를 넣지 않은 컬럼은 정렬 되지 않았습니다 아래도 역시 distinct 를 넣으니 자동 오름차순이 되었습니다 (count( DISTINCT oi.order_id)) 혹시 그 이유가 궁금합니다 또, order by 처리 시 쿼리 속도가 느려진다는 말이 있는데 이런식으로 order by 를 넣지 않고 자동 정렬 되는 것이 있다면 쿼리 속도 향상에 도움이 될까요? 쿼리문자동 정렬 SELECT date_part( 'day', o.order_date) AS DAY, sum(amount) AS sum_amount, count(DISTINCT o.order_id) AS daily_ord_cutFROM orders o, order_items oiWHERE 1 = 1AND o.order_id = oi.order_idGROUP BY date_part( 'day', o.order_date)ORDER BY 1;정렬 안됨SELECT date_part( 'day', o.order_date) AS DAY, sum(amount) AS sum_amount, count( oi.order_id) AS daily_ord_cutFROM orders o, order_items oiWHERE 1 = 1AND o.order_id = oi.order_idGROUP BY date_part( 'day', o.order_date);
- 미해결다양한 사례로 익히는 SQL 데이터 분석
Pandas 연계 오류
안녕하세요, Pandas 연계 과정 중 위와 같은 오류가 지속적으로 발생합니다.아나콘다 관리자모드에서 psycopg2-binary 인스톨 완료했으며, 패스워드와 로컬호스트 넘버도 이상 없습니다. 버전도 모두 상위 버전으로 이상 없습니다.해결 방법 문의 드립니다.감사합니다.
- 미해결다양한 사례로 익히는 SQL 데이터 분석
실습용 데이터 복원 에러
데이터 복원 과정에서 에러가 발생하여 문의 드립니다.OS는 윈도우 11 사용하고 있구요, DBeaver는 23.1.5버전, Postgresql은 11.2.1 버전 사용하고 있습니다.