medio de pandas y numpy difieren

Tengo una IMU de MEMS en la que he estado recopilando datos y estoy usando pandas para obtener algunos datos estadísticos. Hay 6 flotadores de 32 bits recopilados en cada ciclo. Las tasas de datos se fijan para una ejecución de recopilación determinada. Las velocidades de datos varían entre 100Hz y 1000Hz y los tiempos de recolección duran hasta 72 horas. Los datos se guardan en un archivo binario plano. Leo los datos de esta manera:

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 es el resultado correcto. Puedo crear un resultado similar que alguien debería poder repetir de esta manera:

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

He repetido esto en Linux y Windows, en procesadores AMD e Intel, en Python 2.7 y 3.5. Estoy perplejo. ¿Qué estoy haciendo mal? Y obtén esto:

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

Podría aceptar esta diferencia. Está al límite de la precisión de los flotadores de 32 bits.

NO IMPORTA. Escribí esto el viernes y la solución me llegó esta mañana. Es un problema de precisión de coma flotante exacerbado por la gran cantidad de datos. Necesitaba convertir los datos en flotante de 64 bits en la creación del marco de datos de esta manera:

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

Dejaré la publicación si alguien más se encuentra con un problema similar.

Respuestas a la pregunta(2)

Su respuesta a la pregunta