python數(shù)據(jù)處理隨記

1.刪除變量:

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

2.刪除所有缺失值:

df.dropna(how='any',inplace=True)? #‘a(chǎn)ny’有一個維度缺失就都刪除

3.刪除指定變量的缺失值:

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

3.1根據(jù)閾值刪除缺失值:

thresh_count=len(data)*0.4# 設(shè)定閥值

data=data.dropna(thresh=thresh_count,axis=1)#若某一列數(shù)據(jù)缺失的數(shù)量超過閥值就會被刪除

4.刪除指定變量的重復(fù)值:

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

5.缺失值填充:

df.fillna(''值) #統(tǒng)一填充

df.fillna(value={'類別變量:df['類別變量'].mode()[0],'連續(xù)變量':指定值,'連續(xù)變量2':df['連續(xù)變量2'].mean()/median,inplace=True)

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

5.1數(shù)值型變量缺失值處理

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):查看某列中有多少不同值并計算每個不同值有多少重復(fù)值

7.按條件對變量中指定值重新賦值:

df['變量'][df['變量'] == '舊值']? = '新值'

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

df.replace({:,:})

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

8.按條件篩選數(shù)據(jù):

df=df[df['變量名']</>/!=/=數(shù)值]

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

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

9.類別型變量描述統(tǒng)計:

df.describe(include='object')

#df.describe(include='all')

10.數(shù)值處理:

df['變量']=round(df['變量'],2) # 保留兩位小數(shù)

df['變量']=round(df['變量']) # 保留整數(shù)位

11.格式轉(zhuǎn)換:

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']? #用來正常顯示中文標(biāo)簽

plt.rcParams['axes.unicode_minus']=False? #用來正常顯示負(fù)號

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.變量關(guān)系圖:

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

15.箱線圖:

df.boxplot()

16.數(shù)據(jù)保存本地:

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

17.設(shè)置列表:

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

18.重置索引:

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

19.讀取了文件后,Pandas會把文件的一行作為列的索引標(biāo)簽,使用行數(shù)字作為行的索引標(biāo)簽:


數(shù)據(jù).index.name = 'date'

數(shù)據(jù).columns.name = 'code'

20.轉(zhuǎn)換列名:

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

21.隨機(jī)生成數(shù)據(jù):

np.random.randn()

22.尋找每行最大值、索引,并添加到數(shù)據(jù):

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

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

23.數(shù)字格式化:

Python format 格式化函數(shù) | 菜鳥教程

24.啞變量處理:

pd.get_dummies()

n_columns=["a" , "b"]? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dummy_df=pd.get_dummies(loans[n_columns])# 用get_dummies進(jìn)行one hot編碼loans=pd.concat([loans , dummy_df],axis=1)

25.去除字符串:

df['變量'].str.strip("需要去除的字符串").astype(float) #通常用于處理字符串轉(zhuǎn)數(shù)字

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.相關(guān)系數(shù):

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

28.數(shù)據(jù)透視表:

pandas.pivot_table 函數(shù)中包含四個主要的變量,以及一些可選擇使用的參數(shù)筑煮。四個主要的變量分別是數(shù)據(jù)源 data冶匹,行索引 index,列 columns咆瘟,和數(shù)值 values嚼隘。可選擇使用的參數(shù)包括數(shù)值的匯總方式袒餐,NaN值的處理方式飞蛹,以及是否顯示匯總行數(shù)據(jù)等。

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

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

29.根據(jù)類型篩選變量:

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

30.數(shù)據(jù)標(biāo)準(zhǔn)化:

scaler = StandardScaler()

X = scaler.fit_transform(X)

sc = StandardScaler()? # 初始化縮放器loans_ml_df[col]=sc.fit_transform(loans_ml_df[col])? #對數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化

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.標(biāo)準(zhǔn)化:

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

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

col=col.drop('loan_status')#剔除目標(biāo)變量

loans_ml_df=loans# 復(fù)制數(shù)據(jù)至變量

fromsklearn.preprocessingimportStandardScaler# 導(dǎo)入模塊

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

loans_ml_df[col]=sc.fit_transform(loans_ml_df[col])#對數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化

37groupby聚合:

groupby().agg([])

38.圖像位置:

import matplotlib.gridspec as gridspec


39.enumerate() 函數(shù)

enumerate() 函數(shù)用于將一個可遍歷的數(shù)據(jù)對象(如列表卧檐、元組或字符串)組合為一個索引序列,同時列出數(shù)據(jù)和數(shù)據(jù)下標(biāo)焰宣,一般用在 for 循環(huán)當(dāng)中


40.特征轉(zhuǎn)換:

from sklearn.feature_extraction import DivtVectorizer


41.迭代:

zip()并行

chain()串行

42.最大值霉囚、最小值具體信息

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

43.分類變量的每個值數(shù)量 至少不少于總數(shù)據(jù)的5%

44.按照區(qū)分層,每個區(qū)抽取400個樣本

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

45.更換數(shù)據(jù):

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.異常值

可以分析中位數(shù)和眾數(shù)的關(guān)系匕积,如果兩者的值差別很大盈罐,則說明眾數(shù)偏離群體較遠(yuǎn),那么這個眾數(shù)有可能是錯誤值闪唆。

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

47.創(chuàng)建列

df.assign(new1盅粪,new2)

48.缺失值呀變量處理

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

49. from sklearn.preprocessing import Binarizer

? #二值化,閾值設(shè)置為3悄蕾,返回值為二值化后的數(shù)據(jù)

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

50.根據(jù)相關(guān)性篩選變量

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函數(shù)可以使各元素按順序進(jìn)行計算豆同,每次計算結(jié)果也會參與到下次計算中

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['區(qū)域'].str.contains('華東')]

df.loc[df['區(qū)域'].str.contains('華|東')]? #注意,這個‘|’是在引號內(nèi)的含鳞,而不是將兩個字符串分別引起來影锈。’&‘在這里不能用民晒。

62.同值化處理

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

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

64.dict(zip(df[''],df[''])) #轉(zhuǎn)換成字典形式

65.隨機(jī)抽樣

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

去掉df中已經(jīng)采樣過的樣本? df2=df[~df.index.isin(df1.index)]

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末精居,一起剝皮案震驚了整個濱河市锄禽,隨后出現(xiàn)的幾起案子潜必,更是在濱河造成了極大的恐慌,老刑警劉巖沃但,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件磁滚,死亡現(xiàn)場離奇詭異,居然都是意外死亡宵晚,警方通過查閱死者的電腦和手機(jī)垂攘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來淤刃,“玉大人晒他,你說我怎么就攤上這事∫菁郑” “怎么了陨仅?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長铝侵。 經(jīng)常有香客問我灼伤,道長,這世上最難降的妖魔是什么咪鲜? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任狐赡,我火速辦了婚禮,結(jié)果婚禮上疟丙,老公的妹妹穿的比我還像新娘颖侄。我一直安慰自己,他們只是感情好享郊,可當(dāng)我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布发皿。 她就那樣靜靜地躺著,像睡著了一般拂蝎。 火紅的嫁衣襯著肌膚如雪穴墅。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天,我揣著相機(jī)與錄音玄货,去河邊找鬼皇钞。 笑死,一個胖子當(dāng)著我的面吹牛松捉,可吹牛的內(nèi)容都是我干的夹界。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼隘世,長吁一口氣:“原來是場噩夢啊……” “哼可柿!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起丙者,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤复斥,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后械媒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體目锭,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年纷捞,在試婚紗的時候發(fā)現(xiàn)自己被綠了痢虹。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡主儡,死狀恐怖奖唯,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情糜值,我是刑警寧澤丰捷,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站臀玄,受9級特大地震影響瓢阴,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜健无,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一荣恐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧累贤,春花似錦叠穆、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至渗磅,卻和暖如春嚷硫,著一層夾襖步出監(jiān)牢的瞬間检访,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工仔掸, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留脆贵,地道東北人。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓起暮,卻偏偏與公主長得像卖氨,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子负懦,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容