판다 집계 결과에서 과학적 표기법 서식/억제
매우 많은 숫자에 대한 과학적 표기법을 만드는 판다의 집단 운영에서 산출물의 형식을 어떻게 수정할 수 있을까요?
python으로 스트링 포맷을 할 줄 알지만 여기에 적용하는 것은 곤란합니다.
df1.groupby('dept')['data1'].sum()
dept
value1 1.192433e+08
value2 1.293066e+08
value3 1.077142e+08
문자열로 변환하면 과학적 표기법이 생략되지만, 문자열 포맷과 소수점 추가 방법을 알고 있습니다.
sum_sales_dept.astype(str)
물론, 제가 댓글에 링크한 답변은 별로 도움이 되지 않습니다.이와 같이 독자적인 문자열 변환기를 지정할 수 있습니다.
In [25]: pd.set_option('display.float_format', lambda x: '%.3f' % x)
In [28]: Series(np.random.randn(3))*1000000000
Out[28]:
0 -757322420.605
1 -1436160588.997
2 -1235116117.064
dtype: float64
그게 바람직한 방법인지는 모르겠지만 효과가 있어요.
순수하게 미적 목적을 위해 숫자를 문자열로 변환하는 것은 좋지 않은 생각처럼 보이지만, 좋은 이유가 있다면, 이것은 한 가지 방법입니다.
In [6]: Series(np.random.randn(3)).apply(lambda x: '%.3f' % x)
Out[6]:
0 0.026
1 -0.482
2 -0.694
dtype: object
다음은 Dan Allan의 답변과 비슷하지만 람다 함수가 없는 다른 방법입니다.
>>> pd.options.display.float_format = '{:.2f}'.format
>>> Series(np.random.randn(3))
0 0.41
1 0.99
2 0.10
또는
>>> pd.set_option('display.float_format', '{:.2f}'.format)
라운드 함수를 사용하여 특정 데이터 프레임에 대한 과학적 표기법을 억제할 수 있습니다.
df1.round(4)
또는 다음을 통해 글로벌하게 억제할 수 있습니다.
pd.options.display.float_format = '{:.4f}'.format
주피터 노트북 셀의 데이터 프레임 출력을 스타일링하려면 데이터 프레임 단위로 표시 스타일을 설정할 수 있습니다.
df = pd.DataFrame({'A': np.random.randn(4)*1e7})
df.style.format("{:.1f}")
이 메뉴얼을 참조해 주세요.
소수점 이하 고정 자리수를 글로벌하게 설정하는 것은 많은 경우 좋지 않습니다.이는 크기에 관계없이 표시하는 모든 다양한 데이터에 대해 소수점 이하 자리수가 적절하지 않을 수 있기 때문입니다.대신 큰 값과 매우 작은 값에 대해서만 과학적인 표기법을 제공합니다(그리고 ","를 생략하지 않는 한 수천 개의 구분자를 추가합니다).
pd.set_option('display.float_format', lambda x: '%,g' % x)
또는 정확성을 잃지 않고 과학적 표기법을 거의 완전히 억제하려면 다음과 같이 하십시오.
pd.set_option('display.float_format', str)
부동소수점이 다른 여러 데이터 프레임이 있었기 때문에 x-to-Allans 아이디어로 동적 길이를 만들었습니다.
pd.set_option('display.float_format', lambda x: f'%.{len(str(x%1))-2}f' % x)
이것의 단점은 플로트에서 마지막 0이 있으면 잘라진다는 것입니다.따라서 0.000070이 아니라 0.00007이 됩니다.
이 유용한 코멘트를 확대해, 다음의 솔루션에서는, 포맷 옵션을 설정해, 옵션을 영속적으로 변경하지 않고 결과를 표시합니다.
with pd.option_context('display.float_format', lambda x: f'{x:,.3f}'):
display(sum_sales_dept)
dept
value1 119,243,300.0
value2 129,306,600.0
value3 107,714,200.0
예를 들어 csvfile csv.writer의 일부로 값을 사용하는 경우 목록을 작성하기 전에 번호 형식을 지정할 수 있습니다.
df['label'].apply(lambda x: '%.17f' % x).values.tolist()
언급URL : https://stackoverflow.com/questions/21137150/format-suppress-scientific-notation-from-pandas-aggregation-results
'programing' 카테고리의 다른 글
Jest를 사용하여 NUXT.js 및 Vue.js 앱을 테스트합니다.'mapState()에서 [vuex] 모듈 네임스페이스를 찾을 수 없음' 및 '[vuex] 알 수 없는 작업 유형'을 가져오는 중 (0) | 2022.12.31 |
---|---|
char가 숫자인지 문자인지를 확인합니다. (0) | 2022.12.31 |
python setup.py 언인스톨 (0) | 2022.12.31 |
__FILE__ 매크로가 전체 경로를 표시합니다. (0) | 2022.12.31 |
표에서 1을 선택한다는 것은 무슨 뜻입니까? (0) | 2022.12.31 |