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
第四关:pandas分析实际案例-药店销售数据分析
最新推荐文章于 2024-07-08 09:00:00 发布
本文通过Python的pandas库对药店销售数据进行深度分析,包括数据预处理、销售趋势洞察、产品类别表现等关键信息,揭示业务潜在规律。
摘要由CSDN通过智能技术生成