Python数据预处理之清及
使用Pandas进行数据预处理
数据清洗中不是每一步都是必须的,按实际需求操作。
内容目录
1、数据的生成与导入
2、数据信息查看
2.1、查看整体数据信息
2.2、查看数据维度、列名称、数据格式
2.3、查看数据特殊值和数值
2.3.1、查看空值
2.3.2、查看唯一值
2.3.3、查看数值
2.3.4、查看前后数据
3、数据清洗和预处理等步骤
3.1、空值处理
3.2、空格处理
3.3、字符串大小写处理
3.4、更改数据类型和列名称
3.5、重复值处理
3.6、数据替换
3.7、数据合并和排序
3.8、数据分组
4、数据提取和筛选
4.1、按位置提取
4.2、按标签提取
4.3、按条件提取
4.4、数据筛选
5、数据汇总与统计量计算
5.1、groupby用法
5.2、数据透视表用法
5.3、数据采样
5.4、数据求均值、方差等
5.5、数据求相关系数等
6、数据存储
6.1、存储到Execl
6.2、存储到CSV
1. 读取数据
import pandas as pd data = pd.read_excel(io='D:\A\data.xlsx')
2. 数据信息
print(data.shape) # 查看数据规模(维度)
print(data.dtypes) # 查看各变量的数据类型
print(data.info()) # 查看数据整体信息
print(data.describe()) # 查看数据描述
print(data.isnull()) # 查看空值
print(data.columns) # 列名
print(data['Age'].unique()) #查看Age唯一值
print(data.values) # 查看数据表值
print(data.head(5)) #查看前5行
print(data.tail(5)) #查看后5行
3. 清洗
data.dropna(how='any', inplace=True) # 空值处理,删除
data.fillna(0) # 空值处理,填充:方法多种
data['name'] = data['name'].map(str.strip) # 空格处理
data['name'].str.lower() # 大小写转换
data['age'].astype('int') # 更改数据类型
data.rename(columns={'name':'名字', 'Age':'年龄"}) # 更改列名
data['name'].drop_duplicates(keep='last') # 删除重复值,保留最后一个
data['Embark'].replace('C', 'c') # 数据替换
3.1 重复数据的处理
# 判断数据中是否存在重复值
data.duplicated().any # 删除重复值,会删除除第一条后的,默认对所有变量判断
data.drop_duplicates()
# 指定变量判断
data.drop_duplicates(subset=['name', 'age'],keep='first', inplace=False) # first保留第一个,inplace=True对原数据修改
4. 缺失值(NA)识别与处理
# 判断各变量中是否存在缺失值
data.isnull().any(axis=0) # 各变量中缺失值的数量
data.isnull().sum(axis=0) # 各变量中缺失值的比例
data.isnull().sum(axis=0)/data.shape[0] # 判断数据行中是否存在缺失值
data.isnull().any(axis=1).any() # 第二个any表示所有行
4.1 直接去除
# 列变量缺失非常高的(70%),删除该变量
data.drop(labes='name', axis=1,inplace=True) # 删除name字段
# 删除name变量中对应的缺失值
data = data.drop(labels=data.index[['name'].isnull()],axis=0) # 行内
# 缺失变量的将该行删除(缺失行的比例不高于5%)
# 变量缺失非常高的(70%),将该行删除
4.2 对缺失值进行填充(用中位数或平均数...)
data.fillna(value={'age':data['age'].mode()[0], # 使用众数替换
'num':data['num'].mean() # 使用平均值替换
},
inplace=True
)
data.dropna() #直接删除含有缺失值的行
data.dropna(axis = 1) #直接删除含有缺失值的列
data.dropna(how = 'all') #只删除全是缺失值的行
data.dropna(thresh = 3) #保留至少有3个非空值的行
data.dropna(subset = [u'血型 ']) #判断特定的列,若该列含有缺失值则删除缺失值所在的行
5. 异常数据的识别和处理
6. 排序
data.sort_valurs(by=['Age']) # 按字段排序
data.sort_index() #按索引排序
7. 合并merge
# 合并方式: inner, outer, left, right
# 组合方式: left_on+right_on、left_on+right_index、left_index+right_on、left_index+right_index # merge参数
pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=True, suffixes=('_x', '_y'), copy=True, indicator=False) # 例子
data1 = pd.DataFrame({'lkey': list('abcdefg'), 'data1': range(7)})
data2 = pd.DataFrame({'rkey': list('agsdgf'), 'data2':range(6)})
print(pd.merge(data1, data2, left_on='lkey', right_on='rkey'))
数据分组
data['group'] = np.where(data['fa']>60, 'high', 'low')
data[['fa', 'group']]
数据汇总与统计量计算
data.groupby(['columns']) # 按字段分组 pd.pivot_table(data, values=None, index=None, columns=None, aggfunc='mean', fill_value=None,
margins=False, dropna=True, margins_name='All') # 数据透视表 data.sample(n=2)
data.describe() # 描述统计量
data['a'].cov(data['b']) # 计算两字段的协方差
data.corr() # 相关性
计算每行指定属性的平均值,作为新的一列加入到原数据中。
data.eval('avg = (Chinese + Math +English)/3.0', inplace=True)
8. 保存
8.1 保存到excel
data.to_excel('data.xlsx', sheet_name='a')
8.2 保存到csv
data.to_csv('data1.csv')
8.2 保存到数据库
其他:
Pandas时间序列重采样(resample)方法中closed、label的作用
Python数据预处理之清及的更多相关文章
- Python数据预处理:机器学习、人工智能通用技术(1)
Python数据预处理:机器学习.人工智能通用技术 白宁超 2018年12月24日17:28:26 摘要:大数据技术与我们日常生活越来越紧密,要做大数据,首要解决数据问题.原始数据存在大量不完整.不 ...
- python data analysis | python数据预处理(基于scikit-learn模块)
原文:http://www.jianshu.com/p/94516a58314d Dataset transformations| 数据转换 Combining estimators|组合学习器 Fe ...
- python数据预处理for knn
机器学习实战 一书中第20页数据预处理,从文本中解析数据的程序. import numpy as np def dataPreProcessing(fileName): with open(fileN ...
- Python数据预处理—归一化,标准化,正则化
关于数据预处理的几个概念 归一化 (Normalization): 属性缩放到一个指定的最大和最小值(通常是1-0)之间,这可以通过preprocessing.MinMaxScaler类实现. 常用的 ...
- Python数据预处理(sklearn.preprocessing)—归一化(MinMaxScaler),标准化(StandardScaler),正则化(Normalizer, normalize)
关于数据预处理的几个概念 归一化 (Normalization): 属性缩放到一个指定的最大和最小值(通常是1-0)之间,这可以通过preprocessing.MinMaxScaler类实现. 常 ...
- python数据预处理和特性选择后列的映射
我们在用python进行机器学习建模时,首先需要对数据进行预处理然后进行特征工程,在这些过程中,数据的格式可能会发生变化,前几天我遇到过的问题就是: 对数据进行标准化.归一化.方差过滤的时候数据都从D ...
- Python数据预处理:使用Dask和Numba并行化加速
如果你善于使用Pandas变换数据.创建特征以及清洗数据等,那么你就能够轻松地使用Dask和Numba并行加速你的工作.单纯从速度上比较,Dask完胜Python,而Numba打败Dask,那么Num ...
- Python数据预处理—训练集和测试集数据划分
使用sklearn中的函数可以很方便的将数据划分为trainset 和 testset 该函数为sklearn.cross_validation.train_test_split,用法如下: > ...
- 关系网络数据可视化:2. Python数据预处理
将数据中导演与演员的关系整理出来,得到导演与演员的关系数据,并统计合作次数 import numpy as np import pandas as pd import matplotlib.pyplo ...
随机推荐
- html--前端css样式初识
一.CSS概述 css是英文Cascading Style Sheets的缩写,称为层叠样式表,用于对页面进行美化,CSS的可以使页面更加的美观.基本上所有的html页面都或多或少的使用css. CS ...
- manjaro 安装 tim 后无法输入中文
cd /opt/deepinwine/tools sudo chmod 777 run.sh vim run.sh 在一开始的注释下输入 export GTK_IM_MODULE="fcit ...
- Hyperparameters
参数是机器学习算法的关键.它们通常由过去的训练数据中总结得出.在经典的机器学习文献中,我们可以将模型看作假设,将参数视为对特定数据集的量身打造的假设. 模型是否具有固定或可变数量的参数决定了它是否可以 ...
- SDOI2010选做
Round1 D1T1外星千足虫 \(BSOJ2793\)--高斯消元解异或方程组 简述 有\(n\)个数\(\{a_i\}\) 给出\(m\)个信息,每个信息给出\(\displaystyle{(\ ...
- Pandas | 05 基本功能
到目前为止,我们了解了三种Pandas数据结构以及如何创建它们.接下来将主要关注数据帧(DataFrame)对象,因为它在实时数据处理中非常重要,并且还讨论其他数据结构. 一.系列基本功能 编号 属性 ...
- jQuery高级案例
一.广告的自动显示与隐藏 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...
- react-native-cli运行项目及打包apk失败的解决过程
刚开始学习react native,第一步自然是搭建好开发环境,node及jdk本身就有,Python2.Android studio以及Android sdk的安装倒是没什么大问题,按照官网的教程做 ...
- Java 抽象类 抽象方法 接口
#抽象类 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类. 抽象类除了不能实例化 ...
- vultr的防火墙注意事项
如下图所示,你设置让任意IP的TCP,UDP,GRE,ESP,ICMP都允许访问,并不表示开放了任意协议和端口了. 下图只是表示开放了TCP,UDP,GRE,ESP,ICMP五个协议,比如ROS路由的 ...
- docker Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post
利用docker构建时,报错 + docker pull maven:3-alpine Got permission denied while trying to connect to the Doc ...