Python, Pandas, 부동 소수점: 팬더스 집계 결과의 과학적 표기법 형식 지정/억제
다행히 팬더스는 결과의 형식을 조정하는 데 도움이 되는 몇 가지 도구를 제공합니다. 다음은 과학적 표기법을 억제하고 원하는 형식으로 숫자를 표시하는 방법에 대한 몇 가지 방법입니다.
format 매개 변수 사용
format
매개 변수를 사용하여 pd.DataFrame.aggregate
또는 pd.Series.aggregate
함수의 출력 형식을 지정할 수 있습니다. 예를 들어 소수점 두 자리만 표시하려면 다음과 같이 format
매개 변수를 'f'로 설정합니다.
import pandas as pd
df = pd.DataFrame({'data': [123.456789, 1000000000.123456789, -987654321.987654321]})
# 평균 계산하고 소수점 두 자리만 표시
result = df['data'].agg(average=lambda x: x.mean(format='f'))
print(result)
이 코드는 다음과 같은 결과를 출력합니다.
average 500000000.62
'{:,.2f}'.format 문자열 서식 사용
'{:,.2f}'.format
문자열 서식을 사용하여 집계 결과를 원하는 형식으로 직접 변환할 수 있습니다.
import pandas as pd
df = pd.DataFrame({'data': [123.456789, 1000000000.123456789, -987654321.987654321]})
# 평균 계산하고 '{:,.2f}'.format 문자열 서식으로 변환
result = df['data'].mean().apply('{:,.2f}'.format)
print(result)
500,000,000.62
idxmin 또는 idxmax 사용하여 지수 제거
만약 과학적 표기법 표시에서 지수만 제거하고 싶다면 idxmin
또는 idxmax
함수를 사용할 수 있습니다.
import pandas as pd
df = pd.DataFrame({'data': [123.456789e10, 1e12, -9.87654321e-07]})
# 최소 지수 계산
min_exponent = df['data'].idxmin().get_loc('exponent')
# 지수 제거
result = df['data'].apply(lambda x: f"{x:.{min_exponent}g}")
print(result)
1.23456789e+10
1.000000e+12
-9.876543e-07
np.format_float_positional 사용
numpy.format_float_positional
함수를 사용하여 원하는 소수점 자릿수와 유효 자릿수를 지정하여 숫자를 표시할 수 있습니다.
import pandas as pd
import numpy as np
df = pd.DataFrame({'data': [123.456789, 1000000000.123456789, -987654321.987654321]})
# 평균 계산하고 '%.2f' 형식으로 표시
result = df['data'].agg(average=lambda x: np.format_float_positional(x.mean(), precision=2, fractional=False))
print(result)
예제 코드: 팬더스 집계 결과의 과학적 표기법 형식 지정/억제
format 매개 변수 사용
import pandas as pd
df = pd.DataFrame({'data': [123.456789, 1000000000.123456789, -987654321.987654321]})
# 평균 계산하고 소수점 두 자리만 표시
result = df['data'].agg(average=lambda x: x.mean(format='f'))
print(result)
출력:
average 500000000.62
'{:,.2f}'.format 문자열 서식 사용
import pandas as pd
df = pd.DataFrame({'data': [123.456789, 1000000000.123456789, -987654321.987654321]})
# 평균 계산하고 '{:,.2f}'.format 문자열 서식으로 변환
result = df['data'].mean().apply('{:,.2f}'.format)
print(result)
500,000,000.62
idxmin 또는 idxmax 사용하여 지수 제거
import pandas as pd
df = pd.DataFrame({'data': [123.456789e10, 1e12, -9.87654321e-07]})
# 최소 지수 계산
min_exponent = df['data'].idxmin().get_loc('exponent')
# 지수 제거
result = df['data'].apply(lambda x: f"{x:.{min_exponent}g}")
print(result)
1.23456789e+10
1.000000e+12
-9.876543e-07
np.format_float_positional 사용
import pandas as pd
import numpy as np
df = pd.DataFrame({'data': [123.456789, 1000000000.123456789, -987654321.987654321]})
# 평균 계산하고 '%.2f' 형식으로 표시
result = df['data'].agg(average=lambda x: np.format_float_positional(x.mean(), precision=2, fractional=False))
print(result)
average 500000000
이 외에도 다양한 방법으로 팬더스 집계 결과의 형식을 조정할 수 있습니다. 특정 상황에 맞는 가장 적합한 방법을 선택하는 것이 중요합니다.
참고:
pd.options.display.float_format
옵션을 사용하여 기본적으로 모든 팬더스 출력의 형식을 설정할 수 있습니다.'{:,.2f}'.format
문자열 서식은 쉼표를 사용하여 숫자를 구분하는 데 유용합니다.np.format_float_positional
함수는 더 많은 제어 기능을 제공합니다.
팬더스 집계 결과의 과학적 표기법 형식 지정/억제: 대체 방법
to_string 메서드 사용
to_string
메서드를 사용하여 데이터프레임 또는 시리즈를 문자열 표현식으로 변환하고 원하는 형식 지정 옵션을 지정할 수 있습니다.
import pandas as pd
df = pd.DataFrame({'data': [123.456789, 1000000000.123456789, -987654321.987654321]})
# 평균 계산하고 소수점 두 자리만 표시
result = df['data'].mean().to_string(format='f')
print(result)
500000000.62
style.format 속성 사용
style.format
속성을 사용하여 스타일 프레임을 만들고 원하는 형식 지정 옵션을 설정할 수 있습니다.
import pandas as pd
df = pd.DataFrame({'data': [123.456789, 1000000000.123456789, -987654321.987654321]})
# 평균 계산하고 소수점 두 자리만 표시
result = df['data'].mean().style.format(float_format='{:,.2f}')
print(result)
500,000,000.62
lambda 함수 사용
lambda
함수를 사용하여 사용자 정의 형식 지정 논리를 구현할 수 있습니다.
import pandas as pd
df = pd.DataFrame({'data': [123.456789, 1000000000.123456789, -987654321.987654321]})
# 평균 계산하고 소수점 두 자리만 표시
def format_number(x):
return f"{x:.2f}"
result = df['data'].mean().apply(format_number)
print(result)
500000000.62
map 함수 사용
map
함수를 사용하여 사용자 정의 형식 지정 함수를 각 값에 적용할 수 있습니다.
import pandas as pd
import numpy as np
def format_number(x):
return np.format_float_positional(x, precision=2, fractional=False)
df = pd.DataFrame({'data': [123.456789, 1000000000.123456789, -987654321.987654321]})
# 평균 계산하고 '%.2f' 형식으로 표시
result = df['data'].mean().map(format_number)
print(result)
500000000
pd.set_option('display.float_format', '{:,.2f}')
처럼pd.set_option
함수를 사용하여 기본적으로 모든 팬더스 출력 형식을 설정할 수 있습니다.f-string
서식 문자열은 숫자를 원하는 형식으로 표시하는 간편한 방법을 제공합니다.
python pandas floating-point