小编Ana*_*rKi的帖子

在 Python 中读取 parquet 字节对象

我有一个 python 对象,我知道这是加载到该对象的镶木地板文件。(我无法实际从文件中读取它)。

该对象var_1包含b'PAR1\x15\x....1\x00PAR1

当我检查类型时:

type(var_1)
Run Code Online (Sandbox Code Playgroud)

我得到的结果是bytes.

有办法阅读这个吗?说成熊猫数据框?

我尝试过: 1)

from fastparquet import ParquetFile
pf = ParquetFile(var_1)
Run Code Online (Sandbox Code Playgroud)

并得到:

TypeError: a bytes-like object is required, not 'str'
Run Code Online (Sandbox Code Playgroud)

2

import pyarrow.parquet as pq
dataset = pq.ParquetDataset(var_1)
Run Code Online (Sandbox Code Playgroud)

并得到:

TypeError: not a path-like object
Run Code Online (Sandbox Code Playgroud)

注意, How to read a Parquet file into Pandas DataFrame?的解决方案 。即pd.read_parquet(var_1, engine='fastparquet')导致TypeError: a bytes-like object is required, not 'str'

python pandas parquet

14
推荐指数
2
解决办法
2万
查看次数

如何在 python 中重置 CUDA GPU

有没有办法在 python 中重新启动 CUDA GPU?或者释放它以便另一个脚本可以访问它?

\n\n

我有时会在 python 中使用 GPU 时遇到错误,再次访问 GPU 的唯一解决方案是重新启动我的 Jupyter 笔记本。

\n\n

PS:我使用 GPU 来使用 pytorch 进行一些计算。

\n\n

我得到的具体错误是:

\n\n
RuntimeError: CUDA error: device-side assert triggered\n
Run Code Online (Sandbox Code Playgroud)\n\n

我见过https://towardsdatascience.com/cuda-error-device-side-assert-triggered-c6ae1c8fa4c3和许多其他人讨论这个问题。我的主要问题是如何在不重新启动 Jupyter 内核的情况下继续使用 GPU 会话

\n\n

即我想捕获这个错误,我用 try/ except 执行此错误并继续,因为我正在一个接一个地训练多个模型,所以我无法重新启动来解决我的问题。

\n\n

编辑重新启动内核似乎是公认的天真的解决方案,请参阅:

\n\n

- https://forums.fast.ai/t/how-to-free-up-gpu-memory-in-pytorch-0-2-x/9256/2 \n- https://towardsdatascience.com/cuda -error-device-side-assert-triggered-c6ae1c8fa4c3,其中她提到“在 Kaggle 上工作?Here\xe2\x80\x99s 为什么即使按照上述步骤操作,你仍然在挣扎”

\n

python gpu pytorch

9
推荐指数
0
解决办法
6056
查看次数

在python中列表之间映射的最快方法是什么?

我有成对的4个列表a和b与整数值,如list_1a = [1,2,3,...]list_1b = [8,11,15,...].我们的想法是,整数值list_1a现在由整数值表示list_1b,并且相同list_2a,list_2b等等.

现在我有一个final_list包含4个列的列表,其中包含与a列表对应的整数值.我想将值映射final_listb列表中的值.在python中最快的方法是什么?

有没有比使用列表更快的方法?

编辑:

要澄清问题,请采用以下示例:

list_1a = [1,2,3]
list_1b = [8,11,15] 

list_2a = [5,6,7,8]
list_2b = [22,26,30,34]

list_3a = [11,12,13,14,18]
list_3b = [18,12,25,28,30]

list_4a = [51,61,72,82]
list_4b = [73,76,72,94]
Run Code Online (Sandbox Code Playgroud)
  • 请注意,其中一些列表可能包含超过一百万个条目(因此可能存在内存问题)
  • 列表的长度不同
  • 这些列表中的所有整数值对于它们的列表都是唯一的,即list_1a + list_1b永远不会有重复的整数值.

final_listfinal_list_b映射发生后应该看起来像

final_list_a = [[1,6,11,51],[3,6,14,72]]
final_list_b = [[8,26,18,73],[15,26,28,72]]
Run Code Online (Sandbox Code Playgroud)

为了正确看待问题,这个问题适用于数据库应用程序,其中这些"列表"包含自动生成的键值

python map-function

2
推荐指数
1
解决办法
92
查看次数

如何在docker中加速R包安装

假设您要为docker镜像安装以下软件包列表

("jsonlite","dplyr","stringr","tidyr","lubridate",
"knitr","purrr","tm","cba","caret",
"plumber","httr")
Run Code Online (Sandbox Code Playgroud)

安装这些实际上需要大约1个小时!

有关如何加速这样的事情的任何建议?(或者如何防止在每次新图像构建时重新安装?)

边注

我不会像这样从dockerfile安装这些软件包:

RUN Rscript -e "install.packages('stringr')
...
Run Code Online (Sandbox Code Playgroud)

相反,我创建了一个R脚本Requirements.R来安装这些包,并简单地执行:

RUN Rscript Requirements.R
Run Code Online (Sandbox Code Playgroud)

这些不是直接从Dockerfile安装软件包的最佳选择吗?

r docker dockerfile

2
推荐指数
2
解决办法
1196
查看次数

如何只读取存储在python中的大csv文件中的一片数据

我无法将CSV文件中的数据读入内存,因为它太大了,即pandas.read_csv使用pandas无法正常工作.

我只想根据应该适合内存的一些列值来获取数据.使用df可能假设包含CSV中的完整数据的pandas数据帧 ,我会这样做

df.loc[(df['column_name'] == 1)
Run Code Online (Sandbox Code Playgroud)

CSV文件确实包含一个标题,它是有序的,所以我真的不需要使用,column_name但如果必须的话,该列的顺序.

我怎样才能做到这一点?我读了一些关于pyspark的内容,但我不知道这是否有用

python pandas

2
推荐指数
1
解决办法
87
查看次数

标签 统计

python ×4

pandas ×2

docker ×1

dockerfile ×1

gpu ×1

map-function ×1

parquet ×1

pytorch ×1

r ×1