提出問題 資料再加工(包括資料採集和資料清理) 資料探索(培養直覺,找出資料模式) –> 總結,進行** –> 與他人交流結果(部落格、**、電子郵件、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是一種動態弱型別語言,變數在使...