python生成每日报表数据(Excel)并邮件发送的实例

yizhihongxing

我来为你详细讲解如何用Python生成每日报表数据(Excel)并邮件发送的实例教程。

1. 安装必要的库

首先,我们需要安装两个Python库:pandasopenpyxl

  • pandas 用于将数据整理为需要生成的报表格式。
  • openpyxl 用于将生成的报表保存为Excel格式,并且生成Excel的图表。

可以使用 pip 工具进行安装,打开命令行窗口,输入以下命令:

pip install pandas openpyxl

2. 准备数据

在开始编写Python代码之前,我们需要准备数据,数据可以通过读取数据库、API接口或Excel表格等渠道获取。

假设我们已经成功获取了需要生成报表的数据,现在我们需要将数据整理成符合报表格式的形式。

示例1:假设我们有一个商品销售记录的数据表,包括了每个商品的名称、销售数量和销售金额,我们需要按天来统计每个商品的销售量和销售金额,生成一个Excel表格作为每日报表。

示例2:假设我们有一个学生成绩记录的数据表,包括每个学生的姓名、学号、考试科目和成绩,我们需要按科目来统计每个学生的平均成绩和最高成绩,生成一个Excel表格作为每日报表。

3. 生成报表

接下来我们开始编写Python代码,将整理好的数据按照需要生成的格式生成报表。

示例1代码:

import pandas as pd
from openpyxl import Workbook
from openpyxl.chart import PieChart, Reference

# 读取数据
data = pd.read_csv("sales.csv")

# 按天统计销售量和销售金额
daily_sales = data.groupby('date').sum()[['quantity', 'amount']]

# 创建Excel工作簿
wb = Workbook()
ws = wb.active
ws.title = 'Daily Sales'

# 写入数据
ws['A1'] = 'Date'
ws['B1'] = 'Quantity'
ws['C1'] = 'Amount'
for i, (date, row) in enumerate(daily_sales.iterrows(), 2):
    ws.cell(row=i, column=1, value=date)
    ws.cell(row=i, column=2, value=row['quantity'])
    ws.cell(row=i, column=3, value=row['amount'])

# 生成销售量饼图
pie = PieChart()
labels = Reference(ws, min_col=1, min_row=2, max_row=len(daily_sales)+1)
data = Reference(ws, min_col=2, min_row=1, max_row=len(daily_sales)+1)
pie.add_data(data)
pie.set_categories(labels)
ws.add_chart(pie, 'E2')

# 保存报表
wb.save('daily_sales.xlsx')

示例2代码:

import pandas as pd
from openpyxl import Workbook
from openpyxl.chart import BarChart, Reference

# 读取数据
data = pd.read_excel('grades.xlsx')

# 按科目统计平均分和最高分
subject_grades = data.groupby('subject').agg(['mean', 'max'])['grade']

# 创建Excel工作簿
wb = Workbook()
ws = wb.active
ws.title = 'Subject Grades'

# 写入数据
ws['A1'] = 'Subject'
ws['B1'] = 'Average Grade'
ws['C1'] = 'Max Grade'
for i, (subject, row) in enumerate(subject_grades.iterrows(), 2):
    ws.cell(row=i, column=1, value=subject)
    ws.cell(row=i, column=2, value=row['mean'])
    ws.cell(row=i, column=3, value=row['max'])

# 生成成绩柱状图
bar = BarChart()
labels = Reference(ws, min_col=1, min_row=2, max_row=len(subject_grades)+1)
avg_grades = Reference(ws, min_col=2, min_row=1, max_row=len(subject_grades)+1)
max_grades = Reference(ws, min_col=3, min_row=1, max_row=len(subject_grades)+1)
bar.add_data(avg_grades, titles_from_data=True)
bar.add_data(max_grades, titles_from_data=True)
bar.set_categories(labels)
ws.add_chart(bar, 'E2')

# 保存报表
wb.save('subject_grades.xlsx')

4. 发送邮件

将生成好的Excel文件作为邮件附件发送给指定人员,这里我们使用Python内置的email模块进行邮件发送。

示例代码:

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication

# 发件人邮箱账号和密码
sender_email = 'example@163.com'
sender_password = 'password'

# 收件人邮箱列表
receivers = ['foo@bar.com', 'bar@foo.com']

# 邮件主题和正文
subject = 'Daily Report'
body = 'Please find attached the daily report.'

# 创建邮件
msg = MIMEMultipart()
msg['From'] = sender_email
msg['To'] = ', '.join(receivers)
msg['Subject'] = subject
msg.attach(MIMEText(body))

# 添加Excel附件
file = 'daily_sales.xlsx'
with open(file, "rb") as f:
    attach = MIMEApplication(f.read(), _subtype="xlsx")
    attach.add_header('Content-Disposition', 'attachment', filename=file)
    msg.attach(attach)

# 发送邮件
with smtplib.SMTP('smtp.163.com', 25) as smtp:
    smtp.login(sender_email, sender_password)
    smtp.sendmail(sender_email, receivers, msg.as_string())

注:以上示例代码需要主动替换sender_emailsender_passwordreceivers变量为你自己的邮箱账号、密码和收件人列表。

至此,我们已经完成了用Python生成每日报表数据(Excel)并邮件发送的实例教程。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python生成每日报表数据(Excel)并邮件发送的实例 - Python技术站

(0)
上一篇 2023年5月13日
下一篇 2023年5月13日

相关文章

  • Python实现爬取房源信息的示例详解

    Python实现爬取房源信息的示例详解 1. 准备工作 在开始实现爬取房源信息的示例之前,你需要进行以下准备工作: 安装Python环境 如果你尚未安装Python环境,可以前往Python官网下载你所需要的版本。 安装第三方包 我们使用requests、Beautiful Soup和pandas这三个第三方包来进行数据抓取和数据处理。你可以使用以下命令分别…

    python 2023年5月14日
    00
  • 使用Python的Twisted框架实现一个简单的服务器

    使用Python的Twisted框架实现一个简单的服务器是一个比较常见的场景,下面是几个步骤: 步骤一:安装Twisted框架 首先,需要安装Twisted框架。如果你的机器上已经有Python环境,可以通过以下命令安装: pip install twisted 如果你还没有安装Python,可以去Python官方网站下载对应版本的安装包。 步骤二:创建一个…

    python 2023年6月5日
    00
  • python实现全排列代码(回溯、深度优先搜索)

    下面是详细讲解“Python实现全排列代码(回溯、深度优先搜索)”的完整攻略,包含两个示例说明。 全排列算法简介 全排列是指将一组数按一定顺序进行排列,通常用于密码学、组合数学等领域。全排列算法有多种实现方式,其中回溯和深度优先搜索是两种常见的方法。 回溯法实现全排列 下面是Python实现回溯法全排列的代码: def backtrack_permute(n…

    python 2023年5月14日
    00
  • python使用技巧-标准输入

    Python使用技巧-标准输入 什么是标准输入 标准输入是指一个程序所读取的输入流,通常是通过键盘输入的一串字符数据。在Python中,标准输入可以通过内置的input()函数实现。 如何使用标准输入 通过input()函数,我们可以获取用户在命令行输入的数据。我们来看一个简单的示例,比如我们要从命令行输入一个字符串,然后将它打印出来,可以这样写: inpu…

    python 2023年6月2日
    00
  • Python (seaborn) 的颜色:不添加到 DataFrame 的颜色

    【问题标题】:Colors for Python (seaborn): colors without adding to DataFramePython (seaborn) 的颜色:不添加到 DataFrame 的颜色 【发布时间】:2023-04-02 10:03:01 【问题描述】: slov = {‘People’: {0: ‘Ivan’, 1: ‘J…

    Python开发 2023年4月8日
    00
  • 在 Spark 2 解释器下使用 Python 和 Zeppelin

    【问题标题】:Using Python with Zeppelin under the Spark 2 Interpreter在 Spark 2 解释器下使用 Python 和 Zeppelin 【发布时间】:2023-04-04 11:32:01 【问题描述】: 我已经在虚拟机上部署了 HDP: 2.6.4 我可以看到 spark2 没有指向正确的 pyt…

    Python开发 2023年4月6日
    00
  • Python中pip安装非PyPI官网第三方库的方法

    当我们需要使用 Python 项目中没有包含的第三方库时,通常可以使用 pip 工具进行安装。但是,如果第三方库不在 PyPI 官网上,该如何安装呢?下面是一些安装非 PyPI 官网第三方库的方法。 1. 使用其他包管理工具 有些第三方库可能在其他包管理工具中提供,例如我们可以使用 conda 安装一些非 PyPI 第三方库。例如: conda instal…

    python 2023年5月14日
    00
  • python Pygame的具体使用讲解

    Python Pygame的具体使用讲解 Pygame是一个基于Python的游戏开发库,它可以让开发者方便地开发2D游戏。本文将详细讲解如何使用Pygame进行游戏开发。 安装Pygame 使用Pygame前,需要安装Pygame。可使用pip命令进行安装。 pip install pygame 创建游戏窗口 使用Pygame创建游戏窗口非常简单,只需要导…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部