Python df.mean()和df[';列';].mean()结果的差异

Python df.mean()和df[';列';].mean()结果的差异,python,pandas,mean,Python,Pandas,Mean,我只运行以下三行: df = pd.read_hdf('data.h5') print(df.mean()) print(df['derived_3'].mean()) 第一个打印列出了每列的所有单独方式,其中一个为 derived_3 -5.046012e-01 第二个print仅给出该列的平均值,并给出结果 -0.504715 尽管在使用科学符号和非科学符号方面存在差异,但这些值是不同的——为什么会这样 使用其他方法的示例 使用sum()执行相同操作将导致以下结果: d

我只运行以下三行:

df = pd.read_hdf('data.h5')
print(df.mean())
print(df['derived_3'].mean())
第一个
打印
列出了每列的所有单独方式,其中一个为

derived_3        -5.046012e-01
第二个
print
仅给出该列的平均值,并给出结果

-0.504715
尽管在使用科学符号和非科学符号方面存在差异,但这些值是不同的——为什么会这样


使用其他方法的示例

使用
sum()
执行相同操作将导致以下结果:

derived_3        -7.878262e+05

-788004.0
同样,结果略有不同,但
count()
返回相同的结果:

derived_3         1561285

1561285
另外,
df.head()
的结果:


pd.DataFrame
方法与
pd.Series
方法

df.mean()。返回的是一个
pd.Series
,其中
df.columns
是新的索引,每列的平均值是值。在最初的示例中,
df
只有一列,因此结果是一个长度为1的系列,其中索引是该列的名称,值是该列的平均值

df['derived_3'].mean()
mean
pd.Series.mean
df['derived_3']
pd.Series
pd.Series.mean的结果将是一个标量


显示差异

显示的差异是因为
df.mean
的结果是一个
pd.Series
,浮点格式由
pandas
控制。另一方面,
df['derived_3'].mean()
是python原语,不受pandas控制

import numpy as np
import pandas as pd

标量

pd.系列

不同格式


减少
将这些不同的方法视为是否降低维度是有用的。或同义词,聚合或转换

  • 减少一个
    pd.DataFrame
    将导致一个
    pd.Series
  • 减少一个
    pd.Series
    会产生一个标量
降低成本的方法

  • 平均值
  • sum
  • std

另外,在我的帖子中添加
df.dtypes
。这是一个非常大的文件,据我所知,其中一些数字有大约20位小数位,这并没有显示在熊猫的结果中。这可能是造成问题的原因吗?也许,看看吧,我明白了。当你说“显示差异”时,你的意思是计算实际上在两个方面都是完全正确的,只是显示方式不同,或者如果我在执行计算时交换了我的两个示例,这是否会扭曲我的结果?它们完全相同
3.14159265359
和pd.Series(3.14159265359)
中的值是相同的。@piRSquared关于这一点还有一个问题-我有这个操作
df.ix[:,2:-1]=df.ix[:,2:-1]-df.ix[:,2:-1].mean()
,我希望将所有索引列规范化,使它们的平均值现在为0。执行此操作后,当我打印出平均值时,它们都显示为非常小的数字,但没有一个精确显示为0。我是否可以检查我的等式是否正确,值是否为零,或者我的等式是否错误,如果是,它们将显示为0?当你身处浮点世界时,没有精确的东西。这个很小的数字接近于零。您可以使用
np.isclose
确定浮点数是否接近,是否在某个公差范围内。如果愿意,可以使用
舍入
使其等于零。
import numpy as np
import pandas as pd
np.pi

3.141592653589793
pd.Series(np.pi)

0    3.141593
dtype: float64
with pd.option_context('display.float_format', '{:0.15f}'.format):
    print(pd.Series(np.pi))

0   3.141592653589793
dtype: float64