如何用Python进行数据分析

一、Python数据分析

如何用Python进行数据分析_第1张图片

二、案例分析

数据分析步骤:提出问题–>理解数据–>数据清洗–>构建模型–>数据可视化

1、提出问题,明确数据指标及对应的计算公式:月均消费次数、月均消费金额、客单价、消费趋势

2、理解数据

(1)读取Excel数据

fileNameStr = 'C:/数据科学/猴子数据分析学院/数据分析(高级)(Python)/第3关:数据分析的基本过程/朝阳医院2018年销售数据.xlsx'
xls = pd.ExcelFile(fileNameStr)
salesDf = xls.parse('Sheet1',dtype='object')

(2)查看前五行数据

print(salesDf.head())

(3)查看共有几行几列数据

print(salesDf.shape)

(4)查看列的数据类型

print(salesDf.dtypes)

(5)获取描述统计信息

print(salesDf.describe())

#结果显示如下:
'''
社保卡号          商品编码         销售数量         应收金额         实收金额
count  6.576000e+03  6.577000e+03  6577.000000  6577.000000  6577.000000
mean   6.091254e+09  1.015869e+06     2.386194    50.473803    46.317510
std    4.889284e+09  5.131153e+05     2.375202    87.595925    80.976702
min    1.616528e+06  2.367010e+05   -10.000000  -374.000000  -374.000000
25%    1.014234e+08  8.614560e+05     1.000000    14.000000    12.320000
50%    1.001650e+10  8.615070e+05     2.000000    28.000000    26.600000
75%    1.004882e+10  8.690690e+05     2.000000    59.600000    53.000000
max    1.283612e+10  2.367012e+06    50.000000  2950.000000  2650.000000
'''

3、数据清洗步骤:选择子集–>列名重命名–>缺失数据处理–>数据类型转换–>数据排序–>异常值处理

(1)此数据分析不需要选择子集

(2)列名重命名

#用字典做好旧列名与新列名的对应
colNameDict = {'购药时间':'销售时间'}
salesDf.rename(columns = colNameDict,inplace=True)
print(salesDf.head())

'''
inplace = False,数据框本身不会变,而会创建一个改动后新的数据框,默认的inplace是False
inplace = True,数据框本身会改变
'''

(3)缺失数据的处理

#删除销售时间、社保卡号为空的行,其中how='any'表示在给定的任一列中有缺失值就会删除
print(salesDf.shape)#删除前的行列数
salesDf=salesDf.dropna(subset=['销售时间','社保卡号'],how='any')
print(salesDf.shape)#删除后的行列数

(4-1)数据类型的转换:将字符串转换为数值型

salesDf['销售数量']=salesDf['销售数量'].astype('float')
salesDf['应收金额']=salesDf['应收金额'].astype('float')
salesDf['实收金额']=salesDf['实收金额'].astype('float')
print('转换后的数据类型:\n',salesDf.dtypes)

(4-2)日期型数据的处理

#第一步:分割字符串
#(1)定义函数:分割销售日期,获取销售日期
# 输入:timeColSer销售日期这一列为Series数据类型
# 输出:分割后的时间,返回也是Series数据类型
def splitSaletime(timeColSer):
    timelist=[]
    for value in timeColSer:
        dateStr=value.split(' ')[0] #表示选取分割后字符串的第一个值
        timelist.append(dateStr)
    timeSer=pd.Series(timelist) #表示将列表转为一维数据Series类型
#(2)获取销售时间这一列的数据
timeSer=salesDf.loc[:,'销售时间']
#(3)对字符串进行分割,获取销售日期
dateSer=splitSaletime(timeSer)
print(dateSer[0:3])
#(4)修改销售时间这一列的值
salesDf.loc[:,'销售时间']=dateSer
#第二步:转换日期格式
#(5)将数据格式转为日期格式
salesDf.loc[:,'销售时间']=pd.to_datetime(salesDf.loc[:,'销售时间'],format='%Y-%m-%d',errors='coerce')
print(salesDf.dtypes)
#format:指原始数据中日期的格式;errors='coerce':指如果原始数据不符合日期的格式,转换后的值为Na
#(6)删除日期转换过程中不符合日期格式的空值所在行
salesDf=salesDf.dropna(subset=['销售时间','社保卡号'],how='any')
print(salesDf.shape)

(5)排序

#排序前
print(salesDf.head())
#按销售日期进行升序排列
salesDf=salesDf.sort_values(by='销售时间',ascending=True)
#排序后
print(salesDf.head())

#重命行名(index)
salesDf=salesDf.reset_index(drop=True) #reset_index:将行号按从0到n按顺序排列的索引值

#描述统计信息
print(salesDf.describe())

(6)删除异常值

#第一步:筛选条件
querySer=salesDf.loc[:,'销售数量']>0
#第二步:应用筛选条件
print('删除异常值前:',salesDf.shape)
salesDf=salesDf.loc[querySer,:]
print('删除异常值后:',salesDf.shape)

4、计算业务指标

(1)月均消费次数=总消费次数/月份数:总消费次数指同一天内同一个人发生的所有消费算作一次消费

#(1)计算总消费次数:
#第一步:删除重复数据(.drop_duplicates)
kpi1_Df=salesDf.drop_duplicates(subset=['销售时间','社保卡号'])
#第二步:有多少行
totalI=kpi1_Df.shape[0]
print('总消费次数=',totalI)

#(2)月份数
#第一步:按销售时间升序排序
kpi1_Df=kpi1_Df.sort_values(by='销售时间',ascending=True)
#重命行名(index)
kpi1_Df=kpi_Df.reset_index(drop=True)

#第二步:获取时间范围
#最小时间值
startTime=kpi1_Df.loc[0,'销售时间']
#最大时间值
endTime=kpi1_Df.loc[totalI-1,'销售时间']

#第三步:计算月份数
daysI=(endTime-startTime).days
monthsI=daysI//30
print('月份数:',monthsI)

#计算月均消费次数
kpi1_I=totalI//monthsI
print('业务指标1:月均消费次数=',kpi_I)

(2)月均消费金额=总消费金额/月份数

#总消费金额
totalMoneyF=salesDf.loc[:,'实收金额'].sum()
print('总消费金额:',totalMoneyF)
#月均消费金额
monthMoneyF=totalMoneyF/monthsI
print('业务指标2:月均消费次数=',monthMoneyF)

(3)客单价=总消费金额/总消费次数

pct = totalMoneyF/totalI
print('客单价:',pct)

(4)消费趋势:以月为单位对消费金额进行汇总统计

#注意:需要把数据复制到另一个数据框中,防止对之前清洗过的数据造成影响
#第一步:重置索引(index)为销售时间所在列的值
groupDf.index=groupDf['销售时间']
print(groupDf.head())

#第二步:根据销售时间分组
gb=groupDf.groupby(groupDf.index.month)

#第三步:应用函数,计算每个月的消费总额
monthDf=gb.sum()

print(monthDf)

知道你对python感兴趣,所以给你准备了下面的资料~

这份完整版的Python全套学习资料已经上传,朋友们如果需要可以点击链接免费领取或者滑到最后扫描二v码【保证100%免费

python学习资源免费分享,保证100%免费!!!

需要的话可以点击这里[CSDN大礼包:《python学习路线&全套学习资料》免费分享]安全链接,放心点击

文末有福利领取哦~

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。img

二、Python必备开发工具

img
三、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
img

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。文末领读者福利
img

五、Python练习题

检查学习结果。
img

六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
img

img

因篇幅有限,仅展示部分资料,这份完整版的Python全套学习资料已经上传,朋友们如果需要可以扫描下方CSDN官方认证二维码或者点击链接免费领取【保证100%免费

需要的话可以点击这里[CSDN大礼包:《python学习路线&全套学习资料》免费分享]安全链接,放心点击
在这里插入图片描述

你可能感兴趣的:(python,数据分析,信息可视化,数据挖掘,大数据)