python数据处理随记

1.删除变量:

df.drop(['‘变量名1,变量名2......’],axis=1,inplace=True)

2.删除所有缺失值:

df.dropna(how='any',inplace=True)  #‘any’有一个维度缺失就都删除

3.删除指定变量的缺失值:

df.dropna(subset=['变量名1','变量名2],inplace=True)

3.1根据阈值删除缺失值:

thresh_count=len(data)*0.4# 设定阀值

data=data.dropna(thresh=thresh_count,axis=1)#若某一列数据缺失的数量超过阀值就会被删除

4.删除指定变量的重复值:

df.drop_duplicates(subset=['变量名'],inplace=True)

5.缺失值填充:

df.fillna(''值) #统一填充

df.fillna(value={'类别变量:df['类别变量'].mode()[0],'连续变量':指定值,'连续变量2':df['连续变量2'].mean()/median,inplace=True)

df.fillna({'': , '': ,})

5.1数值型变量缺失值处理

from sklearn.preprocessing import Imputer imr=Imputer(missing_values='NaN',strategy='mean',axis=0)# 针对axis=0 列来处理imr=imr.fit(loans[numColumns])    loans[numColumns]=imr.transform(loans[numColumns])

6.value.counts(dropna=False,normalize=True):查看某列中有多少不同值并计算每个不同值有多少重复值

7.按条件对变量中指定值重新赋值:

df['变量'][df['变量'] == '旧值']  = '新值'

df['变量名']=df['变量名'].replace(['就值1','就值2'],[新值1,新值2])

df.replace({:,:})

train.loc[train['delinq_2yrs']>0,'delinq_2yrs'] = '1+'

8.按条件筛选数据:

df=df[df['变量名']/!=/=数值]

df[~(df.a ==1)]

df.query(‘变量名>90’)

9.类别型变量描述统计:

df.describe(include='object')

#df.describe(include='all')

10.数值处理:

df['变量']=round(df['变量'],2) # 保留两位小数

df['变量']=round(df['变量']) # 保留整数位

11.格式转换:

df['变量']=df['变量'].astype('object')

df['变量']=df['变量'].astype('float64')

df.Fare=[int(x) for x in df.Fare]

12.查看因变量比例饼图:df.groupby('Y').size()

plt.axes(aspect='equal')

counts=df['Y'].value_counts()

plt.pie(x=counts,labels=pd.Series(counts.index),autopct='%.2f%%')

plt.show()

13.类别型变量柱状图绘制:

plt.rcParams['font.sans-serif']=['SimHei']  #用来正常显示中文标签

plt.rcParams['axes.unicode_minus']=False  #用来正常显示负号

plt.bar(np.arange(len(df['类别变量'].value_counts())),df['类别变量'].value_counts())

#plt.title()

#plt.xlabel()

#plt.ylabel()

plt.xticks(np.arange(len(df['类别变量'].value_counts())),df['类别变量'].value_counts().index)

for x,y in zip(np.arange(len(df['类别变量'].value_counts())),df['类别变量'].value_counts()):

    plt.text(x,y,y,ha='center',va='bottom')

14.变量关系图:

sns.heatmap(df.corr(),vmin=-1,vmax=1,cmap='Blue,annot=True)

15.箱线图:

df.boxplot()

16.数据保存本地:

df.to_csv('命名.csv',encoding="utf_8_sig")

17.设置列表:

vlist=pd.DataFrame([x1,x2,x3],index=['x1','x2','x3' ,columns=['IV'])

18.重置索引:

df=df.reset_index(drop=True,inplace=False)

19.读取了文件后,Pandas会把文件的一行作为列的索引标签,使用行数字作为行的索引标签:


数据.index.name = 'date'

数据.columns.name = 'code'

20.转换列名:

df.rename(columns=states,inplace=True)  #states 为需要改变的列名的字典

21.随机生成数据:

np.random.randn()

22.寻找每行最大值、索引,并添加到数据:

arr['max_value']=arr.max(axis=1)

arr['max_index']=np.argmax(array,axis=1)

23.数字格式化:

Python format 格式化函数 | 菜鸟教程

24.哑变量处理:

pd.get_dummies()

n_columns=["a" , "b"]                                  dummy_df=pd.get_dummies(loans[n_columns])# 用get_dummies进行one hot编码loans=pd.concat([loans , dummy_df],axis=1)

25.去除字符串:

df['变量'].str.strip("需要去除的字符串").astype(float) #通常用于处理字符串转数字

26.时间处理格式:

df.变量=pd.to_datetime(df.变量,format='%Y/%m/%d') # 原日期格式为:2018/09/10

df['max']=pd.datetime.today().year-df.earliest_cr_line.dt.year # 计算日期到今天的时间

df['year'], df['month'] = df['date'].dt.year, df['date'].dt.month #获取年、月

df['date'].apply(lambdax: x.year), df['date'].apply(lambdax: x.month)

27.相关系数:

stats.pearsonr(df.x1, df.y)

28.数据透视表:

pandas.pivot_table 函数中包含四个主要的变量,以及一些可选择使用的参数。四个主要的变量分别是数据源 data,行索引 index,列 columns,和数值 values。可选择使用的参数包括数值的汇总方式,NaN值的处理方式,以及是否显示汇总行数据等。

df.pivot_table(values='因变量',index='需分组的变量',aggfunc=np.mean)

df[['因变量','需分组变量']].groupby(['需分组变量'],as_index=False).mean()  #分组聚合

29.根据类型筛选变量:

df.select_dtypes(include=["object"]).columns

30.数据标准化:

scaler = StandardScaler()

X = scaler.fit_transform(X)

sc = StandardScaler()  # 初始化缩放器loans_ml_df[col]=sc.fit_transform(loans_ml_df[col])  #对数据进行标准化

31.排序:

serier: sort_index(axis=1,ascending=False)、.order()

dataframe:sort_index(by='')

sort_values(ascending=False)

32.拼接:

pd.merge(left,right,on['',''],how='outer)/pd.merge(df1,df2,how='inner')

33.替换缺失值:

df.replace(-1,np.nan)

34.找出具体缺失值:

df[df.isnull().values==True]

35.有序特征的映射:

mapping_dict={"emp_length":{"10+ years":10,"9 years":9,"8 years":8,"7 years":7,"6    years":6,"5years":5,"4years":4,"3 years":3,"2 years":2,"1 year":1,"< 1 year":0,"n/a":0}

loans=loans.replace(mapping_dict)#变量映射

36.标准化:

col=loans.select_dtypes(include=['int64','float64']).columns

len(col)out:78#78个特征

col=col.drop('loan_status')#剔除目标变量

loans_ml_df=loans# 复制数据至变量

fromsklearn.preprocessingimportStandardScaler# 导入模块

sc=StandardScaler()# 初始化缩放器

loans_ml_df[col]=sc.fit_transform(loans_ml_df[col])#对数据进行标准化

37groupby聚合:

groupby().agg([])

38.图像位置:

import matplotlib.gridspec as gridspec


39.enumerate() 函数

enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中


40.特征转换:

from sklearn.feature_extraction import DivtVectorizer


41.迭代:

zip()并行

chain()串行

42.最大值、最小值具体信息

df[df[''] == min/max()]

43.分类变量的每个值数量 至少不少于总数据的5%

44.按照区分层,每个区抽取400个样本

get_sample(df,sampling='stratified',k=400,stratified=[''])

45.更换数据:

def judgeLevel(df)

    if df['inq_last_6mths'] ==0:

        return 'C'

    else:

        return 'B'

df['inq_last_6mths'] = df.apply(lambda r: judgeLevel(r), axis=1)

df ['] = df[''].map(lambda x : 1 if x >1 else x)

46.异常值

可以分析中位数和众数的关系,如果两者的值差别很大,则说明众数偏离群体较远,那么这个众数有可能是错误值。

abs(x[].mode().iloc[0,]-x[].median())/(x[].quantile(0.75)-x[].quantile(0.25)))

47.创建列

df.assign(new1,new2)

48.缺失值呀变量处理

df.a.isnull().apply(int)

49. from sklearn.preprocessing import Binarizer

  #二值化,阈值设置为3,返回值为二值化后的数据

  Binarizer(threshold=3).fit_transform(iris.data)

50.根据相关性筛选变量

threshold=0.9# Absolute value correlation

matrixcorr_matrix=train.corr().abs()

upper=corr_matrix.where(np.triu(np.ones(corr_matrix.shape),k=1).astype(np.bool))

to_drop=[columnforcolumninupper.columnsifany(upper[column]>threshold)]

51.import pandas_profiling

pandas_profiling.ProfileReport(df)

52.异常值

df.quanile([0.01]),df.quanile([0.99])

53.树模型,不需要做归一化,逻辑回归做归一化 可以提高精度。运算速度

54.特征衍生

from sklearn.preprocessing import PolynomialFeature

55、做模型用等频分箱 qcut

56.import functools

def mul (x1,x2):

    return x1*x2

functools.reduce(mul,2)  #reduce函数可以使各元素按顺序进行计算,每次计算结果也会参与到下次计算中

57.变量快速交换

a = 1  b =2  b,a = a,b

58.zip(a,b) 多个列表同时遍历,返回元组

59.字典合并

d1.update(d2)

60.字符串分离

df[].str.split(“”).tolist()

61.字符串的模糊筛选

.str.contains()

df.loc[df['区域'].str.contains('华东')]

df.loc[df['区域'].str.contains('华|东')]  #注意,这个‘|’是在引号内的,而不是将两个字符串分别引起来。’&‘在这里不能用。

62.同值化处理

df2.loc[df2[col].isin(small_value),col]='other'

63.df.reset_index(level=0, inplace=True)  #groupby后设置成dataframe形式

64.dict(zip(df[''],df[''])) #转换成字典形式

65.随机抽样

DataFrame.sample(n=None, frac=None, replace=False, weights=None, random_state=None, axis=None)

去掉df中已经采样过的样本  df2=df[~df.index.isin(df1.index)]

你可能感兴趣的:(python数据处理随记)