python大數據思路
#coding:utf-8
#file: FileSplit.py
import os,os.path,time
def FileSplit(sourceFile, targetFolder):
sFile = open(sourceFile, 'r')
number = 100000 #每個小文件中保存100000條數據
dataLine = sFile.readline()
tempData = [] #緩存列表
fileNum = 1
if not os.path.isdir(targetFolder): #如果目標目錄不存在,則創建
os.mkdir(targetFolder)
while dataLine: #有數據
for row in range(number):
tempData.append(dataLine) #將一行數據添加到列表中
dataLine = sFile.readline()
if not dataLine :
break
tFilename = os.path.join(targetFolder,os.path.split(sourceFile)[1] + str(fileNum) + ".txt")
tFile = open(tFilename, 'a+') #創建小文件
tFile.writelines(tempData) #將列表保存到文件中
tFile.close()
tempData = [] #清空緩存列表
print(tFilename + " 創建於: " + str(time.ctime()))
fileNum += 1 #文件編號
sFile.close()
if __name__ == "__main__" :
FileSplit("access.log","access")
====
#coding:utf-8
#file: Map.py
import os,os.path,re
def Map(sourceFile, targetFolder):
sFile = open(sourceFile, 'r')
dataLine = sFile.readline()
tempData = {} #緩存列表
if not os.path.isdir(targetFolder): #如果目標目錄不存在,則創建
os.mkdir(targetFolder)
while dataLine: #有數據
p_re = re.compile(r'(GET|POST)\s(.*?)\sHTTP/1.[01]',re.IGNORECASE) #用正則表達式解析數據
match = p_re.findall(dataLine)
if match:
visitUrl = match[0][1]
if visitUrl in tempData:
tempData[visitUrl] += 1
else:
tempData[visitUrl] = 1
dataLine = sFile.readline() #讀入下一行數據
sFile.close()
tList = []
for key,value in sorted(tempData.items(),key = lambda k:k[1],reverse = True):
tList.append(key + " " + str(value) + '\n')
tFilename = os.path.join(targetFolder,os.path.split(sourceFile)[1] + "_map.txt")
tFile = open(tFilename, 'a+') #創建小文件
tFile.writelines(tList) #將列表保存到文件中
tFile.close()
if __name__ == "__main__" :
Map("access\\access.log1.txt","access")
Map("access\\access.log2.txt","access")
Map("access\\access.log3.txt","access")
==
#coding:utf-8
#file: Rece.py
import os,os.path,re
def Rece(sourceFolder, targetFile):
tempData = {} #緩存列表
p_re = re.compile(r'(.*?)(\d{1,}$)',re.IGNORECASE) #用正則表達式解析數據
for root,dirs,files in os.walk(sourceFolder):
for fil in files:
if fil.endswith('_map.txt'): #是rece文件
sFile = open(os.path.abspath(os.path.join(root,fil)), 'r')
dataLine = sFile.readline()
while dataLine: #有數據
subdata = p_re.findall(dataLine) #用空格分割數據
#print(subdata[0][0]," ",subdata[0][1])
if subdata[0][0] in tempData:
tempData[subdata[0][0]] += int(subdata[0][1])
else:
tempData[subdata[0][0]] = int(subdata[0][1])
dataLine = sFile.readline() #讀入下一行數據
sFile.close()
tList = []
for key,value in sorted(tempData.items(),key = lambda k:k[1],reverse = True):
tList.append(key + " " + str(value) + '\n')
tFilename = os.path.join(sourceFolder,targetFile + "_rece.txt")
tFile = open(tFilename, 'a+') #創建小文件
tFile.writelines(tList) #將列表保存到文件中
tFile.close()
if __name__ == "__main__" :
Rece("access","access")
2. python大數據開發
So little score, so many questions.
3. Python在大數據領域是怎麼來應用的
有些辦法。比如使用array, numpy.array。 主要的思路是節約內存的使用,同時提高數據查詢的效率。
如果能夠注意這些內容,處理幾個GB的數據還是輕松的。 接下來就是分布式計算。 按maprece的思路。數據盡量在本地處理。所以演算法上要優化。主要是分段。
不管怎麼說。這幾個方面所有的語言都是相同的。即使你用的是C語言也一樣要考慮到這些。大數據因為量大,演算法也需要改進。
對於不能改進的演算法(好象還沒有遇到)也只好用python接C的擴展模塊了。 好在python與C有很好的介面。輕松就接上。
最近比較流行的方法是使用cython,一方面可以略略提高速度,另一方面與C有無縫的介面。
java在處理大數據方面速度與易用性略略占優勢。C++也經常會使用在核心演算法上。語言本身都不是問題。大部分時候大數據還是在處理演算法本身而不是語言。
在原型階段python很方便,快速,靈活。所以大數據處理中python是幾種語言中最適合的。特別是早期探索階段。業務與演算法經常變更。到了後期基本上都是C++了。java比較適合工程化階段。
4. python大數據需要學什麼
1、需求---->演算法
演算法-->獨自存在 解決問題的思想
特性:
輸入性
輸出性
有窮性
確定性
可行性
2、基本運算總數 ---->效率
3、問題規模N
T(N) ---N (數學概念:漸進函數)
時間復雜度---"O"
最優時間復雜度
最壞時間復雜度(重點)
平均時間復雜度
4、時間復雜度計算規則
1、常數項 操作 ---O(1)
2、順序結構 累和
3、循環結構 累積
4、分支結構 取時間復雜度最高
5、最壞時間復雜度(未說明)
6、只取最高次項 其他忽略
5、空間復雜度---了解就行
6、時間復雜度消耗時間的排序
O(1) < O(logn) < O(n) <O(nlogn) < O(n^2) < O(n^3) < O(2^n) < O(n!) < O(n^n)
7、對Python中list操作分析---->各個操作效率不同(時間復雜度不同)
工具模塊 :timeit
創建對象:timeit.Timer()
參數:
1、測試代碼段
2、導入語法
3、計時器(平台相關)
返回值:
time對象
調用方法:time.timeit()
參數:
1、設置測試次數
返回值:
時間(秒數 float類型)
8、list dict操作時間復雜度剖析
9、數據結構
概念:數據元素之間的關系
數據結構是演算法的載體
共同構成一個程序
抽象數據類型(ADT)
插入 刪除 修改 查找 排序
10、順序表---屬於線性表
連續內存,存儲形式
1、直接存儲數據(數據類型相同)
2、元素外置(存儲元素的對應地址)
千鋒Python的課程推薦你去試聽一下
5. 如何用Python進行大數據挖掘和分析
首先你要會一些常用的庫,從numpy pandas skitlearn 再到tensorflow
6. 大數據之Python模塊如何學習
階段一、人工智慧篇之Python核心
1、Python掃盲
2、面向對象編程基礎
3、變數和基本數據類專型
4、Python機器學習屬類庫
5、Python控制語句與函數
6.、Python資料庫操作+正則表達式
7、Lambda表達式、裝飾器和Python模塊化開發
階段二、人工智慧篇之資料庫交互技術
1、初識MySQL資料庫
2、創建MySQL資料庫和表
3、MySQL資料庫數據管理
4、使用事務保證數據完整性
5、使用DQL命令查詢數據
6、創建和使用索引
7、MySQL資料庫備份和恢復
7. 如何用python進行大數據挖掘和分析
毫不誇張地說,大數據已經成為任何商業交流中不可或缺的一部分。桌面和移動搜索向全世界的營銷人員和公司以空前的規模提供著數據,並且隨著物聯網的到來,大量用以消費的數據還會呈指數級增長。這種消費數據對於想要更好地定位目標客戶、弄懂人們怎樣使用他們的產品或服務,並且通過收集信息來提高利潤的公司來說無疑是個金礦。
篩查數據並找到企業真正可以使用的結果的角色落到了軟體開發者、數據科學家和統計學家身上。現在有很多工具輔助大數據分析,但最受歡迎的就是Python。
為什麼選擇Python?
Python最大的優點就是簡單易用。這個語言有著直觀的語法並且還是個強大的多用途語言。這一點在大數據分析環境中很重要,並且許多企業內部已經在使用Python了,比如Google,YouTube,迪士尼,和索尼夢工廠。還有,Python是開源的,並且有很多用於數據科學的類庫。所以,大數據市場急需Python開發者,不是Python開發者的專家也可以以相當塊速度學習這門語言,從而最大化用在分析數據上的時間,最小化學習這門語言的時間。
用Python進行數據分析之前,你需要從Continuum.io下載Anaconda。這個包有著在Python中研究數據科學時你可能需要的一切東西。它的缺點是下載和更新都是以一個單元進行的,所以更新單個庫很耗時。但這很值得,畢竟它給了你所需的所有工具,所以你不需要糾結。
現在,如果你真的要用Python進行大數據分析的話,毫無疑問你需要成為一個Python開發者。這並不意味著你需要成為這門語言的大師,但你需要了解Python的語法,理解正則表達式,知道什麼是元組、字元串、字典、字典推導式、列表和列表推導式——這只是開始。
各種類庫
當你掌握了Python的基本知識點後,你需要了解它的有關數據科學的類庫是怎樣工作的以及哪些是你需要的。其中的要點包括NumPy,一個提供高級數學運算功能的基礎類庫,SciPy,一個專注於工具和演算法的可靠類庫,Sci-kit-learn,面向機器學習,還有Pandas,一套提供操作DataFrame功能的工具。
除了類庫之外,你也有必要知道Python是沒有公認的最好的集成開發環境(IDE)的,R語言也一樣。所以說,你需要親手試試不同的IDE再看看哪個更能滿足你的要求。開始時建議使用IPython Notebook,Rodeo和Spyder。和各種各樣的IDE一樣,Python也提供各種各樣的數據可視化庫,比如說Pygal,Bokeh和Seaborn。這些數據可視化工具中最必不可少的就是Matplotlib,一個簡單且有效的數值繪圖類庫。
所有的這些庫都包括在了Anaconda裡面,所以下載了之後,你就可以研究一下看看哪些工具組合更能滿足你的需要。用Python進行數據分析時你會犯很多錯誤,所以得小心一點。一旦你熟悉了安裝設置和每種工具後,你會發現Python是目前市面上用於大數據分析的最棒的平台之一。
希望能幫到你!
8. 如何用Python分析大數據
基本主流的大數據框架和演算法庫都支持python,比如hadoop 和spark,需要你根據操作的狂降找到對應的python 庫