Python/Pandas

1、数值计算

d1.count() #非空元素计算

d1.min() #最小值

d1.max() #最大值

d1.idxmin() #最小值的位置,类似于R中的which.min函数

d1.idxmax() #最大值的位置,类似于R中的which.max函数

d1.quantile(0.1) #10%分位数

d1.sum() #求和

d1.mean() #均值

d1.median() #中位数

d1.mode() #众数

d1.var() #方差

d1.std() #标准差

d1.mad() #平均绝对偏差

d1.skew() #偏度

d1.kurt() #峰度

d1.describe() #一次性输出多个描述性统计指标

2、函数

len(df):输出一共几行

df.fillna(0):用0填充NaN

3、索引

df[[‘user’,’merchant’]]:索引里面是一个列表,所以是两个[]

4、SQL

Orient2User = pd.merge(temp, Orient2User, on=’User_id’, how=’outer’):两个df合起来

Orient2User = off_train.groupby([‘User_id’], as_index = False)[‘sum’].agg({‘count’:np.sum}):根据User_id计算一共多少人,每个人的频率。需要在原df上加df[‘sum’]=1

5、缺失值处理

5.1 data.isnull().any()

isnull:返回data中数据是否缺失,以矩阵的形式

any:只要矩阵中有一个true,就返回true

5.2 清理无效数据

df.dropna() # 删除所有含nan项的row
d.dropna(axis=1,thred=3)  # 将在列的方向上三个为NaN的项删除
df.dropna(how='ALL') # 将所有项都是nan的row删除
df.drop(['a']) # 删除行,其中'a'是删除的行的index
df.drop(['Ohio'],axis=1) # 删除列,'Ohio'是删除的列的名称
df.drop(['a'],inplace=True) # 就地修改原来的数据df,inplace = True

X、注意点

X.1 copy问题

有的时候直接复制

df1 = df2
df1['id'] = ...

会出现

A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

需要改成

df1 = df2.copy()
df1['id'] = ...

说明:在python里,直接赋值,表示两个变量是相同的引用,只是别名

a=b.copy(),拷贝父对象,不会拷贝对象的内部的子对象。

a=copy.deepcopy(b), copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。也就是说,两者独立。(需要import copy)

1、直接赋值a=b

直接赋值

2、a = b.copy()浅拷贝

浅拷贝

3、a = copy.deepcopy(b)深度拷贝

深度拷贝


欢迎关注我的微信公众号

互联网矿工

funpeefun

Search

    Post Directory