2
熊貓數據框通常以long(很多行)或wide(很多列)格式表示。將數據保存在熊貓中時寬vs長格式hdf5
我不知道哪種格式更快地讀取並佔據時保存爲HDF文件(df.to_hdf
)的內存更少。
是否有一個通用規則或某些格式應該是首選的情況?
熊貓數據框通常以long(很多行)或wide(很多列)格式表示。將數據保存在熊貓中時寬vs長格式hdf5
我不知道哪種格式更快地讀取並佔據時保存爲HDF文件(df.to_hdf
)的內存更少。
是否有一個通用規則或某些格式應該是首選的情況?
IMO長格式更加可取,因爲您的元數據開銷要小得多(有關列名,dtypes等的信息)。
在內存使用的術語,他們會或多或少相同:
In [22]: long = pd.DataFrame(np.random.randint(0, 10**6, (10**4, 4)))
In [23]: wide = pd.DataFrame(np.random.randint(0, 10**6, (4, 10**4)))
In [24]: long.shape
Out[24]: (10000, 4)
In [25]: wide.shape
Out[25]: (4, 10000)
In [26]: sys.getsizeof(long)
Out[26]: 160104
In [27]: sys.getsizeof(wide)
Out[27]: 160104
In [28]: wide.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 4 entries, 0 to 3
Columns: 10000 entries, 0 to 9999
dtypes: int32(10000)
memory usage: 156.3 KB
In [29]: long.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 10000 entries, 0 to 9999
Data columns (total 4 columns):
0 10000 non-null int32
1 10000 non-null int32
2 10000 non-null int32
3 10000 non-null int32
dtypes: int32(4)
memory usage: 156.3 KB
,你打算用什麼樣的dtypes的?對於你如何存儲你的DF或者你是否要轉置他們真的不重要? – MaxU
我有不同的數據框。有些人只有漂浮而其他人有繩子和漂浮物。他們安靜的大(100GB),我想,以減少內存使用和閱讀時間儘可能。 – Donbeo