目前在做P2的項目,感覺自己在處理數據方面的經驗還是很有所欠缺的,很多時候基礎不夠牢固,寫不出來自己想要完成的步驟,及時進行梳理和總結來提高自己的編碼能力。
數據處理的過程 Question-Wrangle-Explore-Draw conclusion-Communicate
問題一定要明確,這要求一名分析師應當熟悉行業信息,而且有一定的觀察能力,
數據采集+數據整理(DATA ACQUSITION+ DATA CLEANING)
數據挖掘,數據分析 統計學的基礎
數據整理:導入+重新組合
數據導入根據文件類型的不同可以分為 1.讀取文本文件及其它磁盤存儲格式 2.加載數據庫中的數據 3.利用Web API操作網絡資源
常見的數據文件類型:
1. CSV (comma seperated values) 逗號分隔值文件 默認分隔符為逗號, pd.read_vsv('filename')命令直接導入, 逐行讀取 nrow= 逐塊讀取chunksize= 、
2. JSON(JavaScript Object Notation) :更加靈活 JSON接近Python代碼,可以利用json庫對JSON文件進行相關的操作 json.loads 讀取 json.dumps將Python對象轉換為JSON格式
3.XML和HTMLshuju lxml庫進行處理 HTML中的標簽是我們處理的目標
4. XLS excle文件 xlrd包進行處理
5.SQL等數據庫導入
數據類型的轉換處理
1 from datetime import datetime as dt 2 def parse_date(date): 3 if date==' ' : 4 return None 5 else: 6 return dt.strptime(date, '%Y-%m-%d') 7 def parse_maybe_int(i): 8 if i == ' ' : 9 return None 10 else: 11 return int(i)
read_csv命令默認的導入數據類型為字符串,需要按照實際應用情況進行數據類型的轉換,轉換為布爾值和整數值,浮點數
datetime是關於日期創建的類,完成日期的相關操作
dic , set 與 list
創建: paid_students= {} students=set() enrollments=list[] (也可以使用list迭代器命令直接 省略循環語句和添加語句)
enrollments= [] f=open('enrollments.csv', 'rb') reader= unicodecsv.DictReader(f) for row in reader: enrollments.append(row) f.close() 可以簡化為 with open(enrollments.csv', 'rb') as f: reader = unicodecsv.DictReader(f) #DictReader 讀取每行數據並保存為字典格式 enrollments = list(reader) #list迭代器命令直接生成一個列表
篩選:if條件句
增添元素:for 循環遍歷數據源 enrollments['account_key'] 定位數據
dic: paid_students[account_key] = enrollment_date #直接默認account_key 為key值 enrollment_date 為value值
set:students.add(enrollment['account_key'])
顯示長度: len( )