• 任务描述

对数据按照一定规则进行清洗。

清洗规则:

  • 处理数据中的时间戳(秒级)将其转化为" 年-月-日 时:分:秒 "这种格式;

  • 处理数据中的省份编码,结合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 电信数据清洗相关推荐

  1. 干货:用Python进行数据清洗,这7种方法你一定要掌握

    导读:数据清洗是数据分析的必备环节,在进行分析过程中,会有很多不符合分析要求的数据,例如重复.错误.缺失.异常类数据. 作者:常国珍.赵仁乾.张秋剑 本文摘编自<Python数据科学:技术详解与 ...

  2. 【数据分析】你一定要掌握的Python七种数据清洗方法

    本文链接:https://blog.csdn.net/zw0Pi8G5C1x/article/details/84610050 01 重复值处理 数据录入过程.数据整合过程都可能会产生重复数据,直接删 ...

  3. 大数据案例--电信日志分析系统

    目录 一.项目概述 1.概述 二.字段解释分析 1.数据字段 2.应用大类 3.应用小类 三.项目架构 四.数据收集清洗 1.数据收集 2.数据清洗 五.Sqoop使用 1.简介 2.Sqoop安装步 ...

  4. python 数据分析 电信_基于Python的电信客户流失分析和预测

    一.项目背景 电信服务是生活中常见的消费服务,在现代社会,凡是使用手机打电话,或者在家看电视,都必须通过电信运营商提供的通话.网络等服务才能实现.本文采用来自kaggle平台的电信客户数据集,来分析人 ...

  5. Kaggle数据集之电信客户流失数据分析(一)

    分析背景 某电信公司市场部为了预防用户流失,收集了已经打好流失标签的用户数据.现在要对流失用户情况进行分析,找出哪些用户可能会流失? 理解数据 采集数据 本数据集描述了电信用户是否流失以及其相关信息, ...

  6. Kaggle数据集之电信客户流失数据分析(三)之决策树分类

    一.导入数据 import pandas as pd df=pd.read_csv(r"D:\PycharmProjects\ku_pandas\WA_Fn-UseC_-Telco-Cust ...

  7. Kaggle数据集之电信客户流失数据分析

    分析背景 某电信公司市场部为了预防用户流失,收集了已经打好流失标签的用户数据.现在要对流失用户情况进行分析,找出哪些用户可能会流失? 理解数据 采集数据 本数据集描述了电信用户是否流失以及其相关信息, ...

  8. python数据分析实战:生存分析与电信用户流失预测

    文章目录 1.背景 1.1 生存分析.KM曲线及Cox回归 1.2 案例背景 2.AIC向前逐步回归法进行特征选择 3.Cox模型搭建 3.1 特征重要性分析 3.2 模型校准 3.3 对个体进行预测 ...

  9. 实战 | 电信客户流失分析与预测

    本文所有代码都通过运行! 将从以下方面进行分析:1.背景 2.提出问题 3.理解数据 4.数据清洗 5.可视化分析 6.用户流失预测 7.结论和建议 本项目带你根据以上过程详细分析电信客户数据! 01 ...

  10. 实战案例 :电信客户流失分析与预测

    本文所有代码都通过运行! 将从以下方面进行分析:1.背景 2.提出问题 3.理解数据 4.数据清洗 5.可视化分析 6.用户流失预测 7.结论和建议 本项目带你根据以上过程详细分析电信客户数据! 01 ...

最新文章

  1. objective C socket 库
  2. 一些经常在建站中用到的英文
  3. TensorFlow打印一个tensor值报错
  4. EntityFramework进阶——继承
  5. 工程中DSP代码片断
  6. github上传_上传本地代码到github
  7. JAVA中request.getParameterMap()用法笔记
  8. RecycleView添加setEmptyView
  9. web 开发一个能进行人员管理(查询,删除,添加)的应用
  10. 学phython的小笔记
  11. 22021成都市高考成绩查询,四川大学本科教务系统登录
  12. [转]struct和class的区别 观察者模式 https连接 点击button收到点
  13. Windows设置自己的程序开机自动启动
  14. 无线共享打印机无法连接服务器,“不能连接网络共享打印机”常见原因及处理方法:...
  15. 当红10大女明星PK座驾(车靓人更美)
  16. MyBatis 关联查询(一对多 多对一)
  17. 百度回应文心一言文生图功能争议
  18. 微信模版消息发送失败
  19. 用java实现原神自动弹琴(附谱)
  20. 8月第2周业务风控关注 |电商平台卖家自爆家丑 一天要刷2000单

热门文章

  1. git for Mac安装(包含客户端软件Github Desktop的安装配置)
  2. 三国志战略版:当锋无法破防的司马盾
  3. C#模拟点击网页按钮,提交数据有关问题
  4. 不为环境所动就能成功——职场人士寓言(3)
  5. 几个有用的遥感和地理信息网站
  6. 安徽农业大学计算机考研分数线,安徽农业大学考研录取分数线
  7. 身份证阅读器(读卡器)谷歌Chrome和火狐Firefox浏览器端网页开发接口控件分享
  8. CKA 认证笔记 - CKA 认证经验帖
  9. SpringBoot Actuator未授权访问漏洞修复
  10. java群面自我介绍,群面的一分钟自我介绍