2016-11-11 15 views
2

pandasデータフレームは、一般的に長い(大量の行)または広い(大量の列)形式で表されます。pandasにデータを保存するときの長形式と長形式の比較hdf5

hdfファイル(df.to_hdf)として保存すると、どのフォーマットが読み込みが高速で、メモリの占有量が少なくなっているのでしょうか。

一般的な規則がありますか、または形式の1つが優先されるべき場合がありますか?

+0

はdtypesのどのような使用するつもりですか?あなたのDFを保存する方法や、トランスポーズする方法は、あなたにとって重要ではありませんか? – MaxU

+0

私は別のデータフレームを持っています。何人かは浮動小数点のみを持ち、他は文字列と浮動小数点を持っています彼らは静かに大きい(100GB)と私はメモリの使用量と読み取り時間をできるだけ減らしたいと思います。 – Donbeo

答えて

0

メタデータオーバーヘッド(カラム名、dtypesなどに関する情報)がはるかに少ないので、IMOロングフォーマットがはるかに望ましいです。彼らは多かれ少なかれ同じことを行っているメモリ使用量の用語で

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 
関連する問題