-- 【AI会计革命:从账房先生到数据军师的跨界突围】【能力重构篇】 泰山医院 岳涛
引言
在数字化浪潮的冲击下,会计行业正经历着深刻变革。传统的账房先生式工作模式逐渐被智能化、自动化的流程所取代。对于会计人而言,掌握 Python 这门强大的编程语言,就如同为自己开启了一扇通往数据军师之路的大门。它不仅能大幅提升工作效率,还能挖掘数据背后隐藏的价值,为企业决策提供有力支持。接下来,让我们一同开启这趟 Python 速成之旅,通过 20 个常用代码块的解析,快速掌握会计工作中实用的 Python 技能。
一、数据读取与导入
在会计工作中,常常需要处理各种格式的数据文件,如 Excel、CSV 等。Python 提供了丰富的库来实现数据的读取与导入。
1.1 读取 Excel 文件
使用pandas库,它是数据分析和处理的强大工具。
import pandas as pd
# 读取单个工作表
data = pd.read_excel('
hospital_accounting_data.xlsx', sheet_name='门诊收入')
print(data.head())
# 读取多个工作表
sheets = pd.read_excel('
hospital_accounting_data.xlsx', sheet_name=None)
for sheet_name, sheet_data in sheets.items():
print(f"Sheet: {sheet_name}")
print(sheet_data.head())
1.2 读取 CSV 文件
同样可以使用pandas库。
import pandas as pd
data = pd.read_csv('hospital_transactions.csv')
print(data.head())
二、数据清洗与预处理
原始数据往往存在缺失值、重复值、异常值等问题,需要进行清洗和预处理。
2.1 处理缺失值
2.1.1 删除缺失值
import pandas as pd
data = pd.read_csv('data_with_missing.csv')
# 删除含有缺失值的行
cleaned_data = data.dropna()
print(cleaned_data.head())
2.1.2 填充缺失值
import pandas as pd
data = pd.read_csv('data_with_missing.csv')
# 使用指定值填充缺失值
data.fillna(0, inplace=True)
print(data.head())
# 使用统计值填充缺失值,如均值
mean_value = data['金额'].mean()
data['金额'].fillna(mean_value, inplace=True)
print(data.head())
2.2 去除重复值
import pandas as pd
data = pd.read_csv('data_with_duplicates.csv')
unique_data = data.drop_duplicates()
print(unique_data.head())
2.3 识别与处理异常值(以费用数据为例)
利用 IQR(四分位距)方法识别异常值。
import pandas as pd
data = pd.read_csv('hospital_cost_data.csv')
Q1 = data['费用'].quantile(0.25)
Q3 = data['费用'].quantile(0.75)
IQR = Q3 - Q1
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR
filtered_data = data[(data['费用'] >= lower_bound) & (data['费用'] <= upper_bound)]
print(filtered_data.head())
三、财务数据分析
会计工作离不开数据分析,Python 在这方面具有强大的优势。
3.1 计算财务指标
以计算医院科室利润率为例。
import pandas as pd
data = pd.read_csv('
hospital_department_financial_data.csv')
# 计算利润率
data['profit_margin'] = data['利润'] / data['收入']
print(data[['收入', '利润', 'profit_margin']].head())
3.2 数据透视表
使用pandas的pivot_table方法创建数据透视表,分析各科室不同月份的收入情况。
import pandas as pd
data = pd.read_csv('
hospital_department_income.csv')
pivot_data = pd.pivot_table(data, values='收入', index='科室', columns='月份', aggfunc='sum')
print(pivot_data)
3.3 计算累计财务数据(以医院收入为例)
import pandas as pd
data = pd.read_csv('
hospital_monthly_income.csv')
data['累计收入'] = data['收入'].cumsum()
print(data[['月份', '收入', '累计收入']])
3.4 同比与环比分析(以医院药品销售数据为例)
import pandas as pd
data = pd.read_csv('hospital_drug_sales.csv')
data['同比增长'] = data.groupby('药品名称')['销量'].pct_change(12)
data['环比增长'] = data.groupby('药品名称')['销量'].pct_change(1)
print(data[['药品名称', '月份', '销量', '同比增长', '环比增长']])
四、数据可视化
直观的图表能更好地展示财务数据,帮助理解和决策。
4.1 绘制柱状图
使用matplotlib库,展示各科室的收入对比。
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_csv('
hospital_department_income.csv')
plt.bar(data['科室'], data['收入'])
plt.xlabel('科室')
plt.ylabel('收入')
plt.title('各科室收入对比')
plt.xticks(rotation=45)
plt.show()
4.2 绘制折线图
展示医院年度收入趋势。
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_csv('
hospital_yearly_income.csv')
plt.plot(data['年份'], data['收入'])
plt.xlabel('年份')
plt.ylabel('收入')
plt.title('医院年度收入趋势')
plt.show()
4.3 绘制饼图(以医院成本结构为例)
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_csv('
hospital_cost_structure.csv')
labels = data['成本项目']
sizes = data['成本金额']
plt.pie(sizes, labels=labels, autopct='%1.1f%%')
plt.title('医院成本结构')
plt.show()
五、自动化任务
Python 可以实现一些重复性会计任务的自动化。
5.1 定期生成财务报表
结合pandas和schedule库实现定时任务。
import pandas as pd
import schedule
import time
def generate_financial_report():
data = pd.read_csv('financial_data.csv')
# 进行数据处理和报表生成
report = data.groupby('category').sum()
report.to_csv('
daily_financial_report.csv')
# 每天早上9点生成报表
schedule.every().day.at("09:00").do(generate_financial_report)
while True:
schedule.run_pending()
time.sleep(1)
5.2 自动发送财务报告邮件(以医院月度财务报告为例)
结合pandas、smtplib和email库。
import pandas as pd
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
def generate_and_send_report():
data = pd.read_csv('
hospital_monthly_financial_data.csv')
report = data.groupby('项目').sum()
report.to_csv('
monthly_financial_report.csv')
msg = MIMEMultipart()
msg['From'] = 'your_email@example.com'
msg['To'] ='recipient_email@example.com'
msg['Subject'] = '医院月度财务报告'
body = '附件为医院月度财务报告,请查收。'
msg.attach(MIMEText(body, 'plain'))
with open('
monthly_financial_report.csv', 'rb') as f:
part = MIMEApplication(f.read(), Name='
monthly_financial_report.csv')
part['Content-Disposition'] = f'attachment; filename="
monthly_financial_report.csv"'
msg.attach(part)
with smtplib.SMTP('smtp.example.com', 587) as server:
server.starttls()
server.login('your_email@example.com', 'your_password')
server.sendmail('your_email@example.com','recipient_email@example.com', msg.as_string())
# 每月1号发送报告
schedule.every().month.at("01:00:00").do(generate_and_send_report)
while True:
schedule.run_pending()
time.sleep(1)
总结
通过这 20 个常用代码块的学习,我们看到 Python 在会计工作中的广泛应用。从数据读取、清洗到分析、可视化,再到自动化任务,Python 为会计人提供了强大的工具和方法。当然,这只是 Python 在会计领域应用的冰山一角,随着学习的深入,会计人可以根据实际工作需求,开发出更复杂、更高效的解决方案。希望广大会计同行能积极拥抱 Python,在这场 AI 会计革命中实现能力重构,从传统账房先生华丽转身为数据军师,为企业创造更大的价值。