用 SQL 查询优化导入

使用 pandas 高效导入数据

Amany Mahfouz

Instructor

选择列(SELECT)

  • SELECT [column names] FROM [table name];
  • 示例:
    SELECT date, tavg 
    FROM weather;
    
使用 pandas 高效导入数据

WHERE 子句

  • 使用 WHERE 子句选择性导入记录
    SELECT [column_names] 
      FROM [table_name] 
     WHERE [condition];
    
使用 pandas 高效导入数据

按数值筛选

  • 用数学运算符比较数字
    • =
    • >>=
    • <<=
    • <>(不等于)
    • 示例:
      SELECT * 
      FROM weather 
      WHERE tmax > 32;
      
使用 pandas 高效导入数据

按文本筛选

  • = 加目标文本精确匹配字符串
  • 字符串匹配区分大小写
  • 示例:
    /* 获取布鲁克林事件记录 */
    SELECT * 
    FROM hpd311calls
    WHERE borough = 'BROOKLYN';
    
使用 pandas 高效导入数据

SQL 与 pandas

# 载入库
import pandas as pd
from sqlalchemy import create_engine

# 创建数据库引擎 engine = create_engine("sqlite:///data.db")
# 编写查询:获取布鲁克林的记录 query = """SELECT * FROM hpd311calls WHERE borough = 'BROOKLYN';"""
# 查询数据库 brooklyn_calls = pd.read_sql(query, engine)
print(brookyn_calls.borough.unique())
['BROOKLYN']
使用 pandas 高效导入数据

组合条件:AND

  • 带有 ANDWHERE 返回满足所有条件的记录
# 编写查询:获取布朗克斯的管道相关记录
and_query = """SELECT * 
                 FROM hpd311calls 
                WHERE borough = 'BRONX' 
                  AND complaint_type = 'PLUMBING';"""

# 获取布朗克斯的管道问题来电 bx_plumbing_calls = pd.read_sql(and_query, engine) # 查看记录数 print(bx_plumbing_calls.shape)
(2016, 8)
使用 pandas 高效导入数据

组合条件:OR

  • 带有 ORWHERE 返回满足任一条件的记录
# 编写查询:获取渗水或管道相关记录
or_query = """SELECT * 
                FROM hpd311calls 
               WHERE complaint_type = 'WATER LEAK'
                  OR complaint_type = 'PLUMBING';"""

# 获取管道或渗水相关来电 leaks_or_plumbing = pd.read_sql(or_query, engine) # 查看记录数 print(leaks_or_plumbing.shape)
(10684, 8)
使用 pandas 高效导入数据

Vamos praticar!

使用 pandas 高效导入数据

Preparing Video For Download...