-
1 # Bean蠶豆
-
2 # 碼農視界
可以啊,現在Python語言主要應用於爬蟲技術,對資料的抓取很精準,並且之所以Python會成為做資料分析的首選,也是因為有比較齊全的資料庫,利於抓取,很適合做資料分析。而且現在大資料技術和機器學習,都會用Python開發。
-
3 # 你看我獨角獸嗎
例如收集資料的方法是使用問卷,實驗軟體(例如,PsychoPy,OpenSesame)和觀察。
當問卷和實驗軟體使用數字應用程式時,我們當然也會以數字檔案格式(例如,Excel電子表格和逗號分隔,CSV,檔案)獲取資料。
如果資料集非常小,則可以使用Python和Pandas直接建立資料框:
然而當資料集很大時如果手動處理資料非常耗時且不推薦。 下面您將學習如何在Python和Pandas中閱讀Excel Spreadsheets和CSV檔案。
使用Pandas read_excel讀取Excel檔案,將資料集讀入Python的一種方法是使用read_excel方法,該方法有許多引數。
pd.read_excel(io, sheet_name=0, header=0)io是包含資料的Excel檔案。 它應該是型別字串資料型別,可以是本地儲存的檔案以及URL。
sheet_name可以是我們要載入的特定工作表的字串,也可以是零索引工作表位置的整數。 如果我們指定None,則所有工作表都將讀入資料框。
header可以是整數或整數列表。 預設值為0,整數表示列名稱的行。 如果Excel檔案中沒有列名,請新增0。
如果要了解其他引數,請參閱read_excel文件。
pandas閱讀Excel示例:
這是一個關於如何使用Pandas read_excel的工作示例:
在上面的示例中,我們正在讀取Excel檔案("conflictdata.xlsx")。 資料集只有一個工作表,但為了清楚起見我們添加了“conflictdata”工作表名稱作為引數。 也就是說在這種情況下,sheet_name不需要我們使用。
R使用者可能熟悉最後一行,以下是列印DataFrane的前X行:
您可能已經注意到,當我們閱讀上面的Excel檔案時,我們沒有使用header引數。 如果我們將標題設定為None,我們將獲得數字作為列名。 不幸的是,這使得使用Pandas資料框有點煩人。
我們可以傳遞一個列名列表作為引數。 最後,由於示例xlsx檔案包含列名,我們使用skiprows跳過第一行。 注意,可以使用跳過跳過多行。 只需新增一個列表,其中包含要跳過的行號。
這是另一個使用Python Pandas讀取Excel檔案的示例:
我們還可以使用Pandas to_excel方法儲存新的xlsx(或覆蓋舊的,如果你喜歡這樣做的話)。
excel_writer可以是字串(您的檔名)或ExcelWriter物件。
sheet_name應該是包含工作表名稱的字串。 預設為"Sheet1"。
index應該是布林值(即,True或False)。 通常,我們不希望用數字編寫新列。 預設為True。
df.to_excel("newfilename.xlsx", sheet_name="NewColNames", index=False)有許多方法可用於篩選資料。 一種簡單的方法是使用查詢, 此方法類似於R中的函式子集。現在我們來篩選出“piq”大於80:
df_piq = df.query("piq > 80")
df_piq.head(4)
df_males = df [df ["sex"] =="man"]下面顯示瞭如何使用多個條件篩選資料框。 在這種情況下,我們從性別為男性且iq大於80的df中選擇觀察值。請注意Pandas中的&符號“&”是首選的AND運算子。
df_male80 = df.query("iq> 80&sex ==“Male”")
也可以使用OR運算子。 在下面的示例中,我們基於年齡大於或等於40或年齡小於14的行來過濾DataFrame。此外我們還可以透過列"piq"和"viq"篩選條件。
df.query("age >= 40 | age < 14")[["piq", "viq"]].head()
以上就是簡單用pandas進行資料分析中讀取資料、篩選資料一環,你還可以用它還做很多資料操作,是一個很有用的工具包。
-
4 # 路人甲
題主問的是學Python做資料分析怎麼樣?我就實話實說了:不怎麼樣,儘管現在各種網站把Python捧得很高,認為資料分析師必須要有Python技能。今天我想潑一盆冷水。
為什麼這麼說呢?因為自打我工作以來真槍實彈的幹完之後,我發現在資料分析的工作中很多很多產生巨大價值的分析僅僅是使用Excel或者一些簡單的分析工具就能完成的。
而其實大家在沒工作之前其實大多覺得:Python多牛逼啊,學會了R多厲害啊,確實Python和R很厲害,在做一些更深層的分析的時候非常好用,然並卵。
就拿前段時間剛結束的一個專案來說:這個專案的目的是提高使用者的次日留存從40%提升到60%,我們一共做了幾件事情。第一步是先採集分析了使用者的所有行為資料,與老的App對比;第二步是發現數據中的差異,尋找差異的原因;第三步尋找到原因之後開始研究相應的可解決的方案。
開始的時候我們做了第一種解決方案某些指標漲了但是留存並沒漲,所以我們又繼續分析為什麼行為資料漲了但是留存沒漲,這樣一步一步的深究原因找到最終的解決方案。
整個流程中我要用的技術:SQL、Tableau、Excel,除此之外最重要的一個就是了解業務,向技術、測試、運營瞭解我們的資料現狀。
這個專案只用了兩週的時間我們就把留存從40%的值提升到了65%,是不是感覺很震驚?
當然這樣的專案不止這一個,之前的營收專案同樣也是一樣,幾乎沒用到Python或者是R就可以把收入提高、把續費率提高,並不是說不好用,而是說大部分的時候根本用不到。
最後我想用我前兩天在知乎上回答了一個問題來給大家解答:怎麼培養資料分析的能力?
-
5 # 壯志山河
本人跨專業轉到網際網路行業,從資料分析工程師做起,目前是演算法工程師。做資料分析業務時所用語言有Python和R,感覺用的最爽的還是Python。根據這幾年用Python做資料分析的經驗教訓,現將心得體會整理為業務案例總結如下。
以下是Python進行資料分析和機器學習的一個簡單流程。
1.簡單的資料描述
拿到一個數據集後,首先用Pandas包資料框的info()方法觀察,資料的總體情況,檢視維度大小、各個特徵是字串資訊還是數值資訊、有無缺失值等情況,如下圖所示。
使用Python的Pandas包的資料框的describe()方法對資料集的各個特徵進行進行簡單統計學描述,可統計的資料描述有count、mean、std、min及max等,如下圖所示。若某特徵的標準差接近於0,則該特徵可以捨去。
2.缺失值的填充
一般採用均值或中位數代替,對於正常分佈的資料可以使用均值代替,否則使用中位數可能更好;若缺失值數量較小,並且是隨機出現的,可選用將缺失值樣本直接刪除。所用到的相關方法有Series的fillna(),mean(),median()等。-999替換缺失值在業務場景中暫未用到。
3.非線性轉換及異常值的處理
如果數值型資料較為離散或數值較大,可透過取log等非線性轉換方法轉換資料。如果資料服從正態分佈,異常值為一組測定值中與平均值的偏差超過3倍標準差的值,以此來進行替換或刪除。如果資料不符合正態分佈,則適當提高標準差篩選倍數來選擇異常值進行替換或刪除。所用到的相關方法有資料框Series的mean(),std(),numpy的log1p等。
4.使用pandas.get_dummies()轉換類別變數為啞變數
使用pandas.get_dummies()能快速將類別型變數轉換為啞變數,由此先前資料將全部轉換為數值型資料,才可以進行以後的相關運算。該過程使用到的函式或方法有pandas.get_dummies(),pandas.cut()等。
5.資料分割
從sklearn.cross_validation裡選擇train_test_split進行資料分割,一般隨機選擇25%的資料作為測試集。
6.資料標準化
若涉及距離相關的模型,比如SVM或KNN,應從sklearn.preprocessing裡匯入StandarScaler,並對測試集和訓練集進行標準化。
7.根據簡單經驗模型對資料進行訓練
根據業務場景,選擇KNN等經驗模型對資料進行預先訓練,若效果較好將考慮其他高階模型。該過程需要從sklearn.neighbors裡匯入分類器KNeighborsClassifier,然後使用K近鄰分類器對測試資料進行類別預測,再使用分類器KNeighborsClassifier的score()評估函式進行準確性(accuracy)評估,並使用sklearn.metrics中的classification_report模組對預測結果做precision、recall、f1_score等指標的分析。
8.GBDT或Xgboost模型的訓練
若清洗資料後資料集在簡單經驗模型中訓練效果良好,則考慮使用整合模型,在實際工作中大多數情況下采用GBDT和Xgboost。
以GBDT分類模型的訓練為例,從sklearn.ensemble中匯入分類器GradientBoostingClassifier,然後步驟依次為定義一個GradientBoostingClassifier分類器,fit訓練資料和predict測試資料。在GBDT模型引數選擇上,採用5折或10折交叉驗證評分法(非官方名稱),例如選擇GradientBoostingClassifier中的max_features為要訓練的引數,先根據經驗選出幾個值(例如為0.1,0.3,0.5,0.7,0.9,0.99),然後從sklearn.cross_validation中匯入cross_val_score,將max_features幾個經驗值遍歷帶入新定義的GradientBoostingClassifier分類器,cross_val_score將新定義的分類器進行5折或10折交叉驗證並輸出得分列表,然後將cross_val_score輸出得分列表求平均將平均值存入另一個列表,以此獲得在不同max_features引數值下經過交叉驗證的該模型的評分資訊,並匯入matplotlib.pyplot模組對準確率和所取的max_features引數值進行畫圖。如下圖所示,在該圖中max_features取值越高,準確率越高,則選擇max_featuresd值為0.99或1。類似的,交叉驗證評分法用於n_estimators、learning_rate、max_depth、min_samples_split等引數的選取。一般在工作中先選取迭代次數n_estimators和樹深max_depth,再選擇learning_rate,接著驗證min_samples_split、min_samples_leaf及max_features等。
使用Xgboost模型其引數表示方法與GBDT稍有不同,調參方法相似:先調最大樹深max_depth和迭代次數num_round,再調學習率eta、min_child_weight及subsample等。
迴歸問題則涉及不同loss的遍歷,在工作中使用Xgboost親測rmse和auc效果基本一致。
工作中採用sklearn.grid_search的GridSearchCV進行網格搜尋確定引數效果不佳,速度較慢。
9.模型評價及二次特徵的構建
像7中簡單經驗模型中所使用到的模型評價方法,一般採用模型自帶的score函式對GBDT和Xgboost等整合模型進行準確率檢驗。由於Xgboost中沒有F1值的評價指標,在工作中有時也會自定義評價指標。
模型訓練結束後,如得到較好的準確率,則會觀察或匯出每個特徵的排名,一般認為排名前4位(若得分非常高也可選取後面的特徵)的特徵可以構建二次特徵。以Xgboost為例,採用其分類器的get_fscore()函式可得出特徵評分字典,可將該字典進行排序,以便觀察較好特徵。選取排名較優特徵後,可按經驗對兩個特徵進行加減乘除製作二次特徵,一般按加法較好。
然後二次特徵構建完畢後,再從簡單模型開始,繼續訓練模型,看模型的準確率有沒有提升。
總之,做資料分析和機器學習需要不斷地練習和揣摩,不斷地加深理解,不斷地學習新的影片等。只有不斷的改進方法,並且做新的嘗試,才能不斷地進步,把模型除錯得更優。
-
6 # CDA資料分析師
當然,從事資料分析工作,學習Python是再好不過的的。
Python語言
對於初級資料分析師,會寫SQL查詢,有需要的話寫寫Hadoop和Hive查詢,基本就OK了。
對於高階資料分析師,除了SQL以外,學習Python是很有必要的,用來獲取和處理資料都是事半功倍。當然其他程式語言也是可以的。
對於資料探勘工程師,Hadoop得熟悉,Python/Java/C++至少得熟悉一門,Shell得會用……總之程式語言絕對是資料探勘工程師的最核心能力了。
所以,學習哪種語言,還得取決於你自己的最終選擇,一定要想清楚喲。
-
7 # 火柴HONG227
可以啊,現在Python語言主要應用於爬蟲技術,對資料的抓取很精準,並且之所以Python會成為做資料分析的首選,也是因為有比較齊全的資料庫,利於抓取,很適合做資料分析。而且現在大資料技術和機器學習,都會用Python開發。北京尚學堂百戰程式設計師Python課程就很好呢,可以先試聽,再深入學習的。
-
8 # java學習指南
做資料分析是必須要學習python的,你要可以學會python很好就業的,現在市場這方面人才都不多,所以現在把python學好,未來發展前途還是非常好的。
-
9 # 碼上程功
資料分析是學習Python的主要就業方向之一,隨著大資料分析、資料探勘等資料相關領域的持續火熱, 用Python做資料分析的工作相信也越來越多,這也是促使Python語言本身再次火熱的原因之一。
讓我們從下面幾個方面來看看為什麼Python適合做資料分析:
1, 語言特性
Python是一門開源的、功能強大的動態程式語言, 對於動態語言來說, 往往提供開發友好的程式設計方式。 Python有強大的社群支援、有成千上萬的成熟庫和框架的支援。這使得使用Python做開發非常便捷。
2, 由於資料分析的庫和框架的支援
正是由於Python語言的流行性,在細分的各種工作領域中的庫的層出不窮,在資料分析領域尤為如此。 不僅僅是效能良好的基礎的Numpy庫, Scipy庫, 還有支援統計分析的Pandas庫, 支援機器學習的Scikit-Learn庫以及支援資料視覺化的matplotlib以及seaborn等等。每種庫和框架都足夠成熟適合現實生活中的資料分析工作要求。
另外,對於大資料領域中的流行框架如Spark, Tensorflow, PyTorch等, Python也是官方支援的主要介面語言。
3, 工具的支援
各種Python的IDE如PyCharm, Jupyter也對Python進行了良好的支援,使得資料分析的效率進一步提升。
4, 用Python作資料分析的資料豐富
-
10 # 安徽新華高階技工學校
優秀的資料分析師需要具備這樣一些素質:有紮實的 SQL 基礎,熟練使用 Excel,有統計學基礎,至少掌握一門資料探勘語言(R、SAS、Python、SPSS),有良好的溝通和表達能力,做好不斷學習的準備,有較強的資料敏感度和邏輯思維能力,深入瞭解業務,有管理者思維,能站在管理者的角度考慮問題。
回覆列表
python做資料分析可以說有一定的優勢,python很多人學習就是因為其在大資料、人工智慧方面的應用。
操作資料庫,支援關係型資料庫和非關係型資料傳統的關係型資料庫Mysql應用比較廣泛,python對mysql的支援很友好,透過呼叫第三方庫mysqldb可以很好的訪問資料庫的資料。
對於非關係型資料庫,也就是我們常說的Nosql,連線起來也很方便,透過pymongo這個第三方庫,我們就可以訪問和操作mongodb。
所以對於Python來說,訪問資料庫甚至於其它檔案都不是一件難事,相反很方便。
資料分析中的重要的資料視覺化部分我們在做資料分析的時候,經常要將資料分析後的結果,透過資料圖形展示出來。同時,在我們做分析的時候,透過圖形可以一步一步地逼近資料分析結果,在這方面Python有很豐富的庫支援,R語言流行的ggplot2庫在Python上也可以使用,同時特有seaborn庫在視覺化方面也是相當的不錯,此庫結合了matplotlib庫相關的畫圖特性。比如下圖中的圖就是利用seaborn畫出來的,看起來特別舒服。
python在資料分析上的應用具有其一定的優勢,而且應用也比較廣泛,我們碰到的問題,可以利用第三方庫得麼完美的支援,這和Python語言的設計初衷有直接有的關係。