호테의 노트에 오신 것을 환영합니다 🙌

Tableau와 Salesforce, Python과 SQL 등 데이터의 전반적인 것들을 다루는 기술 블로그입니다.

전체 글 160

Pygwalker - Jupyter Notebook 환경에서 반응형 시각화하기

1. Pygwalker란 무엇인가?Pygwalker는 데이터프레임을 시각적으로 탐색할 수 있는 인터랙티브 시각화 툴입니다.“Python” + “Graphic Walker”의 합성어로, Pandas DataFrame을 마치 Tableau나 Power BI처럼 드래그 앤 드롭 방식으로 시각화할 수 있게 해줍니다.데이터 과학자와 분석가가 Notebook 환경에서 빠르게 데이터를 이해하고, EDA(Exploratory Data Analysis)를 직관적으로 수행할 수 있도록 도와줍니다.2. 주요 기능드래그 앤 드롭 인터페이스차원(범주형 데이터)과 측정값(수치형 데이터)을 끌어다 놓으면 즉시 차트를 생성할 수 있습니다.자동 차트 추천선택한 변수에 따라 막대, 선, 산점도 등 적절한 차트를 제안합니다.Tableau..

Python 2025.08.28

재귀함수 정복하기

1. 재귀함수란?재귀함수는 자기 자신을 다시 호출하는 함수를 말합니다.어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다."재귀함수가 뭔가요?""잘 들어보게. 옛날에 산 꼭대기에 현자가 있었어. 질문엔 모두 지혜롭게 대답 해 주었지.그런데 어느날, 그 선인에게 한 선비가 찾아와서 물었어."재귀함수가 뭔가요?""잘 들어보게. 옛날에 산 꼭대기...2. 재귀함수의 구성요소Base Case (종료 조건): 더 이상 재귀 호출을 하지 않아야 할 조건Recursive Case (자기 자신을 호출하는 부분): 문제를 더 작게 쪼개서 자기 자신을 호출3-1. 예제 1: 팩토리얼 (n!)n! = n × (n-1)!조건: 1! = 1def factorial(n): if n == 1: # 종료 ..

TabPy 로컬 구성해서 Tableau Prep 연결하기

TabPy란?TabPy (Tableau Python Server)는 Tableau에서 Python 스크립트를 실행하고 그 결과를 Tableau 워크플로우에 직접 반영할 수 있도록 도와주는 분석 확장 서버입니다.Tableau Desktop뿐 아니라 Tableau Prep에서도 사용할 수 있으며, 이를 통해 데이터 전처리 과정에 Python 기반 로직을 유연하게 삽입할 수 있습니다. 1단계: TabPy 설치▶︎ Python 환경 확인먼저 Python이 설치되어 있어야 합니다. (Anaconda 환경에서도 OK)python --versionpip --version▶︎ TabPy 설치pip install tabpy 2단계: TabPy 서버 실행▶︎ 터미널에서 아래 명령어 입력tabpy정상적으로 실행되면 아래와 ..

SQL에서의 LATERAL JOIN

SQL을 사용하다 보면 하위 쿼리(Subquery) 나 인라인 뷰 안에서 메인 쿼리의 값을 활용하고 싶은 경우가 종종 있습니다. 이런 상황에서 강력한 기능을 제공하는 것이 바로 LATERAL JOIN입니다.이번 글에서는 LATERAL JOIN의 개념, 사용법, 실무 예시, 주의점까지 하나하나 정리해드릴게요.1. LATERAL JOIN이란?SQL에서 일반적으로 하위 쿼리(Subquery) 는 외부 쿼리의 컬럼을 참조할 수 없습니다. 그러나 LATERAL 키워드를 사용하면 하위 쿼리에서 외부 쿼리의 컬럼을 사용할 수 있게 됩니다.즉, LATERAL JOIN은 하위 쿼리를 외부 쿼리의 각 행마다 실행하며, 외부 쿼리의 값을 내부에서 참조할 수 있도록 해주는 기능입니다.💡 쉽게 말하면, LATERAL은 SQ..

SQL 2025.06.26

.sort() 와 sorted()의 차이

1 .sort() 와 sorted()의 차이항목.sort()sorted()종류리스트 전용 메서드내장 함수원본 변경✅ 원본 리스트를 직접 정렬 (in-place)❌ 원본은 그대로 두고 새 리스트 생성반환값None (아무것도 반환하지 않음)정렬된 새 리스트 반환적용 대상리스트(list)만 가능리스트, 문자열, 튜플, 딕셔너리 등 모든 반복 가능한 객체 가능가독성한 번만 정렬할 때 사용함수 체이닝 등 다양한 용도에 적합2. 예제 비교로 쉽게 이해하기2-1 .sort() 예제numbers = [3, 1, 4, 2]numbers.sort() # 원본이 정렬됨print(numbers) # ✅ 출력: [1, 2, 3, 4]result = numbers.sort()print(result) # ❌ 출력: Non..