2014-10-20 5 views
1

내가 우분투 14.04 64 비트에서 판다를 사용하여 일부 데이터 분석 코드를 재 작성하고 일부 이상한 동작에 부딪혔다. 내 데이터 파일은 다음과 같습니다.Python Pandas Scientific Notation Iconsistent

26/09/2014 00:00:00 2.423009 -58.864655 3.312355E-7 6.257226E-8 302 305 
26/09/2014 00:00:00 2.395637 -62.73302 3.321525E-7 7.065322E-8 302 305 
26/09/2014 00:00:01 2.332541 -57.763269 3.285718E-7 6.873837E-8 302 305 
26/09/2014 00:00:02 2.366828 -51.900812 3.262279E-7 7.397762E-8 302 305 
26/09/2014 00:00:03 2.435500 -40.820161 3.241068E-7 6.777224E-8 302 305 
26/09/2014 00:00:04 2.428922 -65.573049 3.212358E-7 6.761804E-8 302 305 
26/09/2014 00:00:05 2.419931 -59.414711 3.185517E-7 7.243236E-8 302 305 
26/09/2014 00:00:06 2.416663 -60.064279 3.209795E-7 6.242328E-8 302 305 
26/09/2014 00:00:07 2.411954 -52.586242 3.184297E-7 5.825581E-8 302 304 
26/09/2014 00:00:08 2.457342 -61.874388 3.151493E-7 6.327384E-8 303 304 

열은 탭으로 구분됩니다.

import pandas as pd 
import numpy as np 
import matplotlib.pyplot as plt 

data = pd.read_csv("path/to/file.dat", sep="\t", header=None) 
print data 

이 다음과 같은 출력을 생성합니다 :

  0   1   2   3 4    5 6 7 
0 26/09/2014 00:00:00 2.423009 -58.864655 0 6.257226e-08 302 305 
1 26/09/2014 00:00:00 2.395637 -62.733020 0 7.065322e-08 302 305 
2 26/09/2014 00:00:01 2.332541 -57.763269 0 6.873837e-08 302 305 
3 26/09/2014 00:00:02 2.366828 -51.900812 0 7.397762e-08 302 305 
4 26/09/2014 00:00:03 2.435500 -40.820161 0 6.777224e-08 302 305 
5 26/09/2014 00:00:04 2.428922 -65.573049 0 6.761804e-08 302 305 
6 26/09/2014 00:00:05 2.419931 -59.414711 0 7.243236e-08 302 305 
7 26/09/2014 00:00:06 2.416663 -60.064279 0 6.242328e-08 302 305 
8 26/09/2014 00:00:07 2.411954 -52.586242 0 5.825581e-08 302 304 
9 26/09/2014 00:00:08 2.457342 -61.874388 0 6.327384e-08 303 304 

[10 rows x 8 columns] 

여기서 주목해야 할 중요한 것은 열 4입니다 열로 비교를 판다에 다음을 읽기 위해, 나는 다음과 같은 간단한 명령을 사용하고 5, 그리고 원래의 데이터. 5 열은 과학 표기법으로 렌더링되었지만 4 열은 과학 표기법으로 렌더링되었습니다.

>>> data[4][0]*1e7 
3.3123550000000002 

다음과 같은 이유로이 열을 제로로 만들거나 int로 변환하지 않았습니다. 따라서 데이터 값은 같지만 표현이 변경되었습니다. 이것이 단지 외형적인 것이라면, 나는 그걸 참을 수는 있지만, 불안해하며 여기서 무슨 일이 일어나고 있는지 알고 싶습니다.

답변

4

네, 그것은 화장품 것은, 당신은 set_option를 사용하여 변경할 수있다 :

In [21]: 

pd.set_option('display.precision',20) 
df[4] 
Out[21]: 
0 0.0000003312355 
1 0.0000003321525 
2 0.0000003285718 
3 0.0000003262279 
4 0.0000003241068 
5 0.0000003212358 
6 0.0000003185517 
7 0.0000003209795 
8 0.0000003184297 
9 0.0000003151493 
Name: 4, dtype: float64 

기본 데이터가 절단되지 않았을 것입니다 그리고 당신은 CSV로에서 데이터를 다시 작성할 때 포함 보존됩니다

iPython에있는 경우 기본 설정이 무엇인지 확인할 수 있습니다. 표시 정밀도 (유효 자릿수)는 일반적으로 7입니다.

+0

안심 감사드립니다. 나는 컬럼 4가 아니었을 때 컬럼 5 (_smaller_ 값 포함)가 적절히 표시되었다는 것이 이상하다는 것을 알았다. set_option 명령을 사용했는데 예상했던 숫자가 표시되었지만 지금은 과학 표기법이 아닙니다. 아마 내가 주변을 검색하면 그 설정을 찾을 수 있습니다. –

+0

이것은 실제로 판다가 기하 급수적 인 수치로 읽고 유효 숫자를 자르고있는 문제를 수정했습니다. – As3adTintin