① 數據分析員用python做數據分析是怎麼回事,需要用到python中的那些內容,具體是怎麼操作的
最近,Analysis with Programming加入了Planet Python。我這里來分享一下如何通過Python來開始數據分析。具體內容如下:
數據導入
導入本地的或者web端的CSV文件;
數據變換;
數據統計描述;
假設檢驗
單樣本t檢驗;
可視化;
創建自定義函數。
數據導入
1
這是很關鍵的一步,為了後續的分析我們首先需要導入數據。通常來說,數據是CSV格式,就算不是,至少也可以轉換成CSV格式。在Python中,我們的操作如下:
import pandas as pd
# Reading data locally
df = pd.read_csv('/Users/al-ahmadgaidasaad/Documents/d.csv')
# Reading data from web
data_url = "https://raw.githubusercontent.com/alstat/Analysis-with-Programming/master/2014/Python/Numerical-Descriptions-of-the-Data/data.csv"
df = pd.read_csv(data_url)
為了讀取本地CSV文件,我們需要pandas這個數據分析庫中的相應模塊。其中的read_csv函數能夠讀取本地和web數據。
數據變換
1
既然在工作空間有了數據,接下來就是數據變換。統計學家和科學家們通常會在這一步移除分析中的非必要數據。我們先看看數據(下圖)
對R語言程序員來說,上述操作等價於通過print(head(df))來列印數據的前6行,以及通過print(tail(df))來列印數據的後6行。當然Python中,默認列印是5行,而R則是6行。因此R的代碼head(df, n = 10),在Python中就是df.head(n = 10),列印數據尾部也是同樣道理
9
plt.show(sns.lmplot("Benguet", "Ifugao", df))
創建自定義函數
在Python中,我們使用def函數來實現一個自定義函數。例如,如果我們要定義一個兩數相加的函數,如下即可:
def add_2int(x, y):
return x + y
print add_2int(2, 2)
# OUTPUT
4
順便說一下,Python中的縮進是很重要的。通過縮進來定義函數作用域,就像在R語言中使用大括弧{…}一樣。這有一個我們之前博文的例子:
產生10個正態分布樣本,其中和
基於95%的置信度,計算和;
重復100次; 然後
計算出置信區間包含真實均值的百分比
Python中,程序如下:
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專家
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}
② 怎樣用Excel做數據分析
前言
最近鬆懈了,花了很多時間在玩游戲看視頻上,把學習計劃耽擱了,總說要自律,但光說不做是沒用的,最主要是自控能力太差了,得承認自己和大多數人一樣,愛玩、不願意邁出舒適區,「知行合一」,只四個字,大道至簡,卻超過99%的人都做不到。在前進的路上,希望自己能克服惰性,提升自控力,按計劃耐心學習並踐行。
1、數據分析步驟:
提出問題→理解數據→數據清洗→構建模型→數據可視化
2、實踐案例:
利用一份招聘網站的數據作為實戰案例。
第一步提出問題:
1)在哪些城市找到數據分師工作的機會比較大?
2)數據分師的薪水如何?
3)根據工作經驗的不同,薪酬是怎樣變化的?
第二步理解數據:
初始數據有6875條,14項內容。
設置表格列寬(步驟如下圖),顯示全部內容,方便後續操作,最後保存。
第三步清洗數據:
這一步需要花費的時間佔大部分,把數據處理成自己想要的樣子。
1、選擇子集:選擇公司全名和公司ID兩列並隱藏(取消隱藏方法:全選表格→開始→格式→隱藏和取消隱藏→取消隱藏列)
2、列名重命名:雙擊列名可以修改成自己想要的列名。
3、刪除重復值:選擇職位ID將其重復值刪除(步驟如下圖)
4、缺失值處理:選擇職位ID列計數5032,選擇城市列計數5030,城市列缺失兩個數據。
查找並定位城市列的缺失值(步驟如下圖),缺失值填上海。
缺失值處理的4種方法,根據情況靈活使用:
1)通過人工手動補全;
2)刪除缺失的數據;
3)用平均值代替缺失值;
4)用統計模型計算出的值去代替缺失值。
5、一致化處理:對「公司所屬領域」進行一致化處理(步驟如下圖)
將原來的「公司所屬領域」列隱藏,並將復制的列進行分列:
6、數據排序:
7、異常值處理:
第四步構建模型
第五步數據可視化
通過上面的分析,我們可以得到的以下分析結論有:
1)數據分析這一崗位,有大量的工作機會集中在北上廣深以及新一線城市,如果你將來去這些城市找工作,可以提高你成功的條件概率。
2)從待遇上看,數據分析師留在深圳發展是個不錯的選擇,其次是北京、上海。
3)數據分析是個年輕的職業方向,大量的工作經驗需求集中在1-3年。
對於數據分析師來說,5年似乎是個瓶頸期,如果在5年之內沒有提升自己的能力,大概以後的競爭壓力會比較大。
4)隨著經驗的提升,數據分析師的薪酬也在不斷提高,10年以上工作經驗的人,能獲得相當豐厚的薪酬。
3、劃重點:
1)分列功能會覆蓋掉右列單元格,所以我們記得先要復制這一列到最後一個空白列的地方,再進行分列操作。
2)上面圖片中的函數:IF(COUNT(FIND({"數據運營","數據分析","分析師"},L2)),"是","否")。
3)Ctrl+Eneter快捷鍵,在不連續的單元格中同時輸入同一個數據或公式時很好用。
4)精確查找和近似查找(模糊查找)的區別
(1)精確查找是指從第一行開始往最後一行逐個查找。一找到匹配項就停止查詢,所以返回找到的第一個值。
(2)當你要近似查找的時候,它就會苦逼地查遍所有的數據,返回的是最後一個匹配到的值。
5)在使用vlookup函數時,在很多情況下使用的是精確匹配,而在進行分組時需要用模糊匹配,所以這里要輸入「1」來進行模糊匹配。
6)Excel設置了快捷鍵F4幫助用戶迅速切換相對引用、絕對引用和混合引用,步驟如下:
(1)選定包含該公式的單元格;
(2)在編輯欄中選擇要更改的公式內容,並按 F4 鍵;
(3)以引用單元格A1為例,每次按 F4 鍵時,Excel會依次在以下組合間切換:
按一次F4是絕對引用
按兩次、三次F4是混合引用
按四次F4是相對引用
7)使用這個函數過程中,如果出現錯誤標識「#N/A」,一般是3個原因導致:
(1)第2個參數:查找范圍里第一列的值必須是要查找的值。
比如這個案例里第2個參數選定的的范圍里第一列是姓名,是要查找值的列。
(2)數據存在空格,此時可以嵌套使用TRIM函數將空格批量刪除。
(3)數據類型或格式不一致,此時將數據類型或格式轉為一致即可。