mean de pandas e numpy diferem

Tenho um MEMS IMU no qual coleciono dados e estou usando pandas para obter alguns dados estatísticos. Há 6 flutuadores de 32 bits coletados a cada ciclo. As taxas de dados são fixadas para uma determinada execução de coleta. As taxas de dados variam entre 100Hz e 1000Hz e o tempo de coleta é de 72 horas. Os dados são salvos em um arquivo binário simples. Eu li os dados desta maneira:

import numpy as np
import pandas as pd
dataType=np.dtype([('a','<f4'),('b','<f4'),('c','<f4'),('d','<f4'),('e','<f4'),('e','<f4')])
df=pd.DataFrame(np.fromfile('FILENAME',dataType))
df['c'].mean()
-9.880581855773926
x=df['c'].values
x.mean()
-9.8332081

-9.833 é o resultado correto. Posso criar um resultado semelhante que alguém possa repetir desta maneira:

import numpy as np
import pandas as pd
x=np.random.normal(-9.8,.05,size=900000)
df=pd.DataFrame(x,dtype='float32',columns=['x'])
df['x'].mean()
-9.859579086303711
x.mean()
-9.8000648778888628

Eu repeti isso no linux e windows, nos processadores AMD e Intel, no Python 2.7 e 3.5. Estou perplexo. O que estou fazendo errado? E obtenha:

x=np.random.normal(-9.,.005,size=900000)
df=pd.DataFrame(x,dtype='float32',columns=['x'])
df['x'].mean()
-8.999998092651367
x.mean()
-9.0000075889406528

Eu poderia aceitar essa diferença. Está no limite da precisão de flutuadores de 32 bit

DEIXA PRA LÁ. Escrevi isso na sexta-feira e a solução me atingiu esta manhã. É um problema de precisão de ponto flutuante exacerbado pela grande quantidade de dados. Eu precisava converter os dados em float de 64 bits na criação do quadro de dados da seguinte maneira:

df=pd.DataFrame(np.fromfile('FILENAME',dataType),dtype='float64')

Vou deixar o post caso alguém tenha um problema semelhant

questionAnswers(2)

yourAnswerToTheQuestion