我有一个熊猫数据集,我想知道是否可以将它包含在字典中,以将其与其他东西一起作为泡菜导出。
即
import pandas as pd
import pickle
raw_data = {'first_name': ['Jason', 'Molly', 'Tina', 'Jake', 'Amy'],
'last_name': ['Miller', 'Jacobson', 'Ali', 'Milner', 'Cooze'],
'age': [42, 52, 36, 24, 73],
'preTestScore': [4, 24, 31, 2, 3],
'postTestScore': [25, 94, 57, 62, 70]}
df = pd.DataFrame(raw_data, columns = ['first_name', 'last_name', 'age', 'preTestScore', 'postTestScore'])
dict_ = {"other_stuff": "blabla", "pandas": df}
pickle.dump(dict, "shared.pkl")
当我打开它时,使用:
fp = open("shared.pkl",'rb')
shared = pickle.load(fp)
df= shared["pandas"]
熊猫datframe为空。知道这是否可行或怎么办?
编辑:
我知道我可以简单地对熊猫对象本身df.to_pickle("shared.pkl")
进行腌制,但是我有兴趣将其他内容与熊猫文档一起保存在一个方便的腌制文件中。
答案 0 :(得分:1)
您可以使用以下命令保存词典
with open('shared.pkl', 'wb') as f:
pickle.dump(dict, f)
然后用
打开with open('shared.pkl', 'rb') as f:
dict_ = pickle.load(f)
答案 1 :(得分:1)
pickle.dump命令需要一个文件对象,而不是文件名。
from io import BytesIO
outfile = BytesIO()
pickle.dump(dict_, outfile)
outfile.seek(0)
unpickled_dict = pickle.read(outfile)
unpickled_dict['pandas'].info()
将为您提供预期的输出。带有普通数据类型的数据框应该没问题。
答案 2 :(得分:1)
您可以将其保存到列表或字典中,然后像平常一样将其腌制。
也不要使用诸如dict或list之类的内置名称作为名称。不良的风格并导致意外事件。
import pandas as pd
import pickle
raw_data = {'first_name': ['Jason', 'Molly', 'Tina', 'Jake', 'Amy'],
'last_name': ['Miller', 'Jacobson', 'Ali', 'Milner', 'Cooze'],
'age': [42, 52, 36, 24, 73],
'preTestScore': [4, 24, 31, 2, 3],
'postTestScore': [25, 94, 57, 62, 70]}
df = pd.DataFrame(raw_data, columns = ['first_name', 'last_name', 'age', 'preTestScore', 'postTestScore'])
data = {"other_stuff": "blabla", "pandas": df}
file_write = open(b"resources/shared.pkl","wb")
pickle.dump(data, file_write)
file_write.close()
file_read = open(b"resources/shared.pkl","rb")
shared = pickle.load(file_read)
file_read.close()
print(shared["other_stuff"])
print(shared["pandas"])
blabla
first_name last_name age preTestScore postTestScore
0 Jason Miller 42 4 25
1 Molly Jacobson 52 24 94
2 Tina Ali 36 31 57
3 Jake Milner 24 2 62
4 Amy Cooze 73 3 70