我读到了这一点:使用Python将CSV文件导入sqlite3数据库表
并且似乎每个人都建议使用逐行阅读而不是使用SQLite的批量.import.但是,如果您有数百万行数据,这将使插入真的很慢.有没有其他方法来规避这个?
更新:我尝试了以下代码逐行插入,但速度不如我预期的那么好.无论如何都要改进它
for logFileName in allLogFilesName:
logFile = codecs.open(logFileName, 'rb', encoding='utf-8')
for logLine in logFile:
logLineAsList = logLine.split('\t')
output.execute('''INSERT INTO log VALUES(?, ?, ?, ?)''', logLineAsList)
logFile.close()
connection.commit()
connection.close()
Run Code Online (Sandbox Code Playgroud) 我试图用一个大文本文件制作一个"动画"图,其中包含以下脚本的大量数据(1000个粒子的位置):
set terminal wxt size 1000,600
k=999999
N = 999
do for [i=0:k]{
plot for [j=0:N-1] "pos.txt" using 2*j+1:2*j+2 every ::2*i+1::2*i+1 ls 1 pt 7 ps 2 notitle
Run Code Online (Sandbox Code Playgroud)
在文件中,每一行在我想要绘制的点的特定时间都有坐标X和Y. 我every用来绘制每行中的所有数据,然后继续下一行.
输出是这样的(1000颗粒移动)
然而,绘图太慢了,我不知道我能做些什么来让它更快地绘制.它每5秒或更长时间绘一行一次.该文件加权一些MB.我应该更换终端吗?还是我存储数据的方式?我认为当gnuplot加载一个大文件时可能会出现问题.
一些粒子在模拟中消失,因此line 14: warning: Skipping data file with no valid points当索引j(井2j + 1)超过粒子数量时我也会得到错误,但我尝试制作它以便每次读取粒子数量甚至更慢.非常感谢.
在Mayavi中,我想在下图中看到轴的网格
# Source: <<https://scicomp.stackexchange.com/a/23148/10048>>.
import numpy as np
from mayavi import mlab
# Test data: Matlab `peaks()`
x, y = np.mgrid[-3:3:50j, -3:3:50j]
z = 3*(1 - x)**2 * np.exp(-x**2 - (y + 1)**2) \
- 10*(x/5 - x**3 - y**5)*np.exp(-x**2 - y**2) \
- 1./3*np.exp(-(x + 1)**2 - y**2)
mlab.figure(bgcolor=(1, 1, 1)) # Make background white.
surf = mlab.surf(x, y, z, colormap='RdYlBu', warp_scale=0.3, representation='wireframe', line_width=0.5)
mlab.outline(color=(0, 0, 0))
axes = mlab.axes(color=(0, 0, 0), nb_labels=5)
axes.title_text_property.color = (0.0, 0.0, 0.0)
axes.title_text_property.font_family …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 paraview 来绘制 xy 图。我想要的图只是 x 和 y 之间的线性关系。所以我将我的数据文件 (data.csv) 导入到 paraview 中。我的数据如下所示:
X Y
0 0
1 1
2 6
3 8
4 15
Run Code Online (Sandbox Code Playgroud)
然后我将分隔符设置为“”。之后我可以看到数据在 x 和 y 列中排序。但我没有找到让 paraview 绘制数据的选项。有什么帮助吗?谢谢你。这是我的界面的屏幕截图:
python ×2
file ×1
gnuplot ×1
mayavi ×1
mayavi.mlab ×1
paraview ×1
performance ×1
plot ×1
sqlite ×1