簡體   English   中英

df.mean()和df ['column']。mean()的結果差異

[英]Differences in result of df.mean() and df['column'].mean()

我只運行以下三行:

df = pd.read_hdf('data.h5')
print(df.mean())
print(df['derived_3'].mean())

第一份print列出了每一列的所有獨立均值,其中一個是

derived_3        -5.046012e-01

第二print提供了單獨只此列的平均值,並給出結果

-0.504715

盡管在使用科學記數法方面有所不同,但這些值卻有所不同-為什么會這樣?


使用其他方法的示例

使用sum()進行相同的操作將導致以下結果:

derived_3        -7.878262e+05

-788004.0

同樣,結果略有不同,但count()返回的結果相同:

derived_3         1561285

1561285

另外, df.head()的結果:

   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  

pd.DataFrame方法與pd.Series方法

df.mean()meanpd.DataFrame.mean並且作為單獨的pd.Series在所有列上進行pd.Series 返回的是一個pd.Series ,其中df.columns是新索引,每列的均值是值。 在您的第一個示例中, df僅具有一列,因此結果是一個系列的長度,其中索引是該列的名稱,而值是該列的平均值。

df['derived_3'].mean()meanpd.Series.meandf['derived_3']pd.Series pd.Series.mean的結果將是一個標量。


顯示差異

顯示上的差異是因為df.mean的結果是pd.Series ,而float格式是由pandas控制的。 另一方面, df['derived_3'].mean()是python原語,不受熊貓控制。

import numpy as np
import pandas as pd

純量

np.pi

3.141592653589793

pd.Series

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

減少
將這些各種方法視為降低維數很有用。 或同義,聚合或轉換。

  • 減少pd.DataFrame會得到pd.Series
  • 減少pd.Series導致標量

減少方法

  • mean
  • sum
  • std

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM