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

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 函数 词法&#xff1a;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进行实例分割是一项具有挑战性的任务&#xff0c;因为YOLOv11通常是用PyTorch等深度学习框架实现的&#xff0c;而OpenCV本身并不直接支持加载和运行PyTorch模型。然而&#xff0c;可以通过一些间接的方法来实现这一目标&#x…...

PAT甲级-1122 Hamiltonian Cycle

题目 题目大意 给定一个图和几组顶点&#xff0c;判断每组顶点是否能构成一个哈密顿回路。 知识点 哈密顿回路满足几点要求&#xff1a;构成一个封闭环&#xff0c;并且经过所有顶点&#xff0c;每个顶点经过一次。 即满足第一个顶点值和最后一个顶点值相等&#xff1b;只有…...

Java 插入排序

插入排序&#xff08;Insertion Sort&#xff09;是一种简单直观的排序算法。它的工作原理是通过构建有序序列&#xff0c;对于未排序数据&#xff0c;在已排序序列中从后向前扫描&#xff0c;找到相应位置并插入。以下是插入排序的Java实现&#xff1a; public class Inserti…...

随机掉落的项目足迹:Vue3中vite.config.ts配置代理服务器解决跨域问题

跨域问题产生的原因&#xff1a;浏览器同源策略 后面的通俗解释小标题下的内容是便于大家理解同源策略和跨域问题。 而同源策略和跨域问题这两个小标题下的内容虽然比较专业不容易阅读&#xff0c;但是还是建议大家花时间理解并记忆&#xff0c;因为这是前端面试中的常考点。…...

C++笔记之标准库和boost库中bind占位符_1的写法差异

C++笔记之标准库和boost库中bind占位符_1的写法差异 code review! 参考博文: C++新特性探究(十五):bind 在C++中,_1 和 std::placeholders::_1 都用于表示占位符,但它们有不同的上下文:...

二分查找

文章目录 1.算法思想2.代码实现(1)循环实现(2)递归实现 3.题目练习 1.算法思想 二分查找(折半查找)&#xff1a;有序数组(升序或降序&#xff0c;可以不连续)&#xff0c;每次缩小一半的区间。 时间复杂度&#xff1a;O(log n) 空间复杂度&#xff1a;循环实现是 O(1)&#xf…...

关注、取关、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!&#xff08;暗神屏幕录制软件&#xff09;专业高清屏幕录像软件&#xff0c;被誉为游戏视频三大神器之一。这款屏幕录制软件和游戏录制软件&#xff0c;拥有三大硬件加速技术&#xff0c;支持以超高清视频画质录制桌面和实况直播&#xff0c;超清视频画质&…...

胤娲科技:AI重塑会议——灵动未来,会议新纪元

你是否曾经历过这样的会议场景&#xff1a;会议纪要不准确&#xff0c;人名张冠李戴&#xff1b;错过会议&#xff0c;却无从回顾关键内容&#xff1b;会议效率低下&#xff0c;时间白白流逝&#xff1f; 这些问题仿佛成了现代会议的“顽疾”。然而&#xff0c;随着AI技术的飞速…...

Python画笔案例-080 绘制 颜色亮度测试

1、绘制 颜色亮度测试 通过 python 的turtle 库绘制 颜色亮度测试,如下图: 2、实现代码 绘制 颜色亮度测试,以下为实现代码: """颜色亮度测试.py本程序需要coloradd模块支持,请在cmd窗口,即命令提示符下输入pip install coloradd进行安装。本程序演示brig…...

MATLAB工具库:数据统计分析工具MvCAT、MhAST等

MATLAB工具库&#xff1a;数据统计分析工具MvCAT、MhAST等 工具1&#xff1a;Multivariate Copula Analysis Toolbox (MvCAT)MATLAB中运行 工具2&#xff1a;Multi-hazard Scenario Analysis Toolbox (MhAST) 参考 The University of California-软件库-Software 工具1&#xf…...

角色动画——RootMotion全解

1. Unity(2022)的应用 由Animtor组件控制 在Animation Clip下可进行详细设置 ​ 官方文档的介绍(Animation选项卡 - Unity 手册) 上述动画类型在Rag选项卡中设置: Rig 选项卡上的设置定义了 Unity 如何将变形体映射到导入模型中的网格&#xff0c;以便能够将其动画化。 对于人…...

加密软件的桌面管理系统有什么?

1、IT资源管控&#xff1a;协助企事业单位管理者对内部计算机、宽带、打印、外围设备等IT资源进行管控&#xff0c;提高IT资源利用率。 2、规范内网行为&#xff1a;规范员工的计算机使用行为、网络使用行为、IT资产使用行为、设备使用行为 等&#xff0c;令员工活动在合规范围…...

【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的路由分发

前言&#xff1a; 在前面我们已经学习了基础的Django了&#xff0c;今天我们将继续学习&#xff0c;我们今天学习的是路由分发&#xff1a; 路由分发是Web框架中的一个核心概念&#xff0c;它指的是将不同的URL请求映射到对应的处理函数&#xff08;视图&#xff09;的过程。…...

《贪吃蛇小游戏 1.0》源码

好久不见&#xff01; 终于搞好了简易版贪吃蛇小游戏&#xff08;C语言版&#xff09;&#xff0c;邀请你来玩一下~ 目录 Snake.h Snake.c test.c Snake.h #include<stdio.h> #include<windows.h> #include<stdbool.h> #include<stdlib.h> #inclu…...

初入网络学习第一篇

引言 不磨磨唧唧&#xff0c;跟着学就好了&#xff0c;这个是我个人整理的学习内容梳理&#xff0c;学完百分百有收获。 1、使用的网络平台:eNSP 下载方法以及内容参考这篇文章 华为 eNSP 模拟器安装教程&#xff08;内含下载地址&#xff09;_ensp下载-CSDN博客https://b…...

(项目管理系列课程)项目规划阶段:项目范围管理-收集需求

在项目管理中&#xff0c;“规划过程组”是指一系列旨在定义和细化项目目标、规划如何达到这些目标并管理项目工作的过程。在这个过程中&#xff0c;“收集需求”是一个至关重要的活动&#xff0c;它涉及到识别和记录项目干系人的需求&#xff0c;以确保项目最终能够满足干系人…...

SQl注入文件上传及sqli-labs第七关less-7

Sql注入文件上传 1、sql知识基础 secure_file_priv 参数 secure_file_priv 为 NULL 时&#xff0c;表示限制mysqld不允许导入或导出。 secure_file_priv 为 /tmp 时&#xff0c;表示限制mysqld只能在/tmp目录中执行导入导出&#xff0c;其他目录不能导出导入。 secure_fil…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)

2025年能源电力系统与流体力学国际会议&#xff08;EPSFD 2025&#xff09;将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会&#xff0c;EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述&#xff0c;后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作&#xff0c;其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

ESP32读取DHT11温湿度数据

芯片&#xff1a;ESP32 环境&#xff1a;Arduino 一、安装DHT11传感器库 红框的库&#xff0c;别安装错了 二、代码 注意&#xff0c;DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架&#xff0c;支持"一次开发&#xff0c;多端部署"&#xff0c;可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务&#xff0c;为旅游应用带来&#xf…...

Python如何给视频添加音频和字幕

在Python中&#xff0c;给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加&#xff0c;包括必要的代码示例和详细解释。 环境准备 在开始之前&#xff0c;需要安装以下Python库&#xff1a;…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

【HTTP三个基础问题】

面试官您好&#xff01;HTTP是超文本传输协议&#xff0c;是互联网上客户端和服务器之间传输超文本数据&#xff08;比如文字、图片、音频、视频等&#xff09;的核心协议&#xff0c;当前互联网应用最广泛的版本是HTTP1.1&#xff0c;它基于经典的C/S模型&#xff0c;也就是客…...

使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度

文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...

R语言速释制剂QBD解决方案之三

本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...

Java数值运算常见陷阱与规避方法

整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...