Python:如何像 R 中那样进行基本数据操作?

2023-12-26

我使用 R 已经有好几年了。 R在数据操作方面非常强大。我正在学习 python,我想知道如何使用 python 操作数据。基本上我的数据集被组织为数据框(例如 Excel 表)。我想知道(通过示例)如何使用 python 完成这种基本的数据操作任务?

1. Read csv file like the following

var1, var2, var3
1, 2, 3
4, 5, 6 
7, 8, 9

2. Subset data where var2 in ('5', '8') 
3. Make a new variable --> var4 = var3 * 3
4. Transpose this data
5. Write to csv file

非常感谢您的帮助和榜样!


我不同意 Cpfohl 的评论——也许是因为我自己也经历过同样的转变,而且天真的用户如何能够更准确地表述问题并不明显。这实际上是目前一个活跃的开发问题,许多项目都提出了不重叠的功能(例如在金融时间序列世界、大脑成像世界等)。

简而言之,Python 用于处理表格和 csv 文件的各种库对于初学者来说并不像 R 中的库那么好,这是不同级别的用户多年的最终结果。

首先,看一下 numpy 中的重新排列。这可能是常用库中最接近的数据结构,类似于 R 中的 data.frame。特别是,您可能会喜欢 numpy.recfromcsv 函数,尽管它不如例如 numpy.recfromcsv 函数那样强大。 R 中的 read.csv(例如,它会遇到非标准行结尾问题)。

对重新数组进行子集化很容易(尽管创建一个重新数组可能看起来很笨拙):

import numpy as np
mydata = np.array([(1.0, 2), (3.0, 4)], dtype=[('x', float), ('y', int)])
mydata = mydata.view(np.recarray)
mydata[mydata.x > 2]

修改 numpy 数组的性质通常不像 R 中那么容易,但是 R 中有一个很好的函数库numpy.lib.recfunctions(必须单独导入 - 它不附带一个简单的import numpy)。特别是,请查看rec_append_fields 和rec_join 以添加列。

Numpy 有一个函数numpy.savetxt它将接受一个简单的分隔符参数来创建 csv 文件,但遗憾的是它不会打印列名称(至少,我没有看到它)。因此,虽然我不鼓励添加不必要的库(因为它提供的可移植代码较少),但您可能只使用matplotlib.mlab.rec2csv(您还会在该社区中找到一些其他类似的函数 - numpy 社区正在尝试将通常有用的数字/数据操作代码移植到 numpy 本身。谁知道,也许您会这样做?)。

你会注意到我没有回答(4),因为这没有意义。表不会在 Python 或 R 中转置。数组或矩阵可以。因此,将数据转换为具有统一数据类型的数组,然后只需使用 myarray.T 即可。

您可能会关注的其他工具包括 pytables(以及相关的包 carray)、larry、dataarray、pandas 和 tabular。特别是,dataarray 正在寻求创建一个用于标记数据数组的系统,该系统将作为其他项目的基础(我认为也有来自 larry 和 pandas 项目的开发人员)。

希望有帮助! 达夫

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python:如何像 R 中那样进行基本数据操作? 的相关文章

随机推荐