Python库pandas之六
Python库pandas之六
- 输入/输出
- read_sql
- 函数
- 应用实列
输入/输出
read_sql
函数
词法:pandas.read_sql(sql, con, index_col=None, coerce_float=True, params=None, parse_dates=None, columns=None, chunksize=None, dtype_backend=<no_default>, dtype=None)
read_sql将SQL查询,或数据库表读入DataFrame。
该函数是 read_sql_table 和 read_sql_query 的便捷包装器(为了向后兼容)。它将根据提供的输入委托给特定的函数。 SQL 查询将被路由到 read_sql_query,而数据库表名称将被路由到 read_sql_table。
参数说明
-
sql,该参数类型是字符串,或SQLAlchemy Selectable
要执行的 SQL 查询,或table名。 -
con,该参数类型是ADBC连接, SQLAlchemy连接, 字符串, 或sqlite3连接
ADBC 提供具有主机支持的高性能 I/O。
SQLAlchemy 可以使用该库支持的任何数据库。
如果是 DBAPI2 对象,则仅支持 sqlite3。
用户负责 ADBC 连接和 SQLAlchemy连接的引擎处置和连接关闭; 字符串连接会自动关闭。 -
index_col,该参数类型是字符串,或字符串list, 是可选的, 默认值为None
index_col参数是设置为索引的列(MultiIndex)。 -
coerce_float,该参数类型是bool, 默认值为True
尝试将非字符串、非数字对象(如decimal.Decimal)的值转换为浮点型,这对于SQL结果集很有用。 -
params,该参数类型是list, 元组tuple,或字典dict, 是可选的, 默认值为None
要传递给数据库的参数列表。用于传递参数的语法取决于数据库驱动程序。检查数据库驱动程序文档,了解支持的语法样式中。 -
parse_dates,该参数类型是list,或字典dict, 默认值为None
parse_dates指定要作为日期分析的列名称表。
{column_name: format} 的字典,在解析字符串时间时,其中format与strftime 兼容,或者,在解析整数时间戳的情况下,是 (D, s, ns, ms, us) 之一。
{column_name: arg} 的字典,其中arg是一个字典,对应于pandas.to_datetime() 的关键字参数,对于没有本机日期时间支持的数据库(例如 SQLite)特别有用。 -
columns,该参数类型是list, 默认值为None
从SQL表中选择的列名表。 -
chunksize,该参数类型是int, 默认值为None
如果在read_sql调用中指定该参数,则read_sql返回一个迭代器,其中chunksize是每个块中包含的行数。 -
dtype_backend,该参数类型是{‘numpy_nullable’, ‘pyarrow’}, 默认值为‘numpy_nullable’
应用于生成的DataFrame的后端数据类型。行为如下:
“numpy_nullable”:返回支持 nullable-dtype 的 DataFrame。
“pyarrow”:返回 pyarrow 支持的可为空的 ArrowDtype的DataFrame。 -
dtype,该参数类型是Type名称,或列字典
数据或列的数据类型。例如。 np.float64 或 {‘a’: np.float64, ‘b’: np.int32, ‘c’: ‘Int64’}。如果传递的是表而不是查询,则忽略该参数。
应用实列
下列产生sqlite3数据库的table, 读csv数据加入数据库,读取数据库table
import sys
import sqlite3 as sqlite
import pandas as pd
from sqlalchemy import create_engineDB_NAME = "test_db.db"class sqlite3_db():def __init__(self, dbn):self.dbn = dbndef db_connect(self):self.con = sqlite.connect(self.dbn)def db_query(self):self.con = sqlite.connect(self.dbn)cur = self.con.cursor()rows = cur.execute("SELECT * FROM peoples")print(rows.fetchall())def db_add_records(self, df):self.db_connect()data = []for rec in df.values:col_vals = list(rec.flatten())col_names = ("name", "age", "salary")d1 = dict(zip(col_names, col_vals))data.append(d1)self.con.executemany("INSERT INTO peoples VALUES(:name, :age, :salary)", data)self.con.commit()self.con.close()def db_create_table(self):self.db_connect()cur = self.con.execute("CREATE TABLE peoples(name, age, salary)")data = ({"name":"john", "age":35, "salary":5000.90}, {"name":"Tom", "age":36, "salary":4984},)self.con.executemany("INSERT INTO peoples VALUES(:name, :age, :salary)", data)self.con.commit()self.con.close()if __name__ == "__main__":if len(sys.argv) == 1:sql = sqlite3_db(DB_NAME)sql.db_query() elif sys.argv[1] == '0':sql = sqlite3_db(DB_NAME)sql.db_create_table()elif sys.argv[1] == '1':cnx = create_engine('sqlite:///test_db.db').connect()df = pd.read_sql_table('peoples', cnx)print(df)elif sys.argv[1] == '2':con = sqlite.connect('test_db.db')sql = "SELECT * FROM peoples"df = pd.read_sql(sql, con)print(df)l = list(df['age'])print("type: {0}".format(type(l)))elif sys.argv[1] == '3':if len(sys.argv) == 3:df = pd.read_csv(sys.argv[2])sql = sqlite3_db(DB_NAME)sql.db_add_records(df)print(df)
文件data_csv_1.txt的内容
name, age, salary
Helen, 25, 40000
Michael, 20, 20000
程序运行的屏幕输出
C:\>python sqlite3_1.py 0
C:\>python sqlite3_1.py 1name age salary
0 john 35 5000.9
1 Tom 36 4984.0C:\>python sqlite3_1.py 2name age salary
0 john 35 5000.9
1 Tom 36 4984.0
type: <class 'list'>C:\>python sqlite3_1.py 3 data_csv_1.txtname age salary
0 Helen 25 40000
1 Michael 20 20000C:\>python sqlite3_1.py 2name age salary
0 john 35 5000.9
1 Tom 36 4984.0
2 Helen 25 40000.0
3 Michael 20 20000.0
type: <class 'list'>
下列例子说明如何使用chunksize
import sys
import sqlite3 as sqlite
import pandas as pd
from sqlalchemy import create_engineDB_NAME = "test_db.db"class sqlite3_db():def __init__(self, dbn):self.dbn = dbndef db_sql_records(self, csv_fn):df = pd.read_csv(csv_fn)self.con = sqlite.connect(self.dbn)data = []for rec in df.values:col_vals = list(rec.flatten())col_names = ("name", "age", "salary")d1 = dict(zip(col_names, col_vals))data.append(d1)cur = self.con.execute("CREATE TABLE peoples(name, age, salary)")self.con.executemany("INSERT INTO peoples VALUES(:name, :age, :salary)", data)self.con.commit()sql = "SELECT * FROM peoples"df = pd.read_sql(sql, self.con)print(df)it = pd.read_sql(sql, self.con, chunksize = 2)for x in it:print()print(x)self.con.close()if __name__ == "__main__":sql = sqlite3_db(DB_NAME)if len(sys.argv) > 1:sql.db_sql_records(sys.argv[1])
程序运行的屏幕输出
C:\>python sqlite3_2.py data_csv_1.txtname age salary
0 Helen 25 40000
1 Michael 20 20000
2 Tom 35 40000
3 John 30 20000
4 Jeff 25 50000
5 Johnson 350 120000name age salary
0 Helen 25 40000
1 Michael 20 20000name age salary
0 Tom 35 40000
1 John 30 20000name age salary
0 Jeff 25 50000
1 Johnson 350 120000
文件data_csv_1.txt的内容
name, age, salary
Helen, 25, 40000
Michael, 20, 20000
Tom, 35, 40000
John, 30, 20000
Jeff, 25, 50000
Johnson, 350, 120000相关文章:
Python库pandas之六
Python库pandas之六 输入/输出read_sql函数应用实列 输入/输出 read_sql 函数 词法:pandas.read_sql(sql, con, index_colNone, coerce_floatTrue, paramsNone, parse_datesNone, columnsNone, chunksizeNone, dtype_backend<no_default>, dtypeNone) rea…...
[C++]使用纯opencv部署yolov11-seg实例分割onnx模型
【算法介绍】 在C中使用纯OpenCV部署YOLOv11-seg进行实例分割是一项具有挑战性的任务,因为YOLOv11通常是用PyTorch等深度学习框架实现的,而OpenCV本身并不直接支持加载和运行PyTorch模型。然而,可以通过一些间接的方法来实现这一目标&#x…...
PAT甲级-1122 Hamiltonian Cycle
题目 题目大意 给定一个图和几组顶点,判断每组顶点是否能构成一个哈密顿回路。 知识点 哈密顿回路满足几点要求:构成一个封闭环,并且经过所有顶点,每个顶点经过一次。 即满足第一个顶点值和最后一个顶点值相等;只有…...
Java 插入排序
插入排序(Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。以下是插入排序的Java实现: public class Inserti…...
随机掉落的项目足迹:Vue3中vite.config.ts配置代理服务器解决跨域问题
跨域问题产生的原因:浏览器同源策略 后面的通俗解释小标题下的内容是便于大家理解同源策略和跨域问题。 而同源策略和跨域问题这两个小标题下的内容虽然比较专业不容易阅读,但是还是建议大家花时间理解并记忆,因为这是前端面试中的常考点。…...
C++笔记之标准库和boost库中bind占位符_1的写法差异
C++笔记之标准库和boost库中bind占位符_1的写法差异 code review! 参考博文: C++新特性探究(十五):bind 在C++中,_1 和 std::placeholders::_1 都用于表示占位符,但它们有不同的上下文:...
二分查找
文章目录 1.算法思想2.代码实现(1)循环实现(2)递归实现 3.题目练习 1.算法思想 二分查找(折半查找):有序数组(升序或降序,可以不连续),每次缩小一半的区间。 时间复杂度:O(log n) 空间复杂度:循环实现是 O(1)…...
关注、取关、Redis实现共同关注、 博客推送与分页查询
Resourceprivate StringRedisTemplate stringRedisTemplate;Resourceprivate IUserService userService;Overridepublic Result follow(Long followUserId, Boolean isFollow) {//1.获取登陆的用户Long userId UserHolder.getUser().getId();//1.判断是关注还是取关if(isFollo…...
专业高清录屏软件!Mirillis Action v4.40 解锁版下载,小白看了都会的安装方法
Mirillis Action!(暗神屏幕录制软件)专业高清屏幕录像软件,被誉为游戏视频三大神器之一。这款屏幕录制软件和游戏录制软件,拥有三大硬件加速技术,支持以超高清视频画质录制桌面和实况直播,超清视频画质&…...
胤娲科技:AI重塑会议——灵动未来,会议新纪元
你是否曾经历过这样的会议场景:会议纪要不准确,人名张冠李戴;错过会议,却无从回顾关键内容;会议效率低下,时间白白流逝? 这些问题仿佛成了现代会议的“顽疾”。然而,随着AI技术的飞速…...
Python画笔案例-080 绘制 颜色亮度测试
1、绘制 颜色亮度测试 通过 python 的turtle 库绘制 颜色亮度测试,如下图: 2、实现代码 绘制 颜色亮度测试,以下为实现代码: """颜色亮度测试.py本程序需要coloradd模块支持,请在cmd窗口,即命令提示符下输入pip install coloradd进行安装。本程序演示brig…...
MATLAB工具库:数据统计分析工具MvCAT、MhAST等
MATLAB工具库:数据统计分析工具MvCAT、MhAST等 工具1:Multivariate Copula Analysis Toolbox (MvCAT)MATLAB中运行 工具2:Multi-hazard Scenario Analysis Toolbox (MhAST) 参考 The University of California-软件库-Software 工具1…...
角色动画——RootMotion全解
1. Unity(2022)的应用 由Animtor组件控制 在Animation Clip下可进行详细设置 官方文档的介绍(Animation选项卡 - Unity 手册) 上述动画类型在Rag选项卡中设置: Rig 选项卡上的设置定义了 Unity 如何将变形体映射到导入模型中的网格,以便能够将其动画化。 对于人…...
加密软件的桌面管理系统有什么?
1、IT资源管控:协助企事业单位管理者对内部计算机、宽带、打印、外围设备等IT资源进行管控,提高IT资源利用率。 2、规范内网行为:规范员工的计算机使用行为、网络使用行为、IT资产使用行为、设备使用行为 等,令员工活动在合规范围…...
【stm32】寄存器(stm32技术手册下载链接)
1、资料下载 RM0008_STM32F101xx,STM32F102xx,STM32F103xx,STM32F105xx和STM32F107xx单片机参考手册 | STMCU中文官网 2、代码 设置PB7 //设置PB7 #define SDA_IN() {GPIOB->CRL&0X0FFFFFFF;GPIOB->CRL|(u32)8<<28;} #define SDA_OUT() {GPIOB->…...
django的路由分发
前言: 在前面我们已经学习了基础的Django了,今天我们将继续学习,我们今天学习的是路由分发: 路由分发是Web框架中的一个核心概念,它指的是将不同的URL请求映射到对应的处理函数(视图)的过程。…...
《贪吃蛇小游戏 1.0》源码
好久不见! 终于搞好了简易版贪吃蛇小游戏(C语言版),邀请你来玩一下~ 目录 Snake.h Snake.c test.c Snake.h #include<stdio.h> #include<windows.h> #include<stdbool.h> #include<stdlib.h> #inclu…...
初入网络学习第一篇
引言 不磨磨唧唧,跟着学就好了,这个是我个人整理的学习内容梳理,学完百分百有收获。 1、使用的网络平台:eNSP 下载方法以及内容参考这篇文章 华为 eNSP 模拟器安装教程(内含下载地址)_ensp下载-CSDN博客https://b…...
(项目管理系列课程)项目规划阶段:项目范围管理-收集需求
在项目管理中,“规划过程组”是指一系列旨在定义和细化项目目标、规划如何达到这些目标并管理项目工作的过程。在这个过程中,“收集需求”是一个至关重要的活动,它涉及到识别和记录项目干系人的需求,以确保项目最终能够满足干系人…...
SQl注入文件上传及sqli-labs第七关less-7
Sql注入文件上传 1、sql知识基础 secure_file_priv 参数 secure_file_priv 为 NULL 时,表示限制mysqld不允许导入或导出。 secure_file_priv 为 /tmp 时,表示限制mysqld只能在/tmp目录中执行导入导出,其他目录不能导出导入。 secure_fil…...
XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...
Android15默认授权浮窗权限
我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...
【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...
蓝桥杯 冶炼金属
原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
API网关Kong的鉴权与限流:高并发场景下的核心实践
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中,API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关,Kong凭借其插件化架构…...
【免费数据】2005-2019年我国272个地级市的旅游竞争力多指标数据(33个指标)
旅游业是一个城市的重要产业构成。旅游竞争力是一个城市竞争力的重要构成部分。一个城市的旅游竞争力反映了其在旅游市场竞争中的比较优势。 今日我们分享的是2005-2019年我国272个地级市的旅游竞争力多指标数据!该数据集源自2025年4月发表于《地理学报》的论文成果…...
