在熊猫中,我想:
只要我增加items_per_chunk但保持nr_of_chunks不变,每个块的均值的直方图应该绘制为一个变窄的钟形曲线。
我想出了以下 Pandas、Numpy、Seaborn 方法,在我看来它效率低下或不是很聪明:
%matplotlib inline
import pandas as pd
import seaborn as sns
import numpy as np
sns.set()
df = pd.read_csv('../data/data.csv')
nr_of_chunks = 1000
for items_per_chunk in [1, 5, 20]:
sample = df.sample(nr_of_chunks * items_per_chunk)
chunks = np.array_split(sample, nr_of_chunks)
mean_of_chunks = [chunk.mean() for chunk in chunks]
sns.distplot(mean_of_chunks)
输出:
有没有更好的方法来做到这一点?例如,我希望有一种方法可以在拆分样本时直接将均值函数应用于每个块。
将 的索引重置sample
为常规 后RangeIndex
,您可以简单地group
将索引下限除以items_per_chunk
:
import pandas as pd
import seaborn as sns
sns.set()
df = pd.read_csv('../data/data.csv')
nr_of_chunks = 1000
for items_per_chunk in [1, 5, 20]:
sample = df.sample(nr_of_chunks * items_per_chunk).reset_index(drop=True)
mean_of_chunks = sample.groupby(sample.index // items_per_chunk).mean()
sns.distplot(mean_of_chunks)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句