python panads读取保存数据

学习目标

  • 能够使用Pandas读写文件中的数据

  • 知道Pandas读取数据时常用参数index_col、parse_dates、sheet_name、index的作用和用法

  • 知道Pandas和MySQL数据库进行读写交互的方法

1 读写文件

常用读写文件函数清单【查表】无需记忆

文件格式读取函数写入函数
xlsxpd.read_exceldf.to_excel
xlspd.read_exceldf.to_excel
csv 逗号分割pd.read_csvdf.to_csv
tsv \t分割pd.read_csvdf.to_csv
jsonpd.read_jsonto_json
htmlpd.read_htmldf.to_html
sqlpd.read_sqldf.to_sql

1.1 Excel文件

保存数据:

import pandas as pd#  1、定义一个列表嵌套的数据,作为DataFrame表格数据
list_data = [[1, '张三', '1999-3-10', 18],[2, '李四', '2002-3-10', 15],[3, '王五', '1990-3-10', 33],[4, '隔壁老王', '1983-3-10', 40]
]# 2、将以上的列表数据转为DataFrame
df = pd.DataFrame(data=list_data, columns=['id', 'name', 'birthday', 'age'])# 3、保存数据到excel
# sheet_name:表名
# index:是否保存df行索引值
# header:是否保存df列名
#sep= 可以指定分隔符
df.to_excel('test1.xls', sheet_name='student', index=False, header=True)
df.to_excel('test2.xlsx',sheet_name='student',index=True,header=True)

读取数据

# 4、读取Excel数据
student1 = pd.read_excel('test1.xlsx')
print(student1)
print('------------------------')
#index_col:读取excel文件时,将excel中原来的行索引继续当成行索引,默认读取的列名是:Unnamed: 0
#index_col:如果不指定行索引,则又会在df前边加新的行索引
student2= pd.read_excel('test2.xlsx',index_col='Unnamed: 0')
print(student2)

1.2 CSV文件

  • 在CSV文件中,对于每一行,各列采用逗号,分隔;使用\n换行符换行

  • 除了逗号,还可以使用其他类型的分隔符,比如TSV文件,使用制表符\t作为分隔符

  • CSV是数据协作和共享的首选格式,因为可以使用excel工具打开

  • 保存数据

import pandas as pd#  1、定义一个列表嵌套的数据,作为DataFrame表格数据
data = [[1, '张三', '1999-3-10', 18],[2, '李四', '2002-3-10', 15],[3, '王五', '1990-3-10', 33],[4, '老王', '1983-3-10', 40]
]# 2、将以上的列表数据转为DataFrame
df = pd.DataFrame(data=data, columns=['id', 'name', 'birthday', 'age'])
print(df)# 3、将df写入csv文件,使用默认分隔符逗号
#  写行索引,写表头(列名)
df.to_csv('test1.csv', index=True,header=True)#  不行索引,写表头(列名)
df.to_csv('test2.csv', index=False,header=True)# 4、将df写入csv文件,使用指定分隔符
df.to_csv('test3.csv', index=False,header=True,sep='#')# 5、将df写入tsv文件,使用指定分隔符为\t
df.to_csv('test4.tsv', index=False,header=True,sep='\t')

读取数据

# 读取csv文件
# index_col:通过列下标或列名指定某列为索引
# parse_dates: 将指定列解析为日期时间类型, 通过列下标或列名指定列
df2 = pd.read_csv('test1.csv', index_col=['Unnamed: 0'], parse_dates=['birthday'])
print(df2)
stdf2.info()# 读取csv文件,如果文件的分隔符不是逗号,则需要用参数sep执行你文件的分隔符
df2 = pd.read_csv('test3.csv',sep='#')
print(df2)# 输出结果如下id      name   birthday  age
0   1      张三 1999-03-10   18
1   2      李四 2002-03-10   15
2   3      王五 1990-03-10   33
3   4  隔壁老王 1983-03-10   40
<class 'pandas.core.frame.DataFrame'>
Int64Index: 4 entries, 0 to 3
Data columns (total 4 columns):#   Column    Non-Null Count  Dtype         
---  ------    --------------  -----         0   id        4 non-null      int64         1   name      4 non-null      object        2   birthday  4 non-null      datetime64[ns]3   age       4 non-null      int64         
dtypes: datetime64[ns](1), int64(2), object(1)
memory usage: 160.0+ bytesUnnamed: 0  id      name  age
birthday                                 
1999-03-10           0   1      张三   18
2002-03-10           1   2      李四   15
1990-03-10           2   3      王五   33
1983-03-10           3   4  隔壁老王   40
DatetimeIndex(['1999-03-10', '2002-03-10', '1990-03-10', '1983-03-10'], dtype='datetime64[ns]', name='birthday', freq=None)

2 读写数据库

如果想利用pandas和MySQL数据库进行交互,需要先安装与数据库交互所需要的pymysqlsqlalchemy python包

虚拟机的python解析器已经安装好这两个包,无需重复安装

pip install pymysql

pip install sqlalchemy

2.1 保存数据

  • 准备要写入数据库的数据

import pandas as pd#  1、定义一个列表嵌套的数据,作为DataFrame表格数据
data = [[1, '张三', '1999-3-10', 18],[2, '李四', '2002-3-10', 15],[3, '王五', '1990-3-10', 33],[4, '老王', '1983-3-10', 40]
]# 2、将以上的列表数据转为DataFrame
df = pd.DataFrame(data=data, columns=['id', 'name', 'birthday', 'age'])
print(df)# 输出结果如下id      name   birthday  age
0   1      张三  1999-3-10   18
1   2      李四  2002-3-10   15
2   3      王五  1990-3-10   33
3   4  隔壁老王  1983-3-10   40

创建数据库操作引擎对象并指定数据库

# 导入sqlalchemy的数据库引擎
from sqlalchemy import create_engine# 创建数据库引擎,传入url规则的字符串,test数据库必须存在,否则报错
engine = create_engine('mysql+pymysql://root:123456@192.168.88.100:3306/test?charset=utf8')# mysql+pymysql://root:123456@192.168.88.100:3306/test?charset=utf8
# mysql 表示数据库类型
# pymysql 表示python操作数据库的包
# root:123456 表示数据库的账号和密码,用冒号连接
# 192.168.88.100:3306/test 表示数据库的ip和端口,以及名叫test的数据库
# charset=utf8 规定编码格式

将数据写入MySQL数据库

# 导入sqlalchemy的数据库引擎
from sqlalchemy import create_engine# 创建数据库引擎,传入url规则的字符串,test数据库必须存在,否则报错
engine = create_engine('mysql+pymysql://root:123456@192.168.88.100:3306/test?charset=utf8')# mysql+pymysql://root:123456@192.168.88.100:3306/test?charset=utf8
# mysql 表示数据库类型
# pymysql 表示python操作数据库的包
# root:123456 表示数据库的账号和密码,用冒号连接
# 192.168.88.100:3306/test 表示数据库的ip和端口,以及名叫test的数据库
# charset=utf8 规定编码格式

2.2 读取数据

  • 指定表名, 指定列名

  • # sql:读取的表名
    # con:数据库交互引擎对象
    # columns:读取的列名
    student = pd.read_sql(sql='student', con=engine, columns=['id', 'name'])
    print(student)
    # pd.read_sql_table('student', con=engine, columns=['id', 'name'])

    使用SQL语句获取数据

  • # sql:传入sql语句
    # con:数据库交互引擎对象
    student = pd.read_sql(sql='select name,age from student where age > 20', con=engine)
    print(student)pd.read_sql_query(sql='select name,age from student where age > 20', con=engine)
    print(student)

    总结

    请对下面的内容 有印象、能找到、能理解、能看懂

  • 写文件方法df.to_csv/excel('xxx.csv/xls')

  • pd.read_csv/excel()读取文件,常用参数如下

    • index_col 指定索引列

      • index_col = [1] 列下标指定为索引

      • index_col = ['col_name'] 列名指定为索引

    • parse_dates 对指定列解析为时间日期类型

      • 将指定的列解析为时间日期类型

        • parse_dates=[1]通过列下标解析该列为时间日期类型

        • parse_dates=['col_name']通过列名解析该列为时间日期类型

      • parse_dates=True将df的索引解析为时间日期类型

    • pd.read_csv('xxx.tsv', sep='\t') 指定字符分隔符为\t读取tsv文件

  • Pandas和MySQL进行交互(读写)

# 需要安装 pip istall pymysql
# 需要安装 pip istall sqlalchemy
# 导入sqlalchemy的数据库引擎
from sqlalchemy import create_engine# 创建数据库引擎,传入url规则的字符串
engine = create_engine('mysql+pymysql://root:123456@192.168.88.100:3306/test?charset=utf8')
# mysql+pymysql://root:123456@192.168.88.100:3306/test?charset=utf8
# mysql 表示数据库类型
# pymysql 表示python操作数据库的包
# root:123456 表示数据库的账号和密码,用冒号连接
# 192.168.88.100:3306/test 表示数据库的ip和端口,以及名叫test的数据库
# charset=utf8 规定编码格式# df.to_sql()方法将df数据快速写入数据库, 表不存在时会自动创建
df.to_sql(name='student', con=engine, index=False, if_exists='append')
# name:数据表的名称
# con:数据库交互引擎对象
# index=False: 表示不将索引保存到数据表中
# if_exists: 数据写入方式, append->追加写入 replace->覆盖写入# sql:读取的表名
# con:数据库交互引擎对象
# columns:读取的列名
student = pd.read_sql(sql='student', con=engine, columns=['id', 'name'])
print(student)
# pd.read_sql_table('student', con=engine, columns=['id', 'name'])# sql:传入sql语句
# con:数据库交互引擎对象
student = pd.read_sql(sql='select * from student where age > 20', con=engine)
print(student)
# pd.read_sql_query(sql='select * from student where age > 20', con=engine)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/24357.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SOLIDWORKS工艺软件 慧德敏学

SOLIDWORKS工艺软件功能介绍 1、快速制作工艺过程卡 a)调用模板&#xff0c;快速生成工艺过程卡中的工序、设备、简图以及工时等信息&#xff0c;支持“加工工艺卡”和“装配工艺卡”的制作 b)选择文件&#xff0c;快速读取现有工艺过程卡文件&#xff0c;提取数据并显示&…

【问题分析】WMS无焦点窗口的ANR问题 + transientLaunch介绍【Android 14】

问题描述 Monkey跑出的Camera发生ANR的问题&#xff0c;其实跟Camera无关&#xff0c;任意一个App都会在此场景下发生ANR&#xff0c;场景涉及到Launcher的RecentsActivity界面&#xff0c;和transientLaunch相关。 1 log分析 看问题发生的场景&#xff1a; 1、Camera App的…

小学一年级数学上册,我终于学完了

目录 一、背景二、过程1.我对课程中的一些知识的思考2.我对于产品的思考3.我对自己儿子与知识产品结合的思考4.产品反馈的那些有意思的数据 三、总结 一、背景 简约而不简单&#xff0c;即是曾经的再现&#xff0c;也是未来的延伸&#xff0c;未来已来&#xff0c;就在脚下。 …

公司面试题总结(一)

1.说说你对盒子模型的理解&#xff0c;如何切换 当对一个文档进行布局的时候&#xff0c;浏览器的渲染引擎会根据标准之一的 CSS 基础框盒模型&#xff0c; 将所有元素表示为一个个矩形的盒子 • content&#xff0c;即实际内容&#xff0c;显示文本和图像 • boreder&am…

export 和 export default 的区别

在 JavaScript 中&#xff0c;export 和 export default 都是用于导出模块中的内容的关键字&#xff0c;但它们有一些区别&#xff1a; export: export 关键字用于导出多个变量、函数或对象。可以一次导出多个内容&#xff0c;并且在导入时需要使用对应的名称。例如&#xff1a…

qmt量化交易策略小白学习笔记第18期【qmt编程之获取对应周期的北向南向数据--方式2:原生python】

qmt编程之获取对应周期的北向南向数据 qmt更加详细的教程方法&#xff0c;会持续慢慢梳理。 也可找寻博主的历史文章&#xff0c;搜索关键词查看解决方案 &#xff01; 获取对应周期的北向南向数据 提示 该数据通过get_market_data_ex接口获取获取历史数据前需要先用downl…

增加强制索引依然慢

版本: 阿里云RDS MySQL 8.0.25 线上数据库CPU达到100%, 定位到如下SQL EXPLAIN SELECT ssd.goods_no,ssd.goods_name,ssd.goods_spec,ssd.goods_unit,ssd.create_time,w.warehouse_name,sb.batch_no,swl.warehouse_region_location_name,sc.customer_name AS goodsOwnerName,s…

idm2024最新完美破解版免费下载 idm绿色直装版注册机免费分享 idm永久激活码工具

IDM 2024破解版重新开发了调度程序和MMS协议支持、重新设计和增强的下载引擎、与所有最新浏览器的独特高级集成、改进的工具栏以及大量其他改进和新功能&#xff0c;这一全新的更新&#xff0c;使得IDM下载器更加完美。值得一提的是&#xff0c;它可以借助油猴浏览器的脚本&…

Maven核心功能依赖和构建管理

1.依赖管理和配置 Maven 依赖管理是 Maven 软件中最重要的功能之一。Maven 的依赖管理能够帮助开发人员自动解决软件包依赖问题&#xff0c;使得开发人员能够轻松地将其他开发人员开发的模块或第三方框架集成到自己的应用程序或模块中&#xff0c;避免出现版本冲突和依赖缺失等…

苹果手机618大降价重登销量榜首 红米K70pro为何成京东618国产手机之光

今天的618已经好几天了&#xff0c;很多买有机的已经下单&#xff0c;不出意外苹果15系列手机仍然是最卖座的手机&#xff0c;大家虽然口号喊得很响身体却是诚实的。但令人感到意外的是&#xff0c;今年618国产手机的第一把交椅确实红米K70系列&#xff0c;说好的支持华为呢&am…

45-4 护网溯源 - 溯源相关思路

一、先了解国家的相关法规 根据中华人民共和国网络安全法和刑法相关规定,严禁从事危害网络安全的活动,包括但不限于入侵他人网络、扰乱网络正常功能、窃取网络数据等行为。任何个人和组织都不得以非法方式获取公民个人信息、出售或非法提供个人信息给他人。违反法律规定,给…

如何在手机上恢复误删除的视频?

说到移动设备上的视频恢复&#xff0c;我们仍将揭开4种解决方案供您使用。希望它们对您的案件有所帮助。 众所周知&#xff0c;我们移动设备上的视频应用程序将创建一个缓存文件夹&#xff0c;以在它们永远消失之前临时存储已删除的项目。因此&#xff0c;有许多iPhone / Andr…

C++基础与深度解析 | 模板 | 函数模板 | 类模板与成员函数模板 | concepts | 完美转发 | 模板的其他内容

文章目录 一、函数模板二、类模板与成员函数模板三、Concepts(C20)四、模板相关内容1.数值模板参数与模板模板参数2.别名模板与变长模板3.包展开与折叠表达式4.完美转发与lambda表达式模板5.消除歧义与变量模板 一、函数模板 在C中&#xff0c;函数模板是一种允许你编写可以处理…

iOS 实现蓝牙设备重连的四种方式

文章目录 一、通过identifiers的方式实现重连二、通过UUID的方式实现重连三、通过scan的方式实现重连四、通过didDisconnect后回连实现重连 一、通过identifiers的方式实现重连 /*!* method retrievePeripheralsWithIdentifiers:** param identifiers A list of <code…

java项目使用jsch下载ftp文件

pom <dependency><groupId>com.jcraft</groupId><artifactId>jsch</artifactId><version>0.1.55</version> </dependency>demo1&#xff1a;main方法直接下载 package com.example.controller;import com.jcraft.jsch.*; im…

【mysql】数据报错: incorrect datetime value ‘0000-00-00 00:00:00‘ for column

一、问题原因 时间字段在导入值0000-00-00 00:00:00或者添加 NOT NULL的时间字段时&#xff0c;会往mysql添加0值&#xff0c;此时可能出现此报错。 这是因为当前的MySQL不支持datetime为0&#xff0c;在MySQL5.7版本以上&#xff0c;默认设置sql_mode模式包含NO_ZERO_DATE, N…

基于UrBAN数据集:用声音监测和预测蜜蜂群体的健康状况

蜜蜂在生态平衡中扮演着关键角色&#xff0c;是农业作物和自然生态系统中的重要传粉者。它们不仅生产蜂蜜和蜂蜡&#xff0c;还对许多水果和种子作物产生影响&#xff0c;包括杏仁、柑橘类水果和蓝莓等。蜜蜂群体的健康状况和数量的下降可能对农业产业产生重大影响。全球范围内…

Python爬取城市空气质量数据

Python爬取城市空气质量数据 一、思路分析1、寻找数据接口2、发送请求3、解析数据4、保存数据二、完整代码一、思路分析 目标数据所在的网站是天气后报网站,网址为:www.tianqihoubao.com,需要采集武汉市近十年每天的空气质量数据。先看一下爬取后的数据情况: 1、寻找数据…

2024全国高考作文题解读(文心一言 4.0版本)

新课标I卷 阅读下面的材料&#xff0c;根据要求写作。&#xff08;60分&#xff09; 随着互联网的普及、人工智能的应用&#xff0c;越来越多的问题能很快得到答案。那么&#xff0c;我们的问题是否会越来越少&#xff1f; 以上材料引发了你怎样的联想和思考&#xff1f;请写…

大模型基础——从零实现一个Transformer(1)

一、Transformer模型架构图 主要模块&#xff1a; embedding层&#xff1a; Input/Output Embedding&#xff1a; 将每个标记(token)转换为对应的向量表示。 Positional Encoding&#xff1a;由于没有时序信息&#xff0c;需要额外加入位置编码。 N个 block堆叠: Multi-Head …