摘要:学生餐审计项目涉及的审计数据具有海量、多源、异构等突出特点,利用数据分析技术能够有效提升审计效能,但项目同时也存在着数据来源复杂、数据质量不高等问题,此时使用Python技术能够更好的帮助大家对海量数据进行统计分析、挖掘分析、查询分析,发现疑点线索,以技术优势
学生餐审计项目涉及的审计数据具有海量、多源、异构等突出特点,利用数据分析技术能够有效提升审计效能,但项目同时也存在着数据来源复杂、数据质量不高等问题,此时使用Python技术能够更好的帮助大家对海量数据进行统计分析、挖掘分析、查询分析,发现疑点线索,以技术优势提升审计质效。
一、数据采集
学生餐相关数据可能存储在不同的系统或文件中,如学校食堂的订餐系统数据库(可能是MySQL、Oracle等)、财务系统记录的餐费收支数据、供应商提供的食材采购清单(大部分为Excel文件)等。Python可以使用相应的库来连接这些数据源,并将所需数据提取出来,例如使用pymysql库连接MySQL数据库、openpyxl库读取Excel文件,具体语句如下:
#%%
import pymysql
# 连接数据库
conn = pymysql.connect(
host='localhost',
user='root',
password='your_password',
database='school_canteen_order')
# 创建游标
cursor = conn.cursor
# 执行查询语句,获取学生订餐记录
query = "SELECT student_id, meal_type, order_date FROM orders"
cursor.execute(query)
# 获取查询结果
results = cursor.fetchall
# 关闭游标和连接
cursor.close
conn.close
for row in results:
print(row)
二、数据清洗
由于学生餐审计数据来源复杂,各渠道提供的数据格式各异,收集到的数据可能存在格式不规范、重复、缺失值等问题。Python可以通过编写函数和使用库(如pandas)来对数据进行清洗。例如使用pandas的drop_duplicates方法去除重复行,使用fillna方法填充缺失值等,具体语句如下:
#%%
import pandas as pd
# 读取餐费收支数据文件(假设为CSV格式)
df = pd.read_csv('meal_fees.csv')
# 填充缺失的餐费金额字段,假设用均值填充
mean_fee = df['meal_fee'].mean
df['meal_fee'] = df['meal_fee'].fillna(mean_fee)
print(df)
三、数据整合与分析
Python技术在学生餐审计中的应用场景众多,可根据项目实际需要进行分析。
1.跨表之间数据整合
例如在食材采购数据中,我们采集到的数据很多会按月份或品类进行建表(如下图)。
当我们想对一个时间段中某个菜品的采购情况进行汇总时需要打开多个表格,就会非常费时费力,此时可以采取“os.walk”语句,自动对文件夹内所有符合要求的文件进行整合,具体语句如下:
#%% 例如对文件夹内所有表格中牛奶的采购情况进行整合
import openpyxl as px
import os
wb1=px.Workbook
ws1=wb1.worksheets[0]
t=os.walk(r'某文件夹')
for e in t:
for i in e[2]:
path=e[0]+'\\'+i
wb=px.load_workbook(path)
ws=wb.worksheets[0]
for m in range(2,ws.max_row+1):
aa=str(ws.cell(m,4).value)
if aa=='牛奶类' or aa=='牛奶':
ws1.append([ws.cell(m,1).value,
ws.cell(m,2).value,ws.cell(m,3)])
wb1.save('test.xlsx')
2.食材采购分析
对供应商提供的食材采购清单进行分析,比如统计不同食材的采购量、采购频次、采购成本等。借助pandas库进行数据处理,通过条件筛选、分组聚合等操作获取所需的分析结果。例如,很多采购数据中日期为年月日在同一格中,且日期格式不统一,若此时我们想筛选某一个月的采购数据,就可以使用pandas库,具体语句如下:
#%%
import pandas as pd
# 读取食材采购清单数据(假设为Excel文件)
df = pd.read_excel('ingredient_purchases.xlsx')
# 将采购日期列转换为日期时间类型
df['purchase_date']=pd.to_datetime(df['purchase_date'])
# 提取月份作为新列
df['month'] = df['purchase_date'].dt.month
# 按月份和食材名称分组并计算采购量总和
grouped=df.groupby(['month','ingredient_name'])
['quantity'].sum
print(grouped)
来源:云贵高原生活指南