用python进行数据分析需要哪些步骤_初识python数据分析的基本流程

如下图,数据分析的基本过程:

1、提出问题,拿到一份数据首先要明确分析的内容是什么,而不是一股脑就开始分析,明确的分析目标,指定明确的思路,才是开始数据分析的第一步。

2、理解数据,通过导入数据,先最简单的认识数据,比如数据格式是否符合要求,是否存在异常值,缺失值。

3、数据清洗,根据分析的目标,对数据先进行基本的清洗处理,使数据满足分析的格式需要。

4、构建模型,清理完数据就可以开始对数据进行分析,根据之前第一步提出问题,明确分析目标和思路,是否通过高级方法机器学习构建模型分析?或者简单的数据分析?

5、数据可视化,把所分析的内容用图表的方式呈现更直观。

这一章的重点:

1、数据的处理工作,需要结合《利用python进行数据分析》学习Numpy,Pandas的基本入门知识, 以及数据的清理,转换,合并,重塑的操作,这里建议认真学习第4章,第5章,第7章的内容,在这里不过多阐述。

2、通过猴子课程的案例分析《医院药店销售数据分析》的实操,对以上提到的数据分析的基本流程有个认识。以下是实操代码。

1、提出问题

月均消费次数

月均消费金额

客单价

消费趋势

2、理解数据

用pd.ExcelFile读取excel数据

filename=r'C:\Users\Administrator\Desktop\朝阳医院2018年销售数据.xlsx'

xls=pd.ExcelFile(filename,dtype='object')

saleDf=xls.parse('Sheet1',dtype='object')

saleDf.head()

3、数据清洗

选择子集

列名重命名

缺失数据处理

数据类型转换

数据排序

异常值处理

选择子集

subsaleDf=saleDf.loc[0:4,'购药时间':'销售数量'] #确定行数,列名的切片,起始位置:结束位置

subsaleDf

列名重命名

colNameDict={'购药时间':'销售时间'} #字典

saleDf.rename(columns=colNameDict,inplace=True) # inplace参数改变原数据格式

saleDf.head()

缺失值数据处理

saleDf=saleDf.dropna(subset={'销售时间','社保卡号'},how='any')

#删除指定列subset参数的缺失值,any有一个就删除

saleDf.shape

数据类型转换

saleDf['销售数量']=saleDf['销售数量'].astype('float') #熟悉一下转换数据类型的方法

saleDf['应收金额']=saleDf['应收金额'].astype('float')

saleDf['实收金额']=saleDf['实收金额'].astype('float')

print(saleDf.dtypes) #注意有s

def splitSaletime(time):

timeList=[]

for value in time:

value2=value.split(' ')[0]

timeList.append(value2)

timeSeries=pd.Series(timeList)

return timeSeries

timeSeries=splitSaletime(saleDf['销售时间'])

timeSeries.head()

saleDf['销售时间']=timeSeries

saleDf.head()

saleDf['销售时间']=pd.to_datetime(saleDf['销售时间'],format='%Y-%m-%d',errors='coerce')

#转换时间数据的格式,之前为分隔后为字符串

type(saleDf['销售时间'][0]) #可以看到返回的时间为Timestamp类型

数据排序

saleDf=saleDf.sort_values(by='销售时间',ascending=True)

saleDf.head()

saleDf=saleDf.reset_index(drop=True) #drop为True则默认插入新的整数索引

saleDf.head()

异常值处理

querySer=saleDf['销售数量']>0 #逻辑索引

saleDf=saleDf.loc[querySer,:]

saleDf.shape

4、构建模型

月均消费次数=总消费次数/月份数 (同一天内,同一个人,两次消费算一次)

kpil_Df=saleDf.drop_duplicates(subset=['销售时间','社保卡号']) #duplicates移除重复行

total=kpil_Df.shape[0]

total #删除同一天内同一个人的重复消费次数,计算出总的消费次数

kpil_Df.head()

kpil_Df.tail()

kpil_Df=kpil_Df.sort_values(by='销售时间',ascending=True)

kpil_Df=kpil_Df.reset_index(drop=True)

startTime=kpil_Df.loc[0,'销售时间']

endTime=kpil_Df.loc[total-1,'销售时间'] #获取时间的销售时间范围

days=(endTime-startTime).days #用days打印出时间格式中的日

months=days//30

print(days,months)

print('月均消费次数',total//months)

月均消费金额=总消费次数/月份数

totalmoney=saleDf['实收金额'].sum()

print("月均消费金额",totalmoney/months)

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

print('客单价',totalmoney/total)

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值