程序解决问题描述如下:
某商场2015年1月1日到2018年1月3日的会员信息数据作为原始数据集,文件为csv文件格式
数据中有些数据存在数据不完整,逻辑有误的问题,需要在Python中进行清洗,利用pandas库处理CSV文件格式的数据十分方便。
在“出生日期”、“性别”、“登记时间”列中存在缺失值,不好对其进行填充处理,因此考虑删除存在缺失值的行数据。通过对数据观察可以发现,存在部分会员登记时间早于会员出生日期,由于原始数据量大,这类数据所占比例较小,对问题分析影响不大,因此对其进行丢弃处理,最后将清洗后的数据以TASK.csv文件保存。
按照中国的划分标准,将年龄0-17的会员划分为少年,18-40的会员划分为青年,40-65岁的为中年,65岁以上的为老年,按照年龄划分对会员数据进行统计少年、青年、中年和老年人数。
最后使用info()函数、value_counts()函数和describe()函数,可以方便地查看数据的信息。
程序代码如下:
import pandas as pd
shj=pd.read_csv('userinfo1.csv',encoding='gbk',header=0)
qshj=shj.dropna(subset=['出生日期','性别','登记时间'],axis=0,how='any')
csrq=pd.to_datetime(qshj.loc[:,'出生日期'],errors='coerce')
djsj=pd.to_datetime(qshj.loc[:,'登记时间'])
qshj.loc[:,'时间差']=djsj-csrq
qshj.loc[:,'总秒数']=qshj['时间差'].dt.total_seconds()
qcshj=qshj.loc[qshj['总秒数']>0]#
qcshj2=qshj.loc[qshj['总秒数']>0]#
qcshj.drop(['时间差'],axis=1,inplace=True)
qcshj.drop(['总秒数'],axis=1,inplace=True)
qcshj.to_csv('TASK.csv',index=None)
# xzsj=pd.to_datetime('2021/12/7 00:00')
qcshj2.loc[:,'出生年份']=csrq.dt.year
chsnf=qcshj2['出生年份']#
qcshj2.loc[:,'年龄']=2021-chsnf
qcshj2.loc[:,'年龄划分']=''
qcshj2.loc[qcshj2['年龄']<=17,'年龄划分']='少年'
qcshj2.loc[(qcshj2['年龄']>=18)&(qcshj2['年龄']<=40),'年龄划分']='青年'
qcshj2.loc[(qcshj2['年龄']>=41)&(qcshj2['年龄']<=65),'年龄划分']='中年'
qcshj2.loc[qcshj2['年龄']>=66,'年龄划分']='老年'
renshu=pd.Series(qcshj2['年龄划分'])
print(renshu.value_counts())
qcshj2.drop(['时间差'],axis=1,inplace=True)
qcshj2.drop(['总秒数'],axis=1,inplace=True)
qcshj2.drop(['年龄划分'],axis=1,inplace=True)
# qcshj2.drop(['年龄'],axis=1,inplace=True)
qcshj2.to_csv('task1.csv',index=None)
程序运行结果如下:
(会有警告,警告处理的数据会在目标文件更改,符合目的,不影响)
看到这里的小伙伴别忘了点个赞再走哦!
关注博主学习更多Python程序设计知识!