- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我得到了一个“数据库”(更准确地说是一个丑陋的巨大 CSV 文件),其中包含“发现”过程的结果。我得到的行非常短,它们是有关 65,000 多台计算机上的许可的信息,看起来像:
10/02/2017 09:14:56 a.m.;0000GATMEX39388; ;Microsoft Office Publisher MUI (Spanish) 2010;14.0.7015.1000;20150722;Microsoft Corporation
10/02/2017 09:14:56 a.m.;0000GATMEX39388; ;Microsoft Office Outlook MUI (Spanish) 2010;14.0.7015.1000;20160216;Microsoft Corporation
10/02/2017 09:14:56 a.m.;0000GATMEX39388; ;Microsoft Office Groove MUI (Spanish) 2010;14.0.7015.1000;20150722;Microsoft Corporation
10/02/2017 09:14:56 a.m.;0000GATMEX39388; ;Microsoft Office Word MUI (Spanish) 2010;14.0.7015.1000;20151119;Microsoft Corporation
正如你所看到的,是一个分号分隔的文件,它有进程运行的时间,PC的id,一个空白(我不知道它是什么),程序和版本程序,还有更多字段,但我不关心它们,只有那些是相关的。
所以我转向 Pandas 进行一些分析(基本上是计数),并获得了大约 300 万条记录。问题是,这个文件超过7M记录(我用Notepad++ 64位查看)。那么,如何使用 Pandas 来分析包含如此多记录的文件呢?
我使用的是 Python 3.5、Pandas 0.19.2
为 Fabio 的评论添加信息:
我正在使用:
df = pd.read_csv("inventario.csv", delimiter=";",
header=None, usecols=[0,1,2,3,4],
encoding="latin_1")
非常准确地说:文件有 7'432,175 行,Pandas 仅访问 3'172,197 行。奇怪的是,如果我将文件加载到 Excel 2017(使用数据查询),它将恰好加载 3,172,197 行。
编辑:评论后,我检查了文件,发现有些行已损坏(大约450行),我不知道它们是否发出信号和文件结束,看起来不是这样,无论如何,我清理了格式错误的行, Pandas 仍然只能读取大约 300 万行。
编辑:
好的,我解决了问题,但实际上,帮助我理解我做错了什么。我不能像以前那样做事情...首先,我清理了文件中的“奇怪”行,它们大约有 500 行,然后我将文件保存到 inv.csv
然后我做了以下事情:
f_inventario = open("inv.csv", "r", encoding="latin1")
f_inventario.readlines()
f_inventario.close()
df = pd.DataFrame(lines)
df.columns = ['data']
df['fecha'] = df.data.apply(lambda s : s.split(';')[0])
df['equipo'] = df.data.apply(lambda s : s.split(';')[1])
df['software'] = df.data.apply(lambda s : s.split(';')[2])
df['version'] = df.data.apply(lambda s : s.split(';')[3][:-1])
df.drop(['data'], axis=1, inplace=True)
现在我得到了包含 700 万行的数据框。如果我执行 df=pd.read_csv('inv.csv' ... )
它只会读取大约 300 万条记录。
我的问题得到了解决,但这太糟糕了,这不是应该的样子。据我所知,这不是内存问题。难道是某个全局变量告诉 read_csv
加载到最大值???我真的不知道。
最佳答案
如果性能不是问题,一个简单的方法就是简单地将文件逐行读入缓冲区。一旦缓冲区满了,就分析缓冲区中的数据。继续迭代,直到处理完整个文件。完成后,您可以聚合每个 block 的结果以形成最终结果。为了加快速度,您可以查看诸如内存映射之类的内容,例如
import mmap
with open("hello.txt", "r+") as f:
# memory-map the file, size 0 means whole file
map = mmap.mmap(f.fileno(), 0)
# read content via standard file methods
print(map.readline())
关于Python/ Pandas : How can I read 7 million records?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44783722/
我的代码贴在下面。当我运行这个程序时,它一直在计算。我使用的是旧的 Turbo C++ 编译器。这样的程序需要多少时间来执行?我等了大约 5 分钟,但没有任何输出。 /*The sum of the
之前我遇到了如何将多个 JSON 文件合并为一个文件的问题,我能够用这个question的答案来解决它. 首先,我尝试通过在输入数据集的连接部分的文件名中使用通配符来仅处理一些文件。但是,当我删除文件
我意识到该网站上回答了类似的问题,但我无法从这些问题中找到解决方案。例如,我的网站上有 10,000 个帖子,每个帖子都有 50 条评论。我应该创建 1.一张表有 500.000 行(评论) 或 2
在我的数据库中的所有表中,我有两个当前具有多对多连接。然而,捕获的实际数据群体几乎总是具有一对多关联。 考虑到我希望数据库查找(学说查询)尽可能不受阻碍,我应该: 在表之间创建两个关联(其中第二个仅是
我已经搜索过,但没有发现像我这样的问题。我确定这是我看过的东西。 我正在使用 tony million 的可达性 block 方法。当我有互联网然后没有互联网时,它工作得很好。警报出现并且工作正常。
我读了这篇文章http://akorotkov.github.io/blog/2016/05/09/scalability-towards-millions-tps/ 我在更强大的机器上尝试了这个基准
我的网站上有一百万行数据。当我想通过管理员访问此页面时,我正在等待。可能需要 40-50 秒。我做了分页 20,但没有任何改变。目前默认值为 100。 这是我的管理员密码 @admin.registe
我正在修改很久以前写的一些代码,并决定重写它以更好地利用线程(并更好地利用编程。)。 它位于:https://github.com/buddhabrot/buddhabrot/blob/master/
我被编码为一个 php 机器人。现在我想发送一个800万的请求。是的,例如: 我使用 multi_curl* 但有问题。 我使用linux并行库的问题。 也许你有什么建议? PHP 7.1.1,Lin
在 iOS 开发职位的面试中,他们问我在大型数组(> 100 万项)中查找已删除项目的最快解决方案,即:在本地,应用程序已经从服务器获取数组(我们不关心方法来从服务器获取这个数组)。然后,在服务器上,
情况 我有一个 1300 万行的 CSV,我想对每个组执行逻辑回归(incanter)。 我的文件就是这样(值只是示例) ID Max Probability 1 1 0.5 1 5 0.
我正在运行经济模拟。数百或数千个代理=随着时间的推移,对象必须对数据进行协议(protocol),数据始终具有相同的结构。它通常由许多 boolean 值、 float 和整数组成,可能是数组/列表(
我正在努力更新我的庞大数据库,但由于这次大型更新/比较,我的 wamp/Heidisql 不断崩溃。 我有两个数据库表:主表“member_all”(包含 300 万条记录)和子表:“mobile_r
我得到了一个“数据库”(更准确地说是一个丑陋的巨大 CSV 文件),其中包含“发现”过程的结果。我得到的行非常短,它们是有关 65,000 多台计算机上的许可的信息,看起来像: 10/02/2017
我有以下(简化的)代码,我想对其进行优化以提高速度: long inputLen = 50000000; // 50 million DataTable dataTable = new DataTab
我正在做 C/C++ 编程(主要是 C++),我发现自己需要分解实际上两倍相同的代码,除了每次出现的“左”都被“右”替换。代码完成后,我需要知道正在执行的是“左”还是“右”版本,仅此而已,两者都会返回
场景:具有一百万个条目的 MySQL 数据库,包含 Youtube channel ID 和订阅者计数。现在我想定期更新订阅者数量(也许每周一次)。 我想知道 API 是否可以实现如此大的请求?如果是
如果 pgsql 在文件系统上为每个表存储 1 个文件并为每个查询搜索 pg_catalog 以进行查询计划,那么单个 pgsql 数据库中可以包含多少个表,同时仍然保持良好的性能? EG:pgsql
我有以下任务分配给我: 获取一个包含多个表和数十万个条目的当前数据库,并编写一个脚本,将大部分数据传输到具有不同结构的单独数据库。 基本上已经创建了一个具有不同表结构的新数据库,我需要(在确认所有数据
我有一个表,我必须从中获取大约 700 万条记录,这也会达到 10 亿条记录(因为每天都会添加数据) 我正在使用 mysql-python 连接到远程 MySQL 数据库 我查询如下 cursor =
我是一名优秀的程序员,十分优秀!