将 CDF 存储在单个数据框单元格或多个列中
Storing CDF in single dataframe cell or several columns
我有 10 个项目对,在这样的框架中称它们为 1A 和 1B、2A 和 2B、3A 和 3B -> 10A 和 10B:
Item_col1 Item_col2
1A 1B
2A 2B
3A 3B
每个项目(例如;2A)都有一个关联的累积概率分布函数。每个 CDF 我都存储在 np.arrays [CDF_A1, CDF_2A, CDF_3A, CDF_4A] 的列表中,每个都有 100 个元素,看起来有点像这个:
[0.0000, 0.0100, 0.2000,...0.9999, 1.0]
我想将 CDF 添加到框架中,最终相互比较(例如,1A 与 1B 相比,2A 与 2B 相比),但不知道将它们存储在框架中的最佳方式。
像这样存储它们会更好(并且可能吗?):
Item_col1 Item_col2 CDF_Item_col1 CDF_Item_col2
1A 1B CDF_1A CDF_1B
2A 2B CDF_2A CDF_2B
3A 3B CDF_3A CDF_3B
或者应该是这样还是必须这样:
Item_col1 Item_col2 (As) CDF_Element1 CDF_Element2....CDF_Element100 (Bs) CDF_Element1 CDF_Element2....CDF_Element100
1A 1B 0.0000 0.0100 1.0000 0.0000 0.0100 1.0000
2A 2B 0.0000 0.0100 1.0000 0.0000 0.0100 1.0000
3A 3B 0.0000 0.0100 1.0000 0.0000 0.0100 1.0000
我想你可以这样存储它们:
df
item1 item2 cdfA cdfB
0 1A 1B 0.574843 0.501655
1 1A 1B 0.574843 0.638855
2 1A 1B 0.574843 0.827372
3 1A 1B 0.574843 0.450464
4 1A 1B 0.162894 0.501655
5 1A 1B 0.162894 0.638855
6 1A 1B 0.162894 0.827372
7 1A 1B 0.162894 0.450464
8 1A 1B 0.479719 0.501655
9 1A 1B 0.479719 0.638855
10 1A 1B 0.479719 0.827372
11 1A 1B 0.479719 0.450464
12 1A 1B 0.724478 0.501655
13 1A 1B 0.724478 0.638855
14 1A 1B 0.724478 0.827372
15 1A 1B 0.724478 0.450464
16 2A 2B 0.827809 0.709354
17 2A 2B 0.827809 0.657139
18 2A 2B 0.827809 0.115151
19 2A 2B 0.827809 0.942483
20 2A 2B 0.717945 0.709354
如您所说,您可能还想比较这些 CDF 的值,如 1A 和 1B、2A 和 2B、.. 等等,如果您有这样的数据框,我认为会更容易供您稍后进行比较。如果您认为它会占用更多 RAM,您甚至可以将 item1 和 item2 列更改为 Categorical,因为它们是重复的,如
cols = ['item1', 'item2']
for col in cols:
df[col] = df[col].astype('category')
我有 10 个项目对,在这样的框架中称它们为 1A 和 1B、2A 和 2B、3A 和 3B -> 10A 和 10B:
Item_col1 Item_col2
1A 1B
2A 2B
3A 3B
每个项目(例如;2A)都有一个关联的累积概率分布函数。每个 CDF 我都存储在 np.arrays [CDF_A1, CDF_2A, CDF_3A, CDF_4A] 的列表中,每个都有 100 个元素,看起来有点像这个:
[0.0000, 0.0100, 0.2000,...0.9999, 1.0]
我想将 CDF 添加到框架中,最终相互比较(例如,1A 与 1B 相比,2A 与 2B 相比),但不知道将它们存储在框架中的最佳方式。
像这样存储它们会更好(并且可能吗?):
Item_col1 Item_col2 CDF_Item_col1 CDF_Item_col2
1A 1B CDF_1A CDF_1B
2A 2B CDF_2A CDF_2B
3A 3B CDF_3A CDF_3B
或者应该是这样还是必须这样:
Item_col1 Item_col2 (As) CDF_Element1 CDF_Element2....CDF_Element100 (Bs) CDF_Element1 CDF_Element2....CDF_Element100
1A 1B 0.0000 0.0100 1.0000 0.0000 0.0100 1.0000
2A 2B 0.0000 0.0100 1.0000 0.0000 0.0100 1.0000
3A 3B 0.0000 0.0100 1.0000 0.0000 0.0100 1.0000
我想你可以这样存储它们:
df
item1 item2 cdfA cdfB
0 1A 1B 0.574843 0.501655
1 1A 1B 0.574843 0.638855
2 1A 1B 0.574843 0.827372
3 1A 1B 0.574843 0.450464
4 1A 1B 0.162894 0.501655
5 1A 1B 0.162894 0.638855
6 1A 1B 0.162894 0.827372
7 1A 1B 0.162894 0.450464
8 1A 1B 0.479719 0.501655
9 1A 1B 0.479719 0.638855
10 1A 1B 0.479719 0.827372
11 1A 1B 0.479719 0.450464
12 1A 1B 0.724478 0.501655
13 1A 1B 0.724478 0.638855
14 1A 1B 0.724478 0.827372
15 1A 1B 0.724478 0.450464
16 2A 2B 0.827809 0.709354
17 2A 2B 0.827809 0.657139
18 2A 2B 0.827809 0.115151
19 2A 2B 0.827809 0.942483
20 2A 2B 0.717945 0.709354
如您所说,您可能还想比较这些 CDF 的值,如 1A 和 1B、2A 和 2B、.. 等等,如果您有这样的数据框,我认为会更容易供您稍后进行比较。如果您认为它会占用更多 RAM,您甚至可以将 item1 和 item2 列更改为 Categorical,因为它们是重复的,如
cols = ['item1', 'item2']
for col in cols:
df[col] = df[col].astype('category')