我有一个7.4Gb的csv文件.使用python脚本将其转换为sqlite数据库后,输出DB为4.7Gb,约为原始大小的60%.
csv有大约150,000,000行.它有标题:
tkey,ipaddr,healthtime,numconnections,policystatus,activityflag
Run Code Online (Sandbox Code Playgroud)
每一行看起来都像
261846,172.10.28.15,2012-02-03 16:15:00,22,1,1
Run Code Online (Sandbox Code Playgroud)
该脚本使用healthtime将数据拆分为表192表
当我第一次看到这些数字时,我以为我在某个地方犯了错误.如果仅仅将健康时间写入192次而不是150,000,000次的额外效率,我应该期望文件大小的减少有多大?
编辑:我发布这个,我意识到答案.我正在移除大约40%的弦,因此尺寸缩小了40%.
编辑2让我们计算纯文本之间的大小差异:
"261846,172.10.28.15,2012-02-03 16:15:00,22,1,1"
Run Code Online (Sandbox Code Playgroud)
和数据库条目:
db(261846,'172.10.28.15',22,1,1)
Run Code Online (Sandbox Code Playgroud)
首先,我们以纯文本表示从46个字符删除到26个字符.
剩下的字符是:
"261846,172.10.28.15,22,1,1"
Run Code Online (Sandbox Code Playgroud)
或26个字节.如果每个整数需要以32位(4字节)存储,那么我们有:
12字节(ipaddr)+ 4字节*4(整数字段)= 28字节.
所以看起来转换为整数会使存储效率稍微降低,而我所有的收益都会减少每行中存储的字符数.
我有一个带有一堆多边形的现有svg.每个多边形都有一个唯一的id,每个id都有一些关联的数据.
我的问题是:如果我做自然d3加入:
d3.selectAll("polygon").data(array_of_data)
Run Code Online (Sandbox Code Playgroud)
反正是否确保与多边形关联的数据元素是正确的?
或者我只需要保持array_of_data
与所选多边形的顺序相同的顺序?
是否有可能将时间序列分开.例如,假设我们有以下内容:
rng2011 = pd.date_range('1/1/2011', periods=72, freq='H')
rng2012 = pd.date_range('1/1/2012', periods=72, freq='H')
Y = rng2011.union(rng2012)
Run Code Online (Sandbox Code Playgroud)
是否有可能寻找一年或更长时间的差距,并将数据框分开?
我想这会是这样的:
Y.groupby(Y.map(lambda x: x.year))
Run Code Online (Sandbox Code Playgroud)
除了在年份日期拆分,我有兴趣指定间隔间隙而不是行的年份属性.
应用程序是我从gps获得行程日志,但没有描述一次旅行何时结束而另一次旅行开始.我想分成十分钟或更长的间隙.
我正在对多标签数据进行网格搜索,如下所示:
#imports
from sklearn.svm import SVC as classifier
from sklearn.pipeline import Pipeline
from sklearn.decomposition import RandomizedPCA
from sklearn.cross_validation import StratifiedKFold
from sklearn.grid_search import GridSearchCV
#classifier pipeline
clf_pipeline = clf_pipeline = OneVsRestClassifier(
Pipeline([('reduce_dim', RandomizedPCA()),
('clf', classifier())
]
))
C_range = 10.0 ** np.arange(-2, 9)
gamma_range = 10.0 ** np.arange(-5, 4)
n_components_range = (10, 100, 200)
degree_range = (1, 2, 3, 4)
param_grid = dict(estimator__clf__gamma=gamma_range,
estimator__clf__c=c_range,
estimator__clf__degree=degree_range,
estimator__reduce_dim__n_components=n_components_range)
grid = GridSearchCV(clf_pipeline, param_grid,
cv=StratifiedKFold(y=Y, n_folds=3), n_jobs=1,
verbose=2)
grid.fit(X, Y)
Run Code Online (Sandbox Code Playgroud)
我看到以下追溯:
/Users/andrewwinterman/Documents/sparks-honey/classifier/lib/python2.7/site-packages/sklearn/grid_search.pyc in fit_grid_point(X, …
Run Code Online (Sandbox Code Playgroud) 我写了一个单行来完成这个:
vocab_tag = dict(zip(*reversed(zip(*tag_vocab.items()))))
Run Code Online (Sandbox Code Playgroud)
任何人都可以写一个更易于理解/直接的吗?
我有一个需要内存的应用程序,它遍历一对数组,处理每个元素组合.目前这个脚本非常需要RAM.它最终使用大约3GB的RAM.
我的问题是:
在一个大型流程中处理每个元素组合是否更节省内存?或者,为每个组合启动一个新的子流程更好.
换句话说,做选项1是否更好:
for i in param_set1:
for j in paramset2:
Do_A_Big_Job(i, j)
Run Code Online (Sandbox Code Playgroud)
或选项2:
import subprocess
for i in param_set1:
for j in paramset2:
subprocess.call([Do_A_Big_Job_Script, i, j])
Run Code Online (Sandbox Code Playgroud)
"更好",我的意思是"使用更少的RAM".
谢谢!
编辑 我对内存使用情况非常好奇.当进程结束时,UNIX系统是否会释放该内存?对于编写得相当好的脚本,这比python的垃圾收集更有效吗?我没有很多可用的内核,所以我希望多个进程或多或少并行运行.
我用自制软件安装了macvim,支持python.我的咒语如下:
brew install macvim --override-system-vim
Run Code Online (Sandbox Code Playgroud)
现在当我打开一个python文件时,如果我尝试导入任何东西,我会收到一系列错误.例如,如果我,import re
我看到ImportError: no module name re
.
我第一次在安装后打开macvim,进入'import site' failed; use -v for traceback
我打开macvim的终端.这是在运行我的第一个python命令之后.
这是什么意思,我该如何解决?
我在我的项目中使用Apache Curator。在CuratorFramework失去与ZooKeeper服务器的连接之后,它会自动重新连接,但似乎它失去了我设置的所有手表,并且不再收到任何通知。如果未断开连接并重新启动连接,手表将按预期工作。
这是Curator的错误,还是我做错了什么?设置手表的代码如下:
CuratorFramework framework = CuratorFrameworkFactory.newClient(connectString, SESSION_TIMEOUT_MS, 0, new ExponentialBackoffRetry(CONNECT_TIMEOUT_MS, CONNECT_RETRY_COUNT));
framework.start();
framework.getChildren().usingWatcher(watcher).forPath(path);
Run Code Online (Sandbox Code Playgroud)
谢谢,
如下:
from nltk import WordNetLemmatizer as wnl
wnl().lemmatize("American")
wnl().lemmatize("Americans")
Run Code Online (Sandbox Code Playgroud)
两者都只是回归他们的论点.我希望美国人减少到美国.任何人都知道如何实现这一目标?
我假设我必须修改lemmatizer使用的任何内部字典.它是否正确?谁知道更好的方法?
谢谢!