import pandas as pd
import numpy as np
from sklearn.impute import KNNImputer# 要读取的文件名
file_name = 'test.txt'
# 读取数据
with open(file_name, 'r') as f:data = f.readlines()# 读取数据行数n = len(data)# 初始化输出数组arr = []for i in range(n):# 提取一行字符串,去掉末尾的换行符row = data[i].strip('\n')# 该字符串拆分为数组,拼接到输出数组的下方arr.append(row.split('\t'))
# 转为np数组
arr = np.array(arr)
# 设置表头
# head = ['carid'
#     , 'tradetime'
#     , 'brand'
#     , 'serial'
#     , 'model'
#     , 'mileage'
#     , 'color'
#     , 'cityid'
#     , 'carcode'
#     , 'transfercount'
#     , 'seatings'
#     , 'registerDate'
#     , 'licenseDate'
#     , 'country')
#     , 'maketype')
#     , 'modelyear'
#     , 'displacement'
#     , 'gearbox'
#     , 'oiltype'
#     , 'newprice'
#     , 'anon_1'
#     , 'anon_2'
#     , 'anon_3'
#     , 'anon_4'
#     , 'anon_5'
#     , 'anon_6'
#     , 'anon_7'
#     , 'anon_8'
#     , 'anon_9'
#     , 'anon_10'
#     , 'anon_11'
#     , 'anon_12'
#     , 'anon_13'
#     , 'anon_14'
#     , 'anon_15'
#     , 'price'
#         ]
head = ['carid', 'tradetime', 'brand', 'serial', 'model', 'mileage', 'color', 'cityid', 'carcode', 'transfercount', 'seatings', 'registerDate', 'licenseDate', 'country', 'maketype', 'modelyear', 'displacement', 'gearbox', 'oiltype', 'newprice', 'anon_1', 'anon_2', 'anon_3', 'anon_4', 'anon_5', 'anon_6', 'anon_7', 'anon_8', 'anon_9', 'anon_10', 'anon_11', 'anon_12', 'anon_13', 'anon_14', 'anon_15']
# 转为dataframe
df = pd.DataFrame(arr, columns=head)
# 将空单元格设置为nan
df[df == ''] = np.nan
# 统计缺失值比例
report = df.isnull().sum() / len(df)
# 筛选出存在缺失值的特征
boolens = [not i for i in report == 0]
report = report[boolens]
# 找到缺失值超过25%的特征
missing_index = report[report >= 0.25].index
# 删除这些特征
df = df.drop(missing_index, axis=1)# 转为数值类型
df = df.apply(pd.to_numeric, errors='ignore')
# 日期字符串转为日期类型
df['tradetime'] = pd.to_datetime(df['tradetime'])
df['registerDate'] = pd.to_datetime(df['registerDate'])
df['licenseDate'] = pd.to_datetime(df['licenseDate'])
# 将日期的时间戳类型转为数值类型
df = df.apply(pd.to_numeric, errors='ignore')# 统计anon_11特征中有哪些类型
anon_11_keys = set(df['anon_11'].values)
# 缺失值不算类型
anon_11_keys.remove(np.nan)
# 共有n个类型
n = len(anon_11_keys)
# 创建类型与数字间的映射字典
anon_11_dict = {key: value for key, value in zip(anon_11_keys, range(n))}
# 将不同的类型映射为不同的数值
df['anon_11'] = df['anon_11'].map(anon_11_dict)
# 统计anon_12特征中有哪些类型
anon_12_keys = set(df['anon_12'].values)
anon_12_keys.remove(np.nan)
# 共有n个类型
n = len(anon_12_keys)
# 创建类型与数字间的映射字典
anon_12_dict = {key: value for key, value in zip(anon_12_keys, range(n))}
# 将不同的类型映射为不同的数值
df['anon_12'] = df['anon_12'].map(anon_12_dict)
# 实例化KNN填充器
knn_imp = KNNImputer(n_neighbors=1)
# 对dataframe的数组填充
arr = knn_imp.fit_transform(df.values)
# 合成新dataframe
df = pd.DataFrame(arr, columns=df.columns)
# 构建逆向字典
verse_anon_11_dict = {key: value for value, key in zip(anon_11_dict.keys(), anon_11_dict.values())}
verse_anon_12_dict = {key: value for value, key in zip(anon_12_dict.keys(), anon_12_dict.values())}
# 将数值映射回字符串类型
df['anon_11'] = df['anon_11'].map(verse_anon_11_dict)
df['anon_12'] = df['anon_12'].map(verse_anon_12_dict)
# 数值类型转换回日期类型
df['tradetime'] = pd.to_datetime(df['tradetime'])
df['registerDate'] = pd.to_datetime(df['registerDate'])
df['licenseDate'] = pd.to_datetime(df['licenseDate'])
# 输出
df.to_csv('test.csv', index=None)

mathorcup数据大赛相关推荐

  1. 数据宝在中国第一届大数据大赛上取得三等奖

    2022年11月18日,首个国家级大数据产业创新赛事--2022第一届中国大数据大赛圆满落幕.本次大赛由中国电子技术标准化研究院.河北省工信厅共同承办. 经过多轮赛事的激烈角逐,在复赛专家评审及北京市 ...

  2. 首次试水天池数据大赛——7个小时玩了把美年健康AI大赛

    并不想花太多精力去拼比赛拿名次,毕竟又工作又带娃,时间并不多.但比较喜欢看比赛里的技术论坛.工作中的内容相对要单一很多,很容易陷入狭窄的思维中,而比赛中,大家的思维还是很有营养的.偶尔遇到合胃口的数据 ...

  3. 一文速览-江西开放数据大赛VET风险预测诊断单特征思路分享

    前言 经过了差不多一个月的不断实验数据工程又跑模型,最终还是发现诊断文本单特征最靠谱了.其他特征与flag关联都挺一般的,官方是根据评分来划分flag的:>5为1,<5为0.由此锁定Cap ...

  4. pytorch深度学习参加平安银行数据大赛,从驾驶行为预测驾驶风险

    比赛链接http://www.datafountain.cn/#/competitions/284/intro 本赛题提供部分客户1分钟级驾驶行为数据及对应客户的赔付率作为训练集,包括经纬度定位及驾驶 ...

  5. 大数据应用项目创新大赛_创新创业大赛聚焦大数据应用 15个项目进入决赛

    襄阳日报讯(通讯员吴婕全媒体记者张嫚)4月29日,在我市举办的2019年"华为杯"大数据应用暨创新创业大赛初赛路演成绩出炉,涉及智慧医疗.智慧社区.智慧交通的15个项目脱颖而出,进 ...

  6. 国信优易首席科学家周涛:大数据的商业应用

    国信优易首席科学家周涛认为,大数据已经成为一个非常热的概念,但是当一个概念热到一定程度就会存在风险,甚至风险比机会还多.在大数据沙龙中,他和数据从业者们分享了自己所经历的大数据应用. 以下为周涛发言: ...

  7. 跨学科融合,塑π型人才 | 数据科学研究院第四届RONG奖学金答辩会成功举办...

    为服务国家大数据发展战略,打造多层次.多类型的大数据人才队伍,清华-青岛数据科学研究院(以下简称:数据院)"RONG"奖学金答辩会于2019年12月27日成功举办. "R ...

  8. 【数据竞赛】消费金融场景下的用户购买预测冠军方案分享

    大赛介绍 2000多年前,阿基米德说:"给我一个支点,我可以撬动整个地球".伴随近年来新技术的快速涌现和迅猛发展,大数据或将成为传统金融行业向金融科技转型的"阿基米德支点 ...

  9. 工业机器人九龙坡区职教中心_山西省襄汾县职教中心“智能工业机器人订单班”学生集体观看直播“2020一带一路暨金砖国家技能发展与技术创新大赛”...

    由金砖国家工商理事会主办的金砖国家技能发展与技术创新大赛自2017年发起,已成功举办三届,累计近80000人次参与了竞赛及相关会议.展览展示.技术交流活动.金砖大赛拉开了金砖国家技能竞赛和技术创新合作 ...

  10. DataSciComp 有关数据科学的比赛

    from:https://github.com/iphysresearch/DataSciComp 2018-12-16 Update! Please Feel free to star ⭐ this ...

最新文章

  1. Python未来的发展趋势怎么样
  2. randomAccessFile
  3. Sql Server系列:Transact-SQL概述
  4. C++程序设计之可调用对象与标准库function
  5. 三点弯曲弹性模量怎么计算公式_?怎么计算弯管的尺寸和弯管的张力
  6. 最佳实践丨三种典型场景下的云上虚拟IDC(私有池)选购指南
  7. 不想写脚本清理 mongodb 中的垃圾数据,ttlIndex 能帮到你!
  8. string.Format 格式化输出
  9. UVA10838 The Pawn Chess
  10. Android中Xml工具类的封装
  11. 计算机系统保密检查整改情况函,保密工作整改情况汇报
  12. 2019年中秋读者福利,你中奖了吗??
  13. 【Grasshopper基础1】怎样制作一个Grasshopper电池 / 二次开发基础
  14. Nike Zoom LeBron 15 Performance Review
  15. mysql身份证号的类型_MySQL--隐藏手机号、身份证号三种方式
  16. Cat Snuke and a Voyage
  17. Android基础篇-四大组件之使用ContentProvider实现数据共享
  18. python复杂网络点图可视化_数据分析:R与Python怎么选?
  19. 嵌入式开发(五):海思Hi3559AV100交叉编译boost
  20. Java计算两个时间点的工作日

热门文章

  1. php寻仙记,寻仙记文字游戏完整实测源码 - 下载 - 搜珍网
  2. 【MySQL从入门到精通】:了解SQL语言
  3. VS2017下的getch函数
  4. pythonsample_python sample code | 学步园
  5. 2021全国大学生数学建模 C题 解题思路和细节展示
  6. java程序员语录_2019精选java程序员语录大全
  7. 备战数学建模12-模糊综合评价模型
  8. Windows 10 Enterprise LTSC MSDN官方纯净版下载
  9. jmeter中build和jmeter-results-detail-report_30.xsl以及jmeter.results.shanhe.me.xsl
  10. 计算机如何制作U盘启动盘,如何制作u盘启动盘三种方式教你