相关疑难解决方法(0)

将CSV导入mysql表

将csv文件上传到mysql表的最佳/最快方法是什么?我想将第一行数据用作列名.

发现这个:

如何将CSV文件导入MySQL表

但唯一的答案是使用GUI而不是shell?

mysql csv import load-data-infile database-table

94
推荐指数
3
解决办法
25万
查看次数

用于大型数据集的sqlite或mysql

我正在处理大型数据集(数百万条记录,有时是数百万条记录),并希望使用与R链接良好的数据库程序.我正在尝试在mysql和sqlite之间做出决定.数据是静态的,但我需要做很多查询.

在这个指向sqlite帮助的链接中,它指出:

"默认页面大小为1024字节,SQLite数据库的大小限制为2 TB(241字节).即使它可以处理更大的数据库,SQLite也会将整个数据库存储在一个磁盘文件中,并且许多文件系统限制了最大值如果你正在考虑这么大的数据库,你最好考虑使用一个客户端/服务器数据库引擎,它将内容分布在多个磁盘文件中,也可能跨多个卷."

我不确定这意味着什么.当我尝试使用mysql和sqlite时,似乎mysql速度更快,但我还没有构建非常严格的速度测试.我想知道,由于数据集的大小,mysql对我来说是否比sqlite更好.上面的描述似乎表明可能是这种情况,但我的数据不在2TB附近.

有一个关于stackoverflow的讨论触及了这个并引用了相同的sqlite信息页面,但它并没有完全解决这个问题.

我非常感谢从文件系统中理解这个最大文件大小限制的任何见解,以及它如何影响索引表和运行查询的速度.这可以帮助我决定使用哪个数据库进行分析.

mysql sqlite r

6
推荐指数
1
解决办法
4015
查看次数

如何从 Python 中的两对文件中获取枢轴线?

从如何从两个制表符分隔的文件中获取枢轴线?,有一种使用 unix 命令从两个文件中透视行的快速方法。

如果我们有两对文件:

  • f1a 和 f1b
  • f2a 和 f2b

目标是提供一个 3 列制表符分隔的文件,其中包括:

  • f1a / f2a
  • f1b
  • f2b

f1a / f2a文件中同时出现在f1a和中的行在哪里f1b:

我尝试了以下可行的方法,但如果文件非常大,则将需要大量内存来存储f1和f2字典。例如具有数十亿行的文件。

import sys
from tqdm import tqdm 

f1a, f1b, f2a, f2b = sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4]


# Read first pair of file into memory.
with open(f1a) as fin_f1a, open(f1a) as fin_f1b:
  f1 = {s.strip().replace('\t', ' ') :t.strip().replace('\t', ' ') for s, t in tqdm(zip(fin_f1a, fin_f1b))}

with open(s2) as …
Run Code Online (Sandbox Code Playgroud)

python csv performance dictionary memory-efficient

6
推荐指数
1
解决办法
291
查看次数

合并多个大型DataFrame的有效方法

假设我有4个小型DataFrame

df1,df2,df3和df4

import pandas as pd
from functools import reduce
import numpy as np

df1 = pd.DataFrame([['a', 1, 10], ['a', 2, 20], ['b', 1, 4], ['c', 1, 2], ['e', 2, 10]])
df2 = pd.DataFrame([['a', 1, 15], ['a', 2, 20], ['c', 1, 2]])
df3 = pd.DataFrame([['d', 1, 10], ['e', 2, 20], ['f', 1, 1]])  
df4 = pd.DataFrame([['d', 1, 10], ['e', 2, 20], ['f', 1, 15]])   


df1.columns = ['name', 'id', 'price']
df2.columns = ['name', 'id', 'price'] …
Run Code Online (Sandbox Code Playgroud)

python merge out-of-memory dataframe pandas

5
推荐指数
2
解决办法
5276
查看次数

如何根据元组列表过滤 Pandas DataFrame?

如何从一组元组中过滤数据帧,以便配对相同?我需要一种更优雅的写作方式。我尽量不使用合并,因为它会降低效率。

所以我有一个名为 tup_list 的元组列表: [('118', '35'), ('35', '35'), ('118', '202') 假设每个元组中的第一个元素是 A,第二个是 B,我试图根据这个 tup_list 过滤我的数据帧,其中配对需要相同。

原始数据框:

A   B
118 35
118 40
35  202
118 1
35  35
Run Code Online (Sandbox Code Playgroud)

根据tup_list过滤后,新的dataframe应该是:

A   B
118 35
35  35
Run Code Online (Sandbox Code Playgroud)

只应返回精确的配对。

目前我正在使用 df= df.merge(tup_list, on=['A','B'], how='inner'). But is not very efficient as my actual data is larger.

请建议更有效的写作方式。

python tuples filter dataframe pandas

4
推荐指数
1
解决办法
2343
查看次数