python pandas excel 实例_Python pandas 模块,ExcelWriter() 实例源码 - 编程字典

def get(self, request):

user = request.user

bytes_io = io.BytesIO()

writer = pd.ExcelWriter(bytes_io, engine='xlsxwriter', options={'remove_timezone': True})

# supplement events

supplement_events_worksheet_name = 'SupplementEvents'

supplement_events = SupplementLog.objects.filter(user=user)

df_builder = SupplementEventsDataframeBuilder(supplement_events)

supplement_events_df = df_builder.get_flat_daily_dataframe()

self._write_to_workbook(writer, supplement_events_df, supplement_events_worksheet_name)

# sleep events

sleep_activities_worksheet_name = 'SleepActivities'

sleep_activities = SleepLog.objects.filter(user=user)

df_builder = SleepActivityDataframeBuilder(sleep_activities)

sleep_activities_series = df_builder.get_sleep_history_series()

self._write_to_workbook(writer, sleep_activities_series, sleep_activities_worksheet_name)

# user activity events

user_activity_events_sheet_name = 'UserActivityEvents'

user_activity_events = UserActivityLog.objects.filter(user=user)

df_builder = UserActivityEventDataframeBuilder(user_activity_events)

user_activity_events_df = df_builder.get_flat_daily_dataframe()

self._write_to_workbook(writer, user_activity_events_df, user_activity_events_sheet_name)

# productivity logs

productivity_log_sheet_name = 'DailyProductivityLog'

productivity_log = DailyProductivityLog.objects.filter(user=user)

df_builder = ProductivityLogEventsDataframeBuilder(productivity_log)

# odd why this one isn't sorted the right way

productivity_log_df = df_builder.get_flat_daily_dataframe().sort_index(ascending=True)

self._write_to_workbook(writer, productivity_log_df, productivity_log_sheet_name)

all_dataframes = [productivity_log_df, supplement_events_df, user_activity_events_df]

concat_dataframe = pd.concat(all_dataframes, axis=1)

# include sleep which is a series and not a dataframe

cumulative_log_sheet_name = 'Aggregate Log'

concat_dataframe[SLEEP_MINUTES_COLUMN] = sleep_activities_series

self._write_to_workbook(writer, concat_dataframe, cumulative_log_sheet_name)

cumulative_14_day_dataframe_sheet_name = 'Aggregate 14 Log'

cumulative_14_day_dataframe = concat_dataframe.rolling(window=14, min_periods=1).sum()[14:]

self._write_to_workbook(writer, cumulative_14_day_dataframe, cumulative_14_day_dataframe_sheet_name)

cumulative_28_day_dataframe_sheet_name = 'Aggregate 28 Log'

cumulative_28_day_dataframe = concat_dataframe.rolling(window=28, min_periods=1).sum()[28:]

self._write_to_workbook(writer, cumulative_28_day_dataframe, cumulative_28_day_dataframe_sheet_name)

# make sure all the output gets writen to bytes io

writer.close()

# http response because we are providing data and not doing any template / rendering

response = HttpResponse(

bytes_io.getvalue(),

content_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')

response['Content-Disposition'] = 'attachment; filename=user_export_data.xlsx'

return response

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值