电脑安装pandas报错_一行代码让pandas加速数十倍

点击上方早起Python』关注并星标

第一时间接收最新Python干货!

8b34ecb9302ce5fbbd4069d0ae4ef2e3.png

pandas库是python中最有名的数据分析库,因为dataframe这种易用强大的数据类型,pandas成为数据科学必备套件。pandas可以和很多包联合使用,比如与机器学习sklearn、统计分析statsmodels、可视化searborn&matplotlib等等。下图是近几年python包的使用量趋势,pandas一骑绝尘

39f3a39df30887cfd0c611933a34fdee.png

但pandas有一个弱点:不适用于大规模数据。 pandas默认只调用电脑单个的CPU进行数据读取和运算,但是当前的电脑大多是4核,甚至8核,而如果常规使用pandas意味着我们没有充分使用电脑的性能。 Modin 是为加速pandas而开发的包,可以自动按照电脑CPU数调整运行的核数。

安装

pip install ray

pip install dask

pip install modin

modin使用

modin的用法与pandas相差无几,只是在导入的时候略有不同。

import modin.pandas as pd

现在这个pd就拥有与pandas一样的功能

读取速度

说了这么多了,我们先看看pandas导入test.csv文件(107M)的速度。

import time

import pandas as pd

start = time.time()

df = pd.read_csv('data/test.csv')

end = time.time()

print(end-start)

1.611081838607788

pandas导入107M的test.csv耗时1.78s

import time

import modin.pandas as pd

start = time.time()

#test.csv 107M

df = pd.read_csv('data/test.csv')

end = time.time()

print(end-start)

0.7474761009216309

modin只用了0.75s,加快了2.1倍。

运算速度

pd.concat是用来连接多个dataframe的操作函数,当我们的df很大时,pd.concat就会变慢。我们在这里实验一下pandas和modin各自的速度

import time

import pandas as pd

df = pd.read_csv('data/test.csv')

start = time.time()

newdf = pd.concat([df for _ in range(100)])

end = time.time()

print(end-start)

10.625022888183594

import time

import modin.pandas as pd

df = pd.read_csv('data/test.csv')

start = time.time()

newdf = pd.concat([df for _ in range(100)])

end = time.time()

print(end-start)

0.7488729953765869

同样的pd.concat操作,modin比pandas快了14倍。我又做了几个对比,制作成表格

d4daf6698af63a34d5cfd66e806b817c.png

实战技巧

modin目前仍然正在发展中,并不是所有的pandas的函数都能加速。如果加速遇到报错,说明这个操作modin不支持。

默认modin会调用电脑全部的cpu,如果不想全部调用,可以使用ray来限制cpu使用数。

import ray

import warnings

warnings.filterwarnings('ignore')

ray.init(num_cpus=4, ignore_reinit_error=True)

import modin.pandas as pd

如果待操作的数据文件远大于电脑内存RAM,可以设置

import os

os.environ["MODIN_OUT_OF_CORE"]='true'

import modin.pandas as pd

a672dcbd8dcdfd608c380f51a682339b.png

本周依旧给常读常分享用户赠书,两本从零开始学Python数据分析包邮送?明天公布名单~

7cc4bc9cdcbe89c9a458ffadc2fbd4cb.png

只要多看多分享就有机会获得,当然也可以点击下方小程序直接购买

往期精选(?猛戳可查看)670f924463a6072cd7d463ea750396d2.gif想做疫情分析却没有数据?看这篇就够了670f924463a6072cd7d463ea750396d2.gif520|解锁Python表白新姿势670f924463a6072cd7d463ea750396d2.gif备战520|Python花式表白的几种姿势670f924463a6072cd7d463ea750396d2.gif刚接触Python,这么多IDE我该怎么选670f924463a6072cd7d463ea750396d2.gif收藏| Scrapy框架各组件详细设置670f924463a6072cd7d463ea750396d2.gifPython对比并提取两份Word/Excel文件f6d0e246ceed6696323dfcbe06aff258.png75496498c88ad924eac8c9e8704a41ac.png点在看,看更多5b28ed751fa36f34af20d731af42aa72.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值