Как сохранить выходные данные AWS Athena из сценария Python в Excel? - PullRequest
0 голосов
/ 24 октября 2019

Я запрашиваю у aws athena, используя скрипт на python и библиотеку pyathena, и получаю правильный вывод в виде таблицы.

Вывод

Теперьпроблема заключается в том, что я хочу сохранить вывод в Excel.

Может кто-нибудь подсказать мне, используя скрипт Python, как я могу сохранить вывод в Excel?

Вот код, который я использую для запроса вaws athena:

from pyathena import connect
import os
import pandas as pd
%matplotlib inline

conn = connect(aws_access_key_id='*****',
                 aws_secret_access_key='*****',
                 s3_staging_dir='s3://****/',
                 region_name='us-west-1')

cursor = conn.cursor()
%time cursor.execute("SELECT * from my_table;")

Заранее спасибо ...

1 Ответ

0 голосов
/ 25 октября 2019

Вывод в Excel не ограничивается созданием файла xlsx, который вы также можете записать как csv и позволить Excel загрузить файл csv.

Вы можете создать несколько листов, используя что-то вроде:

from pandas import ExcelWriter
def save_xls(list_dfs, dfs_names, xls_path):
    with ExcelWriter(xls_path) as writer:
        for df,name in zip(list_dfs, dfs_names):
            df.to_excel(writer,name)
        writer.save()

, а затем вы можете вызвать функцию с некоторым преобразованием ваших данных, таких как сводные таблицы и даже цвета:

save_xls(
    (raw.style.format("{:,.0f}"), 
     actual_table.style.format("{:,.0f}"), 
     diff_table.style.applymap(_color_red_or_green).format("{:,.0f}"), 
     ratio_table.style.applymap(_color_red_yellow_or_green).format("{:.3f}")),
    ('Raw',
    'Actuals',
    'Diff',
    'Ratio'),
    results_with_format.xlsx')

например, форматирование с тремя цветами на основе значения ячеек:

def _color_red_yellow_or_green(val):
    color = 'red' if val > 0.1 else 'yellow' if val > 0.05 else 'green'
    return 'background-color: %s' % color
...