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...