首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >df.mean()和df[‘列’].mean()结果的差异

df.mean()和df[‘列’].mean()结果的差异
EN

Stack Overflow用户
提问于 2017-10-04 19:25:43
回答 1查看 6.6K关注 0票数 2

我只运行以下三行:

代码语言:javascript
复制
df = pd.read_hdf('data.h5')
print(df.mean())
print(df['derived_3'].mean())

第一个print列出了每个列的所有单独的方法,其中一个是

代码语言:javascript
复制
derived_3        -5.046012e-01

第二个print只给出了这个列的平均值,并给出了结果

代码语言:javascript
复制
-0.504715

尽管在使用科学符号方面有区别,但这些值是不同的--为什么会这样?

使用其他方法的示例

sum()执行同样的操作将得到以下结果:

代码语言:javascript
复制
derived_3        -7.878262e+05

-788004.0

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

代码语言:javascript
复制
derived_3         1561285

1561285

此外,df.head()的结果

代码语言:javascript
复制
   id  timestamp  derived_0  derived_1  derived_2  derived_3  derived_4  \
0  10          0   0.370326  -0.006316   0.222831  -0.213030   0.729277   
1  11          0   0.014765  -0.038064  -0.017425   0.320652  -0.034134   
2  12          0  -0.010622  -0.050577   3.379575  -0.157525  -0.068550   
3  25          0        NaN        NaN        NaN        NaN        NaN   
4  26          0   0.176693  -0.025284  -0.057680   0.015100   0.180894   

   fundamental_0  fundamental_1  fundamental_2    ...     technical_36  \
0      -0.335633       0.113292       1.621238    ...         0.775208   
1       0.004413       0.114285      -0.210185    ...         0.025590   
2      -0.155937       1.219439      -0.764516    ...         0.151881   
3       0.178495            NaN      -0.007262    ...         1.035936   
4       0.139445      -0.125687      -0.018707    ...         0.630232   

   technical_37  technical_38  technical_39  technical_40  technical_41  \
0           NaN           NaN           NaN     -0.414776           NaN   
1           NaN           NaN           NaN     -0.273607           NaN   
2           NaN           NaN           NaN     -0.175710           NaN   
3           NaN           NaN           NaN     -0.211506           NaN   
4           NaN           NaN           NaN     -0.001957           NaN   

   technical_42  technical_43  technical_44         y  
0           NaN          -2.0           NaN -0.011753  
1           NaN          -2.0           NaN -0.001240  
2           NaN          -2.0           NaN -0.020940  
3           NaN          -2.0           NaN -0.015959  
4           NaN           0.0           NaN -0.007338  
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-04 19:36:50

pd.DataFrame 方法与 pd.Series 方法

df.mean()中,meanpd.DataFrame.mean,作为单独的pd.Series对所有列进行操作。返回的是一个pd.Series,其中df.columns是新的索引,每个列的平均值是值。在您的初始示例中,df只有一个列,因此结果是一个长度--一个序列,其中索引是该列的名称,值是该列的平均值。

df['derived_3'].mean()中,meanpd.Series.meandf['derived_3']pd.Seriespd.Series.mean的结果将是标量。

显示差异

之所以显示不同,是因为df.mean的结果是pd.Series,浮点格式由pandas控制。另一方面,df['derived_3'].mean()是蟒蛇的原始生物,不受熊猫的控制。

代码语言:javascript
复制
import numpy as np
import pandas as pd

标量

代码语言:javascript
复制
np.pi

3.141592653589793

pd.Series

代码语言:javascript
复制
pd.Series(np.pi)

0    3.141593
dtype: float64

以不同的格式

代码语言:javascript
复制
with pd.option_context('display.float_format', '{:0.15f}'.format):
    print(pd.Series(np.pi))

0   3.141592653589793
dtype: float64

还原

把这些不同的方法看作是降维或不降维是很有用的。或同义词,聚合或转换。

  • 减少pd.DataFrame会导致pd.Series
  • 减少pd.Series会导致标量

减少的方法

  • mean
  • sum
  • std
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46572679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档