日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

pandas使用笔记大全

發布時間:2024/1/23 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pandas使用笔记大全 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
DataFrame使用筆記
dates=pd.date_range('20160728',periods=6) #創建固定頻度的時間序列 df=pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('ABCD')) #創建6*4的隨機數,索引,列名稱。 df2=pd.DataFrame({'A':pd.Timestamp('20160728'),'B':pd.Series(1)})#字典創建Dataframe,假如字典的數據長度不同,以最長的數據為準。 df2.dtypes #查看各行的數據格式 df2.head() df2.tail(5) #查看前、后幾列 df.columns df.value #查看列名、value df.describe() #查看描述性的統計,比如每一列的count、mean、std... df.T df.sort(columns='C') #轉秩、排序 df['A'] df[1:3]#選擇A列數據,選擇1-2行數據,切片操作得到的是行數據。 df.loc[:,['A','B']] #選擇多列數據 df.loc['20160728':'20160730',['A','B']] #選擇局部區域 df.at[dates[0],'A'] #選擇某個值 df.iloc[3] df.iloc[1,1]#提取第四行數據,取第2行第2列的這個數 df.iloc[3:5,0:2] #像array一樣切片操作 df.iloc[[1,2,4],[0,2]] #提取不連續的行和列 df.iat[1,1]#專門取某個數,效率比較高 df[(df.D>0)&(df.C<0)] #選擇D列數據大于0的行 df[['A','B']][(df.D>0)&(df.C<0)]#選擇D列數據大于0的行,只返回A,B兩列 df['D'].isin(alist)#alist是一個預先定義的列表,把要篩選的值寫到列表中,查找D數據中含有alist的值 os.getcwd()#獲得當前的工作目錄 df=pd.read_csv('',encoding='gbk',sep=',')#讀取csv文件 counts=df[u'專業名稱'].value_counts() #計數統計 plt=counts.plot(kind='bar').get_figure() plt.savefig('d/plot.png') #畫圖 good=df[df[u'高考分數']>520] #篩選 good_counts=good[u'專業名稱'].value_counts() per=good_counts/counts #計算百分比,直接利用矩陣的除法 df.groupby('A').first() #按A列分組,輸出每一組的第一行數據 df.groupby(['A','B']) #按兩列分組 #創建函數,作為分組標準。 下例:如果列名是abem中的之一,就分為組別v反之為w def get_type(letter):if letter.lower() in 'abem':return 'v'else:return 'w' grouped=df.groupby(get_type,axis=1)import pandas.util.testing as tm colors=tm.choice(['red','green'],size=10) foods=tm.choice(['eggs','ham'],size=10) #隨機創建兩個數組 index=pd.MultiIndex.from.arrays([colors,foods],names=['color','food']) #創建MultiIndex對象,然后創建DataFrame對象 df.pd.DataFrame(np.random.randn(10,2),index=index) print df.query('color=="red"') #查詢 grouped=df.groupby(level='food')#在分組中使用索引 df.index.names=[None,None] print df.query('ilevel_0=="red"')#刪除了索引名稱,只能使用ilevel_0表示第一個索引
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
grouped=df.groupby(level=1) grouped.aggregate(np.sum) #計算各組的總和 print grouped.aggregate(np.sum).reset_index()#將索引轉化為列向量 df.groupby(level=['color'],as_index=False).sum()#能達到一樣的效果 print grouped.size()#返回每個組的數據量 print grouped.discribe()#返回各組數據的描述性信息 #transformation標準化數據 import pandas as pd import numpy as np index=pd.date_range('20140101',periods=100) ts=pd.Series(np.random.normal(0.5,2,100),index) print ts.head() key=lambda x:x.month zscore=lambda x:(x-x.mean())/x.std() transformed=ts.groupby(key).transform(zscore) print type(transformed) print transformed.groupby(key).mean() print transformed.groupby(key).std()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
#使用agg grouped=df.groupby(level='color').agg(['SUM':np.sum,'MEAN':np.mean,'STD':np.std]) #通過lambda匿名函數來進行特殊計算 print grouped['a'].agg({'lambda':lambda x:np.mean(abs(x))})
  • 1
  • 2
  • 3
  • 4
#按月分組 key =lambda x:x.month grouped=ts.groupby(key).agg({'SUM':np.sum,'MEAN':np.mean,'STD':np.std}) print grouped #索引不是日期 df.groupby(df['date'].apply(lambda x:x.month)).first() df.set_index('date')#或者將date設置為索引 #如果日期是字符串形式存儲的 date_string =('2010-09-01','2020-01-01') a=pd.Series([pd.to_datetime(date) for date in date_string])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
#增加列 df['c']=pd.Series(np.random.randn(10),index=df.index) df.insert(1,'e',df['a'])#在a列后面插入e列 del df['c'] #刪除列c df2=df.drop(['a','b'],axis=1)#df數據不變,刪除后的數據放入df2中 b=df.pop('b') df.insert(0,'b',b)#移動,pop移除之后再插入
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
#字符串操作 s=pd.Series(list('ABCDEF') s.str.lower() s.str.upper()#大小寫 s.str.len() s.str.split('_').str.get(1) #獲取切割后的某個元素 s.str.replace('^a|b$','X',case=False)#替換,第一個參數是正則表達式,第二個是要替換的字符串 s=pd.Series(['a1','a2','b1','b2',c]) s.str.extract('([ab])(\d)?') #使用extract方法提取數字:第一個參數是正則表達式,括號表示要提取的部分,結果是a 1,a 2,b 1,b 2,NaN NaN,無法匹配的 s.str.extract('(?P<letter>[abc])(?P<digit>\d)') #輸出的結果包含變量名pattern=r'[a-z][0-9]' print s.str.contains(pattern,na=False)#匹配字符串,na參數用來說明出現NaN數據時匹配成True還是False s.str.match(pattern,as_index=False)#嚴格匹配字符串 s.str.endswith('l',na=False) #等效于contains('l$',na=False) s.str.startwith('l',na=False)#等效于contains('^l',na=False)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

#讀寫數據庫 import MySQLdb con=MySQLdb.connect(host="localhost",db="") sql="SELECT * FROM..." df=pd.read_sql(sql,con,index_col='id') con2=execute('DROP TABLE IF EXISTS wheather') pd.io.sql.write_frame(df,"wheather",con2)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
#缺失值數據處理 df=pd.DataFrame(np.random.randn(5,3),index=list('abcde'),columns=['one','two','three']) df.ix[1,:-1]=np.nan #在簡單的運算中,遇到缺失值,運算結果也是缺失值,在描述性統計中,Nan都是作為0進行運算 #df.loc[:,['one','three']] df.fillna(0) #用0填充缺失值 df.fillna('missing') 用字符串代替缺失值 df.fillna(method='pad')#用前一個數據代替NaN df.fillna(method='bfill',limit=1)#用后一個數據替代NaN,限制每列只能替代一個NaN df.fillna(df.mean()['one':'two'])#用平均數代替,選擇one,two兩列進行缺失值處理 df.dropna(axis=0) #刪除含有NaN的行,axis=1 刪除列 df.interpolate() #使用插值來估計NaN 如果index是數字,可以設置參數method='value' ,如果是時間,可以設置method='time' df.replace({1:11,2:12})

總結

以上是生活随笔為你收集整理的pandas使用笔记大全的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。