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.数字格式化:
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)]