pickle을 사용하여 다른 데이터 세트를 통해 생성하는 몇 개의 큰 데이터 세트를 저장하려고합니다. 덤핑하는 동안 오류는 발생하지 않지만 이러한 데이터 세트를로드하려고하면 피클이 eof 오류로 종료됩니다. 다음은 데이터 집합을 저장하기 위해 실행하는 코드입니다.Pickle이 데이터 프레임을 저장할 수 없음
from scipy.stats.mstats import mode
trainingSetCustomers = pd.DataFrame({'visitFrequency': trainingSet.size(),'totalAmountSpent': trainingSet['amountSpent'].sum(),'totalProducts': trainingSet['productCount'].sum(),'firstVisit': trainingSet['visitDate'].min(),'lastVisit': trainingSet['visitDate'].max(),'visitType':trainingSet['visitType'].apply(f),'country': trainingSet['country'].apply(f),'isReferred':trainingSet['isReferred'].sum()}).reset_index()
p2 = pickle.Pickler(open("trainingSetCustomers.p","wb")) #finaldatasetYear1AndYear2 #trainingset groupedCustomersWithDates dfOrdersNew groupedCustomersNew
p2.clear_memo()
p2.dump(trainingSetCustomers)
print "Training Set saved" #Done
trainingResultSetCustomers = pd.DataFrame({'futureVisitFrequency': trainingResultSet.size(),'futureTotalAmountSpent': trainingResultSet['amountSpent'].sum(),'futureTotalProducts': trainingResultSet['productCount'].sum(),'firstVisit': trainingResultSet['visitDate'].min(),'lastVisit': trainingResultSet['visitDate'].max(),'visitType':trainingResultSet['visitType'].apply(f),'country': trainingResultSet['country'].apply(f),'isReferred':trainingResultSet['isReferred'].sum()}).reset_index()
p3 = pickle.Pickler(open("trainingResultSetCustomers.p","wb")) #finaldatasetYear1AndYear2 #trainingset groupedCustomersWithDates dfOrdersNew groupedCustomersNew
p3.clear_memo()
p3.dump(trainingResultSetCustomers)
print "trainingresult set saved" #Done
이것은 오류없이 실행되고 메시지를 인쇄합니다. 하지만 다음 코드를 실행하면
trainingResultSetCustomers = pickle.load(open("trainingResultSetCustomers.p", "rb"))
그것은 나에게는 EOFError을 제공합니다. 이러한 종류의 테스트 세트 4 개를 저장해야하며 실제로 이런 일이 발생하는 이유는 혼란 스럽습니다. 내가 차이를 만드는 경우 SSH를 통해 IPython 노트북에서 그것을 실행하고 있습니다. 또한 5 행만 사용해도 완벽하게 작동합니다.
데이터 구조 : 코드에서 알 수 있듯이이 데이터 프레임은 그룹화 된 개체의 속성에 의해 생성됩니다.
몇 가지 테스트 코드와 버전 번호의 부재에서EOFError Traceback (most recent call last)
<ipython-input-10-86d38895c564> in <module>()
5 p = pickle.Pickler(o) #finaldatasetYear1AndYear2 #trainingset groupedCustomersWithDates dfOrdersNew groupedCustomersNew
6 p.clear_memo()
----> 7 trainingset = pickle.load(o)
8 o.close()
9 print "done"
/usr/lib/python2.7/pickle.pyc in load(file)
1376
1377 def load(file):
-> 1378 return Unpickler(file).load()
1379
1380 def loads(str):
/usr/lib/python2.7/pickle.pyc in load(self)
856 while 1:
857 key = read(1)
--> 858 dispatch[key](self)
859 except _Stop, stopinst:
860 return stopinst.value
/usr/lib/python2.7/pickle.pyc in load_eof(self)
878
879 def load_eof(self):
--> 880 raise EOFError
881 dispatch[''] = load_eof
882
실행할 수있는 최소한의 예를 들려 줄 수 있습니까? 일반'pickle' 또는'jsonpickle'을 사용하고 있습니까? – user4815162342
일반 피클, 나는 데이터가 너무 거대하기 때문에 최소한의 예제를 제공하지 않습니다. 그러나 나는 당신에게 데이터의 구조를 말할 수 있습니다. – Sudh
문제는이 거대한 데이터 세트 또는 작은 데이터 세트에서만 나타납니다. – user4815162342