导入Python所需用到的第三方库包(建议将包名背诵):

  1. pandas与numpy都数据处理的包;
  2. matplotlib是绘制图像的包;
  3. warnings比较少接触,一般用于让警告不提示;
import pandas as pd
import numpy as np

import matplotlib.pyplot as plt
plt.rcParams['font.family']='kaiTi' # 用黑体显示中文
plt.rcParams['axes.unicode_minus']=False # 正常显示负号 

import warnings
warnings.filterwarnings("ignore")

常见函数

读取Excel表格 pd.read_excel()

  • 括号内有三段,官方文档中的描述"pd.read_excel(excelfile, sheet_name=0, header=0)"
  • 由此可得pd.read_excel()中:
  • 第一个函数是excel的路径;
  • 第二个函数是excel中sheet的名称,默认为0,即第一张表;
  • 第三个函数式excel中从表内第几行开始读取数据,默认为0,即从头开始读取;
  • 代码翻译:读取工作簿中'G:\学习资料\会计技能竞赛\样卷数据\北京高佳商贸有限责任公司业财资料.xlsx'路径中的sheet名称为'期初余额'的工作表,并从第2行开始读取(header=0才是从第一行开始读取)
file = 'G:\学习资料\会计技能竞赛\样卷数据\北京高佳商贸有限责任公司业财资料.xlsx'
qc_data = pd.read_excel(file,sheet_name='期初余额',header=1)
qc_data

纵向合并 pd.concat()

  • [ ]内是两个表的名称,重点在axis=0/1
  • axis=0基于纵向合并
  • axis=1基于横向合并
  • 代码翻译:将left_zcdf_2021,right_zcdf_2021基于纵向合并
zcdf_2021 = pd.concat([left_zcdf_2021,right_zcdf_2021],axis=0)
zcdf_2021

表格合并 pd.merge()

  • 前面两个函数的为合并的表格的名称;
  • left_index和right_index都等于True,证明基于index索引列进行合并
  • how='inner'合并的方式为inner,即求交集∩
  • 代码翻译:将表格all_lnzc_df,zcdf_2021基于他们的索引进行合并,合并出现的结果是基于两者都存在的索引进行横向合并;
four_year_zcdf=pd.merge(all_lnzc_df,zcdf_2021,left_index=True, right_index=True, how='inner')
four_year_zcdf.head()

删除函数 pd.dropna()

  • 删除表格中nan的数值(nan即Not a Number)
  • axis=1,即选择行目标
  • how='all'即行内所有数据都是nan;
  • 代码翻译:将lnlr_df中所有数据都是nan的行删除
lnlr_df = lnlr_df.dropna(axis=1,how='all')

替换函数 pd.replace()

  • 注意这里是整体为0才会替换,例如90000并不会被替换为9nannannannannan;
  • 代码翻译:将表格中的0替换为nan;
four_year_lrdf = four_year_lrdf.replace(0,np.nan)
four_year_lrdf.head()

填充函数 pd.fillna()

  • 代码翻译:将表格内为nan的数据用括号内的数值替换,例图中为0,则表格内所有nan会替换为0;
zb_data = zb_data.fillna(0)#缺失值用0填充
zb_data.head()

数据后移 pd.shift()

  • 此函数会将表格的数据往后移;
  • 正好符合上期期末数据等于本期期初数据;
  • 代码翻译:在df12中新建一列名为"期初资产总计",这一列的数据使用"资产总计"的数据来填充,此步骤操作完毕后第一列的期初资产是没有数据的;
df12['期初资产总计'] = df12['资产总计'].shift(1) 

区域选取 pd.loc()

  • 例图中的操作可以前置解决,即引用到第一个解释的函数pd.read_excel(header=1);
  • 代码翻译:将fznl_df表格从第一行读取,末端没设置即为1至所有,loc[1:5]即读取1-5行;
fznl_df = fznl_df.loc[1:]