美文网首页
pandas 数据预处理

pandas 数据预处理

作者: qiaoqiao123 | 来源:发表于2019-04-10 23:32 被阅读0次
  1. pandas 数据加载
  2. pandas 数据查看
  3. pandas 非编码数据编码

去重

DataFrame.duplicated()

空值

DataFrame.isnull()
DataFrame.notnull()

空值 --- >> 填充

DataFrame.fillna(0)

# 众数
mode = DataFrame['colum'].mode()[0] ---- 众数
DataFrame['colum']=DataFrame['colum'].fillna(mode)

# 中位数填充
DataFrame['colum'].fillna(DataFrame['colum'].dropna().media(),inplace=True)

# 均值填充
DataFrame['colum'].fillna(DataFrame['colum'].dropna().mean(),inplace=True)

空值 --- >> 删除

DataFrame.dropna(axis=0,subset=['col1])
a.isna().sum()

bool值索引

a=pd.DataFrame(columns=list('abcdefg'),data=np.random.rand(20,7),dtype=np.float16)
a.head()

a[a<0.15]= None

a.dropna() #丢弃任何含有缺失值的行
data.dropna(how='all')  #丢弃全为NA的行
data.dropna(axis=1, how='all')  #丢弃列
data.fillna(0,method='ffill')   #缺失值替换成0,

重复值

data.duplicated() #表示各行是否重复行,返回布尔值
data.drop_duplicates() #返回一个移除重复行的DataFrame
data.drop_duplicates(['key1']) #根据key1列过滤重复项,默认保留第一个出现的值组合
data.drop_duplicates(['k1', 'k2'], take_last=True) #保留最后一个值组合

查看基本信息

a.dtypes
a.info() # 返回数据类型 是否为空 存储大小 RangeIndex
a.describe() #返回一个DataFrame  列号不变  行为 count mean std min 25% 50% 75% max共八行

df.describe(include=['category'])
df.describe(include=[np.object])
df.describe(include=[np.number])

查看关联信息
使用pivot_table

df.pivot_table(values='',index='',columns='',aggfunc=np.mean())

独热编码

data = {'color':['green','red','blue'],'size':['M','L','XL'],
    'price':['10.1','13.5','15.3'],
    'classlabel':['class1','class2','class1']
}
lable = ['classlabel', 'color', 'size']
pd.get_dummies(df[lable])

去掉某些行、列

df.drop(行号)
df.drop(列好,axis=1)=df.drop(colums=[列号])

常用数据预处理方法

  1. 标准化
    Z-score
ttnc.apply(lambda x:(x-np.mean(x))/np.std(x))
  1. 最小-最大规范化

  2. 规范化

    • 不同变化范围的值映射到相同的固定范围 [0,1]
  3. 特征二值化(Binarization)

  4. 标签二值化(Label binarization)

  5. 类别特征编码

  6. 标签编码(Label encoding)

  7. 特征中含异常值时

  8. 生成多项式特征

数据合并

# merge 函数
# 针对同一个主键存在两张包含不同特征的表,通过该主键的连接,将两张表进行合并。
merge(left,right,how='inner',on=None,
    left_on=None,right_on=None,
    left_index=False,right_index=False,
    sort=False,suffixes=('_x','_y'),copy=True)
df1 = pd.DataFrame([[1,2,3],[5,6,7],[3,9,0],[8,0,3]],columns=['x1','x2','x3'])
df2 = pd.DataFrame([[1,2],[4,6],[3,9]],columns=['x1','x4'])
df3 = pd.merge(df1,df2,how = 'left',on='x1')

#concat 拼接
# 横向拼接 纵向拼接
concat(objs,axis=0,join='outer',join_axes=None,ignore_index=False,keys=None,levels=None,names=None,verigy_integrity=False)
# objs 是需要拼接的对象集合,一般为列表或者字典
# axis=0 是行拼接,拼接之后行数增加,列数也根据join来定,join=’outer’时,列数是两表并集。同理join=’inner’,列数是两表交集。
# 在默认情况下,axis=0为纵向拼接,
#concat([df1,df2]) 等价于 df1.append(df2)
#在axis=1 时为横向拼接
#concat([df1,df2],axis=1) 等价于 merge(df1,df2,left_index=True,right_index=True,how='outer')

多列条件进行apply处理



时间处理
时间间隔是以秒为单位的浮点小数。
datetime.timedelta表示两个datetime对象之间的时间差

from datetime import datetime
from datetime import timedelta

now = datetime.now()
delta = now - datetime(2017,6,27,10,10,10,10)

相关文章

网友评论

      本文标题:pandas 数据预处理

      本文链接:https://www.haomeiwen.com/subject/buqwiqtx.html