1. python檢測一列有多少
導讀:今天首席CTO筆記來給各位分享關於python檢測一列有多少的相關內容,如果能碰巧解決你現在面臨的問題,別忘了關注本站,現在開始吧!
Python怎麼檢驗數據分布1.每個維度都畫出來,看直方圖,肉眼判別。python中可以用matplotlib畫圖。
2.連續的分布:KolmogorovSmirnov(k-s)test或者Cramér–vonMises(CvM)test
3.離散的分布:Chi-Squaretest
4.正態性可以用Lilliforstest
5.通常而言,你會發現這些數據不是從常見分布來的;什麼分布並不重要,常見分布只是簡化計算用的。
2,3和4的python實現詳見scipy.stats或者statsmodels.stats這兩個庫的文檔
像Excel一樣使用Python(一)
在進行數據處理時,如果數據簡單,數量不多,excel是大家的首選。但是當數據眾多,類型復雜,需要靈活地顯示切片、進行索引、以及排序時,python會更加方便。藉助python中的numpy和pandas庫,它能快速完成各種任務,包括數據的創建、檢查、清洗、預處理、提取、篩選、匯總、統計等。接下來幾篇文章,將以excel為參照,介紹python中數據的處理。
提到pandas,那就不得不提兩類重要的數據結構,Series和DataFrame,這兩類數據結構都是建立在numpy的數組array基礎上。與array相比,Series是一個一維的數據集,但是每個數據元素都帶有一個索引,有點類似於字典。而DataFrame在數組的基礎上,增加了行索引和列索引,類似於Series的字典,或者說是一個列表集。
所以在數據處理前,要安裝好numpy,pandas。接下來就看看如何完成一套完整的數據操作。
創建數據表的方法分兩種,分別是從外部導入數據,以及直接寫入數據。
在python中,也可外部導入xlsx格式文件,使用read_excel()函數:
importpandasaspd
frompandasimportDataFrame,Series
data=DataFrame(pd.read_excel('c:/python27/test.xlsx'))
printdata
輸出:
GeneSizeFunction
0arx1411NaN
1arx2550monooxygenase
2arx3405aminotransferase
……
即:調用pandas中read_excel屬性,來讀取文件test.xlsx,並轉換成DataFrame格式,賦給變數data。在每一行後,自動分了一個索引值。除了excel,還支持以下格式文件的導入和寫入:
Python寫入的方法有很多,但還是不如excel方便。常用的例如使用相等長度的字典或numpy數組來創建:
data1=DataFrame(
{'Gene':['arx1','arx2','arx3'],
'Size':[411,550,405],
'Func':[np.NaN,'monooxygenase','aminotransferase']})
printdata1
輸出
FuncGeneSize
0NaNarx1411
1monooxygarx2550
2aminoarx3405
分配一個行索引後,自動排序並輸出。
在python中,可以使用info()函數查看整個數據的詳細信息。
printdata.info()
輸出
RangeIndex:7entries,0to6
Datacolumns(total3columns):
Gene7non-nullobject
Size7non-nullint64
Function5non-nullobject
dtypes:int64(1),object(2)
memoryusage:240.0+bytes
None
此外,還可以通過shape,column,index,values,dtypes等函數來查看數據維度、行列組成、所有的值、數據類型:
printdata1.shape
printdata1.index
printdata1.columns
printdata1.dtypes
輸出
(3,3)
RangeIndex(start=0,stop=3,step=1)
Index([u'Func',u'Gene',u'Size'],dtype='object')
Funcobject
Geneobject
Sizeint64
dtype:object
在excel中可以按「F5」,在「定位條件」中選擇「空值」,選中後,輸入替換信息,再按「Ctrl+Enter」即可完成替換。
在python中,使用函數isnull和notnull來檢測數據丟失,包含空值返回True,不包含則返回False。
pd.isnull(data1)
pd.notnull(data1)
也可以使用函數的實例方法,以及加入參數,對某一列進行檢查:
printdata1['Func'].isnull()
輸出
FuncGeneSize
0TrueFalseFalse
1FalseFalseFalse
2FalseFalseFalse
再使用fillna對空值進行填充:
data.fillna(value=0)
#用0來填充空值
data['Size'].fillna(data1['Size'].mean())
#用data1中Size列的平均值來填充空值
data['Func']=data['Func'].map(str.strip)
#清理Func列中存在的空格
Excel中可以按「Ctrl+F」,可調出替換對話框,替換相應數據。
Python中,使用replace函數替換:
data['Func'].replace('monooxygenase','oxidase')
將Func列中的'monooxygenase'替換成'oxidase'。
Excel中,通過「數據-篩選-高級」可以選擇性地看某一列的唯一值。
Python中,使用unique函數查看:
printdata['Func'].unique()
輸出
[nanu'monooxygenase'u'aminotransferase'u'methyltransferase']
Excel中,通過UPPER、LOWER、PROPER等函數來變成大寫、小寫、首字母大寫。
Python中也有同名函數:
data1['Gene'].str.lower()
Excel中可以通過「數據-刪除重復項」來去除重復值。
Python中,可以通過drop_plicates函數刪除重復值:
printdata['Func'].drop_plicates()
輸出
0NaN
1monooxygenase
2aminotransferase
3methyltransferase
Name:Func,dtype:object
還可以設置「keep=』last』」參數,後出現的被保留,先出現的被刪除:
printdata['Func'].drop_plicates(keep='last')
輸出
2aminotransferase
3methyltransferase
6monooxygenase
8NaN
Name:Func,dtype:object
內容參考:
PythonForDataAnalysis
藍鯨網站分析博客,作者藍鯨(王彥平)
python數據統計分析1.常用函數庫
?scipy包中的stats模塊和statsmodels包是python常用的數據分析工具,scipy.stats以前有一個models子模塊,後來被移除了。這個模塊被重寫並成為了現在獨立的statsmodels包。
?scipy的stats包含一些比較基本的工具,比如:t檢驗,正態性檢驗,卡方檢驗之類,statsmodels提供了更為系統的統計模型,包括線性模型,時序分析,還包含數據集,做圖工具等等。
2.小樣本數據的正態性檢驗
(1)用途
?夏皮羅維爾克檢驗法(Shapiro-Wilk)用於檢驗參數提供的一組小樣本數據線是否符合正態分布,統計量越大則表示數據越符合正態分布,但是在非正態分布的小樣本數據中也經常會出現較大的W值。需要查表來估計其概率。由於原假設是其符合正態分布,所以當P值小於指定顯著水平時表示其不符合正態分布。
?正態性檢驗是數據分析的第一步,數據是否符合正態性決定了後續使用不同的分析和預測方法,當數據不符合正態性分布時,我們可以通過不同的轉換方法把非正太態數據轉換成正態分布後再使用相應的統計方法進行下一步操作。
(2)示例
(3)結果分析
?返回結果p-value=0.029035290703177452,比指定的顯著水平(一般為5%)小,則拒絕假設:x不服從正態分布。
3.檢驗樣本是否服務某一分布
(1)用途
?科爾莫戈羅夫檢驗(Kolmogorov-Smirnovtest),檢驗樣本數據是否服從某一分布,僅適用於連續分布的檢驗。下例中用它檢驗正態分布。
(2)示例
(3)結果分析
?生成300個服從N(0,1)標准正態分布的隨機數,在使用k-s檢驗該數據是否服從正態分布,提出假設:x從正態分布。最終返回的結果,p-value=0.9260909172362317,比指定的顯著水平(一般為5%)大,則我們不能拒絕假設:x服從正態分布。這並不是說x服從正態分布一定是正確的,而是說沒有充分的證據證明x不服從正態分布。因此我們的假設被接受,認為x服從正態分布。如果p-value小於我們指定的顯著性水平,則我們可以肯定地拒絕提出的假設,認為x肯定不服從正態分布,這個拒絕是絕對正確的。
4.方差齊性檢驗
(1)用途
?方差反映了一組數據與其平均值的偏離程度,方差齊性檢驗用以檢驗兩組或多組數據與其平均值偏離程度是否存在差異,也是很多檢驗和演算法的先決條件。
(2)示例
(3)結果分析
?返回結果p-value=0.19337536323599344,比指定的顯著水平(假設為5%)大,認為兩組數據具有方差齊性。
5.圖形描述相關性
(1)用途
?最常用的兩變數相關性分析,是用作圖描述相關性,圖的橫軸是一個變數,縱軸是另一變數,畫散點圖,從圖中可以直觀地看到相關性的方向和強弱,線性正相關一般形成由左下到右上的圖形;負面相關則是從左上到右下的圖形,還有一些非線性相關也能從圖中觀察到。
(2)示例
(3)結果分析
?從圖中可以看到明顯的正相關趨勢。
6.正態資料的相關分析
(1)用途
?皮爾森相關系數(Pearsoncorrelationcoefficient)是反應兩變數之間線性相關程度的統計量,用它來分析正態分布的兩個連續型變數之間的相關性。常用於分析自變數之間,以及自變數和因變數之間的相關性。
(2)示例
(3)結果分析
?返回結果的第一個值為相關系數表示線性相關程度,其取值范圍在[-1,1],絕對值越接近1,說明兩個變數的相關性越強,絕對值越接近0說明兩個變數的相關性越差。當兩個變數完全不相關時相關系數為0。第二個值為p-value,統計學上,一般當p-value0.05時,可以認為兩變數存在相關性。
7.非正態資料的相關分析
(1)用途
?斯皮爾曼等級相關系數(Spearman』),它主要用於評價順序變數間的線性相關關系,在計算過程中,只考慮變數值的順序(rank,值或稱等級),而不考慮變數值的大小。常用於計算類型變數的相關性。
(2)示例
(3)結果分析
?返回結果的第一個值為相關系數表示線性相關程度,本例中correlation趨近於1表示正相關。第二個值為p-value,p-value越小,表示相關程度越顯著。
8.單樣本T檢驗
(1)用途
?單樣本T檢驗,用於檢驗數據是否來自一致均值的總體,T檢驗主要是以均值為核心的檢驗。注意以下幾種T檢驗都是雙側T檢驗。
(2)示例
(3)結果分析
?本例中生成了2列100行的數組,ttest_1samp的第二個參數是分別對兩列估計的均值,p-value返回結果,第一列1.47820719e-06比指定的顯著水平(一般為5%)小,認為差異顯著,拒絕假設;第二列2.83088106e-01大於指定顯著水平,不能拒絕假設:服從正態分布。
9.兩獨立樣本T檢驗
(1)用途
?由於比較兩組數據是否來自於同一正態分布的總體。注意:如果要比較的兩組數據不滿足方差齊性,需要在ttest_ind()函數中添加參數equal_var=False。
(2)示例
(3)結果分析
?返回結果的第一個值為統計量,第二個值為p-value,pvalue=0.19313343989106416,比指定的顯著水平(一般為5%)大,不能拒絕假設,兩組數據來自於同一總結,兩組數據之間無差異。
10.配對樣本T檢驗
(1)用途
?配對樣本T檢驗可視為單樣本T檢驗的擴展,檢驗的對象由一群來自正態分布獨立樣本更改為二群配對樣本觀測值之差。它常用於比較同一受試對象處理的前後差異,或者按照某一條件進行兩兩配對分別給與不同處理的受試對象之間是否存在差異。
(2)示例
(3)結果分析
?返回結果的第一個值為統計量,第二個值為p-value,pvalue=0.80964043445811551,比指定的顯著水平(一般為5%)大,不能拒絕假設。
11.單因素方差分析
(1)用途
?方差分析(AnalysisofVariance,簡稱ANOVA),又稱F檢驗,用於兩個及兩個以上樣本均數差別的顯著性檢驗。方差分析主要是考慮各組之間的平均數差別。
?單因素方差分析(One-wayAnova),是檢驗由單一因素影響的多組樣本某因變數的均值是否有顯著差異。
?當因變數Y是數值型,自變數X是分類值,通常的做法是按X的類別把實例成分幾組,分析Y值在X的不同分組中是否存在差異。
(2)示例
(3)結果分析
?返回結果的第一個值為統計量,它由組間差異除以組間差異得到,上例中組間差異很大,第二個返回值p-value=6.2231520821576832e-19小於邊界值(一般為0.05),拒絕原假設,即認為以上三組數據存在統計學差異,並不能判斷是哪兩組之間存在差異。只有兩組數據時,效果同stats.levene一樣。
12.多因素方差分析
(1)用途
?當有兩個或者兩個以上自變數對因變數產生影響時,可以用多因素方差分析的方法來進行分析。它不僅要考慮每個因素的主效應,還要考慮因素之間的交互效應。
(2)示例
(3)結果分析
?上述程序定義了公式,公式中,"~"用於隔離因變數和自變數,」+「用於分隔各個自變數,":"表示兩個自變數交互影響。從返回結果的P值可以看出,X1和X2的值組間差異不大,而組合後的T:G的組間有明顯差異。
13.卡方檢驗
(1)用途
?上面介紹的T檢驗是參數檢驗,卡方檢驗是一種非參數檢驗方法。相對來說,非參數檢驗對數據分布的要求比較寬松,並且也不要求太大數據量。卡方檢驗是一種對計數資料的假設檢驗方法,主要是比較理論頻數和實際頻數的吻合程度。常用於特徵選擇,比如,檢驗男人和女人在是否患有高血壓上有無區別,如果有區別,則說明性別與是否患有高血壓有關,在後續分析時就需要把性別這個分類變數放入模型訓練。
?基本數據有R行C列,故通稱RC列聯表(contingencytable),簡稱RC表,它是觀測數據按兩個或更多屬性(定性變數)分類時所列出的頻數表。
(2)示例
(3)結果分析
?卡方檢驗函數的參數是列聯表中的頻數,返回結果第一個值為統計量值,第二個結果為p-value值,p-value=0.54543425102570975,比指定的顯著水平(一般5%)大,不能拒絕原假設,即相關性不顯著。第三個結果是自由度,第四個結果的數組是列聯表的期望值分布。
14.單變數統計分析
(1)用途
?單變數統計描述是數據分析中最簡單的形式,其中被分析的數據只包含一個變數,不處理原因或關系。單變數分析的主要目的是通過對數據的統計描述了解當前數據的基本情況,並找出數據的分布模型。
?單變數數據統計描述從集中趨勢上看,指標有:均值,中位數,分位數,眾數;從離散程度上看,指標有:極差、四分位數、方差、標准差、協方差、變異系數,從分布上看,有偏度,峰度等。需要考慮的還有極大值,極小值(數值型變數)和頻數,構成比(分類或等級變數)。
?此外,還可以用統計圖直觀展示數據分布特徵,如:柱狀圖、正方圖、箱式圖、頻率多邊形和餅狀圖。
15.多元線性回歸
(1)用途
?多元線性回歸模型(),因變數Y(計量資料)往往受到多個變數X的影響,多元線性回歸模型用於計算各個自變數對因變數的影響程度,可以認為是對多維空間中的點做線性擬合。
(2)示例
(3)結果分析
?直接通過返回結果中各變數的P值與0.05比較,來判定對應的解釋變數的顯著性,P0.05則認為自變數具有統計學意義,從上例中可以看到收入INCOME最有顯著性。
16.邏輯回歸
(1)用途
?當因變數Y為2分類變數(或多分類變數時)可以用相應的logistic回歸分析各個自變數對因變數的影響程度。
(2)示例
(3)結果分析
?直接通過返回結果中各變數的P值與0.05比較,來判定對應的解釋變數的顯著性,P0.05則認為自變數具有統計學意義。
急急急!python根據原excel數據新加一列數字從1-75,如何實現?網路會吞縮進,我發其他網站了。paste.ubuntu
#安裝
whileTrue:
try:
importopenpyxl
break
except:
print('未安裝openpyxl庫,正在安裝')
fromosimportsystem
system('pipinstall-iopenpyxl')
#保存xlsx
defsave_xlsx(list1,path):
#創建一個excel工作簿
wb=openpyxl.Workbook()
#創建之後可以通過active獲取默認的第一個
ws1=wb.active
#通過append來添加一行數據
forconteninlist1:
ws1.append(conten)
#保存
wb.save(path)
#讀取xlsx
defread_xlsx(path):
#打開文件:
excel=openpyxl.load_workbook(path)
#獲取sheet,索引獲取
table=excel.get_sheet_by_name(excel.get_sheet_names()[0])
#返回數據
returnlist(map(list,table.values))
#1-75循環生成器
defloop(s,e):
i=s
whileTrue:
ifi==e:
i=s
yieldi
i+=1
if__name__=='__main__':
path='D://book.xlsx'?#文件路徑
l=loop(1,75)?#左閉右開,不包括75
datas=read_xlsx(path)?#讀取文件
#處理數據,不確定是不是有多個數字的情況,這里按多個數字寫的
lins=None
forrowindatas[1:]:
iflins!=row[0]:?#判斷的數字在哪一列?索引值
lins=row[0]
l=loop(1,75)
row.append(l.__next__())
save_xlsx(datas,path)?#覆蓋保存新文件
print('完成')
python如何讀取excel指定單元格內容1、首先打開電腦上編寫python的軟體。
2、然後新建一個py文件,如下圖所示。
3、接著就是導入xlrd包,讀取表格的函數就在這裡面,如下圖所示。
4、然後就是打開想要讀取的表格,如下圖所示。
5、接著就是指定要讀取一個excel表中的那個表格。
6、然後就是根據sheet索引獲取sheet內容。
7、最後就是讀取一個表格中的行或列的值,就完成了。
python檢測人數代碼?您好!下面是一
2. python導入csv數據後怎麼計算平均數和方差
你好,禪羨這個圖片看著不是很清楚叢襲含,去掉時間第一列是「五糧液」嗎
你可以直接用 fim_data[「五糧液」].mean()
結果不對不排滲笑除你的數據確實是均值為72
3. 利用python計算還差多少分(python計算平均分)
導讀:今天首席CTO筆記來給各位分享關於利用python計算還差多少分的相關內容,如果能碰巧解決你現在面臨的問題,別忘了關注本站,現在開始吧!
Python中如何用time計算時間差1
首先我們需要import
datetime,導入日期處理庫
2
然後把日期轉化成datetime標准格式,如下圖所示使用datetime.datetime.strptime方法將字元串格式的時間轉化為標准格式
3
其中"%Y/%m/%d
%H:%M:%S"為time字元串的時間格式
Y為年,m為月,d為天,H為小時,M為分鍾,S為秒,執行轉化結果如下
4
下面如果我們要加的時間是天則如下圖,當前時間加上datetime.timedelta(days=1)。datetime的timedelta方法實現
5
同理如果要加的時間是小時則如下,當前時間加上datetime.timedelta(hour
s=1)
6
同理如果要加的時間是分鍾則如下,當前時間加上datetime.timedelta(minutes=1)
7
如果加的時間是s的話,如下當前時間加上datetime.timedelta(seconds=1)
8
如果是加年的話需要把年數轉化成day再做計算
關於一道編程題,可用C++或者python編程,求!
問題表述有點問題,落後隊的分數沒有計入。假定1)改為:
獲取領先的分數(即兩隊分數之差)。
def?judge(SofA,?SofB,?ctrl,?secs_left):
????#?ctrl?could?be?either?1?(which?indicates?that?the?leading?team
????#?is?in?control)?or?0.?Or?it?can?be?True?or?Flase?(in?which?case?we
????#shall?use?abs(ctrl)
????#?SofA,?SofB?are?the?corresponding?score?of?leading?team?and?the?other.
????return?max((SofA?-?SofB?-?3?+?abs(ctrl)?-?0.5),?0)^2??secs_left
如何用Python對數據進行差分處理過與時間有關的數據的人都知道,差分變化經常用來使得結果更加直觀。在這篇文章里將會教你如何用Python來實現這一目的,讀完這篇文章,你將會掌握以下技能:
1、知道什麼是差分變換以及滯後差分和差分階數的設置
2、如何手動計算差分
3、怎樣使用Pandas內置的差分函數
所以,讓我們趕緊開始吧!
為什麼要對時間序列數據進行差分?
首先來看下為什麼要對數據進行差分變化,差分變化可以消除數據對時間的依賴性,也就是降低時間對數據的影響,這些影響通常包括數據的變化趨勢以及數據周期性變化的規律。進行差分操作時,一般用現在的觀測值減去上個時刻的值就得到差分結果,就是這么簡單,按照這種定義可以計算一系列的差分變換。
滯後差分
連續觀測值之間的差分變換叫做一階滯後差分。滯後差分的步長需要根據數據的時間結構做調整,例如對於周期性變化的數據,這個時間步長就是數據變化的周期。
差分階數
在進行一次差分之後,時間項的作用並沒有完全去掉,將會繼續對差分結果進行差分變化,直到完全消除時間項的影響因素為止,這個過程中進行的差分操作次數就稱為差分階數。
洗發水銷售數據
這份數據是三年來每月洗發水的銷售情況,總共有36個數據記錄,原始數據來自Makridakis,Wheelwright和Hyndman(1998).,可以從下面的地址下到數據:
下面的代碼將會導入數據並將結果畫成折線圖,如下所示:
手動差分
在這一部分中,我們將會自定義一個函數來實現差分變換,這個函數將會對提供的數據進行遍歷並根據指定的時間間隔進行差分變換。具體代碼如下:
從上面的代碼中可以看到該函數將會根據指定的時間間隔來對數據進行變換,一般來說,通常會計算間隔一個數據的差分,這樣的結果比較可靠。當然,我們也可以將上面的函數進行一定的改進,加入差分階數的指定。
下面將這函數應用到上面洗發水銷售的數據中去,運行之後繪出下面的圖,具體如下:
自動差分
Pandas庫里提供了一個函數可以自動計算數據的差分,這個函數是diff(),輸入的數據是「series'或」DataFrame'類型的,像前面自定義函數那樣,我們也可以指定差分的時間間隔,不過在這里這個參數叫做周期。
下面的例子是用Pandas內置函數來計算差分的,數據類型是series的,使用Pandas內置函數的好處是代碼工作量減少了不少,而且繪出的圖中包含更詳細的信息,具體效果如下:
總結
讀完本文想必你已經學會用python來實現對數據的差分了,尤其是對差分的概念,手動差分,以及使用Pandas內置函數進行差分都有所了解了。如果有什麼好的想法歡迎在評論欄里留下。
用python求數據表中數據的均值與方差以下為代碼:
numstr=input("請輸入全部數據:用英文逗號(,),中文逗號(,),
空格(),製表符(tab鍵)或換行(請一次性復制過來)中的一種統一分隔數據:")
if","innumstr:
?numlist=numstr.split(",")
elif","innumstr:
?numlist=numstr.split(",")
elif" "innumstr:
?numlist=numstr.split(" ")
elif" "innumstr:
?numlist=numstr.split(" ")
elif""innumstr:
?numlist=numstr.split("")
else:
?numlist=[numstr]
numlist=list(map(lambdax:x.strip(",").strip(",").
?????????strip(" ").strip(" ").strip(""),numlist))
foriinnumlist.():
?try:
???a=float(i)
?except:
???numlist.remove(i)
???print("已過濾字元串:%s"%i)
#好了,上面很多隻是方便用戶而已(但還是有一些有用的),主要是下面
numlist=list(map(lambdax:float(x),numlist))#所有字元串轉為浮點
print("最終數列:",numlist)#輸出最終數列,進行核對
average=sum(numlist)/len(numlist)#用數列和除以出列長度得到平均數
variance=0#方差,先記為0
foriinnumlist:#遍歷列表
?variance+=(i-average)**2#反正就是公式對吧,先加進去
variance/=len(numlist)#還是公式,那一長串還得除以一個數列長度
print("均值:%.2f 方差:%.2f"%(average,variance))#分兩行輸出
以下為輸出效果:
請輸入全部數據:用英文逗號(,),中文逗號(,),空格(),製表符(tab鍵)或換行(請一次性復制過來)中的一種統一分隔數據:38,22,99,10,99,7,25,,40
已過濾字元串:
最終數列:[38.0,22.0,99.0,10.0,99.0,7.0,25.0,40.0]
均值:42.50
方差:1181.75
以下為解析:
平均值的思路就是總和除以列表長度,方差的思路就是把所有的(x-均值)?加起來,最後再除以一個長度即可。
本程序的優點:輸入時逗號後出現空格與不小心多打逗號等情況都不會出問題,可以接受小數,可以先輸出最終數列以供核對。
python計算時間差秒?python計算時間差秒:
Q:如何方便的計算兩個時間的差,如兩個時間相差幾天,幾小時等
A:使用datetime模塊可以很方便的解決這個問題,舉例如下:
上例演示了計算兩個日期相差天數的計算。
上例演示了計算運行時間的例子,以秒進行顯示。
上例演示了計算當前時間向後10小時的時間。
拓展:其本上常用的類有:datetime和timedelta兩個。它們之間可以相互加減。每個類都有一些方法和屬性可以查看具體的值,如datetime可以查看:天數(day),小時數(hour),星期幾(weekday())等;timedelta可以查看:天數(days),秒數(seconds)等。
python計算兩個時間相差多少分鍾import?time
time1=time.clock()???#?返回秒數
............
time2=time.clock()
tt=(time2-time1)/60??#?分鍾數
結語:以上就是首席CTO筆記為大家介紹的關於利用python計算還差多少分的全部內容了,希望對大家有所幫助,如果你還想了解更多這方面的信息,記得收藏關注本站。
4. 統計學入門級:常見概率分布+python繪制分布圖
如果隨機變數X的所有取值都可以逐個列舉出來,則稱X為離散型隨機變數。相應的概率分布有二項分布,泊松分布。
如果隨機變數X的所有取值無法逐個列舉出來,而是取數軸上某一區間內的任一點,則稱X為連續型隨機變數。相應的概率分布有正態分布,均勻分布,指數分布,伽馬分布,偏態分布,卡方分布,beta分布等。(真多分布,好恐怖~~)
在離散型隨機變數X的一切可能值中,各可能值與其對應概率的乘積之和稱為該隨機變數X的期望值,記作E(X) 。比如有隨機變數,取值依次為:2,2,2,4,5。求其平均值:(2+2+2+4+5)/5 = 3。
期望值也就是該隨機變數總體的均值。 推導過程如下:
= (2+2+2+4+5)/5
= 1/5 2 3 + 4/5 + 5/5
= 3/5 2 + 1/5 4 + 1/5 5
= 0.6 2 + 0.2 4 + 0.2 5
= 60% 2 + 20% 4 + 20%*5
= 1.2 + 0.8 + 1
= 3
倒數第三步可以解釋為值為2的數字出現的概率為60%,4的概率為20%,5的概率為20%。 所以E(X) = 60% 2 + 20% 4 + 20%*5 = μ = 3。
0-1分布(兩點分布),它的隨機變數的取值為1或0。即離散型隨機變數X的概率分布為:P{X=0} = 1-p, P{X=1} = p,即:
則稱隨機變數X服從參數為p的0-1分布,記作X~B(1,p)。
在生活中有很多例子服從兩點分布,比如投資是否中標,新生嬰兒是男孩還是女孩,檢查產品是否合格等等。
大家非常熟悉的拋硬幣試驗對應的分布就是二項分布。拋硬幣試驗要麼出現正面,要麼就是反面,只包含這兩個結果。出現正面的次數是一個隨機變數,這種隨機變數所服從的概率分布通常稱為 二項分布 。
像拋硬幣這類試驗所具有的共同性質總結如下:(以拋硬幣為例)
通常稱具有上述特徵的n次重復獨立試驗為n重伯努利試驗。簡稱伯努利試驗或伯努利試驗概型。特別地,當試驗次數為1時,二項分布服從0-1分布(兩點分布)。
舉個栗子:拋3次均勻的硬幣,求結果出現有2個正面的概率 。
已知p = 0.5 (出現正面的概率) ,n = 3 ,k = 2
所以拋3次均勻的硬幣,求結果出現有2個正面的概率為3/8。
二項分布的期望值和方差 分別為:
泊松分布是用來描述在一 指定時間范圍內或在指定的面積或體積之內某一事件出現的次數的分布 。生活中服從泊松分布的例子比如有每天房產中介接待的客戶數,某微博每月出現伺服器癱瘓的次數等等。 泊松分布的公式為 :
其中 λ 為給定的時間間隔內事件的平均數,λ = np。e為一個數學常數,一個無限不循環小數,其值約為2.71828。
泊松分布的期望值和方差 分別為:
使用Python繪制泊松分布的概率分布圖:
因為連續型隨機變數可以取某一區間或整個實數軸上的任意一個值,所以通常用一個函數f(x)來表示連續型隨機變數,而f(x)就稱為 概率密度函數 。
概率密度函數f(x)具有如下性質 :
需要注意的是,f(x)不是一個概率,即f(x) ≠ P(X = x) 。在連續分布的情況下,隨機變數X在a與b之間的概率可以寫成:
正態分布(或高斯分布)是連續型隨機變數的最重要也是最常見的分布,比如學生的考試成績就呈現出正態分布的特徵,大部分成績集中在某個范圍(比如60-80分),很小一部分往兩端傾斜(比如50分以下和90多分以上)。還有人的身高等等。
正態分布的定義 :
如果隨機變數X的概率密度為( -∞<x<+∞):
則稱X服從正態分布,記作X~N(μ,σ²)。其中-∞<μ<+∞,σ>0, μ為隨機變數X的均值,σ為隨機變數X的標准差。 正態分布的分布函數
正態分布的圖形特點 :
使用Python繪制正態分布的概率分布圖:
正態分布有一個3σ准則,即數值分布在(μ-σ,μ+σ)中的概率為0.6827,分布在(μ-2σ,μ+2σ)中的概率為0.9545,分布在(μ-3σ,μ+3σ)中的概率為0.9973,也就是說大部分數值是分布在(μ-3σ,μ+3σ)區間內,超出這個范圍的可能性很小很小,僅占不到0.3%,屬於極個別的小概率事件,所以3σ准則可以用來檢測異常值。
當μ=0,σ=1時,有
此時的正態分布N(0,1) 稱為標准正態分布。因為μ,σ都是確定的取值,所以其對應的概率密度曲線是一條 形態固定 的曲線。
對標准正態分布,通常用φ(x)表示概率密度函數,用Φ(x)表示分布函數:
假設有一次物理考試特別難,滿分100分,全班只有大概20個人及格。與此同時語文考試很簡單,全班絕大部分都考了90分以上。小明的物理和語文分別考了60分和80分,他回家後告訴家長,這時家長能僅僅從兩科科目的分值直接判斷出這次小明的語文成績要比物理好很多嗎?如果不能,應該如何判斷呢?此時Z-score就派上用場了。 Z-Score的計算定義 :
即 將隨機變數X先減去總體樣本均值,再除以總體樣本標准差就得到標准分數啦。如果X低於平均值,則Z為負數,反之為正數 。通過計算標准分數,可以將任何一個一般的正態分布轉化為標准正態分布。
小明家長從老師那得知物理的全班平均成績為40分,標准差為10,而語文的平均成績為92分,標准差為4。分別計算兩科成績的標准分數:
物理:標准分數 = (60-40)/10 = 2
語文:標准分數 = (85-95)/4 = -2.5
從計算結果來看,說明這次考試小明的物理成績在全部同學中算是考得很不錯的,而語文考得很差。
指數分布可能容易和前面的泊松分布混淆,泊松分布強調的是某段時間內隨機事件發生的次數的概率分布,而指數分布說的是 隨機事件發生的時間間隔 的概率分布。比如一班地鐵進站的間隔時間。如果隨機變數X的概率密度為:
則稱X服從指數分布,其中的參數λ>0。 對應的分布函數 為:
均勻分布的期望值和方差 分別為:
使用Python繪制指數分布的概率分布圖:
均勻分布有兩種,分為 離散型均勻分布和連續型均勻分布 。其中離散型均勻分布最常見的例子就是拋擲骰子啦。拋擲骰子出現的點數就是一個離散型隨機變數,點數可能有1,2,3,4,5,6。每個數出現的概率都是1/6。
設連續型隨機變數X具有概率密度函數:
則稱X服從區間(a,b)上的均勻分布。X在等長度的子區間內取值的概率相同。對應的分布函數為:
f(x)和F(x)的圖形分別如下圖所示:
均勻分布的期望值和方差 分別為:
5. PCA(主成分分析)python實現
回顧了下PCA的步驟,並用python實現。深刻的發現當年學的特徵值、特徵向量好強大。
PCA是一種無監督的學習方式,是一種很常用的降維方法。在數據信息損失最小的情況下,將數據的特徵數量由n,通過映射到另一個空間的方式,變為k(k<n)。
這里用一個2維的數據來說明PCA,選擇2維的數據是因為2維的比較容易畫圖。
這是數據:
畫個圖看看分布情況:
協方差的定義為:
假設n為數據的特徵數,那麼協方差矩陣M, 為一個n n的矩陣,其中Mij為第i和第j個特徵的協方差,對角線是各個特徵的方差。
在我們的數據中,n=2,所以協方差矩陣是2 2的,
通過numpy我們可以很方便的得到:
得到cov的結果為:
array([[ 0.61655556, 0.61544444],
[ 0.61544444, 0.71655556]])
由於我們之前已經做過normalization,因此對於我們來說,
這個矩陣就是 data*data的轉置矩陣。
得到結果:
matrix([[ 5.549, 5.539],
[ 5.539, 6.449]])
我們發現,其實協方差矩陣和散度矩陣關系密切,散度矩陣 就是協方差矩陣乘以(總數據量-1)。因此他們的 特徵根 和 特徵向量 是一樣的。這里值得注意的一點就是,散度矩陣是 SVD奇異值分解 的一步,因此PCA和SVD是有很大聯系的,他們的關系這里就不詳細談了,以後有機會再寫下。
用numpy計算特徵根和特徵向量很簡單,
但是他們代表的意義非常有意思,讓我們將特徵向量加到我們原來的圖里:
其中紅線就是特徵向量。有幾點值得注意:
藍色的三角形就是經過坐標變換後得到的新點,其實他就是紅色原點投影到紅線、藍線形成的。
得到特徵值和特徵向量之後,我們可以根據 特徵值 的大小,從大到小的選擇K個特徵值對應的特徵向量。
這個用python的實現也很簡單:
從eig_pairs選取前k個特徵向量就行。這里,我們只有兩個特徵向量,選一個最大的。
主要將原來的數據乘以經過篩選的特徵向量組成的特徵矩陣之後,就可以得到新的數據了。
output:
數據果然變成了一維的數據。
最後我們通過畫圖來理解下數據經過PCA到底發生了什麼。
綠色的五角星是PCA處理過後得到的一維數據,為了能跟以前的圖對比,將他們的高度定位1.2,其實就是紅色圓點投影到藍色線之後形成的點。這就是PCA,通過選擇特徵根向量,形成新的坐標系,然後數據投影到這個新的坐標系,在盡可能少的丟失信息的基礎上實現降維。
通過上述幾步的處理,我們簡單的實現了PCA第一個2維數據的處理,但是原理就是這樣,我們可以很輕易的就依此實現多維的。
用sklearn的PCA與我們的pca做個比較:
得到結果:
用我們的pca試試
得到結果:
完全一致,完美~
值得一提的是,sklearn中PCA的實現,用了部分SVD的結果,果然他們因緣匪淺。
6. 學習經濟學需要熟悉哪些編程語言
學習經濟學需要熟悉哪些編程語言?
1)壇友arthur_2006
處理和分析數據都用得到,最基本的是excel,如果你的VBA用得好的話會有很大的幫助,如果你要分析數據的話,比如你要建模那麼SAS還是不錯的,不過比較難掌握如果你沒有語言方面的基礎,其他還有很多軟體也能做得到。很多銀行證券期貨企業都使用的是oracle或者DB2,一些小企業可能使用的是SQL, 所以如果想在這方面發展就要掌握資料庫的知識,畢竟金融和計算機兼備的人才還是稀缺的,而且國內很多行業都是用的是這幾大資料庫比如電信醫療航空等等,不會分析金融數據恐怕稱不上什麼金融專家吧,至於你分析得准還是不準那就要看你的金融知識掌握的程度啦,尤其是投資專業的學生學習一些這方面的知識是必要的,很多人是應用金融學專業的偏向於財務,那就去考考CFA,ACCA什麼的,也沒必要在這上面花費太多精力而且工作中很可能用不到的,金融數學金融工程精算專業的同學花點時間研究一下還是很有必要的,總而言之一句話,首先要看你的興趣再就是你的專業和發展方向。
2)編程愛好者任坤
做統計和計量的話,想要跟當今的國際學術界接軌,最好學R,至少我所知道的目前美國的統計學術界被R佔領的趨勢很明顯了。
如果只是做簡單地回歸隨便解讀一下,那隨便選個傻瓜軟體就可以了。如果只是應用現成的成熟的計量模型來做實證研究,那麼傻瓜軟體一般也就可以了。如果要以統計、計量為研究領域或者專業領域,那麼編程性的東西是少不了的,即使是做實證如果涉及較為復雜的數據結構,懂編程也能幫你大幅提高生產力。另外,R的社區比較活躍,能夠較好地跟上前沿。
如果涉及到處理較大的數據,一種辦法是用SAS,如果不想用SAS可以學資料庫方面的東西,比如把數據放在SQLite資料庫中然後用{RSQLite}訪問資料庫,或者用{sqldf}通過SQL操作環境中的data frame。
如果覺得執行某項任務R單核速度慢,那麼可以使用{parallel}或者{parallelMap}做並行計算,也可以利用雲計算來處理數據。
如果涉及到其他社區的東西在R社區中沒有實現,例如Java的東西,可以用{rJava}來調用Java的對象,不過速度有些慢。
比較好的辦法是我在想從事數據分析工作,學什麼軟體或語言最好? 提到的F#函數式編程語言,用RProvider可以直接調用R,用JavaProvider直接調用Jar打包的Java程序,用PythonProvider(即將發布)直接調用Python程序,等等,很容易將各大社區的資源整合在一起使用。
目前我在GitHub上面弄一個通過R學習統計、計量、非參、數據可視化、資料庫的repo: renkun-ken/learnR on GitHub ,雖然目前還沒什麼內容,不過可以跟蹤一下。
以上說得都是經濟學相關的統計和計量方面所需要的編程。事實上統計和計量所需的「編程」較為簡單,基本也就是處理數據、應用已經提供的計量模型,更多需要編程的是:一、如果涉及較為前沿的計量模型,可能還需要自己實現;二、一些蒙特卡羅模擬需要一些編程。
從經濟學相關的一些新型領域來說,計算經濟學(Computational Economics)、計算統計學(Computational Statistics)以及計算計量學(Computational Econometrics)則需要較強的編程能力,包括演算法實現、演算法分析等等。舉個例子,計算經濟學中目前做的一塊研究是Agent-based computational finance,就是建立一個模擬的金融市場,裡面有幾種資產,每種資產的基本面由隨機的紅利決定,裡面有許多遵循各種邏輯的投資者,投資者對於紅利發放持有的信念不同,因而從各自的邏輯觸發的交易行為不同。在一個復式競價(double auction)的交易市場中,什麼樣的投資者組成或者行為方式、什麼樣的記憶長短,能夠最大程度地復制出我們在現實金融市場中觀測到的資產價格或者資產收益率規律,例如資產收益率尖峰肥尾、不對稱性。此時,研究者就需要較扎實的金融知識來設計一個不過於簡單而又不過於復雜的模擬金融市場,也需要相應的編程能力把模型用程序語言編寫出來。這中間會設計許多編程技術,例如資料庫(有時要跟蹤許多變數,例如投資者現金流動、財富分布)、並行計算(CPU多核並行、多進程並行、集群上的並行甚至GPU計算)等等。這方面的研究從1990s年代才開始。
3)知乎網友Jichun Si
計量經濟學也有很多小的門類,請對號入座。有很多軟體,Stata, matlab, R, SAS是相對來說用的比較多的。
如果是做應用計量(特別是橫截面數據、面板數據),Stata是不二之選,因為不管是管理數據還是跑回歸,實在太太太方便了。現在主流期刊的應用微觀計量文章裡面能用到的模型stata幾乎都有,而且其中的絕大多數都是用stata做的。而且最大的優點是,簡單!
如果做應用的時間序列,Eviews似乎是一個不錯的選擇。但是我一般不做這方面,也不是很有發言權。
如果做理論計量,stata eviews是沒有現成的包的,而且即便Stata可以編程,可編程能力也是很差的,而且不穩健。所以懂R和Matlab就非常順手。當然也可以用Python,最近Sargent就寫了本用Python做計量的書。還有一個Julia,是這三種語言的混合,但是速度快很多,缺點是太過於小眾。
如果對速度要求高,特別是金融計量很多對速度有要求的,可以考慮C、Fortran等語言。C和Fortran肯定是最快的。還有一個叫做OX的,速度快,但是也很小眾。但是這些語言的缺點是學習難度比較高,開發時間比較慢。Julia據說速度堪比C,而且語法特別像Matlab、Python(意味著容易學習),但是處於剛起步階段,用的人太少了。
如果是金融計量領域,強烈建議學會SAS。SAS是最權威,速度也很快,當然最大的問題是昂貴,而且可編程能力不是多麼好。但是金融裡面數據量都非常非常非常大,一般的軟體都癱的時候,SAS就派上用場了。
像我自己,做應用的時候都是用stata整理數據,能用stata的堅決不用其他軟體。但是因為有的時候做一些理論計量的工作,所以matlab也是必不可少的。我也在學習Julia,因為matlab的速度實在太慢。Python我一般不用來做科學計算,用的人不多,而且速度慢,一般是用來抓數據的。
最後還是補充一點吧,為什麼我推薦matlab而不是其他的軟體,也是有道理的。很多模型,比如空間計量模型(spatial econometrics)、貝葉斯估計、以及宏觀計量裡面的DSGE model、SVAR等模型,在stata、Eviews裡面都是沒有什麼現成的東西可以用的,但是matlab提供了豐富的包,比如Dynare就是基於Matlab的,還有LeSage的空間計量軟體包等等,也是基於matlab的。所以幾乎你想用的模型matlab裡面都能找到codes然後直接用。就算沒有,你自己在matlab裡面寫,也不是什麼難事。
最後想起一句話來,關於這些軟體的選擇(stata除外,因為stata在應用計量領域的地位是幾乎不可替代的)可以用兩句話來概括:如果你自己的時間比計算機的時間寶貴的話,學習matlab、R、甚至Python、Julia是最合適的,如果計算機的時間比你的時間寶貴的話,學習C、Fortran是必須的。當然除非你的工作非常特殊(比如一些大型的結構模型的估計),一般來說,還是自己的時間更寶貴一點。
綜上,做應用和做理論是不可能用一種軟體解決的,建議根據自己的方向進行挑選。我覺著stata、matlab是比較推薦的,一個方便,一個靈活,都很強大,而且學習難度都不大,用的人都很多,交流起來相當方便。
4)網友張真實
數據,簡單的用excel,直觀,方便。復雜一些的…excel最多可以有6萬多行,你確定你需要從那麼大量的數據開始「學經濟學么?
復雜的用R,各種模型,演算法,實現,基本上R都有對應的軟體包了,下載下來直接用即可,多讀文檔多練多用,半年左右就可以拋開excel直接用R作實戰了。我博士論文全部回歸和輸出都是用R的,現在寫的論文也都用它。替代品是Stata。也很好,但如果你和我一樣是從0開始,那麼強烈建議選R。
R的一個不足是沒法作符號運算,這個免費的解決方案有python搭配scipy numpy等幾個包,不過建議你用mathematica,它的符號計算功能最強大,輸出格式也最好。你可以找個jacobian矩陣搞一下符號計算,比較一下結果就知道了。
Python這東西,熟悉了R之後,發現有功能是R實現不了的,到時候有實際需求了,再學也不遲。不是立刻就需要的。
此外,所有經濟學研究(我是指empirics類型的,具體意思你懂的),都要會用latex,可以把它看做是一門編程語言。在word里排數學公式,用不了多久你就會瘋掉。R中可以用ggplot2來繪圖,輸出到tex中。普通數據表用xtable包輸出到tex,回歸結果用stargazer輸出到tex,都很方便。
5)網友bayes
首先要說的是R,絕對是目前國外學術界的主流,統計系基本除R以外沒有其他了,計量作為和統計相關的方向,R也在逐漸滲透。所以推薦學習。
順便說一句,R的學習曲線是比較陡峭的,所以我不太建議零基礎的人從R開始,否則挫折感會比較強烈。而python會略好,所以我建議從python開始。
python並非是專用於統計或者計量的軟體,而是一種非常流行的通用編程語言。經過多年發展,庫也非常齊備。我試用過numpy,scipy和pandas等庫,與其他通用編程語言相比,算是相當好用,不過個人感覺還是比不上R,比如畫圖,
ggplot2真心是神一般的存在,python的庫還是略遜一籌。但是,除了數據處理之外,python可以乾的事情太多了,也太牛了。我們主要要用到的,比如網頁採集數據,需要正則表達式,解析網頁等等。這些方面python就比R有優勢多了。
當然,從趨勢來看,未來似乎python比R更優。R是一群統計學家在編程序,python是一群計算機專家在爭取搞數據處理。似乎python的基礎更扎實。個人觀點,僅供參考。
stata我認為是除了R以外最好的計量軟體了,我兩者均用過數年數個項目,但是依然感覺R更好用,整理和處理數據更方便。所以即使在樓上諸位所提到的微觀計量領域,我依然更喜歡R。
除此以外spss,或者eviews等,感覺管理類學生用的更多,功能比較受限,不太推薦。這里不贅述。上述的幾個軟體,還有個問題,在於都是收費的,考慮到未來知識產權的保護,還是用免費的略靠譜。
R的主要缺點有兩個:
1,面對大數據乏力。這方面sas確實有優勢,但是不得不說,sas的語法太反人類了,完全接受不能。面對這個問題,我要說的是,你得看問題有多大。以我的經驗,經濟裡面的數據量似乎還不足以超過R的處理上限很多。可能金融的高頻數據會比較大,我個人沒啥經驗,如果遇到再補充。我嘗試過10g的數據,最簡單的辦法,不是學sas,而是買16g的內存。:)以現在的內存價格,我覺得32g以下的問題不大。
2,性能不足。這方面python也有同樣的問題,最好的解決方案是混合c/c++,不過這個就是無底洞了,耗時極多,都不見得能學好。建議的方法,還是買硬體,這個最簡單。:)當然用並行包等,也是解決方法之一,我嘗試過幾次用機房的多台機器做集群,不是太成功。求高人指點。
上面諸位還提到過幾個軟體,我也略微說一下自己知道的一些軟體的看法:
matlab:好東西,關鍵還是性能問題,同樣可以靠c/c++來解決。但是我不喜歡比較大的軟體,為了求個均值方差,等它啟動就佔了5分鍾。。。
julia:好東西X2,目前關注中,可能還比較年輕,導致配套的庫略少,不過看好未來發展,主要是吸取了matlab,python和c/c++的有點,寫的快,運算的也快,未來看漲,緊密關注。
最後提一下函數式編程,是個好東西,但是不看好純粹函數式編程的未來。它體現了一種頗先進的編程思想,但是在實際工作中,往往性能方面的問題較大。要解決這個問題,還是的混合函數式編程和其他方式,但這就是python,R等軟體已經實現的方式,似乎又沒有必要專門去學其他的函數式編程了。
6)上海財經大學博士 榮健欣
Stata微觀計量中應用極多,主要是直接輸命令回歸,需要編程的地方不多。
至於編程,推薦R、Python.
R是非常好的統計分析軟體,在計量經濟學中的應用可以見Econometrics in R, Applied Econometrics with R Time Series Analysis with Applications in R這幾本書
Python用來抓數據很好,並且有數學計算包SciPy可以部分替代Matlab之類科學計算的功能。
7)知乎網友justin
本科經濟統計學,由於學校奇葩的課程設置,我們分別使用過:
EViews:計量經濟學,時序和多元統計。
Stata:計量經濟學。
SPSS:專門開的一門課,這個巨汗,權當復習了一遍統計學。
Excel:大一的統計入門課使用的,這個也巨坑,就是簡單的函數使用,一點沒有涉及VBA。
Matlab:這個沒有專門的課,是上完了C語言程序設計以後副產品,後來接觸了R和Mathematica就基本拋棄了它。
R/S-Plus:在回歸分析的時候使用了S-Plus,不過那時候我已經使用R語言很久了,而且S-Plus基本兼容,所以沒有使用過S-Plus。
Minitab:質量控制課程上用的,基本的統計加上一些實驗設計。
SAS:這個在實驗室中自學過幾次,直接被其奇葩的語法雷到了,據說我們學校的研究生有專門的SAS課程(類似於本科的SPSS課程),呵呵了~
我們系的妹(xue)紙(ba)就曾經抱怨說使用的軟體太多了,完全被逼瘋的感覺,還給我們親愛的系主任提過意見。作為學渣也就這個問題問過系主任,她的意思是不同的軟體在處理不同的數據時候是各有所長的,而且你們課程還是蠻輕松的,就多學點吧,另外不同的老師有不同的軟體使用愛好,上課使用不同的軟體是必然的。
學習經濟學的同學,Excel和SPSS,EViews(或者Stata)就蠻好的了,Stata和EViews都可以寫一些程序的,SPSS的界面化操作也是很友好的。本人使用的R,在上各種課中也都會在學了那些軟體後再使用R來實現(其實絕大多數時候R都已經有現成的包了,我也大多是直接使用),R還是很不錯的,推薦。
很多前輩也提出了,經濟學學生學習編程適可而止就好了,要不然就是一條不歸路啊,面臨著徹底轉行的危險,本人就是一枚反面例子(淚~。所以什麼Python啊,C++啊,Julia啊就不要接觸了。