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

4、開(kāi)發(fā)前知識(shí)準(zhǔn)備
文件的讀取,python讀取文件非常的簡(jiǎn)單,我現(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ù)的定義,如果我們寫定義一個(gè)函數(shù)直接前面加上def,返回值可以獲取后直接用return即可
python我們直接采用with open('文件路徑',模式) as f的方式來(lái)打開(kāi)文件
模式:
| r | 只讀 | 文件不存在則出錯(cuò) |
| r+ | 支持讀寫 | 文件不存在則出錯(cuò),寫入時(shí),會(huì)覆蓋源文件 |
| w | 只寫 | 如果文件不存在則創(chuàng)建文件,會(huì)覆蓋源文件,如果寫入內(nèi)容少則保留為覆蓋的內(nèi)容 |
| w+ | 支持讀寫 | 同上 |
| a | 只寫 | 如果文件不存在則創(chuàng)建文件,會(huì)采用追加模式 |
| a+ | 讀寫 | 同上 |
| b | 二進(jìn)制讀寫 |
跨文件引用:
同一個(gè)層級(jí)python是采用import直接導(dǎo)入文件名的方式,看下一個(gè)代碼
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
其他說(shuō)明:
其中split和java程序的split一樣,strip是去掉空格換行符等,循環(huán)(for in)模式,判斷某個(gè)元素是否在數(shù)組中存在則直接使用 元素 in 數(shù)組
5、總結(jié)
如果你有數(shù)據(jù)量級(jí)別在百分的時(shí)候我建議優(yōu)先可以想到python處理真的特別方便,而且很簡(jiǎn)單學(xué)習(xí)成本也很低,但是卻很實(shí)用,其實(shí)awk在數(shù)據(jù)處理中也發(fā)揮很大的作用,大家可以私下學(xué)習(xí),如果有時(shí)間我會(huì)分享一些,關(guān)于數(shù)據(jù)我這里就不提供了大家可以按照我上述代碼跑就可以,更細(xì)節(jié)的我推薦看廖雪峰的python教程。
好了,以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
- python處理json數(shù)據(jù)中的中文
- 在Python中利用Pandas庫(kù)處理大數(shù)據(jù)的簡(jiǎn)單介紹
- python處理csv數(shù)據(jù)的方法
- python處理二進(jìn)制數(shù)據(jù)的方法
- 從零學(xué)python系列之?dāng)?shù)據(jù)處理編程實(shí)例(二)
- 從零學(xué)python系列之?dāng)?shù)據(jù)處理編程實(shí)例(一)
- python數(shù)據(jù)預(yù)處理之將類別數(shù)據(jù)轉(zhuǎn)換為數(shù)值的方法
- python數(shù)據(jù)清洗系列之字符串處理詳解
- python數(shù)據(jù)處理實(shí)戰(zhàn)(必看篇)
- Python處理XML格式數(shù)據(jù)的方法詳解
相關(guān)文章
Python存儲(chǔ)List數(shù)據(jù)到文件(text/csv/excel)幾種常見(jiàn)方法
在數(shù)據(jù)分析中經(jīng)常需要從csv格式的文件中存取數(shù)據(jù)以及將數(shù)據(jù)寫書到csv文件中,下面這篇文章主要給大家介紹了關(guān)于Python存儲(chǔ)List數(shù)據(jù)到文件(text/csv/excel)的幾種常見(jiàn)方法,需要的朋友可以參考下2024-02-02
Python編譯為二進(jìn)制so可執(zhí)行文件實(shí)例
今天小編就為大家分享一篇Python編譯為二進(jìn)制so可執(zhí)行文件實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12
解決Python 爬蟲URL中存在中文或特殊符號(hào)無(wú)法請(qǐng)求的問(wèn)題
今天小編就為大家分享一篇解決Python 爬蟲URL中存在中文或特殊符號(hào)無(wú)法請(qǐng)求的問(wèn)題。這種問(wèn)題,初學(xué)者應(yīng)該都會(huì)遇到,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05
關(guān)于Python中compile() 函數(shù)簡(jiǎn)單實(shí)用示例詳解
這篇文章主要介紹了關(guān)于compile() 函數(shù)簡(jiǎn)單實(shí)用示例,compile() 函數(shù)將一個(gè)字符串編譯為字節(jié)代碼,compile將代碼編譯為代碼對(duì)象,應(yīng)用在代碼中可以提高效率,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05
使用Python實(shí)現(xiàn)炫酷的數(shù)據(jù)動(dòng)態(tài)圖大全
數(shù)據(jù)可視化是通過(guò)圖形、圖表、地圖等可視元素將數(shù)據(jù)呈現(xiàn)出來(lái),以便更容易理解、分析和解釋,它是將抽象的數(shù)據(jù)轉(zhuǎn)化為直觀形象的過(guò)程,本文給大家介紹了使用Python實(shí)現(xiàn)炫酷的數(shù)據(jù)動(dòng)態(tài)圖大全,需要的朋友可以參考下2024-06-06
Python統(tǒng)計(jì)詞頻的幾種方法小結(jié)
本文主要介紹了Python統(tǒng)計(jì)詞頻的幾種方法小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03
python數(shù)據(jù)分析基礎(chǔ)之pandas中l(wèi)oc()與iloc()的介紹與區(qū)別介紹
我們經(jīng)常在尋找數(shù)據(jù)的某行或者某列的時(shí)常用到Pandas中的兩種方法iloc和loc,兩種方法都接收兩個(gè)參數(shù),第一個(gè)參數(shù)是行的范圍,第二個(gè)參數(shù)是列的范圍,這篇文章主要介紹了python數(shù)據(jù)分析基礎(chǔ)之pandas中l(wèi)oc()與iloc()的介紹與區(qū)別,需要的朋友可以參考下2024-07-07

