pandas讀取 運算資料時,如何讓電腦效能最大化

2021-10-02 05:17:44 字數 2685 閱讀 8764

pandas庫是python中最有名的資料分析庫,但是有乙個很煩人的缺點:不適用於大規模資料。

pandas預設只呼叫電腦單個的cpu進行資料讀取和運算【python程式中的多執行緒程式設計實現實際上都是偽實現】。

但是當前的電腦大多是4核,甚至8核,而如果常規使用pandas意味著我們沒有充分使用電腦的效能。

有問題出現,自然就會圍繞問題產生很多的創意設計和解決方案,這是世界得以發展的根源所在,扯遠了,回正題。

給大家推薦一款專門為加速pandas而開發的包----【modin】, 這個庫可以自動按照電腦cpu數調整執行的核數。

2.1 安裝方法

pip install modin
2.2 modin使用

匯入pandas的時候通過modin.pandas進行匯入。

import modin.pandas as pd
2.3 對比使用modin.pandas和pandas的讀取資料效能差異

使用modin.pandas讀取資料:

import time

import modin.pandas as pd

starttime = time.time(

)df = pd.read_csv(

'data/test.csv'

)endtime = time.time(

)print(%

(endtime-starttime)

)

使用pandas讀取資料:

import time

import pandas as pd

starttime = time.time(

)df = pd.read_csv(

'data/test.csv'

)endtime = time.time(

)print(%

(endtime-starttime)

)

modin只用了0.55s,讀取資料的速度加快了2.4倍。

2.4 對比使用modin.pandas和pandas的處理資料效能差異

使用pandas處理資料:

import time

import pandas as pd

df = pd.read_csv(

'data/test.csv'

)starttime = time.time(

)newdf = pd.concat(

[df for _ in

range

(100)]

)endtime = time.time(

)print

(endtime-starttime)

====

====

====

====

====

====

====

====

====

====

====

====

=8.425022888182846

使用modin.pandas處理資料:

import time

import modin.pandas as pd

df = pd.read_csv(

'data/test.csv'

)starttime = time.time(

)newdf = pd.concat(

[df for _ in

range

(100)]

)endtime = time.time(

)print

(endtime-starttime)

====

====

====

====

====

====

====

====

====

====

====

====

=0.6486723553767629

同樣的pandas中的concat()方法操作,使用modin.pandas比pandas快了15倍多

modin目前仍然正在不斷更新中,並不支援所有的pandas的函式加速。如果加速遇到報錯,說明這個操作modin不支援。

預設modin會呼叫電腦全部的cpu,如果不想全部呼叫,可以使用ray來限制cpu使用數。

import ray

import warnings

warnings.filterwarnings(

'ignore'

)ray.init(num_cpus=

2, ignore_reinit_error=

true

)import modin.pandas as pd

如果待操作的資料檔案遠大於電腦記憶體ram,可以設定

import os

os.environ[

"modin_out_of_core"]=

'true'

import modin.pandas as pd

Pandas讀取csv時如何設定列名

1.csv檔案自帶列標題 import pandas as pd df example pd.read csv pandas example read.csv 等同於 df example pd.read csv pandas example read.csv header 0 2.csv檔案有列標...

pandas讀取資料

導庫 import pandas as pd fpath d 123.csv 讀取資料 book pd.read csv fpath 檢視全部內容 book idusename course01 張三7512 李四8023 王二8334 張華9045 小明7856 小紅7667 小七90 檢視前5行...

Pandas 資料讀取

1.讀取table 讀取普通分隔資料 read table 可以讀取txt,csv import osos.chdir f 首先設定一下讀取的路徑 data1 pd.read table data1.txt delimiter header 0 print data1 data1 pd.read t...