3.2 电信数据清洗
- 任务描述
对数据按照一定规则进行清洗。
清洗规则:
处理数据中的时间戳(秒级)将其转化为" 年-月-日 时:分:秒 "这种格式;
处理数据中的省份编码,结合
mysql
的表数据对应,将其转换成省份名称;处理用户手机号,与
mysql
的表数据对应,关联用户的真实姓名;处理数据中的开始时间与结束时间并计算通信时长(以秒为单位);
设置数据来源文件路径及清洗后的数据存储路径: 数据来源路径为:
/user/test/input/a.txt (HDFS)
; 清洗后的数据存放于:/user/test/output (HDFS)
。
输出格式:
邓二,张倩,13666666666,15151889601,2018-03-29 10:58:12,2018-03-29 10:58:42,30,黑龙江省,上海市
- 代码实现
1.dbhelper.py文件
# dbhelper.pyimport pymysql
import sys
import codecsclass DBHelper:def get_connection():# 根据题目提供的凭据建立到mysql服务器的连接"conn",注意字符集指定为"utf8mb4"######## Begin ############conn = pymysql.connect(host='localhost',port=3306,\user='root',passwd='123123',\charset='utf8mb4',db='mydb')######## End ############ return conn@classmethoddef get_region(cls):conn = cls.get_connection()regions = dict()with conn.cursor() as cur:#从数据库中查询所有的省市代码和省市名称,并保存到字典regions中。############ Begin ###################cur.execute("select CodeNum,Address from allregion")for s in cur.fetchall():regions[s[0]] = s[1] ############ End #################conn.close()return regions@classmethoddef get_userphones(cls):conn = cls.get_connection()userphones = dict()with conn.cursor() as cur:#从数据库中查询所有的电话号码和对应的姓名,并保存到字典userphones中。############ Begin ###################cur.execute("select phone,trueName from userphone")for t in cur.fetchall():userphones[t[0]] = t[1] ############ End #################conn.close()return userphonesdef main():sys.stdout = codecs.getwriter('utf-8')(sys.stdout.detach())region = DBHelper.get_region()users = DBHelper.get_userphones() if __name__ == '__main__':main()
2.mapper文件
#! /usr/bin/python3
#
# mapper.py
import sys
from dbhelper import DBHelper
import codecs
import time# 获取“省市代码:省市名称”项并保存在字典regions中;
# 获取“电话号码:姓名”项并保存在字典userphones中。
regions = DBHelper.get_region()
userphones = DBHelper.get_userphones()def main():# 正确输出utf-8编码的汉字sys.stdout = codecs.getwriter('utf-8')(sys.stdout.detach())for line in sys.stdin:line = line.strip()mapper(line)def mapper(line):# 输出形如“邓二,张倩,13666666666,15151889601,2018-03-29 10:58:12,2018-03-29 10:58:42,30,黑龙江省,上海市”的字符串# 本题不需要reduce阶段,输出题目要求的内容即可,不需要使用“键\t值”的形式。########## begin ##############items = line.split(',')caller = userphones.get(items[0])reciever = userphones.get(items[1])begin_time = int(items[2])end_time = int(items[3])caller_address = regions.get(items[4])reciever_address = regions.get(items[5])print(caller,reciever,sep=',',end=',')print(','.join(items[:2]),end=',')print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(begin_time)),end=',')print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(end_time)),end=',')print(str(end_time - begin_time),end=',')print(caller_address,reciever_address,sep=',')########### End #################if __name__ == '__main__':main()
3.2 电信数据清洗相关推荐
- 干货:用Python进行数据清洗,这7种方法你一定要掌握
导读:数据清洗是数据分析的必备环节,在进行分析过程中,会有很多不符合分析要求的数据,例如重复.错误.缺失.异常类数据. 作者:常国珍.赵仁乾.张秋剑 本文摘编自<Python数据科学:技术详解与 ...
- 【数据分析】你一定要掌握的Python七种数据清洗方法
本文链接:https://blog.csdn.net/zw0Pi8G5C1x/article/details/84610050 01 重复值处理 数据录入过程.数据整合过程都可能会产生重复数据,直接删 ...
- 大数据案例--电信日志分析系统
目录 一.项目概述 1.概述 二.字段解释分析 1.数据字段 2.应用大类 3.应用小类 三.项目架构 四.数据收集清洗 1.数据收集 2.数据清洗 五.Sqoop使用 1.简介 2.Sqoop安装步 ...
- python 数据分析 电信_基于Python的电信客户流失分析和预测
一.项目背景 电信服务是生活中常见的消费服务,在现代社会,凡是使用手机打电话,或者在家看电视,都必须通过电信运营商提供的通话.网络等服务才能实现.本文采用来自kaggle平台的电信客户数据集,来分析人 ...
- Kaggle数据集之电信客户流失数据分析(一)
分析背景 某电信公司市场部为了预防用户流失,收集了已经打好流失标签的用户数据.现在要对流失用户情况进行分析,找出哪些用户可能会流失? 理解数据 采集数据 本数据集描述了电信用户是否流失以及其相关信息, ...
- Kaggle数据集之电信客户流失数据分析(三)之决策树分类
一.导入数据 import pandas as pd df=pd.read_csv(r"D:\PycharmProjects\ku_pandas\WA_Fn-UseC_-Telco-Cust ...
- Kaggle数据集之电信客户流失数据分析
分析背景 某电信公司市场部为了预防用户流失,收集了已经打好流失标签的用户数据.现在要对流失用户情况进行分析,找出哪些用户可能会流失? 理解数据 采集数据 本数据集描述了电信用户是否流失以及其相关信息, ...
- python数据分析实战:生存分析与电信用户流失预测
文章目录 1.背景 1.1 生存分析.KM曲线及Cox回归 1.2 案例背景 2.AIC向前逐步回归法进行特征选择 3.Cox模型搭建 3.1 特征重要性分析 3.2 模型校准 3.3 对个体进行预测 ...
- 实战 | 电信客户流失分析与预测
本文所有代码都通过运行! 将从以下方面进行分析:1.背景 2.提出问题 3.理解数据 4.数据清洗 5.可视化分析 6.用户流失预测 7.结论和建议 本项目带你根据以上过程详细分析电信客户数据! 01 ...
- 实战案例 :电信客户流失分析与预测
本文所有代码都通过运行! 将从以下方面进行分析:1.背景 2.提出问题 3.理解数据 4.数据清洗 5.可视化分析 6.用户流失预测 7.结论和建议 本项目带你根据以上过程详细分析电信客户数据! 01 ...
最新文章
- objective C socket 库
- 一些经常在建站中用到的英文
- TensorFlow打印一个tensor值报错
- EntityFramework进阶——继承
- 工程中DSP代码片断
- github上传_上传本地代码到github
- JAVA中request.getParameterMap()用法笔记
- RecycleView添加setEmptyView
- web 开发一个能进行人员管理(查询,删除,添加)的应用
- 学phython的小笔记
- 22021成都市高考成绩查询,四川大学本科教务系统登录
- [转]struct和class的区别 观察者模式 https连接 点击button收到点
- Windows设置自己的程序开机自动启动
- 无线共享打印机无法连接服务器,“不能连接网络共享打印机”常见原因及处理方法:...
- 当红10大女明星PK座驾(车靓人更美)
- MyBatis 关联查询(一对多 多对一)
- 百度回应文心一言文生图功能争议
- 微信模版消息发送失败
- 用java实现原神自动弹琴(附谱)
- 8月第2周业务风控关注 |电商平台卖家自爆家丑 一天要刷2000单