Pandas經常使用用法

pandas經常使用用法

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


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:code

A           float64
B    datetime64[ns]
C           float32
D             int32
E          category
F            object
dtype: object

df.index

把表格的行號列出,包括行號的格式。索引

df.columns

把表格的列號列出,包括列號的格式。get

df.describe()

把每一列的均值,個數,方差,最大最小值列出。很是方便的函數。pandas

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()  

能夠給出表格的許多信息,看下面的結果:table

<class 'pandas.core.frame.DataFrame'>
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[[' ',' ',...]]

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

dfdf.A>50]

很差說直接上代碼:object

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

便是以某一列的值爲條件進行篩選。date

多個條件進行篩選。

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'])]
相關文章
相關標籤/搜索