資料分析之旅(一)

2021-07-26 20:02:05 字數 2899 閱讀 4274

提出問題 資料再加工(包括資料採集和資料清理) 資料探索(培養直覺,找出資料模式) –> 總結,進行** –> 與他人交流結果(部落格、**、電子郵件、ppt、面談)

並且所有的過程都可能回到第乙個階段:提出問題
2. 從api獲取資料;

3. 從網頁中爬取資料;

4. 對多種不同格式的資料進行合併;

開啟乙個csv檔案:

對比一下在sublime text 3中開啟:

可以看到,每乙個單元後面有乙個逗號。因此,csv檔案容易通過程式設計來處理。
csv檔案內容為一系列的行,而行的顯示方式有兩種:

1. 每一行都是乙個列表,那麼整個檔案內容就是一系列的列表;

2. 每一行都是乙個字典,用於 有標題行的檔案(字典的關鍵字作為列的名字,欄位則作為值),那麼整個檔案內容就是一系列的字典。

python中有個庫:unicodecsv(是 anaconda 附帶的模組,並且支援 unicode) 可以幫助我們讀取csv檔案內容:

在這裡第三行, 用到了dictreader,表明每一行都是乙個字典

attention:

1. 閱讀器(reader)是一種迭代器 ;

2. csv庫不會檢查各列的型別,因此需要修正資料型別,盡量在得到資料後就進行修正,避免後續的錯誤;

在這次的小練習中,有四個csv檔案:

1.enrollments.csv; 學生註冊資訊檔案 

2.daily_engagement.csv;學生每一天的記錄檔案 3.project_submissions.csv;學生專案提交資料表檔案

4.daily_engagement_full.csv;更完整的每日記錄檔案

任務:在前三個檔案中,找出csv檔案中的總行數以及不重複學員的數量。

思路:

csv檔案總行數比較簡單,用reader獲取內容以後直接用python的len()函式即可;

對於不重複的學員的數量。首先,我是先檢視每一行的資料結構:

根據文件裡所述,這裡,account_key就是標識學員的id。

**如下:

import unicodecsv

defread_csv

(filename):

with open(filename, 'rb') as f:

reader = unicodecsv.dictreader(f)

return list(reader)

enrollments = read_csv('enrollments.csv')

daily_engagement = read_csv('daily_engagement.csv')

project_submissions = read_csv('project_submissions.csv')

defunique_students

(csvlist,keyname):

s = set()

for each in csvlist:

s.add(each[keyname])

return s

enrollment_num_rows = len(enrollments)

enrollment_num_unique_students = len(unique_students(enrollments,"account_key"))

engagement_num_rows = len(daily_engagement)

engagement_num_unique_students = len(unique_students(daily_engagement,"acct"))

submission_num_rows = len(project_submissions)

submission_num_unique_students = len(unique_students(project_submissions,"account_key"))

結果:第乙個檔案的行數:1640

有登記的學生數:1302

第二個檔案行數:136240

有記錄的學生數:1237

第三個檔案行數:3642

有提交專案的學生數:743

遇到的問題:

一開始一直遇到keyerror的問題。明明檔案裡有這個key,卻一直報錯。而keyerror異常是在取不到對應key的value情況下報的。

解決:後來發現是因為第二個檔案用來唯一標識學員用的是 「acct」。確實是人錯了0 0不是機器錯了。哭暈在廁所 /(ㄒoㄒ)/~~

資料分析之旅(四)

解決資料分析中問題的步驟 1.確定哪些資料是異常點 2.列印出部分的資料異常點 3.看看能不能發現什麼問題 話說上一回,學員第一周的上課最長時間 10568.100867332541 minutes 超過了每週的總分鐘數 10080 minutes 首先,要先找到這個擁有異常資料點的學生 因為字典t...

資料分析探索之旅(一) 學習資料分析的初衷與規劃

這是我的第一篇部落格,開通這個部落格的主要目的是記錄一些自己的學習心得,以方便自己隨時進行回顧,也希望能藉此平台認識一些志同道合的朋友,如果有大神能看到我的文章過來指點指點那就更好了!資料分析之旅是我準備編寫的系列文章,內容就是我在學習資料分析過程中的一些要點總結。作為系列第一篇文章,我想談談為什麼...

01 開始Python資料分析之旅

序號 庫 模組 名稱說明1 numpy python數學庫 2pandas python資料分析庫 python anaylise data 3matplotlib python繪相簿 4json json格式資料處理模組 5xml xml個數資料處理模組 python是一種動態弱型別語言,變數在使...