我想首先就我应该如何处理这项任务征求您的意见,而不仅仅是如何构建我的代码。
这是我正在尝试做的事情:我将大量数据加载到 mysql 表中,用于大量唯一名称 + 日期(即,日期是一个单独的字段)。我的目标是能够选择一个特定的名称(使用 rawinput,并可能在未来添加一个下拉菜单)并查看其中一个字段(收入、每月收入、点击次数等)。您的建议是什么 - 通过 Python 将此数据移动到 Excel 工作簿,或者有没有办法在 Python 中显示此信息(当然,使用与 Excel 比较的图表)?
谢谢!
最佳答案
分析此类数据(姓名、日期)可被视为发出临时 SQL 查询以获取时间序列信息。
您将根据数据集的大小按日期/时间范围(日/周/月/年或更详细的按小时/分钟)“抽样”您的信息。
我经常使用这样的查询,其中日期字段被截断为采样率,在 mysql 中 DATE_FORMAT 函数对此很酷(postgres 和 oracle 分别使用 date_trunc 和 trunc)
您想在数据中看到的内容在您的 WHERE 条件中。
select DATE_FORMAT(date_field,'%Y-%m-%d') as day,
COUNT(*) as nb_event
FROM yourtable
WHERE name = 'specific_value_to_analyze'
GROUP BY DATE_FORMAT(date_field,'%Y-%m-%d');
执行此查询并输出到 csv 文件。您可以为此使用直接的 mysql 命令,但我建议制作一个执行此类查询的 python 脚本,并且您可以使用 getopt 选项进行输出格式化(带或不带列标题,使用与默认分隔符不同的分隔符等)。甚至您可以根据某些选项动态构建查询。
要绘制此类信息,请查看时间序列工具。如果您缺少数据(日期不会出现在此类 sql 查询的结果中),您应该注意选择。我认为(或者对它的掌握不够),Excel 不是正确的选择,但可以作为一个开始。
我个人发现 dygraph,一个 javascript 库,非常适合时间序列绘图,它可以与 csv 文件一起使用作为源。在这样的配置中要小心,由于跨域安全约束,显示 Dygraph 对象的 csv 文件和 html 页面应该在同一台服务器上(或者您的浏览器想要接受的任何安全约束)。
我曾经使用 django 构建这样的 webapp,因为它是我最喜欢的 web 框架,我将 url 调用包装成这样:
GET /timeserie/view/<category>/<value_to_plot>
GET /timeserie/csv/<category>/<value_to_plot>
第一个 url 调用一个 View ,该 View 简单地输出一个模板文件,该模板文件带有一个引用 url 的变量,以获取 Dygraph 对象的 csv 文件:
<script type="text/javascript">
g3 = new Dygraph(
document.getElementById("graphdiv3"),
"{{ csv_url }}",
{
rollPeriod: 15,
showRoller: true
}
);
</script>
第二个 url 调用生成 sql 查询的 View 并将结果输出为文本/csv 以由 Dygraph 呈现。
它是“自制”的,可以简单或扩展,可以在任何台式计算机上轻松运行,可以扩展为输出 json 格式以供其他 javascript 库/框架使用。
此外,开源中还有与此类报告相关的工具(但时间序列功能通常不能满足我的需要),如 Pentaho、JasperReport、SOFA。您可以在此类工具的报告中将查询作为数据源,并构建一个输出时间序列的图表。
我发现如今具有正确 javascript 库/框架的网络技术真正开始正确地挑战这种经典 BI 工具报告的旧时尚,它使事情具有交互性:-)
关于python - 通过python为选定的mysql表创建图表/统计信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2260072/
出于纯粹的兴趣,我很好奇如何按顺序创建PI,而不是在过程结果之后生成数字,而是让数字在过程本身生成时显示。如果是这种情况,那么数字可以自行产生,我可以对以前看到的数字实现垃圾收集,从而创建一个无限系列。结果只是在Pi系列之后每秒生成一个数字。这是我通过互联网筛选的结果:这是流行的计算机友好算法,类机器算法:defarccot(x,unity)xpow=unity/xn=1sign=1sum=0loopdoterm=xpow/nbreakifterm==0sum+=sign*(xpow/n)xpow/=x*xn+=2sign=-signendsumenddefcalc_pi(digits
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
尝试通过RVM将RubyGems升级到版本1.8.10并出现此错误:$rvmrubygemslatestRemovingoldRubygemsfiles...Installingrubygems-1.8.10forruby-1.9.2-p180...ERROR:Errorrunning'GEM_PATH="/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/ruby-1.9.2-p180@global:/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/rub
使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta
我对最新版本的Rails有疑问。我创建了一个新应用程序(railsnewMyProject),但我没有脚本/生成,只有脚本/rails,当我输入ruby./script/railsgeneratepluginmy_plugin"Couldnotfindgeneratorplugin.".你知道如何生成插件模板吗?没有这个命令可以创建插件吗?PS:我正在使用Rails3.2.1和ruby1.8.7[universal-darwin11.0] 最佳答案 随着Rails3.2.0的发布,插件生成器已经被移除。查看变更日志here.现在
我正在使用puppet为ruby程序提供一组常量。我需要提供一组主机名,我的程序将对其进行迭代。在我之前使用的bash脚本中,我只是将它作为一个puppet变量hosts=>"host1,host2"我将其提供给bash脚本作为HOSTS=显然这对ruby不太适用——我需要它的格式hosts=["host1","host2"]自从phosts和putsmy_array.inspect提供输出["host1","host2"]我希望使用其中之一。不幸的是,我终其一生都无法弄清楚如何让它发挥作用。我尝试了以下各项:我发现某处他们指出我需要在函数调用前放置“function_”……这
如何使用RSpec::Core::RakeTask初始化RSpecRake任务?require'rspec/core/rake_task'RSpec::Core::RakeTask.newdo|t|#whatdoIputinhere?endInitialize函数记录在http://rubydoc.info/github/rspec/rspec-core/RSpec/Core/RakeTask#initialize-instance_method没有很好的记录;它只是说:-(RakeTask)initialize(*args,&task_block)AnewinstanceofRake
我正在编写一个gem,我必须在其中fork两个启动两个webrick服务器的进程。我想通过基类的类方法启动这个服务器,因为应该只有这两个服务器在运行,而不是多个。在运行时,我想调用这两个服务器上的一些方法来更改变量。我的问题是,我无法通过基类的类方法访问fork的实例变量。此外,我不能在我的基类中使用线程,因为在幕后我正在使用另一个不是线程安全的库。所以我必须将每个服务器派生到它自己的进程。我用类变量试过了,比如@@server。但是当我试图通过基类访问这个变量时,它是nil。我读到在Ruby中不可能在分支之间共享类变量,对吗?那么,还有其他解决办法吗?我考虑过使用单例,但我不确定这是