更复杂的 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 高效导入数据

聚合函数

  • SUMAVGMAXMIN
    • 每次只接收一个列名
      SELECT AVG(tmax) FROM weather;
      
  • COUNT
    • 获取满足条件的行数
      SELECT COUNT(*) FROM [table_name];
      
    • 获取列中唯一值数量
      SELECT COUNT(DISTINCT [column_names]) FROM [table_name];
      
使用 pandas 高效导入数据

GROUP BY

  • 聚合函数默认计算单个汇总统计量
  • 使用 GROUP BY 按类别汇总
  • 记得同时选择分组所用的列!
/* 按行政区统计管道报修数量 */
SELECT borough, 
       COUNT(*) 
  FROM hpd311calls
 WHERE complaint_type = 'PLUMBING'
 GROUP BY borough;
使用 pandas 高效导入数据

分组计数

# Create database engine
engine = create_engine("sqlite:///data.db")

# Write query to get plumbing call counts by borough query = """SELECT borough, COUNT(*) FROM hpd311calls WHERE complaint_type = 'PLUMBING' GROUP BY borough;"""
# Query databse and create dataframe 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 高效导入数据

Passons à la pratique !

使用 pandas 高效导入数据

Preparing Video For Download...