python作为数据分析的后起之秀,已经越来越受欢迎。曾经的我也以为excel是真爱,直到用上了python。今天就用一个简单的入门级案例,来看看python做数据分析有多香。

python本身没有多厉害,但是它有一大批各种各样的帮手,学名叫做“函数库”,由第三方开发的开源函数库,能实现各种各样的功能。数据分析最常用的帮手就是numpy库和pandas库。

关于numpay库和pandas库本身由许多功能。但是用到的内容依然是少部分。重要部分导图如图。()




python里的loc函数 python中loc函数的用法_数据类型


加长版导图

看起来很厉害的样子,接下就从一个真实的案例来看如何运用这些函数库。

在正式开始之前,先树立数据分析的一般步骤。

1、确定业务问题
2、获取理解数据
3、数据清洗
4、构造模型
5、可视化

一、提出业务问题

首先看下今天的案例数据:


python里的loc函数 python中loc函数的用法_数据类型_02


数据是常见的销售数据类型,业务问题如下

1)月均消费次数2)月均消费金额3)客单价4)消费趋势

二、获取理解数据

这一步要做得就是导入数据到juypter notebook,并查看数据的基本属性。


python里的loc函数 python中loc函数的用法_数据_03


此步需要用到的函数有

pd.read_excel():打开文件,特别注意导入数据时指定了数据类型为object,是防止如社保账号等文本类型的数值被当作浮点类型,产生变异。

df.dtype产看数据类型

df.shape查看行列数


python里的loc函数 python中loc函数的用法_python loc函数_04


可以看到原始数据由6579行,7列构成。

三、数据清洗

数据清洗是关键一步,花的时间比较长,用到的函数也比较多。首先梳理下数据基本6步骤:

1)选择子集
2)字段重命名
3)处理缺失值
4)修改数据类型
5)数据排序
6)异常值处理

1)选择子集

如果数据分析只需要用到部分行列,则可以在此选择数据的子集,以减少后期分析的数据量。

获取子集的方法是DataFrame下的loc[函数],

p=f.loc[1:100,'购药时间':'销售数量'],就可以获取从索引1到100,购药时间和销售数量之间的所有数据。

本例中不需要选择子集。

2)字段重命名

可以按照自己的习惯将列名做修改,也可以方便其他人理解。

列名重命名函数:f.rename(),使用案例如下:


python里的loc函数 python中loc函数的用法_数据_05


可以将“购药时间”列名改为“销售时间”

3)处理缺失值

缺失的存在会造成分析的偏差,一般需要对缺失值进行填充或者删除。

根据销售时间和社保卡删除缺失值


python里的loc函数 python中loc函数的用法_python loc函数_06


4)数据类型转换

由于之前指定所有数据类型为object,根据业务需要,销售数量、应收金额、实收金额改为float类型,运用函数astype()


python里的loc函数 python中loc函数的用法_数据类型_07


其次销售时间中包含了日期和星期,但是分析仅仅需要日期,所以需要从其中把日期提出出来。这里涉及到的函数有

1)split()函数,根据指定字符差分字符串

2)apply()函数,对序列所有数据进行函数运算,并返回序列。

3)to_datetime()函数,将时间改为标准时间数据类型,特别注意errors的赋值


python里的loc函数 python中loc函数的用法_数据分析_08


最终得到的结果为


python里的loc函数 python中loc函数的用法_数据分析_09


用结果替换掉原来的销售时间列,并删除日期转换过程中的空值。

5)排序

排序所用到的函数为:df.sort_values(),这里按照销售时间进行排序:


python里的loc函数 python中loc函数的用法_数据类型_10


ascending参数只当升降序,na_positino指定空值位置,in_place指定是否原位修改。

6)删除异常值

首先查看数据的统计信息:


python里的loc函数 python中loc函数的用法_数据_11


可以看到销售数量、应收金额、实收金额中存在小于0的数据,将其删除,运用loc[]函数进行筛选。


python里的loc函数 python中loc函数的用法_数据_12


四、构造模型

构造模型的就是确定最终指标的计算式。

指标1:月均消费次数=总消费次数/总月份

总消费次数,根据销售记录多少计算,特别注意一个人一天如果有多次消费只算一次消费,所以要根据社保卡号和销售时间进行去重,然后看记录数。


python里的loc函数 python中loc函数的用法_数据类型_13


根据记录数求得总消费次数:


python里的loc函数 python中loc函数的用法_数据_14


总月份,可根据最大日期和最小日期之间的天数对应的月份来求得:


python里的loc函数 python中loc函数的用法_python里的loc函数_15


最终月均消费次数:


python里的loc函数 python中loc函数的用法_python loc函数_16


指标2:月均消费额=总消费额/总月份数

总消费额,直接对实收金额求和:


python里的loc函数 python中loc函数的用法_数据_17


月均消费额度:


python里的loc函数 python中loc函数的用法_数据类型_18


指标3:客单价=总消费额/总消费次数


python里的loc函数 python中loc函数的用法_数据_19


指标4:消费趋势(按月分组统计)

分组函数:groupby()


python里的loc函数 python中loc函数的用法_数据类型_20


【总结】

1、第一次做花了大概4个小时,第二次大概花了1个半小时。并且第二次做也有一些新的收获。做的次数越多,掌握得越熟练。

2、把这个案例做完不是目的,最重要的是把其中运用到函数要熟练掌握,另外还有基本的数据分析步骤和逻辑。这部分才是具有迁移性的知识。

3、函数的参数很多,最好是自己去试验一下,后面才能灵活运用。

4、对于表进行操作时,一般默认是建立临时新表,而不是修改原表,如果需要继承修改的内容,要注意设置inplace=True,或者用df=df.func()返回结果。