没有合适的资源?快使用搜索试试~ 我知道了~
代码 1 数据探索import pandas as pdimport osos.chdir('F:\产品部\在线实习\数据及代码v2.1')data1 = pd
资源详情
资源评论
资源推荐
1
学生校园消费行为分析
1
、
数据说明
data1.csv
、
data2.csv
对应学生
ID
表、消费记录表,它们的数据说明分别如表
1
和表
2
所示。
表
1 data1.csv
字段说明
字段名
描述
Index
序号
CardNo
校园卡号。每位学生的校园卡号都唯一
Sex
性别。分为“男”和“女”
Major
专业名称
AccessCardNo
门禁卡号。每位学生的门禁卡号都唯一
表
2 data2.csv
字段说明
字段名
描述
Index
流水号。消费的流水号
CardNo
校园卡号。每位学生的校园卡号都唯一
PeoNo
校园卡编号。每位学生的校园卡编号都唯一
Date
消费时间
Money
消费金额。单位:元
FundMoney
存储金额。单位:元
Surplus
余额。单位:元
CardCount
消费次数。累计消费的次数
Type
消费类型
TermSerNo
消费项目的序列号
conOperNo
消费操作的编码
2
、
任务
1
数据探索与预处理
(
1
)
任务
1.1
根据实际项目需求对数据进行必要的数据探索和数据预处理。
(
2
)
任务
1.2
对学生个人信息表和消费记录表进行关联。
2.1
数据探索
(
1
)
统计
data1
的空值,如图
1
所示。
3
图
4
统计
data2
消费表的空值情况
根据图
4
的统计情况,可以知道
TermSerNo
、
conOperNo
字段缺失过多,所以可以在
预处理时,直接删除这些字段。
代码
1
数据探索
import pandas as pd
import os
os.chdir('F:\
产品部
\
在线实习
\
数据及代码
v2.1')
data1 = pd.read_csv('data\data1.csv', encoding = 'gbk')
data2 = pd.read_csv('data\data2.csv', encoding = 'gbk')
# ----------data1
数据探索
-----------
# data1
查看描述性统计
print(data1.describe())
#
查看
data1
数据类型
print(data1.dtypes)
#
统计空值
print(data1.isnull().sum())
# ----------data2
数据探索
-----------
# data2
查看描述性统计
data2_des = data2['Money'].describe()
print(data2_des)
#
统计空值
data2_null = data2.isnull().sum()
data2_null = pd.DataFrame(data2_null,columns=['missing_value'])
4
print(data2_null)
print('data1
数据形状
',data1.shape)
print('data2
数据形状
',data2.shape)
2.2
缺失值处理
通过对学生消费记录进行缺失值检查,发现存在缺失值较大的两个列,分别是
TermSerNo
列和
conOperNo
列,缺失值分别达到
512106
和
519116
,对于缺失值较大的列,
在实际的数据分析中无意义,予以删除处理。
代码
2
缺失值处理
#
缺失值处理
,
筛选不要的列
data2 = data2.drop(['TermSerNo', 'conOperNo'], axis = 1)
data2 = data2.dropna() #
去空值
2.3
重复值处理
查看
data1
的重复值。因为每位学生的校园卡号和门禁卡号都唯一,所以要进行重复值
检查。
代码
3
字段异常值处理
#
查看
data1
的
CardNo
有没有重复值
data1_drop=data1.drop_duplicates(['CardNo'])
print('CardNo
去重前数据形状
:',data1.shape)
print('CardNo
去重后数据形状
:',data1_drop.shape)
#
查看
data1
的
AccessCardNo
有没有重复值
data1_drop=data1.drop_duplicates(['AccessCardNo'])
print('AccessCardNo
去重前数据形状
:',data1.shape)
print('AccessCardNo
去重后数据形状
:',data1_drop.shape)
图
5
去重情况
由图
5
可知,
CardNo
没有重复值,
AccessCardNo
列有两条记录存在重复,但是我们是
否要进行处理呢,还要根据实际进行下一步的分析。
5
图
6
重复值
由图
6
可知,虽然
AccessCardNo
列存在重复,但是
CardNo
是没有的,由于最终使用
的是
CardNo
字段进行表关联,并没有使用
AccessCardNo
,且
AccessCardNo
对后续的任务
没有影响,在这里可不做处理。
2.4
异常值处理
查看
data2
学生消费表的消费时间是否存在异常值,以及只筛选消费类型的记录。
代码
4
时间异常值处理
#
修改
Date
列为时间序列
data2['Date']=pd.to_datetime(data2['Date'])
#
查看
data2
学生消费表的消费时间有没有异常值
data2['hour']=data2.Date.dt.hour #
提取小时
print('
最小时间
',data2['hour'].min())
print('
最大时间
',data2['hour'].max())
# data2
消费时间异常,正常的学校饭堂并不会通宵营业,所以筛选
5
点以后的数据
data2=data2[data2['hour']>5]
#
筛选消费类型的记录
data2=data2[data2['Type'] =='
消费
']
提取小时出来,发现分布在
0-23
时之间,没有异常。由于该分析过程学校食堂的营业
时间为
6:00-24:00
,因此对
0:00-6:00
之内的所有消费记录记为异常值并删除。
2.5
数据合并
剩余21页未读,继续阅读
曹多鱼
- 粉丝: 19
- 资源: 314
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0