pandas學習記錄

2021-08-08 10:24:11 字數 3095 閱讀 9770

1.模組匯入

import pandas as pd

2.pandas序列series自動給列表加上索引

如 a = [1,2,3,4]

b = pd.series(a)

c = enumerate(a)

print b  

類似於  

for i,j in c:

print i,j

3.numpy 只是純碎的生成矩陣陣列, 而 pandas 可以給numpy 生成的多維陣列的 各行 各列加上乙個名稱

4.產生乙個時間序列: 

date= pd.date_range('20170101',periods = 7)

4.1給乙個二位數則每行每列定義乙個名稱

df= pd.dataframe(np.random.randn(7,4),index=date,columns=['a','b','c','d']

dataframe就是給二維陣列的每行每列加乙個標籤

注意:a = np.array([1,2,3,4]) 用於dataframe則表示4行1列

a = np.array([[1,2,3,4]])用於dataframe則表示1行4列

5.如果使用字典dict來初始化dataframe,則字典的key會成為二維陣列的列索引,行索引則自動生成

6.獲取df行索引 df.index

6.獲取df列索引 df.columns

6.獲取df值         df.values, 得到numpy形式的陣列

7.df.describe()會計算df各列的均值和標準差,

應用舉例:

df = pd.dataframe(np.random.randn(3,4))

d1 = df.describe()

d2 = d1.values

d3 = d2.t

d4= d3[0]   即可以得到第一列的均值,標準差

8.對df進行排序

df.sort_index(axis=0,ascending=false)  行索引降序排列

df.sort_index(axis=1,ascending=false)  列索引降序排列

9.對df進行選擇輸出

輸出某列 : 『a』列      df.a 或 df['a']  

輸出多列:   df.loc[:,['a','b']] 

輸出某行:  df[0:3]  輸出0到3行    , 以標籤輸出 df.loc['20170101']

輸出某行某列: 以標籤輸出 df.loc['20170101',['a','b']]

輸出某個元素: 

,純數字篩選

df.iloc[3,1] 3行1列  

df.iloc[1:2,1:2] 1到2行,1到2列 

df.iloc[[1,3],1:2] 1行,3行,1列到2列 

標籤篩選:

df.ix[:2,['a','b']]   ,數字加標籤篩選

df[df.a>2],選出a列中大於2的行,同時顯示所有列                 

10 .給dataframe賦值:

更改某乙個元素:

df.iloc[2,1]=12    第二行第一列賦值12

df.loc['20170101','a'] =12 , 以標籤更改

更改某一列元素:

df.a = 0  第『a』列全部為0

df.a.[df.a >2]=0  第『a』列大於2的元素全為0

df.b.[df.a >2]=0  第『a』列大於2的元素對應的b列的元素全為0 ,a列不變,b列改變

更改某一列元素,影響其它列:

df[df.a >2] = 0,第『a』列大於2的元素全為0,其它對應的列也受到影響全部為0 

11,給dataframe新增行列:

df原有a,b,c,d列   , 0到7行

增加1列: df['e'] = np.nan

增加1列: df['e'] = [1,2,3,4,5,6,7]

增加1列:df['e'] = pd.series([1,2,3,4,5,6,7],index=pd.date_range('20170101',periods=6))  

增加一行:

df1 = pd.dataframe(np.ones(3,4),columns=['a','b','c','d'])

或 df1 = pd.series([1,2,3,4],index=['a','b','c','d'])

12.去掉df中元素為nan的行列

如果df中有元素為空即nan

df.dropna(axis = 0,how='any') 丟掉元素為空的行

df.dropna(axis = 1,how='any') 丟掉元素為空的列

13. 處理df中元素為空

將df中元素為nan統一賦個值:

df.fillna(value=0) 將為nan的元素賦值為0

判斷df是否缺失資料,即存在nan , 使用: df.isnull()檢視

使用  np.any(df.isnull())==true 判斷df中是否有nan

14.多個dataframe合併

numpy 中的多維陣列的合併使用:concatenate,hstack,vstack

dataframe使用cancat

例如: df1, df2的行列都是3行4列,其行標誌和列標誌都相同。

則合併df1 ,df2 使用 pd.concat([df1,df2],axis=0,ignore_index=true)  縱向合併

例如:合併df1, df2 相同的列,不同的列捨棄,則使用 pd.concat([df1,df2],join='inner',ignore_index=true)

例如:合併df1 ,df2 使用 pd.concat([df1,df2],axis=1,join_axes=[df1.index])  水平合併,並使用df1的index

例如:df1,和 df2 有一列完全一樣,如df1 是 『a』,'b','c','d',df2是『d』,'e','f','g'。 則以『d』列作為參考合併兩個dataframe,得到'a','b','c','d','e','f','g'。使用:pd.merge(df1,df2,on='d')

pandas庫學習記錄

在接觸了一點python的資料分析後,發現有乙個眾人很推崇的pandas庫。據說,與numpy結合能夠實現許多強大的使資料分析功能。但其實在接觸一段時間之後,我發現,還是很難掌握這個庫的精髓。為了避免長時間遺忘,我把這一系列實踐記錄下來。引用 import pandas 一般都寫作 import p...

pandas庫學習記錄 一)

pandas庫是乙個基於numpy庫的乙個開源python庫,用於快速分析,清洗和準備資料。pandas中的主要兩種資料型別 序列series 類似於一維陣列,可以用numpy中針對一維陣列的函式,也可以用標籤來進行索引,可自動對齊 資料框dataframe 多用於二維陣列,也可以用numpy中二維...

機器學習學習記錄 持續更新 pandas

pandas訪問資料的方法 pandas操控資料的方法 pandas 是一種列存資料分析 api。它是用於處理和分析輸入資料的強大工具,很多機器學習框架都支援將 pandas 資料結構作為輸入。可以將它想象成乙個關係型資料 其中包含多個行和已命名的列。建立dataframe的方法可以是將對映 str...