前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >130 万条深圳通刷卡数据分析

130 万条深圳通刷卡数据分析

作者头像
润森
发布2022-12-20 21:04:58
9000
发布2022-12-20 21:04:58
举报
文章被收录于专栏:毛利学Python毛利学Python

1. 数据集说明

这是一份来自深圳市政府数据开放平台的深圳通刷卡数据,时间区间为 2018-08-31 到 2018-09-01,总计 1,337,000 条记录,大小为 335 M,包含 11 个字段。

深圳通是由深圳市运输局监制、深圳市公共交通结算管理中心发行的一款即可优惠乘坐深圳市公交车,深圳地铁和商店消费的一种储值卡。

2. 数据处理

2.1 数据处理

源数据存的是 json 格式的数据,先使用 python 对数据做一下清洗,然后保存为 csv 数据文件。

代码语言:javascript
复制
### 解析 json 数据文件
path = r"C:\Users\Administrator\Desktop\2018record3.jsons"
data = []
with open(path, 'r', encoding='utf-8') as f:
    for line in f.readlines():
        data += json.loads(line)['data']
data = pd.DataFrame(data)
columns = ['card_no', 'deal_date', 'deal_type', 'deal_money', 'deal_value', 'equ_no', 'company_name', 'station', 'car_no', 'conn_mark', 'close_date']
data = data[columns]  # 调整字段顺序
data.info()

### 输出处理 
# 全部都是 交通运输 的刷卡数据
print(data['company_name'].unique())

# 删除重复值
# print(data[data.duplicated()])
data.drop_duplicates(inplace=True)
data.reset_index(drop=True, inplace=True)

# 缺失值
# 只有线路站点和车牌号两个字段存在为空,不做处理
# print(data.isnull().sum())

# 去掉脏数据
data = data[data['deal_date'] > '2018-08-31']

### 数据保存 
print(data.info)

# 数据保存为 csv
data.to_csv('SZTcard.csv', index=False, header=None)

2.2 数据加载

把清洗好的数据文件上传到 hdfs ,然后加载到 impala,后续就可以直接用 impala 进行数据分析。

与 hive 不同,impala 不支持加载本地数据文件,只能加载 hdfs 数据文件,所以需要先把数据文件上传到 hdfs。

代码语言:javascript
复制
# csv 上传到 hdfs
hdfs dfs -put SZTcard.csv /tmp/
代码语言:javascript
复制
-- 建表
CREATE TABLE `sztcard`(
    `card_no` string COMMENT '卡号',
    `deal_date` string COMMENT '交易日期时间',
    `deal_type` string COMMENT '交易类型',
    `deal_money` float COMMENT '交易金额',
    `deal_value` float COMMENT '交易值',
    `equ_no` string COMMENT '设备编码',
    `company_name` string COMMENT '公司名称',
    `station` string COMMENT '线路站点',
    `car_no` string COMMENT '车牌号',
    `conn_mark` string COMMENT '联程标记',
    `close_date` string COMMENT '结算日期'
)
row format delimited
fields terminated by ','
lines terminated by '\n';

-- 加载数据
LOAD DATA INPATH '/tmp/SZTcard.csv' OVERWRITE INTO TABLE sztcard;

2.3 数据预览

数据加载完成后,查看一下数据情况,发现有两个金额字段,但是没有给出数值单位。通过红色框框出来的这个旅途(卡号AEAAAACHG ,草铺>>少年宫),到网上 搜一下 ,可以看到票价是 4 元,可见这两个字段都是单位都是 分。并且,deal_value 就是票价,而 deal_money 就是实际的消费金额,所以本次是半价,结合目的地,AEAAAACHG 可能是一张学生卡。

image-20210111101058379

image-20210111101224635

然后再查看一下数据集的日期分布,可以看到 2018-09-01 数据量比较大,但是时间范围只有半天。而 2018-08-31 相比之下数据量非常少,但是时间范围是一整天,后续在做一些时间上的分析,应该注意到这点。

image-20210111135936951

最后在看下公司名称分布情况,没有看到什么 某某便利店之类的名称,可见该数据集并没有商店消费的数据,全部都是交通出行的数据。

image-20210111103044070

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-09-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小刘IT教程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 数据集说明
  • 2. 数据处理
    • 2.1 数据处理
      • 2.2 数据加载
        • 2.3 数据预览
        相关产品与服务
        大数据
        全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档