如何从具有频率计数的值创建数据框列?

Far*_*aif 5 python pandas

给定一个问题集,包含值及其相关频率,如何sample在数据框中创建它们?

Find the mean of this dataset
Value: 1 | 2 | 3
Freq:  3 | 4 | 2
Run Code Online (Sandbox Code Playgroud)

其中代表sample, [1, 1, 1, 2, 2, 2, 2, 3, 3]

我将其输入到Python中:

>>> import pandas as pd
>>> df = pd.DataFrame({'value':[1, 2, 3], 'freq':[4, 5, 2]})
>>> df
   value  freq
0      1     3
1      2     4
2      3     2
Run Code Online (Sandbox Code Playgroud)

使用这种格式不难找到解决基本统计问题的方法。例如,该数据集的平均值为(df['value'] * df['freq']).sum() / df['freq'].sum()。然而,最好使用内置函数/属性,例如.mean(). 为此,我需要将值/频率数据作为原始值数据输入到数据框中。我的最终目标是这样的:

    data
0      1
1      1
2      1
3      2
4      2
5      2
6      2
7      3
8      3
Run Code Online (Sandbox Code Playgroud)

有谁知道如何输入以值/频率形式给出的数据集并创建原始数据的数据框?谢谢。

Joa*_*les 5

一个选项是使用np.repeat

import numpy as np

values = [1,2,3]

frequency = [3,4,2]

df = pd.DataFrame(np.repeat(values, frequency), columns=['data'])

df.mean()

Run Code Online (Sandbox Code Playgroud)