【Python】读取rdata类型数据转为csv excel格式文件, 无需安装r语言基于pyreadr+pandas实现数据分析(保姆级注释)

news2024/11/18 9:34:34

目录

    • 环境配置
    • 取得数据名 datas.keys()
    • 取得pandas的DataFrame类型数据
    • 一些数据分析例程供入门同学学习
    • 转化为csv excel格式
      • 所有数据 转化为csv
      • 取前面100行数据 快速测试能否转化csv
      • 取前面100行数据 快速测试能否转化xlsx
    • 完整例程
    • 总结


欢迎关注 『Python』 系列,持续更新中
欢迎关注 『Python』 系列,持续更新中

近期有不少数学专业的同学做统计方向的毕设有咨询,特此整理本文,所以讲的比较细,计算机专业的直接看文末的代码即可。

环境配置

虽然核心是pyreadr库,但是它有不少的前置库,最好是建议你通过我导出的requirement.txt安装所有库

pip install pyreadr

在项目目录下新建一个requirement.txt文件,内容如下:

et-xmlfile==1.1.0
numpy==1.24.2
openpyxl==3.1.2
pandas==2.0.0
pyreadr==0.4.7
python-dateutil==2.8.2
pytz==2023.3
six==1.16.0
tzdata==2023.3

在你的项目下打开cmd(输入cmd后按下回车键即可)
在这里插入图片描述
快速批量安装所有库包,并且版本和我一致(当然最好装在venv虚拟环境中 有需求可以参看我关于venv的博文,无伤大雅)

pip install -r requirements.txt

在这里插入图片描述


## 从文件中读取数据pyreadr.read_r() ```python in_file_path="TCGA_BRCA_expr_raw.RData"#输入文件名 datas = pyreadr.read_r(in_file_path) ```
  • 参数 in_file_path 是你的rdata文件路径,如果和py文件在同一文件夹下,就填写rdata文件名就行了
  • 返回值:<class ‘collections.OrderedDict’>类型数据

取得数据名 datas.keys()

print(datas.keys()) #输出数据名
  • 输出内容:odict_keys([‘BRCA.expr’])
    这里面是一个列表可以存放很多数据,但是我们这个列表恰好只有一个'BRCA.expr'

取得pandas的DataFrame类型数据

df = datas["BRCA.expr"] # 根据数据名得到数据,数据类型是 <class 'pandas.core.frame.DataFrame'>
print(type(df))# <class 'pandas.core.frame.DataFrame'>
print(df) #打印数据展示
  • 这里要根据前面得到的数据名获取df

一些数据分析例程供入门同学学习

df是前文代码得到的数据

col_names = df.columns
print("展示列名\n",col_names)

#展示行名
index_names = df.index
print("展示行名\n",index_names)

# 取前面X行数据
test_df=df.head(10)#取前面10行数据
print("取前面10行数据\n",test_df)#取前面10行数据

# df.iloc方法按照切片取指定X行数据
# 注意:pandas的1.0.0版本后,已经对ix函数进行了升级和重构。   老版本这里不是df.iloc而是df.ix
# 现在都是新版本了,如果你看到 df.ix这种操作也不要惊讶
test_df=df.iloc[0:5, :]  # 使用 iloc 函数 ,切片类似matlab  取得第0-4行,所有列数据
print("df.iloc方法按照切片取指定X行数据\n",test_df)#取指定X行数据   [5 rows x 1222 columns]

# df.loc方法,按照行和列的标签取数据
test_df=df.loc[df.index[0:5], "TCGA.E9.A1N3.01A.12R.A157.07"]  # 取得第0-4行,"TCGA.E9.A1N3.01A.12R.A157.07"这一列的数据,其实就是第一列
print("df.loc方法,按照行和列的标签取数据\n",test_df)

转化为csv excel格式

我的rdata源文件有200+MB大小
导出的csv文件有 400MB+
excel肯定会更大·····
为什么不推荐导出excel呢?转化时间很慢,比csv慢50倍,而且对内存要求大。而且csv文件也一样能用excel办公软件打开。

所有数据 转化为csv

out_file_path="转化后的文件.csv"
print("开始转化")
df.to_csv(out_file_path)
print("转化完成")#这个转化过程比较久,没有出现输出转化完成之前不要动文件,可能因为文件的只读导致文件损坏!!

取前面100行数据 快速测试能否转化csv

#取前面100行数据 快速测试能否转化
out_file_path="转化后的文件.csv"
print("开始转化")
test_df=df.head(100)#取前面100行数据 快速测试能否转化
test_df.to_csv(out_file_path)#如果需要,取前面100行数据 快速测试能否转化
print("转化完成")


取前面100行数据 快速测试能否转化xlsx

# 如果你一定要抓excel,也有解决方案
out_file_path="取前面100行数据转化后的文件.xlsx"
print("开始转化")
test_df=df.head(100)#取前面100行数据 快速测试能否转化
test_df.to_excel(out_file_path)#如果需要,取前面100行数据 快速测试能否转化
print("转化完成")

完整例程

# @Time    : 2023/4/19 8:19
# @Author  : 南黎
# @FileName: 基于pyreadr读入r语言数据转为csv数据.py
import pyreadr
import pandas as pd
in_file_path="TCGA_BRCA_expr_raw.RData"#输入文件名
datas = pyreadr.read_r(in_file_path)
#print(type(datas))# <class 'collections.OrderedDict'>
# print(datas.keys()) #输出数据名 odict_keys(['BRCA.expr']) 本文的数据只有 BRCA.expr 有些文件可能是一个列表 有多个数据项
df = datas["BRCA.expr"] # 根据数据名得到数据,数据类型是 <class 'pandas.core.frame.DataFrame'>
# print(type(df))# <class 'pandas.core.frame.DataFrame'>
# print(df) #打印数据展示

#展示列名
col_names = df.columns
print("展示列名\n",col_names)

#展示行名
index_names = df.index
print("展示行名\n",index_names)

# # 取前面X行数据
# test_df=df.head(10)#取前面10行数据
# print("取前面10行数据\n",test_df)#取前面10行数据

# # df.iloc方法按照切片取指定X行数据
# # 注意:pandas的1.0.0版本后,已经对ix函数进行了升级和重构。   老版本这里不是df.iloc而是df.ix
# # 现在都是新版本了,如果你看到 df.ix这种操作也不要惊讶
# test_df=df.iloc[0:5, :]  # 使用 iloc 函数 ,切片类似matlab  取得第0-4行,所有列数据
# print("df.iloc方法按照切片取指定X行数据\n",test_df)#取指定X行数据   [5 rows x 1222 columns]
#
# # df.loc方法,按照行和列的标签取数据
# test_df=df.loc[df.index[0:5], "TCGA.E9.A1N3.01A.12R.A157.07"]  # 取得第0-4行,"TCGA.E9.A1N3.01A.12R.A157.07"这一列的数据,其实就是第一列
# print("df.loc方法,按照行和列的标签取数据\n",test_df)




# 导出csv文件的流程(为什么不选择excel呢? csv处理数据更快,csv比excel快50倍,数据量太大了这里)
out_file_path="转化后的文件.csv"
print("开始转化")
df.to_csv(out_file_path)
print("转化完成")#这个转化过程比较久,没有出现输出转化完成之前不要动文件,可能因为文件的只读导致文件损坏!!

# #取前面100行数据 快速测试能否转化
# out_file_path="转化后的文件.csv"
# print("开始转化")
# test_df=df.head(100)#取前面100行数据 快速测试能否转化
# test_df.to_csv(out_file_path)#如果需要,取前面100行数据 快速测试能否转化
# print("转化完成")

# # 如果你一定要抓excel,也有解决方案
# out_file_path="取前面100行数据转化后的文件.xlsx"
# print("开始转化")
# test_df=df.head(100)#取前面100行数据 快速测试能否转化
# test_df.to_excel(out_file_path)#如果需要,取前面100行数据 快速测试能否转化
# print("转化完成")



总结

大家喜欢的话,给个👍,点个关注!继续跟大家分享敲代码过程中遇到的问题!

版权声明:

发现你走远了@mzh原创作品,转载必须标注原文链接

Copyright 2022 mzh

Crated:2022-1-10

欢迎关注 『Python』 系列,持续更新中
欢迎关注 『Python』 系列,持续更新中
【Python安装第三方库一行命令永久提高速度】
【使用PyInstaller打包Python文件】
【更多内容敬请期待】


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

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

相关文章

简述AutoGPT原理(提示词)

启动时需要设置三个项目&#xff1a;机器人名字、设定给机器人的角色、要完成的目标。 根据你的设定利用ChatGPT进行下一步的抉择&#xff0c;具体的&#xff0c;实际上归功于提示词&#xff1a; 下面这段提示词在干什么呢&#xff1f; 将设定的名字、角色、目标告诉ChatGPT&…

【U8+】用友U8+对账不平案例及方法总结

【问题需求】 在使用用友U8软件过程中&#xff0c;由于软件涉及到多方面的对账。 所以经常会遇到期初或结账时对账不平。 【经验分享】 在众多对账中&#xff0c; 只有当【总账上下级】&#xff08;即&#xff1a;总账与明细账对账&#xff09;不平的时候&#xff0c; 软件才…

春秋云境:CVE-2022-26965(后台RCE)

目录 一、题目 二、 利用cms主题构造木马 一、题目 介绍&#xff1a; Pluck-CMS-Pluck-4.7.16 后台RCE 进入题目&#xff1a; cms页面 点击admin进行登录&#xff1a; 弱口令admin登录&#xff1a; 成功登录进去&#xff1a; 国产化一下&#xff1a; 选项---选择主题 点击…

漏洞分析丨cve20144113

一、漏洞简述 Microsoft Windows下的 win32k.sys是Windows子系统的内核部分&#xff0c;是一个内核模式设备驱动程序&#xff0c;它包含有窗口管理器、后者控制窗口显示和管理屏幕输出等。如果Windows内核模式驱动程序不正确地处理内存中的对象&#xff0c;则存在一个特权提升…

js对象案例练习

个人名片&#xff1a; &#x1f60a;作者简介&#xff1a;一名大一在校生&#xff0c;web前端开发专业 &#x1f921; 个人主页&#xff1a;python学不会123 &#x1f43c;座右铭&#xff1a;懒惰受到的惩罚不仅仅是自己的失败&#xff0c;还有别人的成功。 &#x1f385;**学习…

SQL Server的日志传送

日志传送和复制 一、前言二、相关术语和定义三、日志传送和复制3.1、在主数据库丢失时从辅助数据库进行复制的要求和过程3.2、使用事务复制进行日志传送3.3、使用合并复制进行日志传送 一、前言 日志传送允许您自动将事务日志备份从主服务器实例上的主数据库发送到单独辅助服务…

思维导图手撕MyBatis源码

文章目录 前置准备通过类加载器读取配置文件流创建sqlSessionFactory建造者模式的使用 打开SqlSession获取Mapper接口对象执行Mapper接口方法 前置准备 既然要读MyBatis的源码&#xff0c;那么我们就要先弄清楚MyBatis的入口在哪。这里我们直接写一个标准的MyBatis使用程序&am…

Node 【Buffer 与 Stream】

文章目录 &#x1f31f;前言&#x1f31f;Buffer&#x1f31f; Buffer结构&#x1f31f; 什么时候用Buffer&#x1f31f; Buffer的转换&#x1f31f; Buffer使用&#x1f31f; 创建Buffer&#x1f31f; 字符串转Buffer&#x1f31f; Buffer转字符串&#x1f31f; 拼接Buffer&am…

微信小程序登录注册页面

// login.js // 获取应用实例 var app getApp() var api require("../../utils/api.js")Page({data: {motto: zhenbei V1.0.0,userInfo: {},hasUserInfo: false,disabled: true,btnstate: default,username: ,password: ,canIUse: wx.canIUse(button.open-type.get…

UE4/5 C++网络服务器编程纪录【零】--准备篇

前言 之前利用业余时间重新复习UE4/5的C开发&#xff0c;闲来无事做了个基于独立服务器的多人在线&#xff08;目前限定客户数量是20人以内&#xff09;DEMO&#xff0c;核心功能在我之前发的B站视频里面有&#xff0c;战斗、动作、交互以及场景演示都有了&#xff0c;有朋友看…

Linux使用:环境变量指南和CPU和GPU利用情况查看

Linux使用&#xff1a;环境变量指南和CPU和GPU利用情况查看 Linux环境变量初始化与对应文件的生效顺序Linux的变量种类设置环境变量直接运行export命令定义变量修改系统环境变量修改用户环境变量修改环境变量配置文件 环境配置文件的区别profile、 bashrc、.bash_profile、 .ba…

函数(有点难,要注重实战)

目录 1. 函数是什么2. C语言中函数的分类2.1 库函数2.1.1 如何学会使用库函数&#xff1f; 2.2 自定义函数 3. 函数的参数3.1 实际参数&#xff08;实参&#xff09;&#xff1a;3.2 形式参数&#xff08;形参&#xff09;&#xff1a; 4. 函数的调用&#xff1a;4.1 传值调用4…

Spark SQL实战(08)-整合Hive

1 整合原理及使用 Apache Spark 是一个快速、可扩展的分布式计算引擎&#xff0c;而 Hive 则是一个数据仓库工具&#xff0c;它提供了数据存储和查询功能。在 Spark 中使用 Hive 可以提高数据处理和查询的效率。 场景 历史原因积累下来的&#xff0c;很多数据原先是采用Hive…

Node内置模块 【url模块与queryString】

文章目录 &#x1f31f;前言&#x1f31f;url 模块&#x1f31f; URL各部分说明&#x1f31f; 将URL字符串转换为对象&#x1f31f; 将对象格式化为URL字符串&#xff1a;url.format(urlObj)&#x1f31f; URL路径处理&#xff1a;url.resolve(from, to) &#x1f31f; querySt…

MySQL-四大类日志

目录 &#x1f341;MySQL日志分为4大类 &#x1f341;错误日志 &#x1f343;修改系统配置 &#x1f341;二进制日志 &#x1f343;查看二进制日志 &#x1f343;删除二进制日志 &#x1f343;暂时停止二进制日志的功能 &#x1f341;事务日志(或称redo日志) &#x1f341;慢查…

SSM整合、环境配置以及详细综合测试(单表查询、多表查询和数据分页、前后端分离、Vue3)

SSM整合、环境配置以及基础综合测试 准备&#xff1a;创建maven项目以及项目框架准备 SSM整合简介 介绍: SSM(SpringSpringMVCMyBatis) 整合&#xff0c;就是三个框架协同开发。Spring整合Mybatis就是将Mybatis核心配置文件当中数据源的配置、事务处理、以及工厂的配置&…

OpenGL入门教程之 深入三角形

一、引言 本教程使用GLEW和GLFW库。  通过本教程&#xff0c;你能轻松的、深入的理解OpenGL如何绘制一个三角形。  如果你不了解OpenGL是什么&#xff0c;可以阅读OpenGL深入理解。 二、基本函数和语句介绍 通过阅读以下的函数&#xff0c;你的大脑里能留下关于OpenGL基本函…

通过CSIG—走进合合信息探讨生成式AI及文档图像处理的前景和价值

一、前言 最近有幸参加了由中国图象图形学学会&#xff08;CSIG&#xff09;主办&#xff0c;合合信息、CSIG文档图像分析与识别专业委员会联合承办的“CSIG企业行——走进合合信息”的分享会&#xff0c;这次活动以“图文智能处理与多场景应用技术展望”为主题&#xff0c;聚…

安全防御第四天:防病毒网关

一、恶意软件 1.按照传播方式分类 &#xff08;1&#xff09;病毒 病毒是一种基于硬件和操作系统的程序&#xff0c;具有感染和破坏能力&#xff0c;这与病毒程序的结构有关。病毒攻击的宿主程序是病毒的栖身地&#xff0c;它是病毒传播的目的地&#xff0c;又是下一次感染的出…

尚融宝21-整合springcloud

目录 一、整合注册中心nacos 二、整合openFeign &#xff08;一&#xff09;准备工作 &#xff08;二&#xff09;导入依赖 &#xff08;三&#xff09;接口的远程调用 &#xff08;四&#xff09;配置超时控制和日志打印 三、整合Sentinel 四、整合gateway服务网关 …