1. 程式人生 > >《Python資料分析與挖掘實戰》程式碼問題

《Python資料分析與挖掘實戰》程式碼問題

本文轉自:http://blog.csdn.net/qq_27469517/article/details/53482563

整個第四章都是資料預處理。

4.1是資料清洗。就是處理無關資料,缺失或者異常資料等等。

具體看書,就不贅述了,還是上程式碼實踐。

書上給的程式碼是有問題的!

  1. #拉格朗日插值程式碼
  2. import pandas as pd #匯入資料分析庫Pandas
  3. from scipy.interpolate import lagrange #匯入拉格朗日插值函式
  4. inputfile = 'data/catering_sale.xls'#銷量資料路徑
  5. outputfile = 'tmp/sales.xls'#輸出資料路徑
  6. data = pd.read_excel(inputfile) #讀入資料
  7. data[u'銷量'][(data[u'銷量'] < 400) | (data[u'銷量'] > 5000)] = None#過濾異常值,將其變為空值
  8. #自定義列向量插值函式
  9. #s為列向量,n為被插值的位置,k為取前後的資料個數,預設為5
  10. def ployinterp_column(s, n, k=5):  
  11.   y = s[list(range(n-k, n)) + list(range(n+1, n+1+k))] #取數
  12.   y = y[y.notnull()] #剔除空值
  13.   return lagrange(y.index, list(y))(n) #插值並返回拉格朗日插值結果
  14. #逐個元素判斷是否需要插值
  15. for i in data.columns:  
  16.   for j in range(len(data)):  
  17.     if (data[i].isnull())[j]: #如果為空即插值。
  18.       data[i][j] = ployinterp_column(data[i], j)  
  19. data.to_excel(outputfile) #輸出結果,寫入檔案

究其原因,應該是

  1. data[u'銷量'][(data[u
    '銷量'] < 400) | (data[u'銷量'] > 5000)] = None#過濾異常值,將其變為空值
這句話有問題。

改正方法主要是 .loc 函式進行修改。

.loc 函式主要是選定指定列操作,參見 http://blog.csdn.net/chixujohnny/article/details/51095817

參考下面這個連結

http://blog.csdn.net/o1101574955/article/details/51627401

給出了修改版:

  1. # -*- coding:utf-8 -*-
  2. #拉格朗日插值程式碼
  3. import pandas as pd #匯入資料分析庫Pandas
  4. from scipy.interpolate import lagrange #匯入拉格朗日插值函式
  5. inputfile = 'data/catering_sale.xls'#銷量資料路徑
  6. outputfile = 'tmp/sales.xls'#輸出資料路徑
  7. data = pd.read_excel(inputfile) #讀入資料
  8. #data[u'銷量'][(data[u'銷量'] < 400) | (data[u'銷量'] > 5000)] = None #過濾異常值,將其變為空值
  9. row_indexs = (data[u'銷量'] < 400) | (data[u'銷量'] > 5000)  #得到過濾資料的索引
  10. data.loc[row_indexs,u'銷量'] = None#過濾資料
  11. #自定義列向量插值函式
  12. #s為列向量,n為被插值的位置,k為取前後的資料個數,預設為5
  13. def ployinterp_column(s, n, k=5):  
  14.     y = s[list(range(n-k, n)) + list(range(n+1, n+1+k))] #取數
  15.     y = y[y.notnull()] #剔除空值
  16.     return lagrange(y.index, list(y))(n) #插值並返回拉格朗日插值結果
  17. #逐個元素判斷是否需要插值
  18. for i in data.columns:  
  19.     for j in range(len(data)):  
  20.         if (data[i].isnull())[j]: #如果為空即插值。
  21. #       data[i][j] = ployinterp_column(data[i], j)
  22.             data.loc[j,i] = ployinterp_column(data[i], j)  
  23. data.to_excel(outputfile) #輸出結果,寫入檔案



這時候我在 http://blog.csdn.net/aq_cainiao_aq/article/details/53257136 也看見一篇,我沒試過,可以參考。

def那段程式碼應該要結合拉格朗日插值法具體看,現在簡單分析一下:

s為列向量,n為被插值的位置,k為取前後的資料個數,預設為5。

返回的拉格朗日函式有兩個值,y.index應該是插值位置,list(y) 就是結果吧。

可惜沒找到關於 lagrange 函式的說明,只能猜。 

現在的問題是,日期全變成了 ######,想想怎麼修改呢?

其實日期是沒問題的,但是後面多了時分秒,太長了就變成了######。我不想要這個東西。

去百度搜索了很久,http://blog.csdn.net/dm_vincent/article/details/48696857 參考了一下這個,但是感覺沒看懂。

不過呢,插值算是處理好了。

===================================================================================================

4.3講的是資料變換

主要是資料的規範化處理,把資料轉換成“適當的”形式。

程式碼就是狗屎,我自己補充了一下,給的程式碼不僅沒有 print ,還tm少了一個 import,真的服了

  1. #-*- coding: utf-8 -*-
  2. #資料規範化
  3. import pandas as pd  
  4. import numpy as np  
  5. datafile = 'data/normalization_data.xls'#引數初始化
  6. data = pd.read_excel(datafile, header = None#讀取資料
  7. print (data - data.min())/(data.max() - data.min()) #最小-最大規範化
  8. print (data - data.mean())/data.std() #零-均值規範化
  9. print data/10**np.ceil(np.log10(data.abs().max())) #小數定標規範化

Python資料分析挖掘實戰程式碼問題

本文轉自:http://blog.csdn.net/qq_27469517/article/details/53482563 整個第四章都是資料預處理。 4.1是資料清洗。就是處理無關資料,缺失或者異常資料等等。 具體看書,就不贅述了,還是上程式碼實

python資料分析挖掘實戰》筆記-3.1程式碼問題

問題 今天看到《python資料分析與挖掘實戰》這本書的第三章的第一份程式碼,照著書上的程式碼敲了一遍,發現在異常值處理的部分會報錯。 x = p['fliers'][0].get_xdata() y = p['fliers'][0].get_ydata()

菜鷄日記——《Python資料分析挖掘實戰》實驗6-1 拉格朗日插值法

實驗6-1 用拉格朗日插值法 題目描述:用拉格朗日插值法對missing_data.xls中表格的空值進行填補。 # p1, lab6 # Fill all of the null values with Lagrange's interpolation # Data file name i

Python資料分析挖掘實戰 pdf下載

Python資料分析與挖掘實戰是10餘位資料探勘領域資深專家和科研人員,10餘年大資料探勘諮詢與實施經驗結晶。從資料探勘的應用出發,以電力、航空、醫療、網際網路、生產製造以及公共服務等行業真實案例為主線,深入淺出介紹Python資料探勘建模過程,實踐性極強。 本書共15章,分兩個部分:基礎

推薦書籍《Python資料分析挖掘實戰》附下載連結

“10餘位資料探勘領域資深專家和科研人員,10餘年大資料探勘諮詢與實施經驗結晶。從資料探勘的應用出發,以電力、航空、醫療、網際網路、生產製造以及公共服務等行業真實案例為主線,深入淺出介紹Python資料探勘建模過程,實踐性極強。 本書共15章,分兩個部分:基礎

Python資料分析挖掘實戰》筆記(一):資料探勘基礎

一、資料探勘的基本任務 利用分類與預測、聚類分析、關聯規則、時序模式、偏差檢測、智慧推薦等方法,幫助企業提取資料中蘊含的商業價值,提升企業的競爭力。 二、資料探勘建模過程 定義挖掘目標:任務目標和完

Python資料分析挖掘實戰挖掘建模

常用的分類與預測演算法 1迴歸模型分類 1線性迴歸---自變數因變數線性關係,最小二乘法求解 2非線性迴歸--自變數因變數非線性關係,函式變換為線性關係,或非線性最小二乘方法求解 3logistic迴

Python資料分析挖掘實戰(Pandas,Matplotlib常用方法)

作業系統:Windows Python:3.5 歡迎加入學習交流QQ群:657341423 上節講到資料分析和挖掘需要的庫,其中最主要的是Pandas,Matplotlib。 Pandas:主要是對資料分析,計算和統計,如求平均值,方差等。 Matplotl

Python資料分析挖掘實戰》第7章——kmeans

本文是基於《Python資料分析與挖掘實戰》的實戰部分的第七章的資料——《航空公司客戶價值分析》做的分析。旨在補充原文中的細節程式碼,並給出文中涉及到的內容的完整程式碼。 1)在資料預處理部分增加了屬性規約、資料變換的程式碼2)在模型構建的部分增加了一個畫出雷達圖的函式程式碼

python資料分析挖掘實戰 第六章 拓展思考

企業偷漏稅識別模型 1、資料探索 偷漏稅企業分佈 首先生成data import pandas as pd inputfile = r'E:\Download\百度雲\圖書配套資料、程式碼\chapter6\拓展思考\tax.xls' data =

Python資料分析挖掘實戰》第13章——迴歸+DNN

本文是基於《Python資料分析與挖掘實戰》的實戰部分的第13章的資料——《財政收入影響因素分析及預測模型》做的分析。旨在補充原文中的細節程式碼,並給出文中涉及到的內容的完整程式碼。在作者所給程式碼的基礎上增加的內容包括: 1)探索了灰色預測的原理 2)畫出預測結果圖3)由於

Python資料分析挖掘實戰》第15章——文字挖掘

本文是基於《Python資料分析與挖掘實戰》的實戰部分的第15章的資料——《電商產品評論資料情感分析》做的分析。旨在回顧對評論文字資料的處理和建模方法。1 挖掘背景與目標    對京東平臺上的熱水器評論進行文字挖掘分析,挖掘建模如下:1)分析某一個品牌熱水器的使用者情感傾向2

Python資料分析挖掘實戰』第五章:挖掘建模

# coding:utf-8 """ logistic 迴歸, 自動建模 """ import pandas as pd # 引數初始化 filename = r"C:\learning\DataMining\Book\Python_DataMining\Data\cha

Python資料分析挖掘實戰學習筆記(一)

資料預處理1.     資料清洗(1)缺失值處理三種方法:刪除記錄、資料插補、不處理常見插補方法:均值/中位數/眾數插補、使用固定值/期望值、迴歸方法(根據已有資料和其他與其有關變數等建立擬合模型來預測)、插值法(利用已知點建立合適的插值函式,如拉格朗日函式)我們以餐廳銷量資

給出《Python資料分析挖掘實戰資料技術叢書》Aprior演算法另一種寫法

背景 關聯規則應用,一般是為了尋求:已知某些項在一定概率下推匯出另一項,這樣的組合。 當然在資料量比較小的時候,這樣的問題可以窮盡的,但是在資料量比較大時,搜尋將成為瓶頸。 Aprior演算法提出頻繁項

python資料分析挖掘實戰 第九章 拓展練習

這一章的拓展練習感覺是比較簡單的。基本上沒有太多讓人糾結的地方。沒有特徵提取和資料規約,讓事情簡單了不少。當然不包括寫出C4.5的決策樹,我也沒有那麼寫。 讀取資料,劃分訓練集和測試集,不用多說。

python資料分析挖掘實戰 第七章 拓展思考

流失客戶分類模型 1 資料預處理 如果動手做過的人可能面臨的第一個問題就是,這資料讀進pandas怎麼弄編碼結果都是錯的。如果你存在這樣的問題,那麼我建議你使用NotePad++載入檔案以後,改成無BOM的UTF-8編碼,然後就可以正常讀取了。 資料預處理部

Python資料分析挖掘實戰》筆記(五):資料建模

分類與預測 主要分類與預測演算法 迴歸分析 確定預測值與其他變數關係。線性、非線性、Logistic、嶺迴歸、主成分迴歸等 決策樹 自頂向下分類 人工神經網路 用神經網路表示輸入與輸出之間的關係 貝葉斯網路 又稱信度網路,是不確定知識表達和推理領域最有效的理論模