3

pandas データ フレームは、通常、長い (行数が多い) または幅が広い (列数が多い) 形式で表されます。

hdf ファイル ( df.to_hdf) として保存した場合、どの形式が読み取りが速く、メモリの占有量が少ないか疑問に思っています。

一般的な規則や、いずれかの形式を優先する必要がある場合はありますか?

4

1 に答える 1

1

メタデータのオーバーヘッド (列名、dtype などに関する情報) がはるかに少ないため、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
于 2016-11-11T10:36:10.383 に答える