我有一个测试成绩的频率表:
score count
----- -----
77 1105
78 940
79 1222
80 4339
etc
我想显示基本统计数据和箱图,该图由频率表汇总。(例如,上面示例的平均值为79.16,中位数为80。)
熊猫有办法做到这一点吗?我所看到的所有示例均假设有个别案例的表格。
我想我可以生成一个个人分数列表,像这样-
In [2]: s = pd.Series([77] * 1105 + [78] * 940 + [79] * 1222 + [80] * 4339)
In [3]: s.describe()
Out[3]:
count 7606.000000
mean 79.156324
std 1.118439
min 77.000000
25% 78.000000
50% 80.000000
75% 80.000000
max 80.000000
dtype: float64
-但我希望避免这种情况;真实的非玩具数据集中的总频率高达十亿。
任何帮助表示赞赏。
(我认为这与对带加权数据使用describe()的问题不同,后者是将权重应用于个别情况。)
这是一个用于计算频率分布的描述统计量的小函数:
# from __future__ import division (for Python 2)
def descriptives_from_agg(values, freqs):
values = np.array(values)
freqs = np.array(freqs)
arg_sorted = np.argsort(values)
values = values[arg_sorted]
freqs = freqs[arg_sorted]
count = freqs.sum()
fx = values * freqs
mean = fx.sum() / count
variance = ((freqs * values**2).sum() / count) - mean**2
variance = count / (count - 1) * variance # dof correction for sample variance
std = np.sqrt(variance)
minimum = np.min(values)
maximum = np.max(values)
cumcount = np.cumsum(freqs)
Q1 = values[np.searchsorted(cumcount, 0.25*count)]
Q2 = values[np.searchsorted(cumcount, 0.50*count)]
Q3 = values[np.searchsorted(cumcount, 0.75*count)]
idx = ['count', 'mean', 'std', 'min', '25%', '50%', '75%', 'max']
result = pd.Series([count, mean, std, minimum, Q1, Q2, Q3, maximum], index=idx)
return result
演示:
np.random.seed(0)
val = np.random.normal(100, 5, 1000).astype(int)
pd.Series(val).describe()
Out:
count 1000.000000
mean 99.274000
std 4.945845
min 84.000000
25% 96.000000
50% 99.000000
75% 103.000000
max 113.000000
dtype: float64
vc = pd.value_counts(val)
descriptives_from_agg(vc.index, vc.values)
Out:
count 1000.000000
mean 99.274000
std 4.945845
min 84.000000
25% 96.000000
50% 99.000000
75% 103.000000
max 113.000000
dtype: float64
请注意,这不能处理NaN,并且未经适当测试。
主要内容:sum()求和,mean()求均值,std()求标准差,数据汇总描述描述统计学(descriptive statistics)是一门统计学领域的学科,主要研究如何取得反映客观现象的数据,并以图表形式对所搜集的数据进行处理和显示,最终对数据的规律、特征做出综合性的描述分析。Pandas 库正是对描述统计学知识完美应用的体现,可以说如果没有“描述统计学”作为理论基奠,那么 Pandas 是否存在犹未可知。下列表格对 Pandas 常用的统计学函数做了简单的总结: 函数
本文向大家介绍pandas 描述性统计,包括了pandas 描述性统计的使用技巧和注意事项,需要的朋友参考一下 示例 可以使用该方法计算数字列的描述性统计信息(平均值,标准差,观察数,最小值,最大值和四分位数),该方法将返回描述性统计数据的熊猫数据框。.describe() 请注意,由于C不是数字列,因此将其从输出中排除。 在这种情况下,该方法通过观察次数,唯一元素数量,模式和模式频率来汇总分类数
我有一个数据帧,我想按Col1 Col2 Col3分组,得到值列的0频率:df= 我如何应用groupby来实现 非常感谢。
大量方法共同计算DataFrame上的描述性统计和其他相关操作。 其中大多数是sum(), mean(),等聚合sum(), mean(),但其中一些(如sumsum()生成相同大小的对象。 一般来说,这些方法采用axis参数,就像ndarray.{sum, std, ...},但轴可以通过名称或整数指定 DataFrame - “index”(axis = 0,默认值),“columns”(ax
假设我有数据帧,: 打印行0值: 结果: 我想取消显示名称:0,数据类型:float64行,这样我就可以得到: 有人知道怎么做吗? (注意,我将此附加到文本文件)
问题内容: Pandas确实很棒,但令我惊讶的是,从Pandas.DataFrame检索值的效率低下。在下面的玩具示例中,即使DataFrame.iloc方法也比字典慢100倍以上。 问题:这里的教训仅仅是字典是查找价值的更好方法吗?是的,我知道那正是他们的目的。但是我只是想知道是否缺少有关DataFrame查找性能的信息。 我意识到这个问题比“提问”更“有趣”,但是我会接受一个提供洞察力或观点的