另一个更新:已解决(请参阅评论和我自己的答案)。
更新:这就是我要解释的。
>>> pd.Series([7,20,22,22]).std()
7.2284161474004804
>>> np.std([7,20,22,22])
6.2599920127744575
答:这是通过贝塞尔校正N-1
来解释的,而不是N
通过标准偏差公式的分母来解释的。我希望熊猫使用与numpy相同的约定。
有一个相关的讨论在这里,但他们的建议都不能工作。
我有许多不同餐厅的数据。这是我的数据框(想象不止一家餐厅,但效果只再现了一家):
>>> df
restaurant_id price
id
1 10407 7
3 10407 20
6 10407 22
13 10407 22
问题:r.mi.groupby('restaurant_id')['price'].mean()
返回每个餐厅的价格均值。我想得到标准偏差。但是,r.mi.groupby('restaurant_id')['price'].std()
返回错误的值 。
如您所见,为简单起见,我仅抽取了一家有四种食物的餐厅。我想找到价格的标准差。只想确认一下:
>>> np.mean([7,20,22,22])
17.75
>>> np.std([7,20,22,22])
6.2599920127744575
我们可以得到相同(正确)的值
>>> np.mean(df)
restaurant_id 10407.00
price 17.75
dtype: float64
>>> np.std(df)
restaurant_id 0.000000
price 6.259992
dtype: float64
(当然,不要理会平均的餐厅ID。)显然,np.std(df)
当我有多个餐厅时,这不是解决方案。所以我正在使用groupby
。
>>> df.groupby('restaurant_id').agg('std')
price
restaurant_id
10407 7.228416
什么?! 7.228416不是6.259992。
让我们再试一次。
>>> df.groupby('restaurant_id').std()
一样。
>>> df.groupby('restaurant_id')['price'].std()
一样。
>>> df.groupby('restaurant_id').apply(lambda x: x.std())
一样。
但是,这可行:
for id, group in df.groupby('restaurant_id'):
print id, np.std(group['price'])
问题 :是否有适当的方法来汇总数据帧,所以我将获得一个带有每个餐厅标准差的新时间序列?
我懂了。熊猫默认使用Bessel校正-即标准差公式中使用N-1
而不是N
分母。正如behzad.nouri在评论中指出的那样,
pd.Series([7,20,22,22]).std(ddof=0)==np.std([7,20,22,22])
从重新索引文档: 使用可选的填充逻辑将DataFrame与新索引一致,将NA/NaN放置在上一个索引中没有值的位置。除非新索引与当前索引等效,并且Cope=False,否则将生成新对象。 因此,我认为我可以通过在适当的位置(!)设置复制=False来重新排序。然而,我似乎得到了一个副本,需要再次将其分配给原始对象。我不想把它分配回去,如果我能避免它的话(原因来自于另一个问题)。 这就是我正在做的:
在不应用我的日期解析器的情况下给出结果 显然我不明白https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html的指示
问题内容: 关于运算符的Python文档说: 运算符和对象标识测试:当且仅当和是相同对象时为true 。产生反真值。 让我们尝试一下: 在Python文档也说: 由于自动进行垃圾回收,释放列表以及描述符的动态性质,您可能会注意到在某些运算符用法中,似乎存在异常行为,例如涉及实例方法或常量之间比较的行为。查看他们的文档以获取更多信息。 我搜索了更多的解释,但找不到任何解释。 为什么是假的? 我正在使
主要内容:Pandas主要特点,Pandas主要优势,Pandas内置数据结构Pandas 是一个开源的第三方 Python 库,从 Numpy 和 Matplotlib 的基础上构建而来,享有数据分析“三剑客之一”的盛名(NumPy、Matplotlib、Pandas)。Pandas 已经成为 Python 数据分析的必备高级工具,它的目标是成为强大、灵活、可以支持任何编程语言的数据分析工具。 图1:Pandas Logo Pandas 这个名字来源于面板数据(Panel
在Google Colab中使用笔记本时,无论是否导入库,matplotlib绘图都具有不同的行为。 如果我不导入分析,默认情况下,绘图将以内联方式显示。但是,如果导入库,绘图将停止内联显示。 在导入pandas分析库之前更新它可以解决此问题 导入分析后添加可以解决此问题 在GoogleColab中运行此代码以重现问题。在导入和不导入U分析的情况下对其进行测试。对于每个测试,您都需要终止会话(运行
问题内容: 切片是对基础数组的引用。这是有道理的,似乎可以在内置/原始类型上使用,但是为什么不能在结构上使用呢?我假设即使我更新了一个struct字段,引用/地址也仍然相同。 需要说明的是:我知道我可以在两种情况下都使用指针。我只是对为什么不更新结构感兴趣(与int不同)。 问题答案: 调用时要做的是传递一个包含值副本的新数组,并立即丢弃该数组。这与您使用基元不同,因为您保留了数组。 这里有两种方