第四关:pandas分析实际案例-药店销售数据分析

本文通过Python的pandas库对药店销售数据进行深度分析,包括数据预处理、销售趋势洞察、产品类别表现等关键信息,揭示业务潜在规律。
摘要由CSDN通过智能技术生成
import pandas as pd
import numpy as np

#读取数据
filename='E:\sale.xlsx'
xls=pd.ExcelFile(filename,dtype="object")
salesdf=xls.parse('Sheet1',dtype='object')
#打印出前5行数据
print(salesdf.head())

#数据大小,多少行多少列,注意shape后面不添加括号
print(salesdf.shape)

#数据类型:dtypes.后面也是不添加括号
print(salesdf.dtypes)

#数据清洗

#1)更改数据列头名字
"""
inplace=True是数据框本身会改动
inplace=False数据框本身不会变,而会创建一个改动后的新的数据框,默认的是flase

"""
dictnamecol={
  "购药时间":"销售时间"}
salesdf.rename(columns=dictnamecol,inplace=True)
print(salesdf.head())

#2) 缺失值处理
print("缺失前的数据大小:",salesdf.shape)
salesdf=salesdf.dropna(subset=["销售时间",'社保卡号'],how="any")
print("删除缺失后的大小:",salesdf.shape)

"""
数据类型的转换:字符串转为日期
销售数量和金额:字符串转为浮点型,有利于下面的describe进行统计,否则describe就会无法对销售数量和金额进行统计
"""
salesdf.loc[:,"销售数量"]=salesdf.loc[:,'销售数量'].astype("float")
salesdf.loc[:,"应收金额"]=salesdf.loc[:,'应收金额'].astype("float")
salesdf.loc[:,"实收金额"]=salesdf.loc[:,'实收金额'].astype("float")

#数据类型的转换
#定义一个函数,将列表中的字符串时间数据分列开,取第一个年月日,
def splitsaletime(timecolser):
    timelist=[]
    for value in timecolser:
        datastr=value.split(" ")[0]
        timelist.append(datastr)
    timeser=pd.Series(timelist)
    return timeser

#将excel中的第一行销售时间提取出来,运用到函数里面,再将提取出来的字符串年月日赋值给销售时间
timeser=salesdf.loc[:,'销售时间']
dataser=splitsaletime(timeser)
salesdf.loc[:,'销售时间']=dataser


"""
数据类型的转换:字符串转为日期
"""
#errors='coerce' 如果原始数据不符合日期的格式,转换后的值为空值NaT
#format 是原数据中的日期格式
salesdf.loc[:,'销售时间']=pd.to_datetime(salesdf.loc[:,"销售时间"],format='%Y-%m-%d',errors="coerce
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值