[英]Python Performance concern - Multiple methods reading same Pandas Data Frame from a particular Pickle file
[英]Reading a pickle file (PANDAS Python Data Frame) in R
有沒有一種簡單的方法可以將 Pandas Dataframe 中的 pickle 文件 (.pkl) 讀取到 R 中?
一種可能性是導出到 CSV 並讓 R 讀取 CSV,但這對我來說似乎很麻煩,因為我的數據框相當大。 有沒有更簡單的方法來做到這一點?
謝謝!
正如 russellpierce 在評論中所建議的那樣, Reticulate非常簡單且非常平滑。
install.packages('reticulate')
之后,我從他們的文檔中給出的示例中創建了一個這樣的 Python 腳本。
蟒文件:
import pandas as pd
def read_pickle_file(file):
pickle_data = pd.read_pickle(file)
return pickle_data
然后我的 R 文件看起來像:
require("reticulate")
source_python("pickle_reader.py")
pickle_data <- read_pickle_file("C:/tsa/dataset.pickle")
這給了我之前以pickle格式存儲在R中的所有數據。
你也可以在不離開你的 R 編輯器的情況下在 R 中執行所有這些操作(前提是你的系統 python 可以訪問熊貓)......例如
library(reticulate)
pd <- import("pandas")
pickle_data <- pd$read_pickle("dataset.pickle")
編輯:如果您可以安裝和使用 {reticulate} 包,那么這個答案可能已經過時了。 有關更簡單的路徑,請參閱下面的其他答案。
您可以在 python 中加載泡菜,然后通過 python 包rpy2
(或類似包)將其導出到 R。 完成此操作后,您的數據將存在於鏈接到 python 的 R 會話中。 我懷疑您接下來要做的是使用該會話來調用 R 並將 RDS 保存到文件或 RAM 磁盤。 然后在 RStudio 中,您可以重新讀取該文件。查看 R 包rJython
和rPython
了解可以從 R 觸發 python 命令的方法。
或者,您可以編寫一個簡單的 Python 腳本來在 Python 中加載您的數據(可能使用上面提到的 R 包之一)並將格式化的數據流寫入標准輸出。 然后,對腳本的整個系統調用(包括指定 pickle 的參數)可以用作 R 包data.table
fread
的參數。 或者,如果您想保持標准功能,您可以使用system(..., intern=TRUE)
和read.table
。
像往常一樣,有/許多/方法可以給這只特定的貓剝皮。 基本步驟是:
fread
導出對象)fread
那么您已經完成了)。要添加到上面的答案:您可能需要指向不同的 conda env 才能訪問 Pandas:
use_condaenv("name_of_conda_env", conda = "<<result_of `which conda`>>")
pd <- import('pandas')
df <- pd$read_pickle(paste0(outdir, "df.pkl"))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.