導航:首頁 > 編程語言 > python抽樣

python抽樣

發布時間:2022-01-25 03:36:32

1. python 和 r 的區別 知乎

有人說Python和R的區別是顯而易見的,因為R是針對統計的,python是給程序員設計的,其實這話對Python多多少少有些不公平。2012年的時候我們說R是學術界的主流,但是現在Python正在慢慢取代R在學術界的地位。不知道是不是因為大數據時代的到來。

Python與R相比速度要快。Python可以直接處理上G的數據;R不行,R分析數據時需要先通過資料庫把大數據轉化為小數據(通過groupby)才能交給R做分析,因此R不可能直接分析行為詳單,只能分析統計結果。所以有人說:Python=R+SQL/Hive,並不是沒有道理的。

Python的一個最明顯的優勢在於其膠水語言的特性,很多書里也都會提到這一點,一些底層用C寫的演算法封裝在Python包里後性能非常高效(Python的數據挖掘包Orange canve 中的決策樹分析50萬用戶10秒出結果,用R幾個小時也出不來,8G內存全部占滿)。但是,凡事都不絕對,如果R矢量化編程做得好的話(有點小難度),會使R的速度和程序的長度都有顯著性提升。

R的優勢在於有包羅萬象的統計函數可以調用,特別是在時間序列分析方面,無論是經典還是前沿的方法都有相應的包直接使用。
相比之下,Python之前在這方面貧乏不少。但是,現在Python有了pandas。pandas提供了一組標準的時間序列處理工具和數據演算法。因此,你可以高效處理非常大的時間序列,輕松地進行切片/切塊、聚合、對定期/不定期的時間序列進行重采樣等。可能你已經猜到了,這些工具中大部分都對金融和經濟數據尤為有用,但你當然也可以用它們來分析伺服器日誌數據。於是,近年來,由於Python有不斷改良的庫(主要是pandas),使其成為數據處理任務的一大替代方案。

做過幾個實驗:
1. 用python實現了一個統計方法,其中用到了ctypes,multiprocess。
之後一個項目要做方法比較,又用回R,發現一些bioconctor上的包已經默認用parallel了。(但那個包還是很慢,一下子把所有線程都用掉了,導致整個電腦使用不能,看網頁非常卡~)
2. 用python pandas做了一些數據整理工作,類似資料庫,兩三個表來回查、匹配。感覺還是很方便的。雖然這些工作R也能做,但估計會慢點,畢竟幾十萬行的條目了。
3. 用python matplotlib畫圖。pyplot作圖的方式和R差異很大,R是一條命令畫點東西,pylot是准備好了以後一起出來。pyplot的顏色選擇有點尷尬,默認顏色比較少,之後可用html的顏色,但是名字太長了~。pyplot 的legend比R 好用多了,算是半自動化了。pyplot畫出來後可以自由拉升縮放,然後再保存為圖片,這點比R好用。

總的來說Python是一套比較平衡的語言,各方面都可以,無論是對其他語言的調用,和數據源的連接、讀取,對系統的操作,還是正則表達和文字處理,Python都有著明顯優勢。 而R是在統計方面比較突出。但是數據分析其實不僅僅是統計,前期的數據收集,數據處理,數據抽樣,數據聚類,以及比較復雜的數據挖掘演算法,數據建模等等這些任務,只要是100M以上的數據,R都很難勝任,但是Python卻基本勝任。

結合其在通用編程方面的強大實力,我們完全可以只使用Python這一種語言去構建以數據為中心的應用程序。
但世上本沒有最好的軟體或程序,也鮮有人能把單一語言挖掘運用到極致。尤其是很多人早先學了R,現在完全不用又捨不得,所以對於想要學以致用的人來說,如果能把R和Python相結合,就更好不過了,很早看過一篇文章——讓R與Python共舞,咱們壇子里有原帖,就不多說了,看完會有更多啟發。

BTW: 如果之前沒有學過R,可以先學Python然後決定是不是學R,如果學了R,學Python的時候會更快上手。

2. 在python Image中可以用show()來顯示圖片,但是顯示以後,下面的代碼就不運行了,如何運行下面的代碼

Image.show()函數是這個樣子的,必須先關了圖片程序才往下走。

不使用show,如imshow(BW)在 Matlab 7.0 中,二進制圖像是一個邏輯類,僅包括 0 和 1 兩個數值。像素 0 顯示為黑色,像素 1 顯示為白色。顯示時,也可通過NOT(~)命令,對二進制圖象進行取反,使數值 0 顯示為白色;1 顯示為黑色。

例如: imshow(~BW)

展資料:

不使用show函數來滿足運行的需求:

import threading

import Image

class ThreadClass(threading.Thread):

def run(self):

im=Image.open('z.jpg')

im.show()

print (1)

t = ThreadClass()

t.start()

print (2)

a=input('End')

#===============================

圖像的表示原理:

最基本的物理圖像是根據矩形網格抽樣原理從連續圖像域中抽取二維灰度陣列(矩陣)得到的。也可以用長向量表示二維灰度矩陣,它是按列(或行)掃描灰度矩陣,把下一列(或行)的頭和前一列(或行)的尾相接而成。

它們的線性可逆變換同樣可以用來表示圖像。圖像的每一行由行程(具有同一灰度的鄰近像元集合)序列所組成,因此也可以用行程長度編碼(見圖像編碼)表示圖像。

3. 怎麼在高斯分布中采樣得到向量python

極限定義:設{Xn}為一無窮數列,如果存在常數a對於任意給定的正數ε(不論它多麼小),總存在正整數N,使得當n>N時的一切Xn,均有不等式|Xn - a|<ε成立,那麼就稱常數a是數列{Xn}的極限,或稱數列{Xn}收斂於a。記為
lim Xn = a 或Xn→a(n→∞)
如果數列沒有極限,就說數列發散
解答:現取ε=2/(x+1),當x→+∞時,總存在|(x-1)/(x+1)-1|<=ε
所以證得lim(x→+∞)(x-1)/(x+1)=1

4. 怎麼使用Python中Pandas庫Resample,實現重采樣,完成線性插值

#python中的pandas庫主要有DataFrame和Series類(面向對象的的語言更願意叫類) DataFrame也就是
#數據框(主要是借鑒R裡面的data.frame),Series也就是序列 ,pandas底層是c寫的 性能很棒,有大神
#做過測試 處理億級別的數據沒問題,起性能可以跟同等配置的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],:]#選取第一行及第三行的數據
df.iloc[0:2,:]#選取第一行到第三行(不包含)的數據
df.iloc[:,1]#選取所有記錄的第一列的值,返回的為一個Series
df.iloc[1,:]#選取第一行數據,返回的為一個Series
print(df.ix[1,1]) # 更廣義的切片方式是使用.ix,它自動根據你給到的索引類型判斷是使用位置還是標簽進行切片
print(df.ix[0:2])
#DataFrame根據條件選取子集 類似於sas裡面if、where ,R裡面的subset之類的函數
df[df.Murder>13]
df[(df.Murder>10)&(df.Rape>30)]
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軸上
#數據描述 相當於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)
#最經典的join 跟sas和R裡面的merge類似 跟sql裡面的各種join對照
merge()
#刪除重行 跟sas裡面nokey R裡面的which(!plicated(df[])類似
df.drop_plicated()
#獲取最大值 最小值的位置 有點類似矩陣裡面的方法
df.idxmin(axis=0 ) df.idxmax(axis=1) 0和1有什麼不同 自己摸索去
#讀取外部數據跟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填充
#鏈接資料庫 不多說 pandas裡面主要用 MySQLdb
import MySQLdb
conn=MySQLdb.connect(host="localhost",user="root",passwd="",db="mysql",use_unicode=True,charset="utf8")
read_sql() #很經典
#寫數據進資料庫
df.to_sql('hbase_visit',con, flavor="mysql", if_exists='replace', index=False)
#groupby 跟sas裡面的中的by R軟體中dplyr包中的group_by sql裡面的group by功能是一樣的 這里不多說
#求啞變數
miper=pd.get_mmies(df['key'])
df['key'].join(mpier)
#透視表 和交叉表 跟sas裡面的proc freq步類似 R裡面的aggrate和cast函數類似
pd.pivot_table()
pd.crosstab()
#聚合函數經常跟group by一起組合用
df.groupby('sex').agg({'height':['mean','sum'],'weight':['count','min']})

#數據查詢過濾

test.query("0.2
將STK_ID中的值過濾出來
stk_list = ['600809','600141','600329']中的全部記錄過濾出來,命令是:rpt[rpt['STK_ID'].isin(stk_list)].
將dataframe中,某列進行清洗的命令
刪除換行符:misc['proct_desc'] = misc['proct_desc'].str.replace('\n', '')
刪除字元串前後空格:df["Make"] = df["Make"].map(str.strip)
如果用模糊匹配的話,命令是:
rpt[rpt['STK_ID'].str.contains(r'^600[0-9]{3}$')]

對dataframe中元素,進行類型轉換

df['2nd'] = df['2nd'].str.replace(',','').astype(int) df['CTR'] = df['CTR'].str.replace('%','').astype(np.float64)

#時間變換 主要依賴於datemie 和time兩個包
http://www.2cto.com/kf/201401/276088.html
#其他的一些技巧
df2[df2['A'].map(lambda x:x.startswith('61'))] #篩選出以61開頭的數據
df2["Author"].str.replace("<.+>", "").head() #replace("<.+>", "")表示將字元串中以」<」開頭;以」>」結束的任意子串替換為空字元串
commits = df2["Name"].head(15)
print commits.unique(), len(commits.unique()) #獲的NAME的不同個數,類似於sql裡面count(distinct name)
#pandas中最核心 最經典的函數apply map applymap

5. 如何用python實現單位抽樣序列

你好,

resultList=[]
forindexinrange(50):
resultList.append(0)
resultList[0]=1

6. 如何進行拉丁超立方抽樣有軟體或者具體步驟是什麼

matlab中lhsdesign函數,和python的第三庫mcerp都是拉丁超立方抽樣的實現函數

7. python用opencv庫和OS庫如何獲取視頻並將其使用上采樣的當然拖充負樣本,並保存

後面的沒看懂
opencv打開視頻可以通過
cap=cv2.VideoCapture(path)
path 可以是文件路徑,url等
網上可以找到的

ret,frame=cap.read()
來讀照片,ret是返回是否獲取成功

8. 急!!!!如何通過python製作一個簡單的錄音機,錄制自己的聲音採用8k采樣,16位量化編碼,觀察其數值

#我可以幫你寫一段代碼,能夠錄音形成wav文件,不過要分析錄音文件的波形,你可以另外找#工具,比如cooledit,也很方便。
fromsysimportbyteorder
fromarrayimportarray
fromstructimportpack

importpyaudio
importwave

THRESHOLD=500
CHUNK_SIZE=1024
FORMAT=pyaudio.paInt16
RATE=44100

defis_silent(snd_data):
"Returns'True'ifbelowthe'silent'threshold"
returnmax(snd_data)<THRESHOLD

defnormalize(snd_data):
"Averagethevolumeout"
MAXIMUM=16384
times=float(MAXIMUM)/max(abs(i)foriinsnd_data)

r=array('h')
foriinsnd_data:
r.append(int(i*times))
returnr

deftrim(snd_data):
""
def_trim(snd_data):
snd_started=False
r=array('h')

foriinsnd_data:
ifnotsnd_startedandabs(i)>THRESHOLD:
snd_started=True
r.append(i)

elifsnd_started:
r.append(i)
returnr

#Trimtotheleft
snd_data=_trim(snd_data)

#Trimtotheright
snd_data.reverse()
snd_data=_trim(snd_data)
snd_data.reverse()
returnsnd_data

defadd_silence(snd_data,seconds):
"Addsilencetothestartandendof'snd_data'oflength'seconds'(float)"
r=array('h',[0foriinxrange(int(seconds*RATE))])
r.extend(snd_data)
r.extend([0foriinxrange(int(seconds*RATE))])
returnr

defrecord():
"""

.

Normalizestheaudio,trimssilencefromthe
startandend,andpadswith0.5secondsof

itwithoutgettingchoppedoff.
"""
p=pyaudio.PyAudio()
stream=p.open(format=FORMAT,channels=1,rate=RATE,
input=True,output=True,
frames_per_buffer=CHUNK_SIZE)

num_silent=0
snd_started=False

r=array('h')

while1:
#littleendian,signedshort
snd_data=array('h',stream.read(CHUNK_SIZE))
ifbyteorder=='big':
snd_data.byteswap()
r.extend(snd_data)

silent=is_silent(snd_data)

ifsilentandsnd_started:
num_silent+=1
elifnotsilentandnotsnd_started:
snd_started=True

ifsnd_startedandnum_silent>30:
break

sample_width=p.get_sample_size(FORMAT)
stream.stop_stream()
stream.close()
p.terminate()

r=normalize(r)
r=trim(r)
r=add_silence(r,0.5)
returnsample_width,r

defrecord_to_file(path):
"'path'"
sample_width,data=record()
data=pack('<'+('h'*len(data)),*data)

wf=wave.open(path,'wb')
wf.setnchannels(1)
wf.setsampwidth(sample_width)
wf.setframerate(RATE)
wf.writeframes(data)
wf.close()

if__name__=='__main__':
print("")
record_to_file('demo.wav')
print("done-resultwrittentodemo.wav")

9. python中怎麼從一個列表中可重復的隨機抽取元素構成新列表

importstring
importrandom


classCaptchaCreator:

@staticmethod
defrandom_seq(choice_seq,count=6,repeatable=True):
#將其中的choice_seq,count改為你需要的參數
ifrepeatable:
return[random.choice(choice_seq)for_inrange(count)]
returnrandom.sample(choice_seq,count)

defshuffle(self):
digits=self.random_seq(string.digits)
random.shuffle(digits)
returndigits


if__name__=='__main__':
c=CaptchaCreator()
print(c.shuffle())

10. Python 適合大數據量的處理嗎

python可以處理大數據,python處理大數據不一定是最優的選擇。適合大數據處理。而不是大數據量處理。 如果大數據量處理,需要採用並用結構,比如在hadoop上使用python,或者是自己做的分布式處理框架。

python的優勢不在於運行效率,而在於開發效率和高可維護性。針對特定的問題挑選合適的工具,本身也是一項技術能力。

Python處理數據的優勢(不是處理大數據):

1. 異常快捷的開發速度,代碼量巨少

2. 豐富的數據處理包,不管正則也好,html解析啦,xml解析啦,用起來非常方便

3. 內部類型使用成本巨低,不需要額外怎麼操作(java,c++用個map都很費勁)

4. 公司中,很大量的數據處理工作工作是不需要面對非常大的數據的

5. 巨大的數據不是語言所能解決的,需要處理數據的框架(hadoop, mpi)雖然小眾,但是python還是有處理大數據的框架的,或者一些框架也支持python。

(10)python抽樣擴展閱讀:

Python處理數據缺點:

Python處理大數據的劣勢:

1、python線程有gil,通俗說就是多線程的時候只能在一個核上跑,浪費了多核伺服器。在一種常見的場景下是要命的:並發單元之間有巨大的數據共享或者共用(例如大dict)。

多進程會導致內存吃緊,多線程則解決不了數據共享的問題,單獨的寫一個進程之間負責維護讀寫這個數據不僅效率不高而且麻煩

2、python執行效率不高,在處理大數據的時候,效率不高,這是真的,pypy(一個jit的python解釋器,可以理解成腳本語言加速執行的東西)能夠提高很大的速度,但是pypy不支持很多python經典的包,例如numpy。

3. 絕大部分的大公司,用java處理大數據不管是環境也好,積累也好,都會好很多。

參考資料來源:網路-Python



閱讀全文

與python抽樣相關的資料

熱點內容
壓縮因子定義 瀏覽:966
cd命令進不了c盤怎麼辦 瀏覽:212
葯業公司招程序員嗎 瀏覽:972
毛選pdf 瀏覽:658
linuxexecl函數 瀏覽:726
程序員異地戀結果 瀏覽:374
剖切的命令 瀏覽:228
干什麼可以賺錢開我的世界伺服器 瀏覽:290
php備案號 瀏覽:990
php視頻水印 瀏覽:167
怎麼追程序員的女生 瀏覽:487
空調外壓縮機電容 瀏覽:79
怎麼將安卓變成win 瀏覽:459
手機文件管理在哪兒新建文件夾 瀏覽:724
加密ts視頻怎麼合並 瀏覽:775
php如何寫app介面 瀏覽:804
宇宙的琴弦pdf 瀏覽:396
js項目提成計算器程序員 瀏覽:944
pdf光子 瀏覽:834
自拍軟體文件夾名稱大全 瀏覽:328