当前位置: 首页 > news >正文

菏泽财富中心网站建设网站建设 完成

菏泽财富中心网站建设,网站建设 完成,实验室网站建设的意义,济南 网站 建设结合 Pandas 使用 SQLite3 实战 让数据分析更高效!用 Pandas 直接读写 SQLite3 数据,告别手动拼接 SQL 语句! 1 环境准备 确保已安装 pandas 和 sqlite3(前者需单独安装,后者是 Python 内置):…

结合 Pandas 使用 SQLite3 实战

让数据分析更高效!用 Pandas 直接读写 SQLite3 数据,告别手动拼接 SQL 语句!


1 环境准备

确保已安装 pandassqlite3(前者需单独安装,后者是 Python 内置):

pip install pandas

2 从 SQLite3 读取数据到 DataFrame

基础用法:读取整个表

import pandas as pd
import sqlite3# 连接到数据库
conn = sqlite3.connect('test.db')# 读取 users 表到 DataFrame
df = pd.read_sql('SELECT * FROM users', conn)
print(df.head())  # 查看前5行数据# 关闭连接
conn.close()

高级用法:筛选和聚合

query = '''SELECT name, AVG(age) as avg_age   -- 计算平均年龄FROM users WHERE age > 20 GROUP BY name
'''
df = pd.read_sql(query, conn)
print(df)

3 将 DataFrame 写入 SQLite3

基本写入(全量覆盖)

# 创建一个示例 DataFrame
data = {'name': ['David', 'Eve'],'age': [28, 32],'email': ['david@test.com', 'eve@test.com']
}
df = pd.DataFrame(data)# 写入到 users 表(全量覆盖)
df.to_sql(name='users',     # 表名con=conn,         # 数据库连接if_exists='replace',  # 如果表存在,直接替换(慎用!)index=False       # 不保存 DataFrame 的索引列
)
conn.commit()

追加数据(增量写入)

df.to_sql(name='users',con=conn,if_exists='append',  # 追加到现有表index=False
)
conn.commit()

4 实战场景:数据清洗 + 入库

假设有一个 CSV 文件 dirty_data.csv,需要清洗后存入 SQLite3:

id,name,age,email
1, Alice,30,alice@example.com
2, Bob , invalid, bob@example.com  # 错误年龄
3, Charlie,35,missing_email

步骤 1:用 Pandas 清洗数据

# 读取 CSV
df = pd.read_csv('dirty_data.csv')# 清洗操作
df['age'] = pd.to_numeric(df['age'], errors='coerce')  # 无效年龄转为 NaN
df = df.dropna(subset=['age'])                        # 删除年龄无效的行
df['email'] = df['email'].fillna('unknown')            # 填充缺失邮箱
df['name'] = df['name'].str.strip()                   # 去除名字前后空格print(df)

步骤 2:写入数据库

with sqlite3.connect('test.db') as conn:# 写入新表 cleaned_usersdf.to_sql('cleaned_users', conn, index=False, if_exists='replace')# 验证写入结果df_check = pd.read_sql('SELECT * FROM cleaned_users', conn)print(df_check)

5 性能优化:分块写入大数据

处理超大型数据时(如 10 万行),避免一次性加载到内存:

# 分块读取 CSV(每次读 1 万行)
chunk_iter = pd.read_csv('big_data.csv', chunksize=1000)with sqlite3.connect('big_db.db') as conn:for chunk in chunk_iter:# 对每个块做简单处理chunk['timestamp'] = pd.to_datetime(chunk['timestamp'])# 分块写入数据库chunk.to_sql(name='big_table',con=conn,if_exists='append',  # 追加模式index=False)print("全部写入完成!")

6 高级技巧:直接执行 SQL 操作

Pandas 虽然强大,但复杂查询仍需直接操作 SQL:

# 创建临时 DataFrame
df = pd.DataFrame({'product': ['A', 'B', 'C'], 'price': [10, 200, 150]})# 写入 products 表
df.to_sql('products', conn, index=False, if_exists='replace')# 执行复杂查询(连接 users 和 orders 表)
query = '''SELECT u.name,p.product,p.priceFROM users uJOIN orders o ON u.id = o.user_idJOIN products p ON o.product_id = p.idWHERE p.price > 10
'''
result_df = pd.read_sql(query, conn)
print(result_df)

7 避坑指南

数据类型匹配问题

  • SQLite 默认所有列为 TEXT,但 Pandas 会自动推断类型。
  • 写入时可用 dtype 参数手动指定类型:
    df.to_sql('table', conn, dtype={'age': 'INTEGER', 'price': 'REAL'})
    
  1. 主键和索引

    • Pandas 不会自动创建主键或索引,需提前用 SQL 语句定义表结构。
  2. 性能瓶颈

    • 写入大量数据时,关闭事务自动提交可提速:
      with conn:df.to_sql(...)  # 使用上下文管理器自动提交
      

8 总结

通过 Pandas + SQLite3 的组合,你可以:
快速导入/导出数据:告别手动拼接 SQL 语句。
无缝衔接数据分析:清洗、计算、可视化后直接入库。
处理海量数据:分块读写避免内存爆炸。

下一步建议

  • 尝试将 Excel/CSV 文件自动同步到 SQLite3 数据库。
  • 学习使用 sqlalchemy 库增强 SQL 操作能力。
http://www.dtcms.com/a/467137.html

相关文章:

  • 软考-系统架构设计师 软件架构复用详细讲解
  • 3.3 可靠数据传输的原理
  • 软考-系统架构设计师 特定领域软件体系结构详细讲解
  • 网站需要备案才能建设吗风云办公ppt模板网站
  • 计量基础知识(计量管理员)
  • 从 0 到 1,用 Chainlit 打造「多文件知识库对话」Web 应用
  • 深圳网站建设网站制作网站推广资阳自贡网站建设平台
  • 个人网站建立步骤网店美工设计
  • wordpress 全站pjax263企业邮箱管理员登录入口
  • 17-查看单片机的栈地址使用情况
  • 军事网站大全军事网做网站去哪里找
  • python学习之文件的基础操作
  • 为什么需要延迟双删,两次删除的原因是什么?
  • 深圳电商网络网站建设wordpress 备案号插件
  • 局网站建设管理制度财务软件免费
  • 怎么看网站是dede模板心理网站 模版
  • 如何制作响应式网站网站建设费应开具互联网信息服务吗
  • 企业级BPM低代码平台JMEEV深度解析
  • 网站建设关键词布局wordpress全部文件夹
  • 东城区网站排名seo如何进行网络营销服务创新
  • Arbess从入门到实战(10) - 使用Arbess+GitLab实现.Net 项目自动化部署
  • 重庆帝一网络网站建设专家南京房地产网站
  • 《K8s集群多节点部署》(Ubuntu22.04)
  • 做网站赚大钱php手机网站建设
  • 如何把网站主关键词做到百度首页中国重大新闻
  • 免费做app和网站的平台有哪些最贵网站建设多少钱
  • 36kr网站用什么做的wordpress开发人力资源
  • 亚马逊网站建设网站seo关键词排名优化
  • 软件下载网站如何履行北京外包公司都有哪些
  • 网站建设中出现的错误代码自己建立一个网页