利用python如何處理百萬條數(shù)據(jù)(適用java新手)
1、前言
因為負責基礎服務,經常需要處理一些數(shù)據(jù),但是大多時候采用awk以及java程序即可,但是這次突然有百萬級數(shù)據(jù)需要處理,通過awk無法進行匹配,然后我又采用java來處理,文件一分為8同時開啟8個線程并發(fā)處理,但是依然處理很慢,處理時長起碼在1天+所以無法忍受這樣的處理速度就采用python來處理,結果速度有了質的提升,大約處理時間為1個小時多一點,這個時間可以接受,后續(xù)可能繼續(xù)采用大數(shù)據(jù)思想來處理,相關的會在后續(xù)繼續(xù)更新。
2、安裝python
第一步首先下載python軟件,在官網可以根據(jù)自己情況合理下載,大家也可以通過腳本之家進行下載其余就是下一步搞定,然后在開始里面找到python的exe,點擊開然后輸入1+1就可以看出是否安裝成功了.如下圖
3、IEDA編輯器如何使用python
首先我們在idea中打開設置然后點擊plugins,在里面有個輸入框中輸入python,根據(jù)提示找到如下的這個(idea版本不同可能影響python版本)
然后開始創(chuàng)建idea工程
file->New->Project->python然后出現(xiàn)如下圖情況(其他的下一步然后就會創(chuàng)建工程了)

4、開發(fā)前知識準備
文件的讀取,python讀取文件非常的簡單,我現(xiàn)在直接貼代碼提供給大家
def readData(fileName): result = "" count=0 with open(fileName, 'r') as f: for line in f.readlines(): result += line count += 1 print count return result """寫入文件""" def writeData(fileName, data): with open(fileName, 'a+')as f: f.write(data)
其中def是函數(shù)的定義,如果我們寫定義一個函數(shù)直接前面加上def,返回值可以獲取后直接用return即可
python我們直接采用with open('文件路徑',模式) as f的方式來打開文件
模式:
| r | 只讀 | 文件不存在則出錯 |
| r+ | 支持讀寫 | 文件不存在則出錯,寫入時,會覆蓋源文件 |
| w | 只寫 | 如果文件不存在則創(chuàng)建文件,會覆蓋源文件,如果寫入內容少則保留為覆蓋的內容 |
| w+ | 支持讀寫 | 同上 |
| a | 只寫 | 如果文件不存在則創(chuàng)建文件,會采用追加模式 |
| a+ | 讀寫 | 同上 |
| b | 二進制讀寫 |
跨文件引用:
同一個層級python是采用import直接導入文件名的方式,看下一個代碼
import IoUtils
fileName1 = 'D:\\works\\pythons\\files\\userids.txt'
userIds = IoUtils.readData(fileName1).split('\n')
fileName2 = 'D:\\works\\pythons\\files\\records.txt'
records = IoUtils.readData(fileName2).strip()
recordsArr = records.split('\n')
count=0;
for data in recordsArr:
count+=1
if data.split('\t')[2] in userIds:
IoUtils.writeData('D:\\works\\pythons\\files\\20180604.txt', data + '\n')
print count
其他說明:
其中split和java程序的split一樣,strip是去掉空格換行符等,循環(huán)(for in)模式,判斷某個元素是否在數(shù)組中存在則直接使用 元素 in 數(shù)組
5、總結
如果你有數(shù)據(jù)量級別在百分的時候我建議優(yōu)先可以想到python處理真的特別方便,而且很簡單學習成本也很低,但是卻很實用,其實awk在數(shù)據(jù)處理中也發(fā)揮很大的作用,大家可以私下學習,如果有時間我會分享一些,關于數(shù)據(jù)我這里就不提供了大家可以按照我上述代碼跑就可以,更細節(jié)的我推薦看廖雪峰的python教程。
好了,以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
- python處理json數(shù)據(jù)中的中文
- 在Python中利用Pandas庫處理大數(shù)據(jù)的簡單介紹
- python處理csv數(shù)據(jù)的方法
- python處理二進制數(shù)據(jù)的方法
- 從零學python系列之數(shù)據(jù)處理編程實例(二)
- 從零學python系列之數(shù)據(jù)處理編程實例(一)
- python數(shù)據(jù)預處理之將類別數(shù)據(jù)轉換為數(shù)值的方法
- python數(shù)據(jù)清洗系列之字符串處理詳解
- python數(shù)據(jù)處理實戰(zhàn)(必看篇)
- Python處理XML格式數(shù)據(jù)的方法詳解
相關文章
Python使用crontab模塊設置和清除定時任務操作詳解
這篇文章主要介紹了Python使用crontab模塊設置和清除定時任務操作,結合實例形式分析了centos7平臺上Python安裝、python-crontab模塊安裝,以及基于python-crontab模塊的定時任務相關操作技巧,需要的朋友可以參考下2019-04-04
python 把文件中的每一行以數(shù)組的元素放入數(shù)組中的方法
下面小編就為大家分享一篇python 把文件中的每一行以數(shù)組的元素放入數(shù)組中的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-04-04
python cv2讀取rtsp實時碼流按時生成連續(xù)視頻文件方式
今天小編就為大家分享一篇python cv2讀取rtsp實時碼流按時生成連續(xù)視頻文件方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12

