⑴ 如何學習python數據分析
第一階段:Python編程語言核心基礎
快速掌握一門數據科學的有力工具。
第二階段:Python數據分析基本工具
通過介基猛或紹NumPy、Pandas、MatPlotLib、Seaborn等工知巧具,快速具備數據分析的專業范兒。
第三階段:Python語言描述的數學基礎
概率統計、線性代數、時間序列分析、隨機過程是構建數據科學的基石,這里獨樹一幟,通過python語言描述這些數學,快速讓數學知識為我所用,融會貫通。
第四階段:機器學習典型演算法專題
這一部分利用前面介紹的基礎知識,對搏伍機器學習的常用核心演算法進行抽絲剝繭、條分縷析、各個擊破。
第五階段:實戰環節深度應用
在這一部分利用已有的知識進行實戰化的數據分析,例如:對基金投資策略、城市房屋租賃等熱門數據展開圍獵。
⑵ 如何利用python進行數據分析
作者Wes McKinney是pandas庫的抄主要作者,所以本書也可以作為利用Python實現數據密集型應用的科學計算實踐指南。本書適合剛剛接觸Python的分析人員以及剛剛接觸科學計算的Python程序員。
•將IPython這個互動式Shell作為你的首要開發環境。
•學習NumPy(Numerical Python)的基礎和高級知識。
•從pandas庫的數據分析工具開始。
•利用高性能工具對數據進行載入、清理、轉換、合並以及重塑。
•利用matplotlib創建散點圖以及靜態或互動式的可視化結果。
•利用pandas的groupby功能對數據集進行切片、切塊和匯總操作。
•處理各種各樣的時間序列數據。
•通過詳細的案例學習如何解決Web分析、社會科學、金融學以及經•濟學等領域的問題。
⑶ python數據分析該怎麼入門呢
1.為什麼選擇Python進行數據分析?
Python是一門動態的、面向對象的腳本語言,同時也是一門簡約,通俗易懂的編程語言。Python入門簡單,代碼可讀性強,一段好的Python代碼,閱讀起來像是在讀一篇外語文章。Python這種特性稱為「偽代碼」,它可以使你只關心完成什麼樣的工作任務,而不是糾結於Python的語法。
另外,Python是開源的,它擁有非常多優秀的庫,可以用於數據分析及其他領域。更重要的是,Python與最受歡迎的開源大數據平台Hadoop具有很好的兼容性。因此,學習Python對於有志於向大數據分析崗位發展的數據分析師來說,是一件非常節省學習成本的事。
Python的眾多優點讓它成為最受歡迎的程序設計語言之一,國內外許多公司也已經在使用Python,例YouTube,Google,阿里雲等等。
3.數據分析流程
Python是數據分析利器,掌握了Python的編程基礎後,就可以逐漸進入數據分析的奇妙世界。CDA數據分析師認為一個完整的數據分析項目大致可分為以下五個流程:
在這一階段,Python也具有很好的工具庫支持我們的建模工作:
scikit-learn-適用Python實現的機器學習演算法庫。scikit-learn可以實現數據預處理、分類、回歸、降維、模型選擇等常用的機器學習演算法。
Tensorflow-適用於深度學習且數據處理需求不高的項目。這類項目往往數據量較大,且最終需要的精度更高。
5)可視化分析
數據分析最後一步是撰寫數據分析報告,這也是數據可視化的一個過程。在數據可視化方面,Python目前主流的可視化工具有:
Matplotlib-主要用於二維繪圖,它能讓使用者很輕松地將數據圖形化,並且提供多樣化的輸出格式。
Seaborn-是基於matplotlib產生的一個模塊,專攻於統計可視化,可以和Pandas進行無縫鏈接。
從上圖我們也可以得知,在整個數據分析流程,無論是數據提取、數據預處理、數據建模和分析,還是數據可視化,Python目前已經可以很好地支持我們的數據分析工作。
⑷ 如何用python寫 數據分析工具
數據導入
導入本地的或者web端的CSV文件;
數據變換;
數據統計描述;
假設檢驗
單樣本t檢驗;
可視化;
創建自定義函數。
數據導入
這是很關鍵的一步,為了後續的分析我們首先需要導入數據。通常來說,數據是CSV格式,就算不是,至少也可以轉換成CSV格式。在Python中,我們的操作如下:
Python
1
2
3
4
5
6
7
8
import pandas as pd
# Reading data locally
df = pd.read_csv('/Users/al-ahmadgaidasaad/Documents/d.csv')
# Reading data from web
data_url = "t/Analysis-with-Programming/master/2014/Python/Numerical-Descriptions-of-the-Data/data.csv"
df = pd.read_csv(data_url)
為了讀取本地CSV文件,我們需要pandas這個數據分含旅析庫中的相應模塊。其中的read_csv函數能夠讀取本地和web數據。
數據變換仔洞
既然在工作空間有了數據,接下來就是數據變換。統計學家和科學家們通常會在這一步移除分析中的非必要數據。我們先看看數據:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# Head of the data
print df.head()
# OUTPUT
0 12432934148330010553
1 41589235 4287806335257
2 17871922 19551074 4544
317152 14501 3536 1960731687
4 12662385 25303315 8520
# Tail of the data
print df.tail()
# OUTPUT
74 2505 20878 3519 1973716513
7560303 40065 7062 1942261808
76 63116756 3561 15910談戚凳23349
7713345 38902 2583 1109668663
78 2623 18264 3745 1678716900
對R語言程序員來說,上述操作等價於通過print(head(df))來列印數據的前6行,以及通過print(tail(df))來列印數據的後6行。當然Python中,默認列印是5行,而R則是6行。因此R的代碼head(df, n = 10),在Python中就是df.head(n = 10),列印數據尾部也是同樣道理。
在R語言中,數據列和行的名字通過colnames和rownames來分別進行提取。在Python中,我們則使用columns和index屬性來提取,如下:
Python
1
2
3
4
5
6
7
8
9
10
11
# Extracting column names
print df.columns
# OUTPUT
Index([u'Abra', u'Apayao', u'Benguet', u'Ifugao', u'Kalinga'], dtype='object')
# Extracting row names or the index
print df.index
# OUTPUT
Int64Index([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, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78], dtype='int64')
數據轉置使用T方法,
Python
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
# Transpose data
print df.T
# OUTPUT
01 23 45 67 89
Abra1243 41581787171521266 5576 927215401039 5424
Apayao2934 92351922145012385 7452109917038138210588
Benguet148 42871955 353625307712796 24632592 1064
Ifugao3300
... 69 70 71 72 73 74 75 76 77
Abra ...12763 247059094 620913316 250560303 631113345
Apayao ...376251953235126 6335386132087840065 675638902
Benguet... 2354 4045 5987 3530 2585 3519 7062 3561 2583
Ifugao ... 9838171251894015560 774619737194221591011096
Kalinga...
78
Abra2623
Apayao 18264
Benguet 3745
Ifugao 16787
Kalinga16900
Other transformations such as sort can be done using<code>sort</code>attribute. Now let's extract a specific column. In Python, we do it using either<code>iloc</code>or<code>ix</code>attributes, but<code>ix</code>is more robust and thus I prefer it. Assuming we want the head of the first column of the data, we have
其他變換,例如排序就是用sort屬性。現在我們提取特定的某列數據。Python中,可以使用iloc或者ix屬性。但是我更喜歡用ix,因為它更穩定一些。假設我們需數據第一列的前5行,我們有:
Python
1
2
3
4
5
6
7
8
9
print df.ix[:, 0].head()
# OUTPUT
0 1243
1 4158
2 1787
317152
4 1266
Name: Abra, dtype: int64
順便提一下,Python的索引是從0開始而非1。為了取出從11到20行的前3列數據,我們有:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
print df.ix[10:20, 0:3]
# OUTPUT
AbraApayaoBenguet
109811311 2560
1127366 15093 3039
12 11001701 2382
13 7212 11001 1088
14 10481427 2847
1525679 15661 2942
16 10552191 2119
17 54376461734
18 10291183 2302
1923710 12222 2598
20 10912343 2654
上述命令相當於df.ix[10:20, ['Abra', 'Apayao', 'Benguet']]。
為了舍棄數據中的列,這里是列1(Apayao)和列2(Benguet),我們使用drop屬性,如下:
Python
1
2
3
4
5
6
7
8
9
print df.drop(df.columns[[1, 2]], axis = 1).head()
# OUTPUT
AbraIfugaoKalinga
0 1243330010553
1 4158806335257
2 17871074 4544
317152 1960731687
4 12663315 8520
axis參數告訴函數到底舍棄列還是行。如果axis等於0,那麼就舍棄行。
統計描述
下一步就是通過describe屬性,對數據的統計特性進行描述:
Python
1
2
3
4
5
6
7
8
9
10
11
12
print df.describe()
# OUTPUT
AbraApayaoBenguetIfugao Kalinga
count 79.000000 79.00000079.000000 79.000000 79.000000
mean 12874.37974716860.6455703237.39240512414.62025330446.417722
std16746.46694515448.1537941588.536429 5034.28201922245.707692
min927.000000401.000000 148.000000 1074.000000 2346.000000
25% 1524.000000 3435.5000002328.000000 8205.000000 8601.500000
50% 5790.00000010588.0000003202.00000013044.00000024494.000000
75%13330.50000033289.0000003918.50000016099.50000052510.500000
max60303.00000054625.0000008813.00000021031.00000068663.000000
假設檢驗
Python有一個很好的統計推斷包。那就是scipy裡面的stats。ttest_1samp實現了單樣本t檢驗。因此,如果我們想檢驗數據Abra列的稻穀產量均值,通過零假設,這里我們假定總體稻穀產量均值為15000,我們有:
Python
1
2
3
4
5
6
7
from scipy import stats as ss
# Perform one sample t-test using 1500 as the true mean
print ss.ttest_1samp(a = df.ix[:, 'Abra'], popmean = 15000)
# OUTPUT
(-1.1281738488299586, 0.26270472069109496)
返回下述值組成的元祖:
t : 浮點或數組類型
t統計量
prob : 浮點或數組類型
two-tailed p-value 雙側概率值
通過上面的輸出,看到p值是0.267遠大於α等於0.05,因此沒有充分的證據說平均稻穀產量不是150000。將這個檢驗應用到所有的變數,同樣假設均值為15000,我們有:
Python
1
2
3
4
5
6
print ss.ttest_1samp(a = df, popmean = 15000)
# OUTPUT
(array([ -1.12817385, 1.07053437, -65.81425599,-4.564575, 6.17156198]),
array([2.62704721e-01, 2.87680340e-01, 4.15643528e-70,
1.83764399e-05, 2.82461897e-08]))
第一個數組是t統計量,第二個數組則是相應的p值。
可視化
Python中有許多可視化模塊,最流行的當屬matpalotlib庫。稍加提及,我們也可選擇bokeh和seaborn模塊。之前的博文中,我已經說明了matplotlib庫中的盒須圖模塊功能。
;
重復100次; 然後
計算出置信區間包含真實均值的百分比
Python中,程序如下:
Python
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
import numpy as np
import scipy.stats as ss
def case(n = 10, mu = 3, sigma = np.sqrt(5), p = 0.025, rep = 100):
m = np.zeros((rep, 4))
for i in range(rep):
norm = np.random.normal(loc = mu, scale = sigma, size = n)
xbar = np.mean(norm)
low = xbar - ss.norm.ppf(q = 1 - p) * (sigma / np.sqrt(n))
up = xbar + ss.norm.ppf(q = 1 - p) * (sigma / np.sqrt(n))
if (mu > low) & (mu < up):
rem = 1
else:
rem = 0
m[i, :] = [xbar, low, up, rem]
inside = np.sum(m[:, 3])
per = inside / rep
desc = "There are " + str(inside) + " confidence intervals that contain "
"the true mean (" + str(mu) + "), that is " + str(per) + " percent of the total CIs"
return {"Matrix": m, "Decision": desc}
上述代碼讀起來很簡單,但是循環的時候就很慢了。下面針對上述代碼進行了改進,這多虧了Python專家,看我上篇博文的15條意見吧。
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import numpy as np
import scipy.stats as ss
def case2(n = 10, mu = 3, sigma = np.sqrt(5), p = 0.025, rep = 100):
scaled_crit = ss.norm.ppf(q = 1 - p) * (sigma / np.sqrt(n))
norm = np.random.normal(loc = mu, scale = sigma, size = (rep, n))
xbar = norm.mean(1)
low = xbar - scaled_crit
up = xbar + scaled_crit
rem = (mu > low) & (mu < up)
m = np.c_[xbar, low, up, rem]
inside = np.sum(m[:, 3])
per = inside / rep
desc = "There are " + str(inside) + " confidence intervals that contain "
"the true mean (" + str(mu) + "), that is " + str(per) + " percent of the total CIs"
return {"Matrix": m, "Decision": desc}
更新
那些對於本文ipython notebook版本感興趣的,請點擊這里。這篇文章由Nuttens Claude負責轉換成ipython notebook 。
⑸ 怎樣用 Python 進行數據分析
做數據分析,首先你要知道有哪些數據分析的方法,然後才是用Python去調用這些方法
那Python有哪些庫類是能做數據分析的,很多,pandas,sklearn等等
所以你首先要裝一個anaconda套件,它包含了幾乎所有的Python數據分析工具,
之後再學怎麼分析。
⑹ 如何利用python進行數據分析
近年來分析學在數據、網路、金融等領域獲得了突出的地位。應用各種軟體組合起來進行數據收集,數據管理,以及數據分析,得出的結論用作商業決策,業務需求分析等等。分析學用於研究一個產品的市場效應,銀行的貸款決定,這些都只是分析學的冰山一角。它在大數據,安全,數字和軟體分析等領域有很深遠的影響,下面是Python在分析學中的主要作用的一個延續:
在這個信息過載的世界,只有那些可以利用解析數據的優勢來得出見解的人會獲益。Python對於大數據的解釋和分析具有很重要的作用。分析公司開發的很多工具都是基於Python來約束大數據塊。分析師們會發現Python並不難學,它是一個強有力的數據管理和業務支持的媒介。
使用單一的語言來處理數據有它的好處。如果你以前曾經使用過C++或者Java,那麼對你來說,Python應該很簡單。數據分析可以使用Python實現,有足夠的Python庫來支持數據分析。 Pandas是一個很好的數據分析工具,因為它的工具和結構很容易被用戶掌握。對於大數據來說它無疑是一個最合適的選擇。即使是在數據科學領域,Python也因為它的「開發人員友好性」而使其他語言相形見絀。一個數據科學家熟悉Python的可能性要比熟悉其他語言的可能性高得多。
除了Python在數據分析中那些很明顯的優點(易學,大量的在線社區等等)之外,在數據科學中的廣泛使用,以及我們今天看到的大多數基於網路的分析,是Python在數據分析領域得以廣泛傳播的主要原因。
不論是金融衍生品還時大數據分析,Python都發揮了重要的作用。就前者而言,Python能夠很好地和其它系統,軟體工具以及數據流結合在一起,當然也包括R。用Python來對大數據做圖表效果更好,它在速度和幫助方面也一樣可靠。有些公司使用Python進行預測分析和統計分析。