python - 有没有办法加快一些数据处理?
问题描述
我有一个大数据表(大约 3100000 行和 6 列),我想提取一些数据子集并重新排列它们。
我试过这段代码:
tab=[]
tab.append(np.array(['Channel', 'Edge', 'Time', 'Sweep', 'Tag', 'DataLost']))
incl=[]
incl.append(np.array(['Mult', 'x1', 'x2', 'y1', 'y2']))
for i in range (0,max):
B=tab[tab[:,3]==str(i),:]
C1=B[B[:,0]==str(Voie_Stop_1),2]
C2=B[B[:,0]==str(Voie_Stop_2),2]
if len(C1)%2 ==0 and len(C2)%2 ==0 and len(C1) ==len(C2) :
nb_fragments=len(C1)/2
C1=C1.reshape(int(nb_fragments), 2)
C2=C2.reshape(int(nb_fragments), 2)
C1C2=np.concatenate((C1,C2), axis=1)
ligne=np.insert(C1C2, 0, nb_fragments,axis=1)
ligne=np.array(ligne)
for j in range(int(nb_fragments)):
incl.append(ligne[j])
ligne=C1C2[0]
unSTOP.append(ligne)
它正在做我想做的事,但速度极慢(5s 使 i+100)...为了填写我的标签,我使用了“附加”功能,因为这个论坛上有人告诉我它比“连接”更快,并且在我的代码的第一部分确实是这样(这里没有显示)......你能帮我...... (我对python很陌生......)
解决方案
根据我的经验,在 Python 中操作大型数据集的最快方法是使用pandas。在 pandas 中,您将数据导入到称为DataFrame的类似表格的结构中。然后,您可以使用 API 快速对数据执行操作。
根据数据的存储方式(csv、python 字典、sql 等),您可以使用pandas IO 方法快速轻松地将数据拉入内存:
import pandas as pd
df = pd.read_csv('/path/to/my/data.csv')
df
是你的数据框。然后,您可以非常快速地过滤、应用自定义功能等。
如果您可以发布数据样本以及一些关于您希望如何具体提取和重新排列数据的信息,我很乐意为您编写一个示例函数来帮助完成工作。
推荐阅读
- c++ - 当用户键入分隔符时停止 getline() 输入
- jquery - 单击时未打开折叠的 Bootstrap 导航栏
- terraform - 如何在 terraform 中修复 MalformedPolicyDocument
- python - 独立配置 pyspark 以由用户运行执行程序
- rest - Jira Cloud 通过 REST API 搜索具有多个特殊字符的问题
- windows - 系统错误:Windows 系统文件 explorer.exe 中基于堆栈的缓冲区溢出
- c++ - 当分配器感知容器被复制/移动时,反弹分配器是否被复制/移动?
- powershell - 如何验证 Invoke-RestMethod 以列出工件存储库
- javascript - 将额外参数传递给 ListItem onMouseOver 处理程序
- mysql - 如何修复 shell bash mysql 加载查询语法错误?