Pandas 的melt的使用
nunique 统计有多少不同的元素
cat
cat.add_categories
fillna
category就是分类的onehot编码,注意cat方法
quantile()分位数
data_ser.quantile(0.75)
df处理时间
errors=‘coerce’ Pandas 遇到不能转换的数据就会赋值为 NaN(Not a Number)
dt.days 将时间变量如 365days 变成float
注意数字类型
groupby
groupby类型可以迭代
groupby咋用
groupby咋用
[groupby+agg 可以对groupby的结果同时应用多个函数
高阶用法:
对于b列 使用 mean 与 sum 结果分别 放到 col1_mean col1_sum 名称的列下面
把a相同的值 变成list存储起来 的两种写法
SeriesGroupBy的方法agg()参数:
aggregate(self, func_or_funcs, * args, ** kwargs)
func: function, string, dictionary, or list of string/functions
返回:aggregated的Series
](https://blog.csdn.net/u013317445/article/details/85268877)
stack 与unstack
stack 与unstack
数据分桶
数据分桶
数据标准化、归一化
标准化归一化
drop_duplicates
去重
pandas 想查看行
qtime.loc[0]
qtime[qtime['id']==1]
#先得到一个01的index,再得到指定行
得到最大的id
Pandas:如何创建一个空DataFrame,并其中插入一行数据
在pandas中创建一个空DataFrame的方法,类似于创建了一个空字典(dict)。
例如:empty = pandas.DataFrame({“name”:"",“age”:"",“sex”:""})
添加一行
想要向empty中插入一行数据,可以用同样的方法。
(1)首先新建
test =pd.DataFrame(columns=[‘user_id’,‘item_id’, ‘time’])
value =pd.DataFrame(columns=[‘user_id’,‘item_id’, ‘time’])
(2)然后,开始插值。ignore_index=True,可以帮助忽略index,自动递增。
empty.append(new,ignore_index=True)
(3)最重要的,赋值给empty.
empty = empty.append(new,ignore_index=True)
否则,数据始终没有写入。
简单按行拼接:
x[‘0’] =ans_df[0]
x[‘1’] =ans_df[1]
新建列就行
按id合并
1
df = pd.merge(df1, df2, how=‘left’, on=‘user_id’)
用法很简单,说一下后两个参数就可以了,how=""参数表示以哪个表的key为准,上面的how=“left"表示以表df1为准,而key也就是on=”"的参数
how="left"就是说,保留user_id字段的全部信息,不增加也不减少,但是拼接的时候只把df2表中的与df1中user_id字段交集的部分合并上就可以了,如果df2中出现了某个user_id在df1中没有出现,就抛弃掉这个样本不作处理。
如果要进行多key合并:
1
df = pd.merge(df1, df2, how=‘left’, on=[‘user_id’,‘sku_id’])
长度不一样,一对多的关系填充进去
df交换两列,与初始化一个矩阵df
如图也能完成,更方便一些
去重
df直接list会得到col的list
正确方法
df获取indexdf获取index
怎样将groupby 完事了的对象变成df
groupby变成df
df更换列名称
使用pd.rename函数
a.rename(columns={‘A’:‘a’, ‘C’:‘c’}, inplace = True)
上面代码的意思是:
1,对a这个df进行操作,涉及的列为A和C两列
2:将涉及的列用字典括起来,’A’:’a’的意思是将原大A列的列名称修改为小a列
3,inplace指的是直接修改,不使用复制的方式,要是没有inplace这个参数,或者这个参数为False,需要改写成
填充缺失值
填充缺失值
pd.replace()
Train_data[‘notRepairedDamage’].replace(’-’, np.nan, inplace=True)
df变为字典的方法:
dict_user_feat = user_feat.set_index(‘user_id’).T.to_dict(‘list’)
把一个df中按user_id 的前50个值找出来,并排成一行
x['rank'] = x.groupby('user_id')['sim'].rank(method='first', ascending=False)
x = x[x['rank'] <= 50]
x = x.groupby('user_id')['item_id'].apply(lambda x: ','.join([str(i) for i in x])).str.split(',', expand=True).reset_index()
别问用就对了
从
变成这样
pd常用统计方法
Pandas 操作多个列进行运算,并生成新列的方法
简单加减用eval
单行自操作用 map
多行操作用 apply
Pandas对DataFrame单列/多列进行运算(map, apply, transform, agg)
agg 到底在对什么进行操作:
在对每个分组的每一列进行操作
a = pd.df
b = a
b改变 a也会改变 b= a[:] 则不会改变
遍历df 的方法Pandas.DataFrame 的 iterrows()方法详解
pandas.DataFrame.sample 随机选取若干行
df随机抽取
df只改变某几列的列名
df.rename(columns={'原列名':'新列名'},inplace=True)
df 给很多列取名
emb_df.columns = ['u3_' + str(i) for i in range(len(emb_df.columns))]