数据处理笔记
pandas处理数据
-
pd.reset_index()
重置index索引并不删除空行,当DataFrame或Series类型的数据不是连续的索引或索引的输运不对,可以使用reset_index()重置索引。
DataFrame.reset_index(level=None, drop=False, inplace=False, col_level=0, col_fill='')
drop = True 表示不保留原来的索引,即删除原来的索引,只保留新的索引
inplace=True 表示对原表生效
示例:df.reset_index(drop=True,inplace=True)
#
相关语法:set_index -
pd.dropna() 删除空值,即删除包含nan(空值)
DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
参数说明:axis default 0指行,1为列
how {‘any’, ‘all’}, default ‘any’指带缺失值的所有行;'all’指清除全是缺失值的行
thresh int,保留含有int个非空值的行
subset 对特定的列进行缺失值删除处理
inplace 这个很常见,True表示就地更改示例:
df.dropna()
-
df.rename() 重新命名列名
rename方法作用: 复制 DataFrame并对其索引index和列标签columns进行赋值。如果希望就地修改某个数据集,传入inplace=True即可
示例:df.rename(columns={averageName:'average'},inplace=True)
-
df.mean()
Pandas中的df.mean()函数默认是等价于df.mean(0),即按轴方向求平均,得到每列数据的平均值。
示例:df['average'].mean()
求某一列的平均值 -
df.shift(periods=1, freq=None, axis=0) 移动
periods:类型为int,表示移动的幅度,可以是正数,也可以是负数,默认值是1,1就表示移动一次,注意这里移动的都是数据,而索引是不移动的,移动之后没有对应值的,就赋值为NaN。
freq: DateOffset, timedelta, or time rule string,可选参数,默认值为None,只适用于时间序列,如果这个参数存在,那么会按照参数值移动时间索引,而数据值没有发生变化。
示例:df1.shift(periods=1,freq=datetime.timedelta(1))
-
pd[‘列名’].values 获取值
取到的是该列对应的函数值
示例:df['diff_1'].values
-
df.loc[] 区域选取
区域选取可以从多个维度(行和列)对数据进行筛选,可以通过df.loc[],df.iloc[],df.ix[]三种方法实现。采用df.loc[],df.iloc[],df.ix[]这三种方法进行数据选取时,方括号内必须有两个参数,第一个参数是对行的筛选条件,第二个参数是对列的筛选条件,两个参数用逗号隔开。df.loc[],df.iloc[],df.ix[]的区别如下:
df.loc[]只能使用标签索引,不能使用整数索引,通过便签索引切边进行筛选时,前闭后闭。
df.iloc[]只能使用整数索引,不能使用标签索引,通过整数索引切边进行筛选时,前闭后开。
df.ix[]既可以使用标签索引,也可以使用整数索引。
示例:df.loc['a', :]
df.loc['a':'d', :]
df.loc[df['age']>30,:]
df.loc[lambda df:df['age'] > 30, :]
df.loc[:, 'name']
df.iloc[1, :]
df.loc[:,'Day'] = df['TimeStamp']
-
np.unique()
unique()是以 数组形式(numpy.ndarray)返回列的所有唯一值 -
df.columns 修改列名
示例:df.columns=['Day']
-
df.groupby()功能:分组
groupby + agg(聚集函数们): 分组后,对各组应用一些函数,如’sum’,‘mean’,‘max’,‘min’…
示例:df.groupby('Day')[feature].agg(函数名)
如:‘sum’、'mean’等 -
pd.merge() 合并Dataframe
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, validate=None
left: 拼接的左侧DataFrame对象 right: 拼接的右侧DataFrame对象
on: 要加入的列或索引级别名称。必须在左侧和右侧DataFrame对象中找到。 如果未传递left_index和right_index为False,则DataFrame中的列的交集将被推断为连接键。
left_on:左侧DataFrame中的列或索引级别用作键。 可以是列名,索引级名称,也可以是长度等于DataFrame长度的数组。
right_on: 左侧DataFrame中的列或索引级别用作键。
可以是列名,索引级名称,也可以是长度等于DataFrame长度的数组。 left_index:
如果为True,则使用左侧DataFrame中的索引(行标签)作为其连接键。
对于具有MultiIndex(分层)的DataFrame,级别数必须与右侧DataFrame中的连接键数相匹配。
right_index: 与left_index功能相似。
how: One of ‘left’, ‘right’,‘outer’, ‘inner’. 默认inner。inner是取交集,outer取并