- pandas 数据加载
- pandas 数据查看
- 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=[列号])
常用数据预处理方法
- 标准化
Z-score
ttnc.apply(lambda x:(x-np.mean(x))/np.std(x))
-
最小-最大规范化
-
规范化
- 不同变化范围的值映射到相同的固定范围 [0,1]
-
特征二值化(Binarization)
-
标签二值化(Label binarization)
-
类别特征编码
-
标签编码(Label encoding)
-
特征中含异常值时
-
生成多项式特征
数据合并
# 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)
网友评论