Python-for-data-重新采樣和頻率轉(zhuǎn)換

創(chuàng)新互聯(lián)長期為近1000家客戶提供的網(wǎng)站建設服務,團隊從業(yè)經(jīng)驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為鄯善企業(yè)提供專業(yè)的成都做網(wǎng)站、成都網(wǎng)站設計、成都外貿(mào)網(wǎng)站建設,鄯善網(wǎng)站改版等技術服務。擁有10多年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
重新采樣指的是將時間序列從一個頻率轉(zhuǎn)換到另一個頻率的過程。
但是也并不是所有的采樣方式都是屬于上面的兩種
pandas中使用resample方法來實現(xiàn)頻率轉(zhuǎn)換,下面是resample方法的參數(shù)詳解:
將數(shù)據(jù)聚合到一個規(guī)則的低頻上,例如將時間轉(zhuǎn)換為每個月,"M"或者"BM",將數(shù)據(jù)分成一個月的時間間隔。
每個間隔是半閉合的,一個數(shù)據(jù)只能屬于一個時間間隔。時間間隔的并集必須是整個時間幀
默認情況下,左箱體邊界是包含的。00:00的值是00:00到00:05間隔內(nèi)的值
產(chǎn)生的時間序列按照每個箱體左邊的時間戳被標記。
傳遞span class="mark"label="right"/span可以使用右箱體邊界標記時間序列
向loffset參數(shù)傳遞字符串或者日期偏置
在金融數(shù)據(jù)中,為每個數(shù)據(jù)桶計算4個值是常見的問題:
通過span class="girk"ohlc聚合函數(shù)/span能夠得到四種聚合值列的DF數(shù)據(jù)
低頻轉(zhuǎn)到高頻的時候會形成缺失值
ffill() :使用前面的值填充, limit 限制填充的次數(shù)
#python中的pandas庫主要有DataFrame和Series類(面向?qū)ο蟮牡恼Z言更愿意叫類) DataFrame也就是
#數(shù)據(jù)框(主要是借鑒R里面的data.frame),Series也就是序列 ,pandas底層是c寫的 性能很棒,有大神
#做過測試 處理億級別的數(shù)據(jù)沒問題,起性能可以跟同等配置的sas媲美
#DataFrame索引 df.loc是標簽選取操作,df.iloc是位置切片操作
print(df[['row_names','Rape']])
df['行標簽']
df.loc[行標簽,列標簽]
print(df.loc[0:2,['Rape','Murder']])
df.iloc[行位置,列位置]
df.iloc[1,1]#選取第二行,第二列的值,返回的為單個值
df.iloc[0,2],:]#選取第一行及第三行的數(shù)據(jù)
df.iloc[0:2,:]#選取第一行到第三行(不包含)的數(shù)據(jù)
df.iloc[:,1]#選取所有記錄的第一列的值,返回的為一個Series
df.iloc[1,:]#選取第一行數(shù)據(jù),返回的為一個Series
print(df.ix[1,1]) # 更廣義的切片方式是使用.ix,它自動根據(jù)你給到的索引類型判斷是使用位置還是標簽進行切片
print(df.ix[0:2])
#DataFrame根據(jù)條件選取子集 類似于sas里面if、where ,R里面的subset之類的函數(shù)
df[df.Murder13]
df[(df.Murder10)(df.Rape30)]
df[df.sex==u'男']
#重命名 相當于sas里面的rename R軟件中reshape包的中的rename
df.rename(columns={'A':'A_rename'})
df.rename(index={1:'other'})
#刪除列 相當于sas中的drop R軟件中的test['col']-null
df.drop(['a','b'],axis=1) or del df[['a','b']]
#排序 相當于sas里面的sort R軟件里面的df[order(x),]
df.sort(columns='C') #行排序 y軸上
df.sort(axis=1) #各個列之間位置排序 x軸上
#數(shù)據(jù)描述 相當于sas中proc menas R軟件里面的summary
df.describe()
#生成新的一列 跟R里面有點類似
df['new_columns']=df['columns']
df.insert(1,'new_columns',df['B']) #效率最高
df.join(Series(df['columns'],name='new_columns'))
#列上面的追加 相當于sas中的append R里面cbind()
df.append(df1,ignore_index=True)
pd.concat([df,df1],ignore_index=True)
#最經(jīng)典的join 跟sas和R里面的merge類似 跟sql里面的各種join對照
merge()
#刪除重行 跟sas里面nodukey R里面的which(!duplicated(df[])類似
df.drop_duplicated()
#獲取最大值 最小值的位置 有點類似矩陣里面的方法
df.idxmin(axis=0 ) df.idxmax(axis=1) 0和1有什么不同 自己摸索去
#讀取外部數(shù)據(jù)跟sas的proc import R里面的read.csv等類似
read_excel() read_csv() read_hdf5() 等
與之相反的是df.to_excel() df.to_ecv()
#缺失值處理 個人覺得pandas中缺失值處理比sas和R方便多了
df.fillna(9999) #用9999填充
#鏈接數(shù)據(jù)庫 不多說 pandas里面主要用 MySQLdb
import MySQLdb
conn=MySQLdb.connect(host="localhost",user="root",passwd="",db="mysql",use_unicode=True,charset="utf8")
read_sql() #很經(jīng)典
#寫數(shù)據(jù)進數(shù)據(jù)庫
df.to_sql('hbase_visit',con, flavor="mysql", if_exists='replace', index=False)
#groupby 跟sas里面的中的by R軟件中dplyr包中的group_by sql里面的group by功能是一樣的 這里不多說
#求啞變量
dumiper=pd.get_dummies(df['key'])
df['key'].join(dumpier)
#透視表 和交叉表 跟sas里面的proc freq步類似 R里面的aggrate和cast函數(shù)類似
pd.pivot_table()
pd.crosstab()
#聚合函數(shù)經(jīng)常跟group by一起組合用
df.groupby('sex').agg({'height':['mean','sum'],'weight':['count','min']})
#數(shù)據(jù)查詢過濾
test.query("0.2
將STK_ID中的值過濾出來
stk_list = ['600809','600141','600329']中的全部記錄過濾出來,命令是:rpt[rpt['STK_ID'].isin(stk_list)].
將dataframe中,某列進行清洗的命令
刪除換行符:misc['product_desc'] = misc['product_desc'].str.replace('\n', '')
刪除字符串前后空格:df["Make"] = df["Make"].map(str.strip)
如果用模糊匹配的話,命令是:
rpt[rpt['STK_ID'].str.contains(r'^600[0-9]{3}$')]
對dataframe中元素,進行類型轉(zhuǎn)換
df['2nd'] = df['2nd'].str.replace(',','').astype(int) df['CTR'] = df['CTR'].str.replace('%','').astype(np.float64)
#時間變換 主要依賴于datemie 和time兩個包
#其他的一些技巧
df2[df2['A'].map(lambda x:x.startswith('61'))] #篩選出以61開頭的數(shù)據(jù)
df2["Author"].str.replace(".+", "").head() #replace(".+", "")表示將字符串中以””開頭;以””結(jié)束的任意子串替換為空字符串
commits = df2["Name"].head(15)
print commits.unique(), len(commits.unique()) #獲的NAME的不同個數(shù),類似于sql里面count(distinct name)
#pandas中最核心 最經(jīng)典的函數(shù)apply map applymap
a參數(shù)就是weibull分布公式中的那個系數(shù),X = ln(U)^(1/a)
size是輸出的形狀,可以不填。在不填的情況下,輸出和輸入的維度一致,即np.array(a).size。例如:
如果a是一個標量,輸出也就是采樣一次。
如果a是一個list,則依次按照list中參數(shù)采樣。
該函數(shù)的文檔
本節(jié)對一些 Python 易混淆的操作進行對比。
1.1 有放回隨機采樣和無放回隨機采樣
1.2 lambda 函數(shù)的參數(shù)
1.3 copy 和 deepcopy
復制和變量別名結(jié)合在一起時,容易混淆:
對別名的修改會影響原變量,(淺)復制中的元素是原列表中元素的別名,而深層復制是遞歸地進行復制,對深層復制的修改不影響原變量。
1.4 == 和 is
1.5 判斷類型
1.6 字符串搜索
1.7 List 后向索引
這個只是習慣問題,前向索引時下標從0開始,如果反向索引也想從0開始可以使用~。
2.1 讀寫 CSV 文件
注意,當 CSV 文件過大時會報錯:_csv.Error: field larger than field limit (131072),通過修改上限解決
csv 還可以讀以 分割的數(shù)據(jù)
2.2 迭代器工具
itertools 重新定義了很多迭代器工具,例如子序列工具:
序列排序:
多個序列合并:
2.3 計數(shù)器
計數(shù)器可以統(tǒng)計一個可迭代對象中每個元素出現(xiàn)的次數(shù)。
2.4 帶默認值的 Dict
當訪問不存在的 Key 時,defaultdict 會將其設置為某個默認值。
2.5 有序 Dict
3.1 輸出錯誤和警告信息
向標準錯誤輸出信息
輸出警告信息
控制警告消息的輸出
3.2 代碼中測試
有時為了調(diào)試,我們想在代碼中加一些代碼,通常是一些 print 語句,可以寫為:
一旦調(diào)試結(jié)束,通過在命令行執(zhí)行 -O 選項,會忽略這部分代碼:
3.3 代碼風格檢查
使用 pylint 可以進行不少的代碼風格和語法檢查,能在運行之前發(fā)現(xiàn)一些錯誤
3.4 代碼耗時
耗時測試
測試某代碼塊耗時
代碼耗時優(yōu)化的一些原則
4.1 argmin 和 argmax
argmax同理。
4.2 轉(zhuǎn)置二維列表
4.3 一維列表展開為二維列表
本文標題:python中的采樣函數(shù) python 采樣
鏈接URL:http://www.jbt999.com/article31/hppgsd.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供App設計、定制網(wǎng)站、服務器托管、網(wǎng)站建設、云服務器、網(wǎng)站設計公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)