【pandas库CSV文件数据清洗处理】商场会员信息数据存在数据不完整(如“出生日期”、“登记时间”列中存在缺失值或不符合实际),将错误数据删除并保存并将会员按年龄分类统计人数的Python程序

 程序解决问题描述如下:

某商场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程序设计知识!

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海岛码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值