pandas---文件读取与存储(csv、hdf、json、excel、sql)

数据大部分存在于文件当中,所以pandas会支持复杂的IO操作,pandas的API支持众多的文件格

式,如CSV、SQL、EXCEL、JSON、 HDF5。

1. csv文件

pandas.read_csv(filepath_or_buffer, sep =',', usecols )

filepath_or_buffer:文件路径     sep :分隔符,默认用","隔开     usecols:指定读取的列名,列表形式

# 读取文件,并且指定只获取'open', 'close'指标
data = pd.read_csv("./data/stock_day.csv", usecols=['open', 'close'])
       open close
02-27 23.53 24.16
02-26 22.80 23.53
02-11 22.88 22.82
02-22 22.25 22.28
02-14 21.49 21.92

DataFrame.to_csv(path_or_buf=None, sep=', ’, columns=None, header=True, index=True,

mode='w', encoding=None)

path_or_buf:文件路径        sep:分隔符,默认用","隔开         columns:选择需要的列索引

header:boolean or list of string,default True,是否写进列索引值

index:是否写进行索引          mode:'w'  重写,'a' 追加

# 选取10行数据保存,便于观察数据
data[:10].to_csv("./data/test.csv", columns=['open'])
# 读取,查看结果
pd.read_csv("./data/test.csv")
  Unnamed: 0   open
0      02-27   23.53
1      02-26   22.80
2      02-23   22.88
3      02-22   22.25
4      02-14   21.49
5      02-13   21.40
6      02-12   20.70
7      02-09   21.20
8      02-08   21.79
9      02-07   22.69

会发现将索引存入到文件当中,变成单独的一列数据。如果需要删除,可以指定index参数,删除

原来的文件,重新保存一次。

# index:存储不会讲索引值变成一列数据
data[:10].to_csv("./data/test.csv", columns=['open'], index=False)

2. hdf文件

HDF5文件的读取和存储需要指定一个键,值为要存储的DataFrame。

pandas.read_hdf(path_or_buf,key =None,** kwargs)

从h5文件当中读取数据

path_or_buffer:文件路径          key:读取的键            return:Theselected object

DataFrame.to_hdf(path_or_buf, key, *\kwargs*)

day_close = pd.read_hdf("./data/day_close.h5")

如果读取的时候出现以下错误:

需要安装tables模块避免不能读取HDF5文件:

pip install tables

存储文件:

day_close.to_hdf("./data/test.h5", key="day_close")

再次读取的时候, 需要指定键的名字:

new_close = pd.read_hdf("./data/test.h5", key="day_close")

注意:优先选择使用HDF5文件存储。

HDF5在存储的时候支持压缩,使用的方式是blosc,这个是速度最快的也是pandas默认支持的;

使用压缩可以提磁盘利用率,节省空间;

HDF5还是跨平台的,可以轻松迁移到hadoop 上面。

3. json文件

JSON是我们常用的一种数据交换格式,前面在前后端的交互经常用到,也会在存储的时候选择这

种格式。所以我们需要知道Pandas如何进行读取和存储JSON格式。

pandas.read_json(path_or_buf=None, orient=None, typ='frame', lines=False)

将JSON格式准换成默认的Pandas DataFrame格式。

orient : string,Indication of expected JSON string format。

     'split':dict like {index -> [index], columns -> [columns], data -> [values]}

      split 将索引总结到索引,列名到列名,数据到数据。将三部分都分开了。

     'records':list like [{column -> value}, ... , {column -> value}]

      records 以 columns:values 的形式输出

     'index':dict like {index -> {column -> value}}

      index 以 index:{columns:values}... 的形式输出

     'columns':dict like {column -> {index -> value}},默认该格式

      colums 以 columns:{index:values} 的形式输出

     'values' : just the values array values,直接输出值。

lines:boolean,default False,按照每行读取json对象。

typ:default ‘frame’, 指定转换成的对象类型series或者dataframe。

读取:

json_read = pd.read_json("./data/Sarcasm_Headlines_Dataset.json", orient="records", lines=True)

DataFrame.to_json(path_or_buf=None, orient=None, lines=False)

将Pandas对象存储为json格式,path_or_buf=None:文件地址

orient:存储的json形式,{‘split’,’records’,’index’,’columns’,’values’}

lines:一个对象存储为一行

# 存储文件
json_read.to_json("./data/test.json", orient='records')
# 修改lines参数为True
json_read.to_json("./data/test.json", orient='records', lines=True)

4. Excel文件

data = np.random.randint(0, 50, size=(10, 5))
df = pd.DataFrame(data=data, columns=['Python', 'Qianfeng', 'Java', 'NumPy', 'Pandas'])
df

df1.to_excel:保存到excel文件

# sheet_name: 工作表名称
# header: 是否保存列索引
# index: 是否保存行索引
df.to_excel('data.xlsx', sheet_name='Sheet1', header=True, index=False)

 df1.read_excel:读取excel

pd.read_excel('data.xlsx', sheet_name='Sheet1', header=[0, 1])

# sheet_name=0: 读取第1个工作表
# names : 替换原来的列名
pd.read_excel('data.xlsx', sheet_name=0, header=0, names=list('ABCDE'))

 5. sql文件

需要安装pymysql:

​pip install pymysql -i https://pypi.tuna.tsinghua.edu.cn/simple

需要安装sqlalchemy:

sqlalchemy是Python语言下的数据库引擎库

pip install sqlalchemy -i https://pypi.tuna.tsinghua.edu.cn/simple
from sqlalchemy import create_engine
# 创建数据
data = np.random.randint(0, 150, size=(150, 3))
df = pd.DataFrame(data=data, columns=['Python', 'Pandas', 'PyTorch'])
df.head()

 先连接MySQL:

# mysql+pymysql :数据库类型+驱动
# root:root :数据库用户名和密码
# localhost:3306 :数据库地址和MySQL端口
# db: 数据库名
conn = create_engine('mysql+pymysql://root:root@localhost:3306/db')

 df.to_sql保存到MySQL:

df.to_sql(
    name='score',  # 数据库中表名字
    con=conn,  # 数据库连接对象
    index=False,  # 是否保存行索引
    if_exists='append'  # 如果表存在,则追加数据
)

 pd.read_sql:从MySQL中加载数据

pd.read_sql(
    sql='select * from score',  # sql语句
    con=conn,   # 数据库连接对象
#     index_col='Python'  # 指定行索引的列名
)

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

组合式API - provide和inject、Vue3小案例【Vue3】

组合式API - provide和inject 作用和场景:顶层组件向任意的底层组件传递数据和方法,实现跨层组件通信 跨层传递普通数据 顶层组件通过provide函数提供数据 provide(key, 顶层组件中的数据)底层组件通过inject函数获取数据 const message inject(key) …

Windows 禁止 IE 自动跳转 Edge「整合方案」

前言 IE 已经合并进 Edge 浏览器,IE「正式入土」 RESPECT ​ 昨晚,公司系统更新(Edge)结束后,原本正常运行的 RPA 全部下线,原因如图: ​ 早上起来,又是充满希望的一天,于…

走进人工智能|机器学习 解码未来的科技革命

前言: 机器学习的发展为我们提供了更智能、高效和便捷的科技产品和服务,可以改善我们的生活和工作方式。 文章目录 序言背景解码未来的科技革命技术支持应用领域程序员如何学总结 序言 机器学习是一种人工智能领域的技术,它让计算机通过数据自动地学习和…

微服务SpringCloudday1 认识微服务与服务注册(Eureka与nacos)

SpringCloud01 1.认识微服务 随着互联网行业的发展,对服务的要求也越来越高,服务架构也从单体架构逐渐演变为现在流行的微服务架构。这些架构之间有怎样的差别呢? 1.0.学习目标 了解微服务架构的优缺点 1.1.单体架构 单体架构&#xff…

基于立创EDA的原理图设计

目录 学习目标 一、开发中原理图的作用 1.1 原理图 1.2 产品开发原理图设计阶段 1.3 原理图中的具体工作内容 二、 立创EDA软件使用基础 2.1 立创EDA电路设计软件 2.2 新建工程 2.3 设计元件原理图封装 三、项目实战(单片机最小系统) 学习目标…

异常的介绍与处理

目录 第七章 异常 1.异常 2.处理方法 2.1.try-catch 2.2.多重catch块 2.3.finally 2.4.throw 与 throws 2.5.程序分析 3.自定义异常 内容仅供学习交流,如有问题请留言或私信!!!!! 有空您就点点赞…

Vue中如何进行颜色选择与取色器?

Vue中如何进行颜色选择与取色器? 在Web开发中,颜色选择器是一个非常常见的功能。在Vue.js中,我们可以使用现成的颜色选择器组件或者自己编写一个颜色选择器组件。本文将介绍如何在Vue.js中实现颜色选择器组件和取色器功能。 颜色选择器组件 …

Elasticsearch 基本使用(一)写入数据

写入数据 查询索引状态写入一条数据查询数据按id查询一条 类比 getById不按id查 写入官方测试数据 查询索引状态 GET _cat/indices写入一条数据 PUT/POST my_index/_doc/1 {"k": "test key" }my_index:索引名 _doc:文档类型&#…

大数据hadoop生态技术简介

Hadoop 生态是指围绕 Hadoop 大数据处理平台形成的一系列开源软件和工具,用于支持大规模数据处理、存储、管理、分析和可视化等应用场景。暂时将其核心技术分为9类: 数据采集技术框架: Flume、Logstash、FileBeat;Sqoop和Datax&…

防雷抗浪涌插排插座推荐,同为科技(TOWE)防雷桌面PDU安全可靠

同为科技TOWE双排防雷抗浪涌桌面PDU插座 随着夏天天气越来越热,强对流天气增多,雷雨天气频发。在雷电季节,通常影响家用电器安全的主要原因是由于雷电感应的侵入,特别是对绝缘强度低、过电压耐受力差的微电子产品影响甚大。而所谓…

新手Maven入门(一)

Mavenue介绍和基本概念 一、什么是Maven1.1 Maven的组成1.2 安装和配置Maven1.2.1 下载1.2.2 安装 二、Maven 的基本概念2.1 标准的目录结构2.2 POM 大纲2.2.1 pom大纲展示 2.3 构件2.3.1 什么是maven的构建 2.4 POM 文件的用例2.5 GAV 坐标 三、依赖 一、什么是Maven Maven 是…

DNDC模型建模方法及在土壤碳储量、温室气体排放、农田减排、土地变化、气候变化

由于全球变暖、大气中温室气体浓度逐年增加等问题的出现,“双碳”行动特别是碳中和已经在世界范围形成广泛影响。国家领导人在多次重要会议上讲到,要把“双碳”纳入经济社会发展和生态文明建设整体布局。同时,提到要把减污降碳协同增效作为促…

el-element-admin实现双路由菜单

需求: 1、输入用户名登录企业级菜单 2、点击企业级菜单中的首页,右边显示项目列表,点击某一行跳转到项目级菜单 注意: 企业级菜单和项目级菜单,后端分别给接口 具体实施: 1、点击面包靴首页的时候设置标记…

关于nginx,正向代理和反向代理是什么意思

为什么要使用nginx 很多公司会用到nginx做代理服务器,为什么用nginx,tomcat服务器不行吗? tomcat缺点:并发量小,用户使用的少 nginx:高并发,高性能,cpu、内存等资源消耗却非常低&…

06-揭开神秘面纱:Golang method的魅力解析

📃个人主页:个人主页 🔥系列专栏:Golang基础 💬Go(又称Golang)是由Google开发的开源编程语言。它结合了静态类型的安全性和动态语言的灵活性,拥有高效的并发编程能力和简洁的语法。G…

安卓高通机型的基带移植 修改 编译的相关 增加信号 支持5G等【二】

安卓高通机型的基带移植 修改 编译的相关 增加信号 支持5G等【一】 前面分享了这篇帖子,很多友友希望更新下新机型的基带替换方法。今天对其中做一些补充说明。由于安卓机型跨版本幅度较大。有的机型从出厂安卓8有可能官方目前已经更新到安卓12 13等等。所以任何的教…

Visual ChatGPT原理解读——大模型论文阅读笔记四

论文:https://arxiv.org/abs/2303.04671 代码:https://github.com/microsoft/TaskMatrix 一. 整体框架 如图所示,用户上传一张黄花的图像并输入一个复杂的语言指令“请根据该图像的预测深度生成一朵红花,然后逐步使其像卡通一样”…

5G技术学习——5GNR帧结构和空口资源

这里写目录标题 4G时域定义:资源划分 5GNR中时域 频域 与空域资源 循环前缀CP:背景和原理5G帧结构:基本框架5G slot分类 5G 频域资源5G频域资源基本概念信道带宽与传输带宽BWP定义及其应用场景 4G 时域定义: 帧:10ms,…

【使用Hystrix实现服务容错和熔断】—— 每天一点小知识

💧 使用 H y s t r i x 实现服务容错和熔断 \color{#FF1493}{使用Hystrix实现服务容错和熔断} 使用Hystrix实现服务容错和熔断💧 🌷 仰望天空,妳我亦是行人.✨ 🦄 个人主页——微风撞见云的博客&#x1f390…

SpringBoot + Vue前后端分离项目实战 || 一:Vue前端设计

文章目录 环境配置开发工具下载Vue前端模板前端项目启动前端说明及修改修改导航栏自定义菜单与子菜单增加导航标签功能 前端数据格式 B站视频讲解:2023全网最简单但实用的SpringBootVue前后端分离项目实战 不想看视频可浏览此文章笔记,比较详细 环境配置…