더 복잡한 SQL 쿼리

pandas로 빠르고 간편한 데이터 적재

Amany Mahfouz

Instructor

DISTINCT 값 가져오기

  • 한 개 이상 열의 고유값을 SELECT DISTINCT로 가져옵니다
  • 구문:
    SELECT DISTINCT [column names] FROM [table];
    
  • 중복 행 제거:
    SELECT DISTINCT * FROM [table];
    
/* 고유한 도로 주소와 자치구 가져오기 */
SELECT DISTINCT incident_address, 
       borough
  FROM hpd311calls;
pandas로 빠르고 간편한 데이터 적재

집계 함수

  • 기술 통계를 위해 데이터베이스를 직접 질의합니다
  • 집계 함수
    • SUM
    • AVG
    • MAX
    • MIN
    • COUNT
pandas로 빠르고 간편한 데이터 적재

집계 함수

  • SUM, AVG, MAX, MIN
    • 각 함수는 단일 열 이름을 받습니다
      SELECT AVG(tmax) FROM weather;
      
  • COUNT
    • 조건을 만족하는 행 수 가져오기
      SELECT COUNT(*) FROM [table_name];
      
    • 열의 고유값 개수 가져오기
      SELECT COUNT(DISTINCT [column_names]) FROM [table_name];
      
pandas로 빠르고 간편한 데이터 적재

GROUP BY

  • 집계 함수는 기본적으로 단일 요약 통계를 계산합니다
  • GROUP BY로 범주별 요약
  • 그룹화한 열도 함께 선택해야 합니다
/* 자치구별 배관(PLUMBING) 민원 건수 */
SELECT borough, 
       COUNT(*) 
  FROM hpd311calls
 WHERE complaint_type = 'PLUMBING'
 GROUP BY borough;
pandas로 빠르고 간편한 데이터 적재

그룹별 개수 세기

# 데이터베이스 엔진 생성
engine = create_engine("sqlite:///data.db")

# 자치구별 배관 민원 건수 쿼리 작성 query = """SELECT borough, COUNT(*) FROM hpd311calls WHERE complaint_type = 'PLUMBING' GROUP BY borough;"""
# 데이터베이스 질의 후 데이터프레임 생성 plumbing_call_counts = pd.read_sql(query, engine)
pandas로 빠르고 간편한 데이터 적재

그룹별 개수 세기

print(plumbing_call_counts)
         borough  COUNT(*)
0          BRONX      2016
1       BROOKLYN      2702
2      MANHATTAN      1413
3         QUEENS       808
4  STATEN ISLAND       178
pandas로 빠르고 간편한 데이터 적재

연습해 봅시다!

pandas로 빠르고 간편한 데이터 적재

Preparing Video For Download...