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

news2024/11/16 11:37:44

数据大部分存在于文件当中,所以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.coloradmin.cn/o/656945.html

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

相关文章

简要介绍 | 强化学习:从原理到应用

注1:本文系“简要介绍”系列之一,仅从概念上对强化学习进行非常简要的介绍,不适合用于深入和详细的了解。 注2:"简要介绍"系列的所有创作均使用了AIGC工具辅助 强化学习:从原理到应用 1. 背景介绍 强化学习…

手撕学生管理系统超详解——【c++】

题目要求:设计一个学生成绩管理程序,实现按班级完成对学生成绩信息的录入和修改,并用文件保存。 实现按班级输出学生的成绩单;实现按学号和姓名进行查询,按平均成绩进行排序功能。 问题描述 该程序的目标是提供一个简单且易于使用…

scratch lenet(2): C语言实现图像直方图的计算

scratch lenet(2): C语言实现图像直方图的计算 1. 目的 用 C 语言实现 uint8 类型图像(单通道)的直方图计算。不涉及直方图均衡化。 2. 什么是图像直方图 2.1 统计得到图像直方图 通常是对于单通道的灰度图而言的。像素范围是 [0, 255], 统计每个像…

提高错误日志处理效率!使用Python和钉钉机器人实现自动告警聚合

1、背景 日志是非常重要的信息资源。它们记录了应用程序的运行状态、错误和异常情况,帮助我们了解系统的健康状况以及发现潜在的问题。为了高效地管理和分析日志数据,许多组织采用了Elasticsearch、Logstash和Kibana(ELK)堆栈作为…

Eclipse Krazo(Jakarta MVC)的使用

文章目录 背景Jakarta MVC规范Eclipse Krazo使用前的思考全局配置Controller示例返回View的三种写法View中用到的Model如何设值?View中如何获取Model中的值? 参数校验防止CSRFKrazo是如何实现的呢?如何生成csrf的token?如何校验cs…

开源赋能,决胜未来 — 参加原子全球开源峰会有感

目录 文章目录 目录前言开源决胜未来:闭源摧毁 UNIX,开源成就 Linux开源创新:软硬件协同,共建开源生态 前言 开源原子基金会作为国内首家开源基金会组织,由其主办的首届 “开放原子全球开源峰会” 也是第一次被冠以 “…

干货文:Mac 中 .bash_profile 和 .zshrc 的区别

如果你想在 Mac OS 中配置 MySQL 的环境变量,在 .zshrc 文件中添加如下内容: # 设置 mysql 的路径 export MYSQL_HOME/usr/local/mysql/bin# 将 MYSQL_HOME 添加到 PATH 中 export PATH$HOME/bin:/usr/local/bin:$MYSQL_HOME:$PATH# 解决需要 source 才…

硬件【9】详解二极管钳位电路

文章目录 1 概述1.1 正向钳位电路1.2 偏置正向钳位电路 1 概述 在之前的 二极管限幅电路 一文中,我们学习了二极管限幅电路,该电路可以削掉一部分信号,但不会影响剩余信号。今天,我们将学习另一种基于二极管的电路,该…

搭建环境【2】windows主机和ubuntu互传文件的4种方法

我的ubuntu系统是安装在 VMware 虚拟机中的,两者之间经常要互传文件,下面介绍4种常用的互传文件方法。 1. 共享文件夹方式互传 在虚拟机中需要开启共享文件夹的功能。首先虚拟机中的ubuntu要求是已经开机了的状态,然后进行设置:…

Vue2封装一个全局通知组件并发布到NPM

✍🏼作者:周棋洛,计算机学生 ♉星座:金牛座 🏠主页:点击查看更多 🌐关键:vue2 组件封装 npm发包 文章目录 1. 前言 🍃2. 我为什么要封装通知插件 ❓3. 初始化vue空项目 &…

B047-cms02-高级查询 删除 添加 修改

目录 高级查询页面准备下拉框显示文章类型ArticleController用jstl和el表达式取值展示 高级查询参数ArticleQuery 高级查询页面发送请求导入jquery.jdirk.js在jquery下引用绑定按钮发送请求高级查询sql 绑定删除事件绑定事件拿到标签id值准备模态框来自xmind弹出删除模态框绑定…

matlab不显示子图刻度并调整子图间距

matlab中在使用subplot函数画图时,尤其是做emd分解查看IMF时, 正常画图的代码及结果如下: figure for i 1:size(imf_norm,1)subplot(7,1,i)plot(imf_norm(i,:))ylabel(IMFstring(i)) end其中imf_norm为分解得到的imfs 效果图: …

python里apply用法_Python apply函数的用法

Python编程语言Python 是一种面向对象、解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年。Python语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,它能够把用其他语言制作的…

HDL抽象等级 仿真模型 网表 delay speicfy与sdf

1.HDL 硬件描述语言 抽象分级 HDL这里主要说verilog 在描述硬件电路时分为三个抽象级别 行为级模型:主要用于test bench,着重系统行为和算法,不在于电路实现,不可综合(常用描述有initial,fork/join&#…

【MYSQL】MYSQL应用环境,系统特征,储存引擎,应用框架和索引功能的详细讲解

作者简介: 辭七七,目前大一,正在学习C/C,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: 七七的闲谈 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖&#x1f…

DINO-DETR匈牙利匹配与加噪过程学习记录

今天再来回顾一下DINO中匈牙利匹配与损失函数部分,该部分大致与DETR相似,却又略有不同。 为了查看数据方便,博主将num_query改为20,max_select值也为20。 匈牙利匹配过程 首先是数据送入匈牙利匹配中进行标签匹配过程了。 获取…

qt.qpa.plugin: Could not load the Qt platform plugin “xcb“ in

兄弟们看看是不是这个错: QObject::moveToThread: Current thread (0xe5205f0) is not the objects thread (0xa14d0f0). Cannot move to target thread (0xe5205f0)qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "/xxx/python3.…

Esp32+Blynk实现云端控制LED开灭

目录 环境配置依赖库安装blynk 基础设置 GPIO 点灯实验 环境配置 依赖库安装 参考 blynk 官方快速上手文档 如果要使用 blynk 提供的环境,我们就必须安装对应的库 选择基于 blynk 且适用于 ESP32 的库并安装到 arduino 上: blynk 基础设置 进入官网并且…

Question1:harbor登录成功,推送镜像失败

denied: requested access to the resource is denied 解决方案 查看用户的权限 Harbor 用户角色权限速查 系统级角色: Harbor 系统管理员:“Harbor 系统管理员”拥有最多的权限。除了上述权限外,“Harbor 系统管理员”还可以列出所有项目、…

一种令人拍案叫绝的 ChatGPT 攻击手段!

公众号关注 “GitHubDaily” 设为 “星标”,每天带你逛 GitHub! 最近看到一个非常巧妙的 ChatGPT 攻击手段,跟大家分享一下,也算是做个提醒。 不论你是否懂技术,我都建议你了解一下这种攻击手段,有备无患。…