팬더를 사용한 엑셀 쓰기 비율
Panda를 사용하기 전에 CSV에 글을 쓸 때, 저는 종종 다음 형식을 백분율로 사용하곤 했습니다.
'%0.2f%%' % (x * 100)
이것은 csv를 로드할 때 Excel에 의해 올바르게 처리될 것입니다.
이제 Panda의 to_excel 함수를 사용하고 사용하려고 합니다.
(simulated * 100.).to_excel(writer, 'Simulated', float_format='%0.2f%%')
"ValueError: invalid liter for float(): 0.0126%"라는 메시지가 표시됩니다.'%%'를 지정하지 않으면 올바르게 기록되지만 %로 형식이 지정되지 않습니다.
Pandas의 to_excel에 백분율을 기록하는 방법이 있습니까?
이 질문은 이 시점에서 모두 꽤 오래된 것입니다.더 나은 해결책을 보려면 팬더와 함께 작업하는 xlsxwriter를 확인하십시오.
이것이 제가 OpenPyXL v2.2와 함께 팬더를 사용하여 셀에 문자열이 아닌 숫자가 포함되도록 하는 해결책입니다.값을 부동으로 유지하고 셀별로 엔드 셀에 형식을 적용합니다(경고: 효율적이지 않음).
xlsx = pd.ExcelWriter(output_path)
df.to_excel(xlsx, "Sheet 1")
sheet = xlsx.book.worksheets[0]
for col in sheet.columns[1:sheet.max_column]:
for cell in col[1:sheet.max_row]:
cell.number_format = '0.00%'
cell.value /= 100 #if your data is already in percentages, has to be fractions
xlsx.save()
자세한 숫자 형식은 OpenPyXL 설명서를 참조하십시오.
흥미롭게도, 의사들은 OpenPyXL이 "1.23%"로 포맷된 문자열에서 백분율을 추측할 수 있을 정도로 똑똑하다고 제안하지만, 저에게는 그렇지 않습니다.Pandas의 _Openpyxl1Writer에서 문자열에 "set_value_explicit"를 사용하는 코드를 찾았지만 다른 버전에서는 이와 유사한 코드가 없습니다.누군가 이 문제의 진상을 규명하고 싶다면 더 조사할 가치가 있습니다.
이를 위해 다음 해결 방법을 수행할 수 있습니다.
df *= 100
df = pandas.DataFrame(df, dtype=str)
df += '%'
ew = pandas.ExcelWriter('test.xlsx')
df.to_excel(ew)
ew.save()
XlsxWriter 문서에는 이를 달성하는 방법에 대한 유용한 예가 있습니다. https://xlsxwriter.readthedocs.io/example_pandas_percentage.html
요점은 다음과 같습니다.
writer = pd.ExcelWriter('pandas_percent.xlsx', engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet1')
percent_format = writer.book.add_format({'num_format': '0%'})
# Now apply the number format to the column with index 2.
writer.sheets['Sheet1'].set_column(2, 2, None, percent_format)
writer.save()
참고 1: 백분율로 형식을 지정할 열은 비율 변동이어야 합니다(즉, 100을 곱하지 마십시오).
참고 2: set_column() 호출에서 다음과 같이 설정된 매개 변수None
열 너비입니다.열 너비를 자동으로 맞추려면 다음 게시물을 확인하십시오. https://stackoverflow.com/a/61617835/13261722
참고 3: set_column() 함수에 대한 자세한 내용을 보려면 다음 문서를 확인하십시오. https://xlsxwriter.readthedocs.io/worksheet.html?highlight=set_column#set_column
언급URL : https://stackoverflow.com/questions/18115741/writing-percentages-in-excel-using-pandas
'programing' 카테고리의 다른 글
C#과 Powershell로 무엇을 할 수 있습니까? (0) | 2023.09.04 |
---|---|
하위 쿼리 mysql에 쿼리 제한을 추가하는 방법 (0) | 2023.09.04 |
mysql(오로라)에서 "Lock wait timeout exceeded"를 디버깅하는 방법 (0) | 2023.09.04 |
AWS RDS 동시 연결 문제 (0) | 2023.08.30 |
IDLE에서 회선 번호를 켜는 방법은 무엇입니까? (0) | 2023.08.30 |