天天看點

pandas中drop用法_Pandas常用用法

pandas常用用法

詳細内容請進入 pandas官網 查閱文獻。

1. pd.read_csv()

常用parameters:

header : 一般預設為零。表示讀進來的表格以第一行作為列名。其他值也是類似的。

index_col : 表示以什麼作為行号。pandas在引入清單的時候預設會以0,1,2,3,4....作為行号。可以指定清單中的某一列作為行号。

usecols : 指定讀進來的列是什麼,以清單的形式給出,可以是列号,也可以是[0,1,2]這樣的表示讀進來0,1,2列。

names : 以清單形式給出,表示列号隻顯示出給定名稱的列号,其他的隐藏。即你可以指定任一列的列号,可以是你自創的,也可以是清單裡本來就有的。

squeeze : 表示如果傳進來的表格隻有一列,那麼把它壓縮成Serias的形式。預設值是False。

dtype : 指定列的資料形式。eg: dtype={'PassengerId':np.float64}

感覺比較常用的參數一般就這幾個,其他的如果需要可以在官網上查找解釋。

2. 常用表格資訊描述函數

df.dtypes

可以把表格每一列資料的格式描述出來,eg:

A float64

B datetime64[ns]

C float32

D int32

E category

F object

dtype: object

df.index

把表格的行号列出,包括行号的格式。

df.columns

把表格的列号列出,包括列号的格式。

df.describe()

把每一列的均值,個數,方差,最大最小值列出。非常友善的函數。

A C D

count 4.0 4.0 4.0

mean 1.0 1.0 3.0

std 0.0 0.0 0.0

min 1.0 1.0 3.0

25% 1.0 1.0 3.0

50% 1.0 1.0 3.0

75% 1.0 1.0 3.0

max 1.0 1.0 3.0

df.info()

可以給出表格的許多資訊,看下面的結果:

RangeIndex: 891 entries, 0 to 890

Data columns (total 12 columns):

PassengerId 891 non-null int64

Survived 891 non-null int64

Pclass 891 non-null int64

Name 891 non-null object

Sex 891 non-null object

Age 714 non-null float64

SibSp 891 non-null int64

Parch 891 non-null int64

Ticket 891 non-null object

Fare 891 non-null float64

Cabin 204 non-null object

Embarked 889 non-null object

dtypes: float64(2), int64(5), object(5)

memory usage: 83.6+ KB

3. 常用的datafram處理操作。

df[[' ',' ',...]]

''中間的為列的名字,直接列出選中的列

dfdf.A>50]

不好說直接上代碼:

df[df['Age']>60][['Sex','Pclass','Age','Survived']]

>>>

Sex Pclass Age Survived

33 male 2 66.0 0

54 male 1 65.0 0

96 male 1 71.0 0

116 male 3 70.5 0

170 male 1 61.0 0

252 male 1 62.0 0

275 female 1 63.0 1

280 male 3 65.0 0

326 male 3 61.0 0

438 male 1 64.0 0

456 male 1 65.0 0

483 female 3 63.0 1

493 male 1 71.0 0

545 male 1 64.0 0

555 male 1 62.0 0

570 male 2 62.0 1

625 male 1 61.0 0

630 male 1 80.0 1

672 male 2 70.0 0

745 male 1 70.0 0

829 female 1 62.0 1

851 male 3 74.0 0

即是以某一列的值為條件進行篩選。

多個條件進行篩選。

for i in range(4):

print(i,len(df[ (df['Sex']=='male') & (df['Pclass']==i)]))

>>>

0 0

1 122

2 108

3 347

&符号表示與,條件有兩個,len()表示長度。

df.dropna() :

把表格中有nan或者na的行去掉。

pramaters:axis=0,how='any'

還有其他參數但是并不常用。'any'表示隻要行或者列出現了nan則把該行或者該列去掉。如果為'all'表示必須全是nan才去掉。

df.fillna(value) :

表示給nan值填充值。value=0表示給nan填充0值

df.isnull() :

傳回一個清單如果有值為nan傳回True,否則傳回False.

A B C D E

2013-01-01 False False False False False

2013-01-02 False False False True False

2013-01-03 False False False False True

2013-01-04 False False False False False

2013-01-05 False False False False False

2013-01-06 False False False False False

## 可以通過選擇某一列為Nan的情況下對其他資料進行檢視

df[df.Age.isnull()].head(5)['Name']

>>>

5 Moran, Mr. James

17 Williams, Mr. Charles Eugene

19 Masselmani, Mrs. Fatima

26 Emir, Mr. Farred Chehab

28 O'Dwyer, Miss. Ellen "Nellie"

Name: Name, dtype: object

df.T :

轉置,即清單的行與列互換。

df.loc[] :

表示按照标簽來選擇資料。

a.loc['one']則會預設表示選取行為'one'的行

a.loc[:,['a','b']表示選取所有的行以及columns為a,b的列;

a.loc[['one','two'],['a','b']]表示選取'one'和'two'這兩行以及columns為a,b的列;

a.loc['one','a']與a.loc[['one'],['a']]作用是一樣的,不過前者隻顯示對應的值,而後者會顯示對應的行和列标簽。

df.iloc[] :

表示按照位置進行選擇。

a.iloc[[0,2],[1,2]]

表示選取0行1列和2行2列的資料。

df.values :

把一個dataframe類型轉化為numpy的array形式。很簡單

df.replace() :

簡單粗暴,把清單裡的某一個值替換為另一個值。

df.replace('male',0).head(3)['Sex']

>>>

0 0

1 female

2 female

Name: Sex, dtype: object

該函數還有一些其他參數:regrex,method等,詳細可查閱官網,這裡給出一些常用用法。

#選擇某一列對不同的值進行不同的替換,采用字典嵌套的形式。

encode_setting = {'Embarked':{'S':1, 'C': 2, 'Q': 3, 'Unknown':0}}

df.replace(encode_setting).head(3)[['Embarked']]

>>>

Embarked

0 1.0

1 2.0

2 1.0

#對多個值進行替換

df.replace({'male':1,'female':0}).head(3)[['Sex']]

>>>

Sex

0 1

1 0

2 0

df.drop(axis,labels) :

表示扔掉某一行或者一列,axis指定行或者列,labels指定标簽。labels可以用清單的方式來給定多個行或者列

value_counts() :

可以計算出每個取值在清單中出現的次數

df.groupby :

可以按照你所指定的列對其不同的值進行分組,很強大的功能,這裡給出代碼更好了解。

df.groupby(['Survived','Pclass']).sum()

## 按照Survived和Pclassd的取值,對其他的項進行相應的求和操作,不是數值型的不計數

df.groupby(['Survived','Pclass']).size()

## size表示按照Survived和Pclass的取值,進行分别計數。除了size(),還有mean(),max(),min(),std()等

>>>

Survived Pclass

0 1 80

2 97

3 372

1 1 136

2 87

3 119

dtype: int64

df.groupby(['Survived','Pclass']).size()[0][1]

## 這裡傳回的是一個類似矩陣的存在。[0]表示Survived=0,[1]表示Pclass=1,這裡前後順序和你給出列的順序有關。

>>>

80

##如果給定的列不止一個,會有多重索引(Multiindex),這裡可以這樣操作來選取對應的值。

a=df.groupby(['Survived','Sex',]).std()

a.index

>>>

ultiIndex(levels=[[0, 1], ['female', 'male']],

labels=[[0, 0, 1, 1], [0, 1, 0, 1]],

names=['Survived', 'Sex'])

## 我們可以根據levels進行選取

a.xs([0,'female'],level=['Survived','Sex'])

>>>

PassengerId Pclass Age SibSp Parch Fare

Survived Sex

0 female 263.522063 0.450309 13.618591 1.814635 1.391442 24.821287

## 接下來就可以根據需求選擇列得到數值,同時可以加上.values來将其變為np.array的形式。這裡的索引有倆個即Survived和Sex,行名就是levels,是以也可以用loc選擇行和列進行選取

df.isin() :

選出給定列中某些值的特定行

df[df['Sex'].isin(['male'])]