Excel是数据分析中最常用的工具,本篇文章通过python与excel的功能对比介绍如何使用python通过函数式编程完成excel中的数据处理及分析工作。在Python中pandas库用于数据处理,通过这些函数介绍如何通过python完成数据分析中导入数据,理解数据,清洗数据,模型构建和一部分KPI指标如何实现。
使用的数据是 朝阳医院2018年销售数据
导入数据以及理解数据部分
导入excel
import pandas as pd
xls=pd.ExcelFile("G:\xlsx文件\朝阳医院2018年销售数据.xlsx’)
salesdf=xls.parse("Sheet1’)
Salesdf.head()
数据维度(行列)
shape可以查看该表中的行数和列数
查看数据格式
Dtypes是一个查看数据格式的函数,可以一次性查看数据表中所有数据的格式,也可以指定一列来单独查看。
指定一列查看:
查看统计信息
使用Describe函数可以查看统计信息计数,平均值,标准差,最小值,四分位数,中位数,最大值。
查看列名称
使用columns函数查看列名称
数据清洗部分
删除缺失值
Python中处理空值的方法比较灵活,可以使用 Dropna函数用来删除数据表中包含空值的数据,也可以使用fillna函数对空值进行填充。
使用fillna函数把空值用0填充
更改列名称
Rename是更改列名称的函数,我们将来数据表中的应收金额列更改为应收金额(元)
salesdf=salesdf.rename(columns={"应收金额’:’应收金额(元)’})
删除重复值
使用drop_duplicates()删除重复值
分列
sales_split=pd.DataFrame((x.split(" ") for x in salesdf["购药时间’]),
index=salesdf.index,
columns=["日期’,’周几’])
需要注意的是缺失值会被当作浮点型 而split函数需要字符串类型,要先删除缺失值
将完成分列后的数据表与原数据表进行匹配
salesdf=pd.merge(salesdf,sales_split,right_index=True, left_index=True)
删除列
使用drop删除列,有以下等价的语法
DF= DF.drop("column_name’, 1);
DF.drop("column_name’,axis=1, inplace=True)
使用drop删除了购药时间这一列。
修改日期格式
使用to_datetime函数进行修改
salesdf.loc[:,’日期’]=pd.to_datetime(salesdf.loc[:,’日期’],format=’%Y-%m-%d’,errors=’coerce’)
排序
使用sort_values进行排序
By:按哪一列排序
ascending=True降序
ascending=Falses升序
salesdf=salesdf.sort_values(by=’日期’,ascending=True)
重命名行名
使用reset_index重命名行名
删除异常值
由于销量,应收金额和实收金额不为负,所以应该清除异常值
使用查询条件删除了异常值
数据建模部分
数据筛选
#使用“与”条件进行筛选
salesdf.loc[(salesdf["列名’]==’数值’)&(salesdf["列名’]==’数值’),["列名1′,’列名2′,’列名3′,’列名4’]]
#使用“或”条件进行筛选
salesdf.loc[(salesdf["列名’]==’数值’)|(salesdf["列名’]==’数值’),["列名1′,’列名2′,’列名3′,’列名4’]]
在前面的代码后增加price字段以及sum函数,按筛选后的结果将price字段值进行求和,相当于excel中sumifs的功能。
还有一种筛选的方式是用query函数。下面是具体的代码和筛选结果。
数据汇总
Excel的数据目录下提供了“分类汇总”功能,可以按指定的字段和汇总方式对数据表进行汇总。Python中通过Groupby函数完成相应的操作,并可以支持多级分类汇总。
Groupby是进行分类汇总的函数,使用方法很简单,制定要分组的列名称就可以,也可以同时制定多个列名称,groupby按列名称出现的顺序进行分组。同时要制定分组后的汇总方式,常见的是计数和求和两种。
可以通过关联的列进行查询,通过groupby函数计算出了商品的销售次数。
计算几个KPI指标:
1.月均消费次数
删除重复数据计算消费总次数
设定好起始日期和结束日期
计算天数,月份数。然后用所有消费次数除以月份数可以得到月均消费次数。
2.客单价
使用总消费金额除以消费次数得到客单价
3.月均消费金额
使用总消费金额除以消费次数得到月均消费金额