数据分析常用的日志格式 数据分析记录_重命名


解决常见问题:

  1. 微信公众号中阅读量最高的前10篇文章是哪些?
  2. 药店中每个月的销售金额是多少?

数据分析过程分为以下步骤:

(1)提出问题:数据分析首先要有个明确的问题。是所有数据分析开始的第一步。

(2)理解数据:采集数据(根据定义的问题来采集数据)、导入数据(excel、sql)譬如,读取excel到python二维框中、了解数据

(3)对数据进行清洗(对数据进行预处理)

(4)构建模型(对清洗后的数据进行数据分析,得出业务指标,复杂的要用机器模型的训练)

(5)数据可视化(与他人交流你的展示结果)

例:朝阳医院 销售数据

希望知道如下几个指标:月均消费次数、月均消费金额、客单价、消费趋势。首先自己必须搞清楚各个指标代表什么。和业务部门讨论清楚。

  1. 解决问题之前,首先需要看数据集的基本信息,先用ExcelFile方法将数据读取到数据框中,我们加入了dtype方法,是希望所有数据都按字符串的方式读取出来。以保证数据的正确性。

打印出前几行,以保证数据正确读取了,也了解有哪些列以及他们的特点。

用descript方法来看数据的基本信息。

2. 数据清洗步骤

(1)选择子集;使用切片的冒号,使用loc属性可以获取指定范围

好多列,那么有时候我们只需要几列;

(2)列名重命名;首先建立一个旧新列名的对应关系,然后用rename方法来重命名,参数inplace,true:表示会改变数据框本身,false:会复制一个新的数据框出来,改变他的列名。

如果列名不方便数据分析,那么我们要对列名进行重命名

(3)缺失数据处理;记录缺失错误,直接删除缺失数据,如果缺失值太多,那么我们可以通过建立模型的方式来补充这些数据。不能有缺失值的列,可以用dropna来删除空数据,参数subset用于存放删除指定列的列表,第二个参数how,用于指定如何删除数据,how="any"表示任何一列有缺失值,都直接删除。可以看前后数据,saleDf.shape,行数差了多少。

(4)数据类型转换,字符串类型转换为数字类型。.astype('float');,例如日期只需要日期,不需要星期几,那么用.split分割字符串就可以。定义函数,可以将一列数据的每行数据都处理。字符串转换为日期类型,pd.to_datetime(列,格式,errors='coerce');如果不符合格式,会被转化为空值。因为日期不合理,会被置空,所以要执行一遍缺失处理数据。

(5)数据排序;按指定列名排序,默认排序算法快排序。by=列名,ascending=true:降序;false:生序。重命名行号,df.reset_index()

(6)异常值处理,有些数据超出了范围;用df.describe()来获取整体数据。使用条件判断,筛选出 销售数量>0的数据。

3. 分析数据

1⃣️月均消费次数 = 总消费次数 / 月份数。

同一天内、同一个人,发生的所有消费算作一次消费。但发生在同一天的,虽然有两次消费,但也算1次数据。

所以要根据日期和社保卡号来去重。只保留一条。

kpi1_df=df.drop_duplicates(subset=['销售时间','社保卡号']); // 删除重复数据
totalI = kpi1_df.shape[0]; // 有多少行,即总消费次数
(1)排序,df.sort_values(by='消费时间',ascending=true) // 按销售时间生序排序
df = kpi1df.reset_index(drop=true) // 重命名行名 index

(2)获取时间范围:第一行是最小时间,第二行是最大时间

(3)计算月份数,(结束时间-开始时间).days得出天数。 /30得出一共几个月。

总消费次数/月份数=月均消费次数。

2⃣️月均消费金额 = 总消费金额/月份数

totalMoneyF = df.loc[:,'实收金额'].sum();
monthMoneyF = totalMoneyF / monthsI;

3⃣️客单价 = 总消费金额/总消费次数

4⃣️趋势分析,之后再来。