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…...
华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...
html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...
并发编程 - go版
1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...
数据库——redis
一、Redis 介绍 1. 概述 Redis(Remote Dictionary Server)是一个开源的、高性能的内存键值数据库系统,具有以下核心特点: 内存存储架构:数据主要存储在内存中,提供微秒级的读写响应 多数据结构支持&…...
Mac flutter环境搭建
一、下载flutter sdk 制作 Android 应用 | Flutter 中文文档 - Flutter 中文开发者网站 - Flutter 1、查看mac电脑处理器选择sdk 2、解压 unzip ~/Downloads/flutter_macos_arm64_3.32.2-stable.zip \ -d ~/development/ 3、添加环境变量 命令行打开配置环境变量文件 ope…...
GAN模式奔溃的探讨论文综述(一)
简介 简介:今天带来一篇关于GAN的,对于模式奔溃的一个探讨的一个问题,帮助大家更好的解决训练中遇到的一个难题。 论文题目:An in-depth review and analysis of mode collapse in GAN 期刊:Machine Learning 链接:...
