主题:Python爱好者俱乐部
正序浏览
主题图片汇总
主题内检索
浏览:17409 回帖:522
游客没有回帖权限
老坛泡菜
泡网分: 34.488
主题: 41
帖子: 3446
注册: 2003年7月
benniewang 发表于 2022-5-18 04:29
2、如果在生产sql服务器上跑很复杂的脚本(消耗计算资源),要被it投诉的。


生产库大部分也是SQL吧?只不过要求OLTP。是不是因为大家都用ORM访问生产库所以觉得不是SQL了?还是这两年生产库都转向NoSQL了?
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 46.876
主题: 170
帖子: 9693
注册: 2002年1月
闲聊状态 发表于 2022-5-18 11:43
看到 CSV 这东西就头皮发麻 先说那个默认分割“,” 导的出来,导不回去
再有就是字符集

要是还打算python折腾CSV 字符集的那个酸爽我实在是不堪回忆。。。。

遇到这种大的 如果是我弄出来的  原来都是access,现在基本上都是sqlite 大家都安逸

但是 总是有些人就是喜欢导CSV,而且是明明可以不CSV 他就非要 CSV  而且不改分隔符 哪怕改成 ''\U0001'' 分割也好

之前的公司处理的文本数据有英语 法语 德语 西班牙语等。。。大概10几种语言,编码确实是个问题。但是由于csv是我自己生成的,所以读取也没啥问题,因为在输出的时候特别注意。
现在的公司,就只有数值数据了。无比的欢乐。。。。
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
泡菜
泡网分: 18.13
主题: 11
帖子: 15051
注册: 2012年6月
benniewang 发表于 2022-5-18 11:07
目前工作而言,没有SQL用CSV也凑合。没有pandas用list也凑合。没啥大不了的。


看到 CSV 这东西就头皮发麻 先说那个默认分割“,” 导的出来,导不回去
再有就是字符集

要是还打算python折腾CSV 字符集的那个酸爽我实在是不堪回忆。。。。

遇到这种大的 如果是我弄出来的  原来都是access,现在基本上都是sqlite 大家都安逸

但是 总是有些人就是喜欢导CSV,而且是明明可以不CSV 他就非要 CSV  而且不改分隔符 哪怕改成 ''\U0001'' 分割也好   本帖最后由 闲聊状态 于 2022-5-18 11:48 编辑
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
泡菜
泡网分: 30.127
主题: 1
帖子: 8492
注册: 2008年12月
闲聊状态 发表于 2022-5-18 10:17
没有pandas的时候 大家的报表和分析报告都是靠冥想的么?

数据分析从来也没规定过只能依靠一种技术和路线

pandas这种东西我觉得主要的落地还是基于深度学习的“商业智能”
因为原来的机器学习那套 一般的库和基础构建 多多少少都有涉及 而且不是没有应用

深度这个是这几年大力发展的这方面除了python,剩下的都不算先进,而这些东西的基础数据存放基本上都是 pandas的dataframe

或者说 如果服务器上没插GPU,上不上python就看业务需要了

数据分析通常都是将所需数据用SQL提取出来,再用专用软件包进行数据分析的。
简单的报表和报告,如果只是分类、统计、均值,一般用不到数据分析的手段。
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 46.876
主题: 170
帖子: 9693
注册: 2002年1月
大信 发表于 2022-5-18 10:29
应该说在数据分析上SQL和pandas各有长处,各有各的应用场合。
在适合的地方用适合的工具,而不是无线拔高某一方、摒弃另一方,才是最切合实际的方法。

目前工作而言,没有SQL用CSV也凑合。没有pandas用list也凑合。没啥大不了的。
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 46.876
主题: 170
帖子: 9693
注册: 2002年1月
话说回来,要是你会VBA,excel也能玩的很溜。而且这不还有个powerbi么,不会代码做做数据分析还是挺不错的,特别是出图很漂亮。 本帖最后由 benniewang 于 2022-5-18 11:08 编辑
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
泡菜
泡网分: 7.171
主题: 36
帖子: 1357
注册: 2006年12月
应该说在数据分析上SQL和pandas各有长处,各有各的应用场合。
在适合的地方用适合的工具,而不是无线拔高某一方、摒弃另一方,才是最切合实际的方法。

(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
泡菜
泡网分: 18.13
主题: 11
帖子: 15051
注册: 2012年6月
tianman 发表于 2022-5-18 09:33
SQL(Structured Query Language)这个查询语言,最基本的目的是从大大小小的“仓库”中提取所需要的数据。
它天生就不适合做数据分析用。因为它的计算效率不行,也没有必要的分析手段。
除了简单的统计操作以外,用SQL做数据分析,基本上属于程序员炫技。。。

而pandas的设计就是为了数据分析用的,提供了专业的处理数据的函数和方法。强大而高效。
它的“内存库”“中转站” 是用来存放被分析对象的。

没有pandas的时候 大家的报表和分析报告都是靠冥想的么?

数据分析从来也没规定过只能依靠一种技术和路线

pandas这种东西我觉得主要的落地还是基于深度学习的“商业智能”
因为原来的机器学习那套 一般的库和基础构建 多多少少都有涉及 而且不是没有应用

深度这个是这几年大力发展的这方面除了python,剩下的都不算先进,而这些东西的基础数据存放基本上都是 pandas的dataframe

或者说 如果服务器上没插GPU,上不上python就看业务需要了 本帖最后由 闲聊状态 于 2022-5-18 10:28 编辑
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
泡菜
泡网分: 30.127
主题: 1
帖子: 8492
注册: 2008年12月
闲聊状态 发表于 2022-5-18 08:38
生产库上跑大SQL肯定是不可原谅的

但是

数据库就使用来说 基本上也是分 数据仓库(OLAP)与数据库(OLTP)(也就是一般意义上的生产库了)
数据仓库是与生产库分开的,而且架构都不一定相同,不只有关系型数据库,更有Hadoop这种东西
这些库 跑大SQL基本上是常态,本来就是用来做分析的

pandas 就是个“内存库”“中转站” 小数据量咋都行,数据量上去了 不光内存受不了 取放数据也受不了
很多奇技淫巧且不说好不好用,就说在巨大的数据量面前 都是白给

这是我 日常折腾的表中的一张 一天的数据量就这些行 14084958360 列数也有限 就12列,正常SQL 每次至少3,4张类似体量的
pandas不当中转站能行么。。。。

SQL(Structured Query Language)这个查询语言,最基本的目的是从大大小小的“仓库”中提取所需要的数据。
它天生就不适合做数据分析用。因为它的计算效率不行,也没有必要的分析手段。
除了简单的统计操作以外,用SQL做数据分析,基本上属于程序员炫技。。。

而pandas的设计就是为了数据分析用的,提供了专业的处理数据的函数和方法。强大而高效。
它的“内存库”“中转站” 是用来存放被分析对象的。
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
泡菜
泡网分: 18.13
主题: 11
帖子: 15051
注册: 2012年6月
benniewang 发表于 2022-5-18 04:29
你说的很对。
在我的理解里:
1、sql是个数据仓库,最重要的是能够高效安全的存储数据,并为查询提供便利。
2、如果在生产sql服务器上跑很复杂的脚本(消耗计算资源),要被it投诉的。
3、pandas是运行中的数据库,在内存里,一旦需要把数据保存下来,要么csv,要么输出到sql数据库。

生产库上跑大SQL肯定是不可原谅的

但是

数据库就使用来说 基本上也是分 数据仓库(OLAP)与数据库(OLTP)(也就是一般意义上的生产库了)
数据仓库是与生产库分开的,而且架构都不一定相同,不只有关系型数据库,更有Hadoop这种东西
这些库 跑大SQL基本上是常态,本来就是用来做分析的

pandas 就是个“内存库”“中转站” 小数据量咋都行,数据量上去了 不光内存受不了 取放数据也受不了
很多奇技淫巧且不说好不好用,就说在巨大的数据量面前 都是白给

这是我 日常折腾的表中的一张 一天的数据量就这些行 14084958360 列数也有限 就12列,正常SQL 每次至少3,4张类似体量的
pandas不当中转站能行么。。。。 本帖最后由 闲聊状态 于 2022-5-18 08:48 编辑
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 46.876
主题: 170
帖子: 9693
注册: 2002年1月
tianman 发表于 2022-5-17 07:50
其实呢,SQL和pandas并不是同一个类型的工具。
SQL长于数据的查询、提取和操纵。但是对数据分析并非所长,效率也有问题。
而Pandas是数据分析的工具包。

通常的做法是用SQL提取出具体分析需要的数据(显然直接使用数据库的数据来分析没必要也没效率)
然后将提取出的数据使用Pandas进行数据分析。
当然,如果数据量本来就不太大的话,直接使用Pandas也未尝不可。。。

直接使用SQL进行分析不是不行,而是没必要,也不值得。


你说的很对。
在我的理解里:
1、sql是个数据仓库,最重要的是能够高效安全的存储数据,并为查询提供便利。
2、如果在生产sql服务器上跑很复杂的脚本(消耗计算资源),要被it投诉的。
3、pandas是运行中的数据库,在内存里,一旦需要把数据保存下来,要么csv,要么输出到sql数据库。
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
泡菜
泡网分: 30.127
主题: 1
帖子: 8492
注册: 2008年12月
大信 发表于 2022-5-15 15:04
我们公司有些程序员的SQL很牛,能写出很长很烧脑的SQL代码。但是我不知道比如股票数据,计算5日,10日均线数据(MA5,MA10)的SQL代码好不好写?

如果是用pandas的话就非常好办,利用移动窗口函数一条命令就搞定了:
N = 5,10,,,,,,
df[“Close”].rolling(N).mean()

其中Close列为当日收盘数据
----------------------------------
例如:

其实呢,SQL和pandas并不是同一个类型的工具。
SQL长于数据的查询、提取和操纵。但是对数据分析并非所长,效率也有问题。
而Pandas是数据分析的工具包。

通常的做法是用SQL提取出具体分析需要的数据(显然直接使用数据库的数据来分析没必要也没效率)
然后将提取出的数据使用Pandas进行数据分析。
当然,如果数据量本来就不太大的话,直接使用Pandas也未尝不可。。。

直接使用SQL进行分析不是不行,而是没必要,也不值得。
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
泡菜
泡网分: 18.13
主题: 11
帖子: 15051
注册: 2012年6月
yejun 发表于 2022-5-16 03:08

还有些数据库可以在SQL里面内嵌python的,不过据说效率不高。


如果说的是 postgresql 那个 效率就是不高,而且Python的存储过程不安全(可以操作服务器上的所有,只要有权限)
那个就是个接口   python 要从数据库取数据,还是要先拿出来再放回去

但是 做些小应用确实是方便。前提是能接触到这个过程的都是可信任的人或者程序

另外 Pg上面也有机器学习的扩展 那个其实是python2的,更新也不太快
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
老坛泡菜
泡网分: 34.488
主题: 41
帖子: 3446
注册: 2003年7月
大信 发表于 2022-5-15 22:55
SQL也很强大,进化得真快!


最近几年SQL突然又流行起来了,感觉是因为数据仓库前端都是SQL。用分布式处理大数据还是很方便的,都不需要事先做索引,几百T的数据查询也只要几秒钟。
我觉得主要是因为SQL本身局限性造成你绞尽脑汁把算法变成SQL的时候把算法变成分布式算法了。虽然本质上没什么区别但是方便啊,几百行的SQL写成python要几千行。个人觉得python做数据预处理和最后处理,中间一步可以用sql。 本帖最后由 yejun 于 2022-5-16 03:16 编辑
以下内容由 yejun 于 2022-5-16 04:26 补充
还有些数据库可以在SQL里面内嵌python的,不过据说效率不高。
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 46.876
主题: 170
帖子: 9693
注册: 2002年1月
闲聊状态 发表于 2022-5-15 23:12
我觉得 对于开天辟地那几天还是要类似这么写才安全些。。。

要不然 就不满足完全的5前条了

真是隔行如隔山 这种提数需求 我这么多年还头回见到。。。

真是哪个行业都有暗坑啊

我就遇到过pandas的一个bug,后来看了源码才发现问题所在,提交上去了。
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 46.876
主题: 170
帖子: 9693
注册: 2002年1月
大信 发表于 2022-5-15 23:08
portfolio management 投资组合管理?  应该是金融工程的核心部门吧?

对,基金公司两大核心,一个是投资研究(包括公募股权、私募股权、固定收益、衍生品、另类投资产品--房产、地产、收藏品。。。。),一个就是投资组合管理。

1、团队里懂建模、算法和代码的就我一个。所以一起研究出来的新策略,评估以后我来翻译成算法,再让程序员翻译成代码。加入团队以后,基本上算法我都用python已经基本实现功能了,这样给程序员做一下QA再整合到系统里,开发效率就高很多。之前团队和程序员之间来回踢球就能踢很久。
2、组合管理和风控用到量化模型/金融工程多一些。 本帖最后由 benniewang 于 2022-5-16 00:21 编辑
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
泡菜
泡网分: 18.13
主题: 11
帖子: 15051
注册: 2012年6月
benniewang 发表于 2022-5-15 22:25
代码没法贴,随便搜搜。30平均移动。把29换成n-1就能实现n移动平均。看上去没有想象中的复杂,但是要自己想,估计想半天。


我觉得 对于开天辟地那几天还是要类似这么写才安全些。。。

要不然 就不满足完全的5前条了

真是隔行如隔山 这种提数需求 我这么多年还头回见到。。。

真是哪个行业都有暗坑啊 本帖最后由 闲聊状态 于 2022-5-15 23:14 编辑
登录后可直接显示原图
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
泡菜
泡网分: 7.171
主题: 36
帖子: 1357
注册: 2006年12月
benniewang 发表于 2022-5-15 22:53
你是做金融工程的?我现在的职位是portfolio management


portfolio management 投资组合管理?  应该是金融工程的核心部门吧?
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
泡菜
泡网分: 7.171
主题: 36
帖子: 1357
注册: 2006年12月
benniewang 发表于 2022-5-15 22:53
你是做金融工程的?我现在的职位是portfolio management


No,我在一个支撑部门(非技术)
最近喜欢炒股的好朋友给我出了难题,要我写程序缩小选股范围,被逼无奈只有学习日均线、MACD
我对python有兴趣(去年还帮公司解决了设备网络在线状态监测的难题),是业余学习pandas。基本还是个门外汉。
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
泡菜
泡网分: 7.171
主题: 36
帖子: 1357
注册: 2006年12月
benniewang 发表于 2022-5-15 22:25
代码没法贴,随便搜搜。30平均移动。把29换成n-1就能实现n移动平均。看上去没有想象中的复杂,但是要自己想,估计想半天。


大概看懂了
ROWS BETWEEN  29 .... AND CURRENT ROW

SQL也很强大,进化得真快!

本帖最后由 大信 于 2022-5-15 23:05 编辑
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 46.876
主题: 170
帖子: 9693
注册: 2002年1月
大信 发表于 2022-5-15 22:44
1.互联网真好!
2.当然殊途同归,SQL代码还是很长啊,不如rolling简洁。
3.除了平均值,rolling支持的函数还很多:
var 方差
std 标准差
skew 三阶矩(又叫偏度,用于描述一组数据分布的对称性)
kurt 四截距 (又叫峰度, 用于描述一组数据在均值附近分布的集中度)
cov 协方差
corr 相关系数(对不同单位敏感性强;通常使用pearson相关系数,该系数对不同单位脱敏)

当然大部分我都用不上。但还是要感叹Python库的无比强大!

你是做金融工程的?我现在的职位是portfolio management
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
泡菜
泡网分: 7.171
主题: 36
帖子: 1357
注册: 2006年12月
benniewang 发表于 2022-5-15 22:25
代码没法贴,随便搜搜。30平均移动。把29换成n-1就能实现n移动平均。看上去没有想象中的复杂,但是要自己想,估计想半天。


1.互联网真好!
2.当然殊途同归,SQL代码还是很长啊,不如rolling简洁。
3.除了平均值,rolling支持的函数还很多:
var 方差
std 标准差
skew 三阶矩(又叫偏度,用于描述一组数据分布的对称性)
kurt 四截距 (又叫峰度, 用于描述一组数据在均值附近分布的集中度)
cov 协方差
corr 相关系数(对不同单位敏感性强;通常使用pearson相关系数,该系数对不同单位脱敏)

当然大部分我都用不上。但还是要感叹Python库的无比强大!
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
泡菜
泡网分: 7.171
主题: 36
帖子: 1357
注册: 2006年12月
benniewang 发表于 2022-5-15 22:08
1、看了你的代码,给你一个小小的建议。字符串首尾不要一会用双引号,一会用单引号。估计你用这个来区别字段名和数据字符串。

2、虽然喜欢python超过sql,但是这句话背后逻辑应该是这样的:调用rolling方便,并不是因为他本身就方便,而是已经有人写了这个函数。就好像人说的:哪里有什么岁月静好,只是有人为你负重前行而已。sql如果真有需要,写一个rolling函数也不是什么大问题,虽然不知道该怎么做。


1.谢谢你的建议,注意改进coding
2.Python不是被叫做胶水语言吗?就是因为有海量的第三方库的支持,免去了自己写很多复杂函数的巨大工作量。直接把库拿来用,编程效率才显著提高。
3.如果我用SQL语言肯定写不出rolling这样的函数,太烧脑了。也不知道去哪里找SQL的rolling。所以我非常感谢Python,让我可以站在巨人的肩膀上。

(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 46.876
主题: 170
帖子: 9693
注册: 2002年1月
代码没法贴,随便搜搜。30平均移动。把29换成n-1就能实现n移动平均。看上去没有想象中的复杂,但是要自己想,估计想半天。
登录后可直接显示原图
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
泡菜
泡网分: 18.13
主题: 11
帖子: 15051
注册: 2012年6月
大信 发表于 2022-5-15 22:00
股票里有个概念叫做MA,有5日、10日、20日均线。比如5日均线 MA5 = (当天收盘价加上前面4天的收盘价)/5。
每只股票每天都有一个MA5值,除非股票上市发行不到5天。
我前面的帖子介绍了python的实现方式,就是利用dataframe的rolling函数一条命令完成。简洁、易懂,的确编码的效率非常高。

我不知道SQL大神们怎么实现的,但至少比较烧脑,代码的可读性也不强吧?

显然原始数据不能有遗漏,即股市每天的数据都有。但是日期可能会跳跃,因为股市经常不开门,休市比国家法定假日还多一些。但是这不会影响pandas的rolling函数计算。这个函数的中文名字叫移动窗口。就是用来统计计算最近N天数据(mean,sum、max,min,方差、协方差等等)

下图中3月5,6,7三天的MA5数据,分别是他们及其前面4行(共计5行)收盘数据(Close)的平均值。

5日的MA5 = Σ(day1:day5)/5
6日的MA5 = Σ(day2:day6)/5
7日的MA5 = Σ(day3:day7)/5

如果日期有跳跃,rolling会自动找最近5天收盘价


领域不同 我们没有这么齐的数据,节假日我们也有,是哪天有专门的表维护,使用时查表

你用了一个函数做的,换到sql上,用一个别人写好的函数也是一样的,毕竟你也没去手工实现roll

如果是从0开始写,那肯定比一个函数名长
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 46.876
主题: 170
帖子: 9693
注册: 2002年1月
大信 发表于 2022-5-15 22:00

我前面的帖子介绍了python的实现方式,就是利用dataframe的rolling函数一条命令完成。简洁、易懂,的确编码的效率非常高。

1、看了你的代码,给你一个小小的建议。字符串首尾不要一会用双引号,一会用单引号。估计你用这个来区别字段名和数据字符串。

2、虽然喜欢python超过sql,但是这句话背后逻辑应该是这样的:调用rolling方便,并不是因为他本身就方便,而是已经有人写了这个函数。就好像人说的:哪里有什么岁月静好,只是有人为你负重前行而已。sql如果真有需要,写一个rolling函数也不是什么大问题,虽然不知道该怎么做。 本帖最后由 benniewang 于 2022-5-15 22:17 编辑
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
泡菜
泡网分: 7.171
主题: 36
帖子: 1357
注册: 2006年12月
闲聊状态 发表于 2022-5-15 20:51
不是金融专业的 对名词不熟悉,看样子就是个连续几天求个平均值?
sql可以写个函数 select的时候调用一下,或者 直接创建表的时候直接创建一个计算列,或者创建一个视图,搞5天的数改成横表,然后求平均,就看具体需求了。
我的工作一般不涉及时序数据,能想到的基本就这几种,时序库的话,应该还有时序别的方法。

函数那种平时只要写一次就行了,既然是行业用户,类似的函数肯定有积累,也不用次次写,而且还可以根据需要 做间隔日,前后,多列,多条件聚组计算
pandas ,roll 也是个函数,而且是定好了的,如果数据里跳了一天或者有的少有的重总量恰好还能对上,或者是简单的没排序 这样出来的ma5还对吗?

知乎上有个系列帖子 一场pandas与SQL的巅峰大战
说实在的,我觉得那些sql对应的场景都偏简单


股票里有个概念叫做MA,有5日、10日、20日均线。比如5日均线 MA5 = (当天收盘价加上前面4天的收盘价)/5。
每只股票每天都有一个MA5值,除非股票上市发行不到5天。
我前面的帖子介绍了python的实现方式,就是利用dataframe的rolling函数一条命令完成。简洁、易懂,的确编码的效率非常高。

我不知道SQL大神们怎么实现的,但至少比较烧脑,代码的可读性也不强吧?

如果数据里跳了一天或者有的少有的重总量恰好还能对上,或者是简单的没排序 这样出来的ma5还对吗


显然原始数据不能有遗漏,即股市每天的数据都有,且按日期进行了排序。但是日期可能会跳跃,因为股市经常不开门,休市比国家法定假日还多一些。但是这不会影响pandas的rolling函数计算。这个函数的中文名字叫移动窗口,这个时间窗口自动锁定最近N行(如果日期不连续,自动向前补足N行)数据完成统计:mean,sum、max,min,方差、协方差等等

下图中3月5,6,7三天的MA5数据,分别是他们及其前面4行(共计5行)收盘数据(Close)的平均值。

5日的MA5 = Σ(day1:day5)/5
6日的MA5 = Σ(day2:day6)/5
7日的MA5 = Σ(day3:day7)/5

如果日期有跳跃,rolling会自动找最近5天收盘价

---------------------------
本帖最后由 大信 于 2022-5-15 22:29 编辑
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
泡菜
泡网分: 18.13
主题: 11
帖子: 15051
注册: 2012年6月
大信 发表于 2022-5-15 15:04
我们公司有些程序员的SQL很牛,能写出很长很烧脑的SQL代码。但是我不知道比如股票数据,计算5日,10日均线数据(MA5,MA10)的SQL代码好不好写?

如果是用pandas的话就非常好办,利用移动窗口函数一条命令就搞定了:
N = 5,10,,,,,,
df[“Close”].rolling(N).mean()

其中Close列为当日收盘数据
----------------------------------
例如:


不是金融专业的 对名词不熟悉,看样子就是个连续几天求个平均值?
sql可以写个函数 select的时候调用一下,或者 直接创建表的时候直接创建一个计算列,或者创建一个视图,搞5天的数改成横表,然后求平均,就看具体需求了。
我的工作一般不涉及时序数据,能想到的基本就这几种,时序库的话,应该还有时序别的方法。

函数那种平时只要写一次就行了,既然是行业用户,类似的函数肯定有积累,也不用次次写,而且还可以根据需要 做间隔日,前后,多列,多条件聚组计算
pandas ,roll 也是个函数,而且是定好了的,如果数据里跳了一天或者有的少有的重总量恰好还能对上,或者是简单的没排序 这样出来的ma5还对吗?

知乎上有个系列帖子 一场pandas与SQL的巅峰大战
说实在的,我觉得那些sql对应的场景都偏简单 本帖最后由 闲聊状态 于 2022-5-15 21:16 编辑
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
泡菜
泡网分: 7.171
主题: 36
帖子: 1357
注册: 2006年12月
yejun 发表于 2022-5-15 15:30
网上看到的,可以试一下。
import ssl
ssl._create_default_https_context = ssl._create_unverified_context


果然“药到病除”,谢谢!
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
老坛泡菜
泡网分: 34.488
主题: 41
帖子: 3446
注册: 2003年7月
大信 发表于 2022-5-15 15:08
为什么pandas的read_excel不能打开网络上的xlsx文件? 如果这个文件下载到本地,打开就没有问题:

# 为什么read_excel不能远程打开xlsx文件?百思不得其解
df = pd.read_excel('https://www·gairuo·com/file/data/dataset/team.xlsx',engine='openpyxl')
df = pd.read_excel("team.xlsx",engine='openpyxl')

---------------读https://远程文件的报错信息-----------------
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/urllib/request.py", line 1350, in do_open
    h.request(req.get_method(), req.selector, req.data, headers,
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/http/client.py", line 1240, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/http/client.py", line 1286, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/http/client.py", line 1235, in endhe ...

网上看到的,可以试一下。
import ssl
ssl._create_default_https_context = ssl._create_unverified_context

(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
回复主题: Python爱好者俱乐部
功能受限
游客无回复权限,请登录后再试