注意代码中LONGITUDE、LATITUDE、SPEED、DIRECT等属于博主做交通数据处理时的残留模板。如要自定义使用替换为使用场景下的对应词句即可
import pandas as pd
import numpy as np
import matplotlib.pyplot as pit
# %matplotlib inlineimport csv
import codecs
import openpyxl# 为添加列标题【如果原始数据没有】
def formulate(file_name):df = pd.read_csv(file_name, header=None)tt = ["ID_0", "ID_1", "ID_2", "EMPTY", "LONGITUDE", "LATITUDE", "SPEED", "DIRECT", "STATUS", "CPS_Y", "CPS_MON","CPS_D", "CPS_H", "CPS_MIN", "CPS_S", "CARTYPE"]# R2G = pd.read_csv(RF_PATH, header=None)insertRow = pd.DataFrame([tt])# R2G = pd.concat([instertRow, R2G], ignore_index = True)R2G = insertRow.append(df, ignore_index=True)R2G.to_csv(file_name, header=None, index=None)df = pd.read_csv(file_name, index_col=0)# file_name为写入CSV文件的路径,datas为要写入数据列表
def data_write_csv(file_name, datas):file_csv = codecs.open(file_name, 'w+', 'utf-8')  # 追加writer = csv.writer(file_csv, delimiter=' ', quotechar=' ', quoting=csv.QUOTE_MINIMAL)for data in datas:writer.writerow(datas)print("保存文件成功,处理结束")# 同上存储为text格式
def text_save(filename, data):file = open(filename, 'a')for i in range(len(data)):s = str(data[i]).replace('[', '').replace(']', '') # 去除[],这两行按数据不同,可以选择s = s.replace("'", '').replace(',', '') + '\n'  # 去除单引号,逗号,每行末尾追加换行符file.write(s)file.write(str(data))file.close()print("保存文件成功")# -------------------------------------------------------------【设置pd设定】# 显示所有列
pd.set_option('display.max_columns', None)# 显示所有行
pd.set_option('display.max_rows', None)# 设置value的显示长度为100,默认为50
pd.set_option('max_colwidth', 100)# -------------------------------------------------------------【数据基础信息】
filename = '输入需要预处理的数据所在的文件地址'# 如果原始数据没有列标题启用添加【注意自定义函数设定】
# formulate(filename)df = pd.read_csv(filename, header=None)
# 查看数据特征
print("数据特征:(数据总数【行】, 属性个数【列】)")
print(df.shape)# 查看数据结构
print("数据结构:")
print(df.info())# 查看详细描述【数值型数据】
print("数据详细描述:")
print(df.describe())# 描述结果输出csv
df.describe().to_csv('./output.csv')
map_point = df[['LONGITUDE', 'LATITUDE']]
map_point.to_csv('./output_points2.csv')# 取数据项名称
COL = df.columns.values
print(COL)# 列表代码推导式循环COL中数据项名称进行去空格操作【strip函数一次只能处理一个数据】
df.columns = [x.strip() for x in COL]# -------------------------------------------------------------【重复值处理】# 重复值检查 duplicated() 返回布尔型数据,告知重复值的位置
# 注意:当两条数据各项完全重复时才会认定为重复值,默认执行从前向后的重复值查找,所以重复值标记会在后重复数据中显示为TRUE
print(df.duplicated())# 重复值数据的个数
print("重复值数据量统计:")
print(df.duplicated().sum())# 删除重复值数据【inplace=TRUE表示直接在原始数据上进行删除操作
df.drop_duplicates(inplace=True)# 修改原始数据后可能需要重置index下标排序以便后续针对特殊数据定位
df.index = range(df.shape[0])# -------------------------------------------------------------【异常值处理】# 以三倍标准差为衡量标准找出异常值
sta = (df['DIRECT'] - df['DIRECT'].mean()) / df['DIRECT'].std()
print(sta)# 保存sta数据
text_save('./output.txt', sta)# 筛选定位出大于三倍标准差的异常数据和其index  实际index = 输出结果 + 2
df[sta.abs() > 3]
print(df[sta.abs() > 3])
print(df[sta.abs() > 3].index)
print(sta)# 建模时通常删除异常值,但异常值也蕴含业务价值 concat可以合成提取
delindex = pd.concat([df[sta.abs() > 3]]).index
print("异常值index定位:")
errorIndex = df[sta.abs() > 3].index
print(errorIndex)# inpalce=True时直接在原始数据上进行修改
df.drop(errorIndex, inplace=True)
df.drop(errorIndex)# -------------------------------------------------------------【缺失值处理】
# 查找是否存在缺失值,并统计缺失数量
print("缺失值数据量:")
print(df.isnull().sum())# 若存在缺失值
# ①利用数据内部的关联直接替代缺失数据
# df.object_name.isnull()定位缺失值所在数据对象
df.loc[df.SPEED.isnull(), 'SPEED'] = [str(x)[:6] for x in df.loc[df.SPEED1.isnull(), 'SPEED1']]# 此处是将对应可用于填补缺失的数据通过values取出后str化为字符串列表
# 进行对应index 5-6位置数据的提取
df.loc[df.AREA.isnull(), 'AREA'] = str(df.loc[df.AREA.isnull(), 'AREADETAIL'].values)[5:6]# ②通过fillna进行缺失值填补
df['SPEED'].fillna(round(df['SPEED'].mean(), 0), inplace=True)# 【, a】的作用
print("[xxx, 0]时结果如下:")
print(round(df['SPEED'].mean(), 0))
print("[xxx, 1]时结果如下:")
print(round(df['SPEED'].mean(), 1))# 处理文本型数据部分省略

Python 数据清洗及预处理常用代码整理相关推荐

  1. python常用命令汇总-python数据分析之pandas常用命令整理

    原标题:python数据分析之pandas常用命令整理 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的.Pandas 纳入了大量库和一些标准的数据模型 ,提供了高效地 ...

  2. 常用代码整理(重要)

    常用代码整理: 1.判断邮箱格式是否正确的代码: //利用正则表达式验证 -(BOOL)isValidateEmail:(NSString *)email { NSString *emailRegex ...

  3. python基础30个常用代码-30 个Python代码实现的常用功能,精心整理版

    1.冒泡排序 2.计算x的n次方的方法 3.计算a*a + b*b + c*c + -- 4.计算阶乘 n! 5.列出当前目录下的所有文件和目录名 6.把一个list中所有的字符串变成小写: 7.输出 ...

  4. Python | Numpy核心语法和代码整理汇总!

    点上方计算机视觉联盟获取更多干货 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:腾讯云 云+社区 AI博士笔记系列推荐 周志华<机器学习>手推笔记正式开源!可打印版本附pdf下载 ...

  5. python基础30个常用代码-30个Python常用极简代码,拿走就用

    学 Python 怎样才最快,当然是实战各种小项目,只有自己去想与写,才记得住规则.本文是 30 个极简任务,初学者可以尝试着自己实现:本文同样也是 30 段代码,Python 开发者也可以看看是不是 ...

  6. [转]NSIS常用代码整理

    转自 http://www.flighty.cn/html/bushu/20120827_156.html 这是一些常用的NSIS代码,少轻狂特意整理出来,方便大家随时查看使用.不定期更新哦~~~ ; ...

  7. Python的几个爬虫代码整理(网易云、微信、淘宝、今日头条)

    整理了一下网易云歌曲评论抓取.分析好友信息抓取.淘宝宝贝抓取.今日头条美图抓取的一些代码 抓取网易云评论 进入歌曲界面: http://music.163.com/#/song?id=45318582 ...

  8. python基础30个常用代码大全-Python3列表内置方法大全及示例代码小结

    Python中的列表是简直可说是有容乃大,虽然看似类似C中的数组,但是Python列表可以接受任意的对象元素,比如,字符串,数字,布尔值,甚至列表,字典等等,自由度提升到一个新的高度,而Python也 ...

  9. java 获取本机信息,使用Java获取系统信息的常用代码整理总结

    1.获取CPU和内存信息 ? 2.获取本机的IP地址: ? 3.获得网卡地址 ? 4.获得操作系统帐号 ? 5.获得操作系统版本 ? 6.一些常用的信息获得方式整理 java.version    J ...

最新文章

  1. wince5使用access数据库_关于wince系统支持什么数据库的阿里云论坛用户知识和技术交流...
  2. SafeSEH原理与对抗
  3. 简单有趣的 NLP 教程:手把手教你用 PyTorch 辨别自然语言(附代码)
  4. python添加系统环境win7_python环境配置(基于win7 x64)
  5. HTK学习2:工具使用
  6. django models中批量导入数据
  7. 计划任务中allow和deny的优先级
  8. 他曾是离诺贝尔奖最近的中国人之一!
  9. NDoc使用简要手册的补充
  10. Acrobat Pro DC 教程,如何使用密码保护 PDF 文件?
  11. 【设计模式】java设计模式总述及观察者模式
  12. linux 用户与工作组
  13. python缠论代码_缠论dll(czsc - 缠中说禅技术分析工具)
  14. 魔法风云纪无限元宝公益服务器,好玩网页游戏 2678魔法风云纪sf 神兽助战卡免费获得...
  15. 文献解读|DPP-4i治疗诱导的肠道微生物群的改变可改善葡萄糖稳态
  16. P4568 飞行路线 分层图最短路
  17. 电脑无法复制粘贴怎么办的解决方法
  18. centos7编写shell批处理文件和执行方法
  19. 界门纲目科属种的英文——学生物的基础
  20. mysql造1000万数据_MySQL制作具有千万条测试数据的测试库

热门文章

  1. 实时直播流量统计分析及可视化系统————老子明天不加班系列
  2. 百度AIDU计划大数据一面面经
  3. 周末总结了面试套路,2W 字长文!
  4. java 中 实现两个整数相除并且保留一位小数
  5. Vue+Element实现表格筛选
  6. 如何更高效的编写Go代码 Effective Go
  7. Spring容器的初始化过程
  8. Cesium Label 被建筑物遮挡问题
  9. 独步山南之桃花源探秘(下)
  10. Python字典常用方法有哪些?