0
'mass'열에 float64가있는 pandas DataFrame이 있습니다. 이 데이터의 첫 번째 차이점을 찾으려면 np.diff()
을 사용합니다.numpy.diff() with pandas DataFrame 오류
문제점 : data.mass 대 data.mass.values를 사용하면 크기가 변경됨 이 '버그'는 최소, 최대 및 평균이 동일하지 않음을 나타냅니다. .
import pandas as pd
import numpy as np
data = pd.DataFrame({'time': np.arange(1,101), 'mass': randn(100)})
dm = np.diff(data.mass, n=1)
dmv = np.diff(data.mass.values, n=1)
print 'data.mass: \t\t', dm.shape
print 'min: ', dm.min(), ' max: ', dm.max(), ' mean: ', dm.mean()
print ''
print 'now using data.mass.values in the calculations \n'
print 'data.mass.values: \t', dmv.shape
print 'min: ', dmv.min(), ' max: ', dmv.max(), ' mean: ', dmv.mean()
되는 출력 :
data.mass: (100,)
min: 0.0 max: 0.0 mean: 0.0
now using data.mass.values in the calculations
data.mass.values: (99,)
min: -3.49992599537 max: 2.52901842461 mean: -0.00718375066572
이 예상 된 기능인가? 어쨌든 후드 아래에서 팬더 DataFrames가 numpy 배열로 이해했기 때문에 왜 .value
을 사용해야할까요?
는''data.diff()''를 사용합니다. 데이터 프레임은 numpy를 보류하고 대부분은 numpy 메서드를 사용할 수 있지만''np.diff''는 잘 작동하지 않는 함수입니다 (사실 numpy 보장을 위반합니다). 올바른 객체를 반환하여 호출자에게 응답하지 않습니다. 이는 단지 이와 같은 예에서 나타납니다. 이것은이 문제를 다루는 판다 0.13 (매우 빨리 다가옴)에서 '고정'되어 있습니다. – Jeff
@jeff 설명해 주셔서 감사합니다! 나는 numpy 보장이 수반하는 것에 관해 읽어야 할 것이다. –