import numpy as np
import pandas as pd
# 如果存在缺失值就返回true,否则返回false
pd.isnull(dataframe)
# 如果不是缺失值标记为true,否则标记为false
pd.notnull(dataframe)
# 默认按行删除(axis = 'rows')
dataframe.dropna()
# 修改原数据
dataframe.dropna(inplace=True)
# 不会修改原数据,生成新的处理后的对象
dataframe.dropna(inplace=False)
# 向原数据中的NAN替换成自己指定的value值,inplace策略和上述一样
dataframe.fillna(value, inplace=False)
# 首先将缺失值标记为true
data1 = pd.isnull(dataframe)
# 通过numpy的any来生成返回值(true代表存在NAN,false代表不存在NAN)
np.any(data1)
# 或者更简单一点,返回true代表存在NAN
data1.any()
# 首先将缺失值标记为true
data2 = pd.notnull(dataframe)
# 通过numpy的all来生成返回值(false代表存在NAN,true代表不存在NAN)
np.all(data12)
# 或者更简单一点,返回false代表存在NAN
data1.all()
food["含有NAN的字段名"].fillna(food["含有NAN的字段名"].mean(), inplace=True)
# 先将特殊字符转换成NAN,之后再逐一处理
data_new = data.replace(to_replace="特殊字符", value=np.nan)
连续属性离散化的目的是为了简化数据结构,数据离散化技术可以用来减少给定连续属性值的个数,离散化方法经常作为数据挖掘的工具
pd.qcut(data,bins)
例子
data = ['一堆数据....']
# 首先自动分组(将数据分成了三组)
sr = pd.qcut(data, 3)
# 查看每一组的分组情况
sr.value_counts()
pd.cut(data,[])
例子
data = ['一堆数据....']
# 首先自定义范围
bins = [150,165,180,195]
# 再自定义分组
sr = pd.cut(data, bins)
# 查看每一组的分组情况
sr.value_counts()
# 数据离散化
pd.get_dummies(sr, prefix="height")
当数据由多张表组成,有时候需要将不同的内容合并在一起分析
pd.concat([data1, data2], axis=1)
pd.concat([data1, data2], axis=0)
left:左连接 主要根据左表索引合并
right:右连接 主要根据右表索引合并
outer:外连接 根据两表所有的索引合并
inner:内连接 根据两表共同的索引合并
# left左表,right右表,how合并策略:inner内连接,on:按哪个索引合并
pd.merge(left, right, how="inner", on=['索引..'])
交叉表用于计算一列数据对于另外一列数据的分组个数(寻找两个列之间的关系)
pd.crosstab(value1, value2)
例子
pd.crosstab(food["土豆"], food["天"])
和交叉表差不多
# dataframe:表数据
dataframe.pivot_table(["土豆"], index=["天"])
# col:数据对象 color:字段 prices:字段
# 根据color字段分组,再按prices中最大值进行聚合
col.groupby(by="color")["prices"].max()
# 根据color字段分组,再按prices中最大值进行聚合
col["prices"].groupby(col["color"]).max()